Message ID | 20211210074426.279563-1-eric.dumazet@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | net: netns refcount tracking, base series | expand |
Hello: This series was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Thu, 9 Dec 2021 23:44:20 -0800 you wrote: > From: Eric Dumazet <edumazet@google.com> > > We have 100+ syzbot reports about netns being dismantled too soon, > still unresolved as of today. > > We think a missing get_net() or an extra put_net() is the root cause. > > [...] Here is the summary with links: - [V2,net-next,1/6] net: add networking namespace refcount tracker https://git.kernel.org/netdev/net-next/c/9ba74e6c9e9d - [V2,net-next,2/6] net: add netns refcount tracker to struct sock https://git.kernel.org/netdev/net-next/c/ffa84b5ffb37 - [V2,net-next,3/6] net: add netns refcount tracker to struct seq_net_private https://git.kernel.org/netdev/net-next/c/04a931e58d19 - [V2,net-next,4/6] net: sched: add netns refcount tracker to struct tcf_exts https://git.kernel.org/netdev/net-next/c/dbdcda634ce3 - [V2,net-next,5/6] l2tp: add netns refcount tracker to l2tp_dfs_seq_data https://git.kernel.org/netdev/net-next/c/285ec2fef4b8 - [V2,net-next,6/6] ppp: add netns refcount tracker https://git.kernel.org/netdev/net-next/c/11b311a867b6 You are awesome, thank you!
From: Eric Dumazet <edumazet@google.com> We have 100+ syzbot reports about netns being dismantled too soon, still unresolved as of today. We think a missing get_net() or an extra put_net() is the root cause. In order to find the bug(s), and be able to spot future ones, this patch adds CONFIG_NET_NS_REFCNT_TRACKER and new helpers to precisely pair all put_net() with corresponding get_net(). To use these helpers, each data structure owning a refcount should also use a "netns_tracker" to pair the get() and put(). Small sections of codes where the get()/put() are in sight do not need to have a tracker, because they are short lived, but in theory it is also possible to declare an on-stack tracker. v2: Include core networking patches only. Eric Dumazet (6): net: add networking namespace refcount tracker net: add netns refcount tracker to struct sock net: add netns refcount tracker to struct seq_net_private net: sched: add netns refcount tracker to struct tcf_exts l2tp: add netns refcount tracker to l2tp_dfs_seq_data ppp: add netns refcount tracker drivers/net/ppp/ppp_generic.c | 5 +++-- fs/proc/proc_net.c | 19 ++++++++++++++++--- include/linux/netdevice.h | 9 +-------- include/linux/seq_file_net.h | 3 ++- include/net/net_namespace.h | 34 ++++++++++++++++++++++++++++++++++ include/net/net_trackers.h | 18 ++++++++++++++++++ include/net/pkt_cls.h | 8 ++++++-- include/net/sock.h | 2 ++ net/Kconfig.debug | 9 +++++++++ net/core/net_namespace.c | 3 +++ net/core/sock.c | 6 +++--- net/l2tp/l2tp_debugfs.c | 9 +++++---- 12 files changed, 102 insertions(+), 23 deletions(-) create mode 100644 include/net/net_trackers.h