diff options
author | Eric Dumazet <edumazet@google.com> | 2014-10-23 06:30:30 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-10-26 22:47:23 -0400 |
commit | 93a35f59f1b13a02674877e3efdf07ae47e34052 (patch) | |
tree | c05bc7c401ea7889059f9c15e4c28807c38b0105 | |
parent | aa9c5579153535fb317a9d34c7d8eaf02b7ef4cd (diff) | |
download | op-kernel-dev-93a35f59f1b13a02674877e3efdf07ae47e34052.zip op-kernel-dev-93a35f59f1b13a02674877e3efdf07ae47e34052.tar.gz |
net: napi_reuse_skb() should check pfmemalloc
Do not reuse skb if it was pfmemalloc tainted, otherwise
future frame might be dropped anyway.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Roman Gushchin <klamm@yandex-team.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/core/dev.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index b793e35..945bbd0 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4157,6 +4157,10 @@ EXPORT_SYMBOL(napi_gro_receive); static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) { + if (unlikely(skb->pfmemalloc)) { + consume_skb(skb); + return; + } __skb_pull(skb, skb_headlen(skb)); /* restore the reserve we had after netdev_alloc_skb_ip_align() */ skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN - skb_headroom(skb)); |