* [PATCH net 0/1] Netfilter fix for net
@ 2024-11-06 23:58 Pablo Neira Ayuso
2024-11-06 23:58 ` [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal Pablo Neira Ayuso
0 siblings, 1 reply; 6+ messages in thread
From: Pablo Neira Ayuso @ 2024-11-06 23:58 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following series contains a Netfilter fix:
1) Wait for rcu grace period after netdevice removal is reported via event.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-11-07
Thanks.
----------------------------------------------------------------
The following changes since commit 50ae879de107ca2fe2ca99180f6ba95770f32a62:
Merge tag 'nf-24-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf (2024-10-31 12:13:08 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-11-07
for you to fetch changes up to f22c3a7be6bbbfb2342ae7b21312cbfc12c7f632:
netfilter: nf_tables: wait for rcu grace period on net_device removal (2024-11-07 00:51:19 +0100)
----------------------------------------------------------------
netfilter pull request 24-11-07
----------------------------------------------------------------
Pablo Neira Ayuso (1):
netfilter: nf_tables: wait for rcu grace period on net_device removal
include/net/netfilter/nf_tables.h | 2 ++
net/netfilter/nf_tables_api.c | 41 ++++++++++++++++++++++++++++++++-------
2 files changed, 36 insertions(+), 7 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal 2024-11-06 23:58 [PATCH net 0/1] Netfilter fix for net Pablo Neira Ayuso @ 2024-11-06 23:58 ` Pablo Neira Ayuso 2024-11-07 10:55 ` Paolo Abeni 0 siblings, 1 reply; 6+ messages in thread From: Pablo Neira Ayuso @ 2024-11-06 23:58 UTC (permalink / raw) To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw 8c873e219970 ("netfilter: core: free hooks with call_rcu") removed synchronize_net() call when unregistering basechain hook, however, net_device removal event handler for the NFPROTO_NETDEV was not updated to wait for RCU grace period. Note that 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks on net_device removal") does not remove basechain rules on device removal, I was hinted to remove rules on net_device removal later, see 5ebe0b0eec9d ("netfilter: nf_tables: destroy basechain and rules on netdevice removal"). Although NETDEV_UNREGISTER event is guaranteed to be handled after synchronize_net() call, this path needs to wait for rcu grace period via rcu callback to release basechain hooks if netns is alive because an ongoing netlink dump could be in progress (sockets hold a reference on the netns). Note that nf_tables_pre_exit_net() unregisters and releases basechain hooks but it is possible to see NETDEV_UNREGISTER at a later stage in the netns exit path, eg. veth peer device in another netns: cleanup_net() default_device_exit_batch() unregister_netdevice_many_notify() notifier_call_chain() nf_tables_netdev_event() __nft_release_basechain() In this particular case, same rule of thumb applies: if netns is alive, then wait for rcu grace period because netlink dump in the other netns could be in progress. Otherwise, if the other netns is going away then no netlink dump can be in progress and basechain hooks can be released inmediately. While at it, turn WARN_ON() into WARN_ON_ONCE() for the basechain validation, which should not ever happen. Fixes: 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks on net_device removal") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> --- include/net/netfilter/nf_tables.h | 2 ++ net/netfilter/nf_tables_api.c | 41 +++++++++++++++++++++++++------ 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 91ae20cb7648..8dd8e278843d 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h @@ -1120,6 +1120,7 @@ struct nft_chain { char *name; u16 udlen; u8 *udata; + struct rcu_head rcu_head; /* Only used during control plane commit phase: */ struct nft_rule_blob *blob_next; @@ -1282,6 +1283,7 @@ struct nft_table { struct list_head sets; struct list_head objects; struct list_head flowtables; + possible_net_t net; u64 hgenerator; u64 handle; u32 use; diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index a24fe62650a7..588a2757986c 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -1495,6 +1495,7 @@ static int nf_tables_newtable(struct sk_buff *skb, const struct nfnl_info *info, INIT_LIST_HEAD(&table->sets); INIT_LIST_HEAD(&table->objects); INIT_LIST_HEAD(&table->flowtables); + write_pnet(&table->net, net); table->family = family; table->flags = flags; table->handle = ++nft_net->table_handle; @@ -11430,22 +11431,48 @@ int nft_data_dump(struct sk_buff *skb, int attr, const struct nft_data *data, } EXPORT_SYMBOL_GPL(nft_data_dump); -int __nft_release_basechain(struct nft_ctx *ctx) +static void __nft_release_basechain_now(struct nft_ctx *ctx) { struct nft_rule *rule, *nr; - if (WARN_ON(!nft_is_base_chain(ctx->chain))) - return 0; - - nf_tables_unregister_hook(ctx->net, ctx->chain->table, ctx->chain); list_for_each_entry_safe(rule, nr, &ctx->chain->rules, list) { list_del(&rule->list); - nft_use_dec(&ctx->chain->use); nf_tables_rule_release(ctx, rule); } + nf_tables_chain_destroy(ctx->chain); +} + +static void nft_release_basechain_rcu(struct rcu_head *head) +{ + struct nft_chain *chain = container_of(head, struct nft_chain, rcu_head); + struct nft_ctx ctx = { + .family = chain->table->family, + .chain = chain, + .net = read_pnet(&chain->table->net), + }; + + __nft_release_basechain_now(&ctx); + put_net(ctx.net); +} + +int __nft_release_basechain(struct nft_ctx *ctx) +{ + struct nft_rule *rule; + + if (WARN_ON_ONCE(!nft_is_base_chain(ctx->chain))) + return 0; + + nf_tables_unregister_hook(ctx->net, ctx->chain->table, ctx->chain); + list_for_each_entry(rule, &ctx->chain->rules, list) + nft_use_dec(&ctx->chain->use); + nft_chain_del(ctx->chain); nft_use_dec(&ctx->table->use); - nf_tables_chain_destroy(ctx->chain); + + if (maybe_get_net(ctx->net)) + call_rcu(&ctx->chain->rcu_head, nft_release_basechain_rcu); + else + __nft_release_basechain_now(ctx); return 0; } -- 2.30.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal 2024-11-06 23:58 ` [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal Pablo Neira Ayuso @ 2024-11-07 10:55 ` Paolo Abeni 2024-11-07 11:26 ` Pablo Neira Ayuso 0 siblings, 1 reply; 6+ messages in thread From: Paolo Abeni @ 2024-11-07 10:55 UTC (permalink / raw) To: Pablo Neira Ayuso, netfilter-devel; +Cc: davem, netdev, kuba, edumazet, fw Hi, On 11/7/24 00:58, Pablo Neira Ayuso wrote: > 8c873e219970 ("netfilter: core: free hooks with call_rcu") removed > synchronize_net() call when unregistering basechain hook, however, > net_device removal event handler for the NFPROTO_NETDEV was not updated > to wait for RCU grace period. > > Note that 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks > on net_device removal") does not remove basechain rules on device > removal, I was hinted to remove rules on net_device removal later, see > 5ebe0b0eec9d ("netfilter: nf_tables: destroy basechain and rules on > netdevice removal"). > > Although NETDEV_UNREGISTER event is guaranteed to be handled after > synchronize_net() call, this path needs to wait for rcu grace period via > rcu callback to release basechain hooks if netns is alive because an > ongoing netlink dump could be in progress (sockets hold a reference on > the netns). > > Note that nf_tables_pre_exit_net() unregisters and releases basechain > hooks but it is possible to see NETDEV_UNREGISTER at a later stage in > the netns exit path, eg. veth peer device in another netns: > > cleanup_net() > default_device_exit_batch() > unregister_netdevice_many_notify() > notifier_call_chain() > nf_tables_netdev_event() > __nft_release_basechain() > > In this particular case, same rule of thumb applies: if netns is alive, > then wait for rcu grace period because netlink dump in the other netns > could be in progress. Otherwise, if the other netns is going away then > no netlink dump can be in progress and basechain hooks can be released > inmediately. > > While at it, turn WARN_ON() into WARN_ON_ONCE() for the basechain > validation, which should not ever happen. > > Fixes: 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks on net_device removal") > Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> > --- > include/net/netfilter/nf_tables.h | 2 ++ > net/netfilter/nf_tables_api.c | 41 +++++++++++++++++++++++++------ > 2 files changed, 36 insertions(+), 7 deletions(-) > > diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h > index 91ae20cb7648..8dd8e278843d 100644 > --- a/include/net/netfilter/nf_tables.h > +++ b/include/net/netfilter/nf_tables.h > @@ -1120,6 +1120,7 @@ struct nft_chain { > char *name; > u16 udlen; > u8 *udata; > + struct rcu_head rcu_head; I'm sorry to be pedantic but the CI is complaining about the lack of kdoc for this field... > > /* Only used during control plane commit phase: */ > struct nft_rule_blob *blob_next; > @@ -1282,6 +1283,7 @@ struct nft_table { > struct list_head sets; > struct list_head objects; > struct list_head flowtables; > + possible_net_t net; ... and this one ... > u64 hgenerator; > u64 handle; > u32 use; [...] > +static void nft_release_basechain_rcu(struct rcu_head *head) > +{ > + struct nft_chain *chain = container_of(head, struct nft_chain, rcu_head); > + struct nft_ctx ctx = { > + .family = chain->table->family, > + .chain = chain, > + .net = read_pnet(&chain->table->net), > + }; > + > + __nft_release_basechain_now(&ctx); > + put_net(ctx.net); ... and also about deprecated API usage here, the put_net_tracker() version should be preferred. Given this change will likely land on very old trees I guess the tracker conversion is better handled as a follow-up net-next patch. Would you mind addressing the kdoc above? Today PR will be handled by Jakub quite later, so there is a bit of time. Thanks! Paolo ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal 2024-11-07 10:55 ` Paolo Abeni @ 2024-11-07 11:26 ` Pablo Neira Ayuso 0 siblings, 0 replies; 6+ messages in thread From: Pablo Neira Ayuso @ 2024-11-07 11:26 UTC (permalink / raw) To: Paolo Abeni; +Cc: netfilter-devel, davem, netdev, kuba, edumazet, fw On Thu, Nov 07, 2024 at 11:55:47AM +0100, Paolo Abeni wrote: > Hi, > On 11/7/24 00:58, Pablo Neira Ayuso wrote: > > 8c873e219970 ("netfilter: core: free hooks with call_rcu") removed > > synchronize_net() call when unregistering basechain hook, however, > > net_device removal event handler for the NFPROTO_NETDEV was not updated > > to wait for RCU grace period. > > > > Note that 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks > > on net_device removal") does not remove basechain rules on device > > removal, I was hinted to remove rules on net_device removal later, see > > 5ebe0b0eec9d ("netfilter: nf_tables: destroy basechain and rules on > > netdevice removal"). > > > > Although NETDEV_UNREGISTER event is guaranteed to be handled after > > synchronize_net() call, this path needs to wait for rcu grace period via > > rcu callback to release basechain hooks if netns is alive because an > > ongoing netlink dump could be in progress (sockets hold a reference on > > the netns). > > > > Note that nf_tables_pre_exit_net() unregisters and releases basechain > > hooks but it is possible to see NETDEV_UNREGISTER at a later stage in > > the netns exit path, eg. veth peer device in another netns: > > > > cleanup_net() > > default_device_exit_batch() > > unregister_netdevice_many_notify() > > notifier_call_chain() > > nf_tables_netdev_event() > > __nft_release_basechain() > > > > In this particular case, same rule of thumb applies: if netns is alive, > > then wait for rcu grace period because netlink dump in the other netns > > could be in progress. Otherwise, if the other netns is going away then > > no netlink dump can be in progress and basechain hooks can be released > > inmediately. > > > > While at it, turn WARN_ON() into WARN_ON_ONCE() for the basechain > > validation, which should not ever happen. > > > > Fixes: 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks on net_device removal") > > Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> > > --- > > include/net/netfilter/nf_tables.h | 2 ++ > > net/netfilter/nf_tables_api.c | 41 +++++++++++++++++++++++++------ > > 2 files changed, 36 insertions(+), 7 deletions(-) > > > > diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h > > index 91ae20cb7648..8dd8e278843d 100644 > > --- a/include/net/netfilter/nf_tables.h > > +++ b/include/net/netfilter/nf_tables.h > > @@ -1120,6 +1120,7 @@ struct nft_chain { > > char *name; > > u16 udlen; > > u8 *udata; > > + struct rcu_head rcu_head; > > I'm sorry to be pedantic but the CI is complaining about the lack of > kdoc for this field... > > > > > /* Only used during control plane commit phase: */ > > struct nft_rule_blob *blob_next; > > @@ -1282,6 +1283,7 @@ struct nft_table { > > struct list_head sets; > > struct list_head objects; > > struct list_head flowtables; > > + possible_net_t net; > > ... and this one ... > > > u64 hgenerator; > > u64 handle; > > u32 use; > > [...] > > +static void nft_release_basechain_rcu(struct rcu_head *head) > > +{ > > + struct nft_chain *chain = container_of(head, struct nft_chain, rcu_head); > > + struct nft_ctx ctx = { > > + .family = chain->table->family, > > + .chain = chain, > > + .net = read_pnet(&chain->table->net), > > + }; > > + > > + __nft_release_basechain_now(&ctx); > > + put_net(ctx.net); > > ... and also about deprecated API usage here, the put_net_tracker() > version should be preferred. > > Given this change will likely land on very old trees I guess the tracker > conversion is better handled as a follow-up net-next patch. Agreed. > Would you mind addressing the kdoc above? Today PR will be handled by > Jakub quite later, so there is a bit of time. I will fix kdoc and resubmit. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH net 0/1] Netfilter fix for net
@ 2024-11-07 11:32 Pablo Neira Ayuso
2024-11-07 11:32 ` [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal Pablo Neira Ayuso
0 siblings, 1 reply; 6+ messages in thread
From: Pablo Neira Ayuso @ 2024-11-07 11:32 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
v2: including kdoc update for new fields as per Paolo.
-o-
Hi,
The following series contains a Netfilter fix:
1) Wait for rcu grace period after netdevice removal is reported via event.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-11-07
Thanks.
----------------------------------------------------------------
The following changes since commit 50ae879de107ca2fe2ca99180f6ba95770f32a62:
Merge tag 'nf-24-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf (2024-10-31 12:13:08 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-11-07
for you to fetch changes up to c03d278fdf35e73dd0ec543b9b556876b9d9a8dc:
netfilter: nf_tables: wait for rcu grace period on net_device removal (2024-11-07 12:28:47 +0100)
----------------------------------------------------------------
netfilter pull request 24-11-07
----------------------------------------------------------------
Pablo Neira Ayuso (1):
netfilter: nf_tables: wait for rcu grace period on net_device removal
include/net/netfilter/nf_tables.h | 4 ++++
net/netfilter/nf_tables_api.c | 41 ++++++++++++++++++++++++++++++++-------
2 files changed, 38 insertions(+), 7 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal 2024-11-07 11:32 [PATCH net 0/1] Netfilter fix for net Pablo Neira Ayuso @ 2024-11-07 11:32 ` Pablo Neira Ayuso 2024-11-07 19:40 ` patchwork-bot+netdevbpf 0 siblings, 1 reply; 6+ messages in thread From: Pablo Neira Ayuso @ 2024-11-07 11:32 UTC (permalink / raw) To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw 8c873e219970 ("netfilter: core: free hooks with call_rcu") removed synchronize_net() call when unregistering basechain hook, however, net_device removal event handler for the NFPROTO_NETDEV was not updated to wait for RCU grace period. Note that 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks on net_device removal") does not remove basechain rules on device removal, I was hinted to remove rules on net_device removal later, see 5ebe0b0eec9d ("netfilter: nf_tables: destroy basechain and rules on netdevice removal"). Although NETDEV_UNREGISTER event is guaranteed to be handled after synchronize_net() call, this path needs to wait for rcu grace period via rcu callback to release basechain hooks if netns is alive because an ongoing netlink dump could be in progress (sockets hold a reference on the netns). Note that nf_tables_pre_exit_net() unregisters and releases basechain hooks but it is possible to see NETDEV_UNREGISTER at a later stage in the netns exit path, eg. veth peer device in another netns: cleanup_net() default_device_exit_batch() unregister_netdevice_many_notify() notifier_call_chain() nf_tables_netdev_event() __nft_release_basechain() In this particular case, same rule of thumb applies: if netns is alive, then wait for rcu grace period because netlink dump in the other netns could be in progress. Otherwise, if the other netns is going away then no netlink dump can be in progress and basechain hooks can be released inmediately. While at it, turn WARN_ON() into WARN_ON_ONCE() for the basechain validation, which should not ever happen. Fixes: 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks on net_device removal") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> --- include/net/netfilter/nf_tables.h | 4 +++ net/netfilter/nf_tables_api.c | 41 +++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 91ae20cb7648..066a3ea33b12 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h @@ -1103,6 +1103,7 @@ struct nft_rule_blob { * @name: name of the chain * @udlen: user data length * @udata: user data in the chain + * @rcu_head: rcu head for deferred release * @blob_next: rule blob pointer to the next in the chain */ struct nft_chain { @@ -1120,6 +1121,7 @@ struct nft_chain { char *name; u16 udlen; u8 *udata; + struct rcu_head rcu_head; /* Only used during control plane commit phase: */ struct nft_rule_blob *blob_next; @@ -1263,6 +1265,7 @@ static inline void nft_use_inc_restore(u32 *use) * @sets: sets in the table * @objects: stateful objects in the table * @flowtables: flow tables in the table + * @net: netnamespace this table belongs to * @hgenerator: handle generator state * @handle: table handle * @use: number of chain references to this table @@ -1282,6 +1285,7 @@ struct nft_table { struct list_head sets; struct list_head objects; struct list_head flowtables; + possible_net_t net; u64 hgenerator; u64 handle; u32 use; diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index a24fe62650a7..588a2757986c 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -1495,6 +1495,7 @@ static int nf_tables_newtable(struct sk_buff *skb, const struct nfnl_info *info, INIT_LIST_HEAD(&table->sets); INIT_LIST_HEAD(&table->objects); INIT_LIST_HEAD(&table->flowtables); + write_pnet(&table->net, net); table->family = family; table->flags = flags; table->handle = ++nft_net->table_handle; @@ -11430,22 +11431,48 @@ int nft_data_dump(struct sk_buff *skb, int attr, const struct nft_data *data, } EXPORT_SYMBOL_GPL(nft_data_dump); -int __nft_release_basechain(struct nft_ctx *ctx) +static void __nft_release_basechain_now(struct nft_ctx *ctx) { struct nft_rule *rule, *nr; - if (WARN_ON(!nft_is_base_chain(ctx->chain))) - return 0; - - nf_tables_unregister_hook(ctx->net, ctx->chain->table, ctx->chain); list_for_each_entry_safe(rule, nr, &ctx->chain->rules, list) { list_del(&rule->list); - nft_use_dec(&ctx->chain->use); nf_tables_rule_release(ctx, rule); } + nf_tables_chain_destroy(ctx->chain); +} + +static void nft_release_basechain_rcu(struct rcu_head *head) +{ + struct nft_chain *chain = container_of(head, struct nft_chain, rcu_head); + struct nft_ctx ctx = { + .family = chain->table->family, + .chain = chain, + .net = read_pnet(&chain->table->net), + }; + + __nft_release_basechain_now(&ctx); + put_net(ctx.net); +} + +int __nft_release_basechain(struct nft_ctx *ctx) +{ + struct nft_rule *rule; + + if (WARN_ON_ONCE(!nft_is_base_chain(ctx->chain))) + return 0; + + nf_tables_unregister_hook(ctx->net, ctx->chain->table, ctx->chain); + list_for_each_entry(rule, &ctx->chain->rules, list) + nft_use_dec(&ctx->chain->use); + nft_chain_del(ctx->chain); nft_use_dec(&ctx->table->use); - nf_tables_chain_destroy(ctx->chain); + + if (maybe_get_net(ctx->net)) + call_rcu(&ctx->chain->rcu_head, nft_release_basechain_rcu); + else + __nft_release_basechain_now(ctx); return 0; } -- 2.30.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal 2024-11-07 11:32 ` [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal Pablo Neira Ayuso @ 2024-11-07 19:40 ` patchwork-bot+netdevbpf 0 siblings, 0 replies; 6+ messages in thread From: patchwork-bot+netdevbpf @ 2024-11-07 19:40 UTC (permalink / raw) To: Pablo Neira Ayuso Cc: netfilter-devel, davem, netdev, kuba, pabeni, edumazet, fw Hello: This patch was applied to netdev/net.git (main) by Pablo Neira Ayuso <pablo@netfilter.org>: On Thu, 7 Nov 2024 12:32:12 +0100 you wrote: > 8c873e219970 ("netfilter: core: free hooks with call_rcu") removed > synchronize_net() call when unregistering basechain hook, however, > net_device removal event handler for the NFPROTO_NETDEV was not updated > to wait for RCU grace period. > > Note that 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks > on net_device removal") does not remove basechain rules on device > removal, I was hinted to remove rules on net_device removal later, see > 5ebe0b0eec9d ("netfilter: nf_tables: destroy basechain and rules on > netdevice removal"). > > [...] Here is the summary with links: - [net,1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal https://git.kernel.org/netdev/net/c/c03d278fdf35 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-11-07 19:40 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-11-06 23:58 [PATCH net 0/1] Netfilter fix for net Pablo Neira Ayuso 2024-11-06 23:58 ` [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal Pablo Neira Ayuso 2024-11-07 10:55 ` Paolo Abeni 2024-11-07 11:26 ` Pablo Neira Ayuso -- strict thread matches above, loose matches on Subject: below -- 2024-11-07 11:32 [PATCH net 0/1] Netfilter fix for net Pablo Neira Ayuso 2024-11-07 11:32 ` [PATCH net 1/1] netfilter: nf_tables: wait for rcu grace period on net_device removal Pablo Neira Ayuso 2024-11-07 19:40 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).