Commit e06fd415 authored by Chas Williams's avatar Chas Williams Committed by David S. Miller

[ATM]: don't leak skb on as_indicate failure; don't wakeup twice on as_close

Signed-off-by: default avatarChas Williams <chas@cmf.nrl.navy.mil>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b65cb184
...@@ -136,6 +136,7 @@ static int sigd_send(struct atm_vcc *vcc,struct sk_buff *skb) ...@@ -136,6 +136,7 @@ static int sigd_send(struct atm_vcc *vcc,struct sk_buff *skb)
if (vcc->sk->sk_ack_backlog == if (vcc->sk->sk_ack_backlog ==
vcc->sk->sk_max_ack_backlog) { vcc->sk->sk_max_ack_backlog) {
sigd_enq(NULL,as_reject,vcc,NULL,NULL); sigd_enq(NULL,as_reject,vcc,NULL,NULL);
dev_kfree_skb(skb);
goto as_indicate_complete; goto as_indicate_complete;
} }
vcc->sk->sk_ack_backlog++; vcc->sk->sk_ack_backlog++;
...@@ -148,7 +149,7 @@ static int sigd_send(struct atm_vcc *vcc,struct sk_buff *skb) ...@@ -148,7 +149,7 @@ static int sigd_send(struct atm_vcc *vcc,struct sk_buff *skb)
case as_close: case as_close:
set_bit(ATM_VF_RELEASED,&vcc->flags); set_bit(ATM_VF_RELEASED,&vcc->flags);
vcc_release_async(vcc, msg->reply); vcc_release_async(vcc, msg->reply);
break; goto out;
case as_modify: case as_modify:
modify_qos(vcc,msg); modify_qos(vcc,msg);
break; break;
...@@ -163,6 +164,7 @@ static int sigd_send(struct atm_vcc *vcc,struct sk_buff *skb) ...@@ -163,6 +164,7 @@ static int sigd_send(struct atm_vcc *vcc,struct sk_buff *skb)
return -EINVAL; return -EINVAL;
} }
vcc->sk->sk_state_change(vcc->sk); vcc->sk->sk_state_change(vcc->sk);
out:
dev_kfree_skb(skb); dev_kfree_skb(skb);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment