diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 621a639aeba1..59a9089117de 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -5749,6 +5749,7 @@ static inline int nf_ingress(struct sk_buff *skb, struct packet_type **pt_prev,  static int __netif_receive_skb_core(struct sk_buff **pskb, bool pfmemalloc,  				    struct packet_type **ppt_prev)  { +	enum skb_drop_reason drop_reason = SKB_DROP_REASON_UNHANDLED_PROTO;  	struct packet_type *ptype, *pt_prev;  	rx_handler_func_t *rx_handler;  	struct sk_buff *skb = *pskb; @@ -5840,8 +5841,10 @@ skip_taps:  #endif  	skb_reset_redirect(skb);  skip_classify: -	if (pfmemalloc && !skb_pfmemalloc_protocol(skb)) +	if (pfmemalloc && !skb_pfmemalloc_protocol(skb)) { +		drop_reason = SKB_DROP_REASON_PFMEMALLOC;  		goto drop; +	}  	if (skb_vlan_tag_present(skb)) {  		if (pt_prev) { @@ -5946,7 +5949,8 @@ drop:  			dev_core_stats_rx_dropped_inc(skb->dev);  		else  			dev_core_stats_rx_nohandler_inc(skb->dev); -		kfree_skb_reason(skb, SKB_DROP_REASON_UNHANDLED_PROTO); + +		kfree_skb_reason(skb, drop_reason);  		/* Jamal, now you will not able to escape explaining  		 * me how you were going to use this. :-)  		 */  | 
