From: Sabrina Dubroca Date: Mon, 16 Nov 2015 21:54:20 +0000 (+0100) Subject: macvlan: fix leak in macvlan_handle_frame X-Git-Tag: v3.4.113~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=97164eb83570f911e270436f5e4c286eb37ce831;p=thirdparty%2Fkernel%2Fstable.git macvlan: fix leak in macvlan_handle_frame commit e639b8d8a7a728f0b05ef2df6cb6b45dc3d4e556 upstream. Reset pskb in macvlan_handle_frame in case skb_share_check returned a clone. Fixes: 8a4eb5734e8d ("net: introduce rx_handler results and logic around that") Signed-off-by: Sabrina Dubroca Signed-off-by: David S. Miller Signed-off-by: Zefan Li --- diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 6749acf6f3f47..e7352399b1faf 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -173,6 +173,7 @@ static rx_handler_result_t macvlan_handle_frame(struct sk_buff **pskb) skb = ip_check_defrag(skb, IP_DEFRAG_MACVLAN); if (!skb) return RX_HANDLER_CONSUMED; + *pskb = skb; eth = eth_hdr(skb); src = macvlan_hash_lookup(port, eth->h_source); if (!src) @@ -222,6 +223,7 @@ static rx_handler_result_t macvlan_handle_frame(struct sk_buff **pskb) if (!skb) goto out; + *pskb = skb; skb->dev = dev; skb->pkt_type = PACKET_HOST;