* [PATCH net] net: Lock netdevices during dev_shutdown
@ 2025-05-05 19:47 Cosmin Ratiu
2025-05-06 1:10 ` Stanislav Fomichev
2025-05-07 2:10 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Cosmin Ratiu @ 2025-05-05 19:47 UTC (permalink / raw)
To: netdev, cratiu
Cc: Stanislav Fomichev, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, jiri @ resnulli . us, Saeed Mahameed,
Dragos Tatulea, linux-kselftest
__qdisc_destroy() calls into various qdiscs .destroy() op, which in turn
can call .ndo_setup_tc(), which requires the netdev instance lock.
This commit extends the critical section in
unregister_netdevice_many_notify() to cover dev_shutdown() (and
dev_tcx_uninstall() as a side-effect) and acquires the netdev instance
lock in __dev_change_net_namespace() for the other dev_shutdown() call.
This should now guarantee that for all qdisc ops, the netdev instance
lock is held during .ndo_setup_tc().
Fixes: a0527ee2df3f ("net: hold netdev instance lock during qdisc ndo_setup_tc")
Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com>
---
net/core/dev.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 1be7cb73a602..92e004c354ea 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -11966,9 +11966,9 @@ void unregister_netdevice_many_notify(struct list_head *head,
struct sk_buff *skb = NULL;
/* Shutdown queueing discipline. */
+ netdev_lock_ops(dev);
dev_shutdown(dev);
dev_tcx_uninstall(dev);
- netdev_lock_ops(dev);
dev_xdp_uninstall(dev);
dev_memory_provider_uninstall(dev);
netdev_unlock_ops(dev);
@@ -12161,7 +12161,9 @@ int __dev_change_net_namespace(struct net_device *dev, struct net *net,
synchronize_net();
/* Shutdown queueing discipline. */
+ netdev_lock_ops(dev);
dev_shutdown(dev);
+ netdev_unlock_ops(dev);
/* Notify protocols, that we are about to destroy
* this device. They should clean all the things.
--
2.45.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net] net: Lock netdevices during dev_shutdown
2025-05-05 19:47 [PATCH net] net: Lock netdevices during dev_shutdown Cosmin Ratiu
@ 2025-05-06 1:10 ` Stanislav Fomichev
2025-05-07 2:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Stanislav Fomichev @ 2025-05-06 1:10 UTC (permalink / raw)
To: Cosmin Ratiu
Cc: netdev, Stanislav Fomichev, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, jiri @ resnulli . us, Saeed Mahameed,
Dragos Tatulea, linux-kselftest
On 05/05, Cosmin Ratiu wrote:
> __qdisc_destroy() calls into various qdiscs .destroy() op, which in turn
> can call .ndo_setup_tc(), which requires the netdev instance lock.
>
> This commit extends the critical section in
> unregister_netdevice_many_notify() to cover dev_shutdown() (and
> dev_tcx_uninstall() as a side-effect) and acquires the netdev instance
> lock in __dev_change_net_namespace() for the other dev_shutdown() call.
>
> This should now guarantee that for all qdisc ops, the netdev instance
> lock is held during .ndo_setup_tc().
>
> Fixes: a0527ee2df3f ("net: hold netdev instance lock during qdisc ndo_setup_tc")
> Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Thanks!
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net] net: Lock netdevices during dev_shutdown
2025-05-05 19:47 [PATCH net] net: Lock netdevices during dev_shutdown Cosmin Ratiu
2025-05-06 1:10 ` Stanislav Fomichev
@ 2025-05-07 2:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-05-07 2:10 UTC (permalink / raw)
To: Cosmin Ratiu
Cc: netdev, sdf, davem, edumazet, kuba, pabeni, jiri, saeedm,
dtatulea, linux-kselftest
Hello:
This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Mon, 5 May 2025 22:47:13 +0300 you wrote:
> __qdisc_destroy() calls into various qdiscs .destroy() op, which in turn
> can call .ndo_setup_tc(), which requires the netdev instance lock.
>
> This commit extends the critical section in
> unregister_netdevice_many_notify() to cover dev_shutdown() (and
> dev_tcx_uninstall() as a side-effect) and acquires the netdev instance
> lock in __dev_change_net_namespace() for the other dev_shutdown() call.
>
> [...]
Here is the summary with links:
- [net] net: Lock netdevices during dev_shutdown
https://git.kernel.org/netdev/net/c/08e9f2d584c4
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] 3+ messages in thread
end of thread, other threads:[~2025-05-07 2:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-05 19:47 [PATCH net] net: Lock netdevices during dev_shutdown Cosmin Ratiu
2025-05-06 1:10 ` Stanislav Fomichev
2025-05-07 2:10 ` 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).