Browse Source

[ATM] CLIP: Do not refer freed skbuff in clip_mkip().

In clip_mkip(), skb->dev is dereferenced after clip_push(),
which frees up skb.

Advisory: AD_LAB-06009 (<adlab@venustech.com.cn>).

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
YOSHIFUJI Hideaki 18 years ago
parent
commit
fe26109a9d
1 changed files with 2 additions and 0 deletions
  1. 2 0
      net/atm/clip.c

+ 2 - 0
net/atm/clip.c

@@ -500,9 +500,11 @@ static int clip_mkip(struct atm_vcc *vcc, int timeout)
 		} else {
 		} else {
 			unsigned int len = skb->len;
 			unsigned int len = skb->len;
 
 
+			skb_get(skb);
 			clip_push(vcc, skb);
 			clip_push(vcc, skb);
 			PRIV(skb->dev)->stats.rx_packets--;
 			PRIV(skb->dev)->stats.rx_packets--;
 			PRIV(skb->dev)->stats.rx_bytes -= len;
 			PRIV(skb->dev)->stats.rx_bytes -= len;
+			kfree_skb(skb);
 		}
 		}
 	return 0;
 	return 0;
 }
 }