lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 7 Feb 2022 18:41:40 +0100 From: Oliver Hartkopp <socketcan@...tkopp.net> To: Eric Dumazet <eric.dumazet@...il.com>, "David S . Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org> Cc: netdev <netdev@...r.kernel.org>, David Ahern <dsahern@...nel.org>, Eric Dumazet <edumazet@...gle.com>, Marc Kleine-Budde <mkl@...gutronix.de> Subject: Re: [PATCH net-next 09/11] can: gw: switch cangw_pernet_exit() to batch mode On 07.02.22 18:17, Eric Dumazet wrote: > From: Eric Dumazet <edumazet@...gle.com> > > cleanup_net() is competing with other rtnl users. > > Avoiding to acquire rtnl for each netns before calling > cgw_remove_all_jobs() gives chance for cleanup_net() > to progress much faster, holding rtnl a bit longer. > > Signed-off-by: Eric Dumazet <edumazet@...gle.com> > Cc: Oliver Hartkopp <socketcan@...tkopp.net> > Cc: Marc Kleine-Budde <mkl@...gutronix.de> > --- > net/can/gw.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/net/can/gw.c b/net/can/gw.c > index d8861e862f157aec36c417b71eb7e8f59bd064b9..24221352e059be9fb9aca3819be6a7ac4cdef144 100644 > --- a/net/can/gw.c > +++ b/net/can/gw.c > @@ -1239,16 +1239,19 @@ static int __net_init cangw_pernet_init(struct net *net) > return 0; > } > > -static void __net_exit cangw_pernet_exit(struct net *net) > +static void __net_exit cangw_pernet_exit_batch(struct list_head *net_list) > { > + struct net *net; > + > rtnl_lock(); > - cgw_remove_all_jobs(net); > + list_for_each_entry(net, net_list, exit_list) > + cgw_remove_all_jobs(net); Instead of removing the jobs for ONE net namespace it seems you are remove removing the jobs for ALL net namespaces? Looks wrong to me. Best regards, Oliver > rtnl_unlock(); > } > > static struct pernet_operations cangw_pernet_ops = { > .init = cangw_pernet_init, > - .exit = cangw_pernet_exit, > + .exit_batch = cangw_pernet_exit_batch, > }; > > static __init int cgw_module_init(void)
Powered by blists - more mailing lists