net: add networking namespace refcount tracker
authorEric Dumazet <edumazet@google.com>
Fri, 10 Dec 2021 07:44:21 +0000 (23:44 -0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 10 Dec 2021 14:38:26 +0000 (06:38 -0800)
commit9ba74e6c9e9d0c5c1e5792a7111fc7d1a0589cb8
tree0984bfcc460de30d23f22d4230992964496199da
parente5d75fc20b9278d07731f69e327adf16227813a6
net: add networking namespace refcount tracker

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.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/netdevice.h
include/net/net_namespace.h
include/net/net_trackers.h [new file with mode: 0644]
net/Kconfig.debug
net/core/net_namespace.c