Message ID | 20210330064551.545964-1-eric.dumazet@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 48bb5697269a7cbe5194dbb044dc38c517e34c58 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] ip6_tunnel: sit: proper dev_{hold|put} in ndo_[un]init methods | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | warning | 2 maintainers not CCed: yoshfuji@linux-ipv6.org dsahern@kernel.org |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | warning | WARNING: Possible repeated word: 'Google' |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
On Tue, Mar 30, 2021 at 8:45 AM Eric Dumazet <eric.dumazet@gmail.com> wrote: > > From: Eric Dumazet <edumazet@google.com> > > Same reasons than for the previous commits : > 6289a98f0817 ("sit: proper dev_{hold|put} in ndo_[un]init methods") > 40cb881b5aaa ("ip6_vti: proper dev_{hold|put} in ndo_[un]init methods") > 7f700334be9a ("ip6_gre: proper dev_{hold|put} in ndo_[un]init methods") > > After adopting CONFIG_PCPU_DEV_REFCNT=n option, syzbot was able to trigger > a warning [1] > > Issue here is that: > > - all dev_put() should be paired with a corresponding prior dev_hold(). > > - A driver doing a dev_put() in its ndo_uninit() MUST also > do a dev_hold() in its ndo_init(), only when ndo_init() > is returning 0. > > Otherwise, register_netdevice() would call ndo_uninit() > in its error path and release a refcount too soon. > > Note to David & Jakub Can you merge this patch so that I can send my global fix for fallback tunnels, with a correct Fixes: tag for this patch ? Thanks !
On Wed, Mar 31, 2021 at 8:00 AM Eric Dumazet <edumazet@google.com> wrote: > > On Tue, Mar 30, 2021 at 8:45 AM Eric Dumazet <eric.dumazet@gmail.com> wrote: > > > > From: Eric Dumazet <edumazet@google.com> > > > > Same reasons than for the previous commits : > > 6289a98f0817 ("sit: proper dev_{hold|put} in ndo_[un]init methods") > > 40cb881b5aaa ("ip6_vti: proper dev_{hold|put} in ndo_[un]init methods") > > 7f700334be9a ("ip6_gre: proper dev_{hold|put} in ndo_[un]init methods") > > > > After adopting CONFIG_PCPU_DEV_REFCNT=n option, syzbot was able to trigger > > a warning [1] > > > > Issue here is that: > > > > - all dev_put() should be paired with a corresponding prior dev_hold(). > > > > - A driver doing a dev_put() in its ndo_uninit() MUST also > > do a dev_hold() in its ndo_init(), only when ndo_init() > > is returning 0. > > > > Otherwise, register_netdevice() would call ndo_uninit() > > in its error path and release a refcount too soon. > > > > > > Note to David & Jakub > > Can you merge this patch so that I can send my global fix for fallback > tunnels, with a correct Fixes: tag for this patch ? > > Thanks ! Forgot to attach what the global fix would look like :
Hello: This patch was applied to netdev/net-next.git (refs/heads/master): On Mon, 29 Mar 2021 23:45:51 -0700 you wrote: > From: Eric Dumazet <edumazet@google.com> > > Same reasons than for the previous commits : > 6289a98f0817 ("sit: proper dev_{hold|put} in ndo_[un]init methods") > 40cb881b5aaa ("ip6_vti: proper dev_{hold|put} in ndo_[un]init methods") > 7f700334be9a ("ip6_gre: proper dev_{hold|put} in ndo_[un]init methods") > > [...] Here is the summary with links: - [net-next] ip6_tunnel: sit: proper dev_{hold|put} in ndo_[un]init methods https://git.kernel.org/netdev/net-next/c/48bb5697269a You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
From: Eric Dumazet <edumazet@google.com> Date: Wed, 31 Mar 2021 08:00:24 +0200 > Can you merge this patch so that I can send my global fix for fallback > tunnels, with a correct Fixes: tag for this patch ? Done.
On Wed, Mar 31, 2021 at 11:39 PM David Miller <davem@davemloft.net> wrote: > > From: Eric Dumazet <edumazet@google.com> > Date: Wed, 31 Mar 2021 08:00:24 +0200 > > > Can you merge this patch so that I can send my global fix for fallback > > tunnels, with a correct Fixes: tag for this patch ? > > Done. Thanks a lot David, I have sent the followup patch, with updated Fixes: tags.
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index cd78f5b2cd75e20a79fd6c4cbfafd548204c2b7c..67ee9d58ec5efcc81e8b27406bd4f57a0caea70b 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c @@ -266,7 +266,6 @@ static int ip6_tnl_create2(struct net_device *dev) strcpy(t->parms.name, dev->name); - dev_hold(dev); ip6_tnl_link(ip6n, t); return 0; @@ -1882,6 +1881,7 @@ ip6_tnl_dev_init_gen(struct net_device *dev) dev->min_mtu = ETH_MIN_MTU; dev->max_mtu = IP6_MAX_MTU - dev->hard_header_len; + dev_hold(dev); return 0; destroy_dst: