|
@@ -284,6 +284,13 @@ static int pppoatm_send(struct ppp_channel *chan, struct sk_buff *skb)
|
|
bh_lock_sock(sk_atm(vcc));
|
|
bh_lock_sock(sk_atm(vcc));
|
|
if (sock_owned_by_user(sk_atm(vcc)))
|
|
if (sock_owned_by_user(sk_atm(vcc)))
|
|
goto nospace;
|
|
goto nospace;
|
|
|
|
+ if (test_bit(ATM_VF_RELEASED, &vcc->flags) ||
|
|
|
|
+ test_bit(ATM_VF_CLOSE, &vcc->flags) ||
|
|
|
|
+ !test_bit(ATM_VF_READY, &vcc->flags)) {
|
|
|
|
+ bh_unlock_sock(sk_atm(vcc));
|
|
|
|
+ kfree_skb(skb);
|
|
|
|
+ return DROP_PACKET;
|
|
|
|
+ }
|
|
|
|
|
|
switch (pvcc->encaps) { /* LLC encapsulation needed */
|
|
switch (pvcc->encaps) { /* LLC encapsulation needed */
|
|
case e_llc:
|
|
case e_llc:
|