mbox series

[V2,net-next,0/6] net: netns refcount tracking, base series

Message ID 20211210074426.279563-1-eric.dumazet@gmail.com (mailing list archive)
Headers show
Series net: netns refcount tracking, base series | expand

Message

Eric Dumazet Dec. 10, 2021, 7:44 a.m. UTC
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

Comments

patchwork-bot+netdevbpf@kernel.org Dec. 10, 2021, 4:20 p.m. UTC | #1
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!