OSDN Git Service

__netif_receive_skb_core: pass skb by reference
authorBoris Sukholitko <boris.sukholitko@broadcom.com>
Tue, 19 May 2020 07:32:37 +0000 (10:32 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 19 May 2020 22:38:00 +0000 (15:38 -0700)
commitc0bbbdc32febd4f034ecbf3ea17865785b2c0652
treea72795d0d8594c6b85681104a4240b9e5fc9c1a0
parent88d7fcfa3b1fe670f0412b95be785aafca63352b
__netif_receive_skb_core: pass skb by reference

__netif_receive_skb_core may change the skb pointer passed into it (e.g.
in rx_handler). The original skb may be freed as a result of this
operation.

The callers of __netif_receive_skb_core may further process original skb
by using pt_prev pointer returned by __netif_receive_skb_core thus
leading to unpleasant effects.

The solution is to pass skb by reference into __netif_receive_skb_core.

v2: Added Fixes tag and comment regarding ppt_prev and skb invariant.

Fixes: 88eb1944e18c ("net: core: propagate SKB lists through packet_type lookup")
Signed-off-by: Boris Sukholitko <boris.sukholitko@broadcom.com>
Acked-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c