Repository : ssh://git@open-mesh.org/batman-adv
On branch : master
commit ab636a2bec851b103c638ec4cde059be0432528a Author: Florian Westphal fw@strlen.de Date: Sun Sep 29 20:54:03 2019 +0200
batman-adv: netfilter: drop bridge nf reset from nf_reset
commit 174e23810cd31 ("sk_buff: drop all skb extensions on free and skb scrubbing") made napi recycle always drop skb extensions. The additional skb_ext_del() that is performed via nf_reset on napi skb recycle is not needed anymore.
Most nf_reset() calls in the stack are there so queued skb won't block 'rmmod nf_conntrack' indefinitely.
This removes the skb_ext_del from nf_reset, and renames it to a more fitting nf_reset_ct().
In a few selected places, add a call to skb_ext_reset to make sure that no active extensions remain.
I am submitting this for "net", because we're still early in the release cycle. The patch applies to net-next too, but I think the rename causes needless divergence between those trees.
Suggested-by: Eric Dumazet edumazet@google.com Signed-off-by: Florian Westphal fw@strlen.de Signed-off-by: Pablo Neira Ayuso pablo@netfilter.org [sven@narfation.org: add compat code] Signed-off-by: Sven Eckelmann sven@narfation.org
ab636a2bec851b103c638ec4cde059be0432528a compat-include/linux/skbuff.h | 6 ++++++ net/batman-adv/soft-interface.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/compat-include/linux/skbuff.h b/compat-include/linux/skbuff.h index f149f31a..a92c4425 100644 --- a/compat-include/linux/skbuff.h +++ b/compat-include/linux/skbuff.h @@ -77,4 +77,10 @@ static inline void *skb_put_data(struct sk_buff *skb, const void *data,
#endif /* < KERNEL_VERSION(4, 13, 0) */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0) + +#define nf_reset_ct nf_reset + +#endif /* < KERNEL_VERSION(5, 4, 0) */ + #endif /* _NET_BATMAN_ADV_COMPAT_LINUX_SKBUFF_H_ */ diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c index a1146cb1..9cbed6f5 100644 --- a/net/batman-adv/soft-interface.c +++ b/net/batman-adv/soft-interface.c @@ -436,7 +436,7 @@ void batadv_interface_rx(struct net_device *soft_iface, /* clean the netfilter state now that the batman-adv header has been * removed */ - nf_reset(skb); + nf_reset_ct(skb);
if (unlikely(!pskb_may_pull(skb, ETH_HLEN))) goto dropped;