Commit ee2640df authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski

net: add debug checks in napi_consume_skb and __napi_alloc_skb()

Commit 6454eca8 ("net: Use lockdep_assert_in_softirq()
in napi_consume_skb()") added a check in napi_consume_skb()
which is a bit weak.

napi_consume_skb() and __napi_alloc_skb() should only
be used from BH context, not from hard irq or nmi context,
otherwise we could have races.
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 7890e2f0
...@@ -560,6 +560,7 @@ struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int len, ...@@ -560,6 +560,7 @@ struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int len,
struct sk_buff *skb; struct sk_buff *skb;
void *data; void *data;
DEBUG_NET_WARN_ON_ONCE(!in_softirq());
len += NET_SKB_PAD + NET_IP_ALIGN; len += NET_SKB_PAD + NET_IP_ALIGN;
/* If requested length is either too small or too big, /* If requested length is either too small or too big,
...@@ -981,7 +982,7 @@ void napi_consume_skb(struct sk_buff *skb, int budget) ...@@ -981,7 +982,7 @@ void napi_consume_skb(struct sk_buff *skb, int budget)
return; return;
} }
lockdep_assert_in_softirq(); DEBUG_NET_WARN_ON_ONCE(!in_softirq());
if (!skb_unref(skb)) if (!skb_unref(skb))
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment