Eric Dumazet
4ceb0bd4ff
net: better track kernel sockets lifetime
[ Upstream commit 5c70eb5c59 ]
While kernel sockets are dismantled during pernet_operations->exit(),
their freeing can be delayed by any tx packets still held in qdisc
or device queues, due to skb_set_owner_w() prior calls.
This then trigger the following warning from ref_tracker_dir_exit() [1]
To fix this, make sure that kernel sockets own a reference on net->passive.
Add sk_net_refcnt_upgrade() helper, used whenever a kernel socket
is converted to a refcounted one.
[1]
[ 136.263918][ T35] ref_tracker: net notrefcnt@ffff8880638f01e0 has 1/2 users at
[ 136.263918][ T35] sk_alloc+0x2b3/0x370
[ 136.263918][ T35] inet6_create+0x6ce/0x10f0
[ 136.263918][ T35] __sock_create+0x4c0/0xa30
[ 136.263918][ T35] inet_ctl_sock_create+0xc2/0x250
[ 136.263918][ T35] igmp6_net_init+0x39/0x390
[ 136.263918][ T35] ops_init+0x31e/0x590
[ 136.263918][ T35] setup_net+0x287/0x9e0
[ 136.263918][ T35] copy_net_ns+0x33f/0x570
[ 136.263918][ T35] create_new_namespaces+0x425/0x7b0
[ 136.263918][ T35] unshare_nsproxy_namespaces+0x124/0x180
[ 136.263918][ T35] ksys_unshare+0x57d/0xa70
[ 136.263918][ T35] __x64_sys_unshare+0x38/0x40
[ 136.263918][ T35] do_syscall_64+0xf3/0x230
[ 136.263918][ T35] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 136.263918][ T35]
[ 136.343488][ T35] ref_tracker: net notrefcnt@ffff8880638f01e0 has 1/2 users at
[ 136.343488][ T35] sk_alloc+0x2b3/0x370
[ 136.343488][ T35] inet6_create+0x6ce/0x10f0
[ 136.343488][ T35] __sock_create+0x4c0/0xa30
[ 136.343488][ T35] inet_ctl_sock_create+0xc2/0x250
[ 136.343488][ T35] ndisc_net_init+0xa7/0x2b0
[ 136.343488][ T35] ops_init+0x31e/0x590
[ 136.343488][ T35] setup_net+0x287/0x9e0
[ 136.343488][ T35] copy_net_ns+0x33f/0x570
[ 136.343488][ T35] create_new_namespaces+0x425/0x7b0
[ 136.343488][ T35] unshare_nsproxy_namespaces+0x124/0x180
[ 136.343488][ T35] ksys_unshare+0x57d/0xa70
[ 136.343488][ T35] __x64_sys_unshare+0x38/0x40
[ 136.343488][ T35] do_syscall_64+0xf3/0x230
[ 136.343488][ T35] entry_SYSCALL_64_after_hwframe+0x77/0x7f
Fixes: 0cafd77dcd ("net: add a refcount tracker for kernel sockets")
Reported-by: syzbot+30a19e01a97420719891@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/netdev/67b72aeb.050a0220.14d86d.0283.GAE@google.com/T/#u
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250220131854.4048077-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-08-20 18:30:56 +02:00
..
2024-05-01 18:07:37 +01:00
2025-08-15 12:13:46 +02:00
2024-08-26 09:37:23 -07:00
2024-08-26 09:37:22 -07:00
2024-09-09 13:15:37 -07:00
2025-03-28 22:03:28 +01:00
2025-07-24 08:56:33 +02:00
2025-02-08 09:58:00 +01:00
2024-08-26 09:37:23 -07:00
2025-06-19 15:31:42 +02:00
2025-04-20 10:15:50 +02:00
2025-08-15 12:13:43 +02:00
2024-08-26 09:37:23 -07:00
2024-06-25 11:10:18 +02:00
2025-07-17 18:37:05 +02:00
2025-02-08 09:57:10 +01:00
2024-08-26 09:37:22 -07:00
2024-08-26 09:37:22 -07:00
2024-11-14 11:16:28 +01:00
2024-08-27 13:11:37 -07:00
2024-08-29 11:49:10 -07:00
2024-10-02 17:23:23 -04:00
2025-08-20 18:30:31 +02:00
2025-06-27 11:11:40 +01:00
2024-10-02 17:23:23 -04:00
2024-06-05 10:24:57 +01:00
2024-08-26 09:37:23 -07:00
2024-08-16 09:59:32 +01:00
2024-05-08 10:35:09 +01:00
2024-08-26 09:37:23 -07:00
2024-08-20 15:22:17 -07:00
2024-05-29 17:34:49 -07:00
2025-08-15 12:13:41 +02:00
2024-08-26 09:37:23 -07:00
2024-04-01 21:27:08 -07:00
2024-07-15 09:14:39 -07:00
2024-06-12 17:56:00 -07:00
2024-10-15 17:52:58 -07:00
2024-04-01 10:49:28 +01:00
2025-02-27 04:30:18 -08:00
2024-05-07 01:35:55 +02:00
2024-04-30 18:46:52 -07:00
2024-08-26 09:37:23 -07:00
2024-05-08 10:35:09 +01:00
2024-10-25 10:44:41 +01:00
2024-08-05 16:27:26 -07:00
2024-05-13 18:19:09 -06:00
2025-01-17 13:40:37 +01:00
2024-05-23 14:14:23 -07:00
2024-08-05 16:22:45 -07:00
2024-08-05 16:22:45 -07:00
2024-08-28 17:08:16 -07:00
2025-02-08 09:57:06 +01:00
2024-04-29 13:32:01 +01:00
2024-07-14 07:34:16 -07:00
2024-04-01 10:49:28 +01:00
2024-09-04 16:40:33 -07:00
2024-10-29 11:12:25 -07:00
2025-03-07 18:25:29 +01:00
2024-08-05 16:27:26 -07:00
2025-06-27 11:11:41 +01:00
2024-09-03 11:49:27 +02:00
2025-08-20 18:30:18 +02:00
2025-02-21 14:01:16 +01:00
2024-12-19 18:13:13 +01:00
2024-08-27 10:28:49 +02:00
2024-07-15 08:51:01 -07:00
2024-08-26 09:37:23 -07:00
2024-07-15 08:51:19 -07:00
2025-08-15 12:13:41 +02:00
2025-08-20 18:30:32 +02:00
2024-10-02 17:23:23 -04:00
2024-04-25 08:20:54 -07:00
2024-10-10 15:39:35 +02:00
2024-09-11 15:57:50 -07:00
2024-08-12 17:23:57 -07:00
2025-08-20 18:30:37 +02:00
2024-12-05 14:03:08 +01:00
2025-08-20 18:30:56 +02:00
2025-05-18 08:24:50 +02:00
2024-09-12 21:00:26 -07:00
2024-08-26 09:37:22 -07:00
2024-08-26 09:37:23 -07:00
2024-09-11 20:44:31 -07:00
2024-08-12 17:50:34 -07:00
2024-08-30 22:30:55 +02:00
2024-04-01 10:49:28 +01:00
2025-02-08 09:57:25 +01:00
2024-04-30 18:46:52 -07:00
2024-07-11 18:11:31 -07:00
2024-08-26 09:37:23 -07:00
2024-08-26 09:37:23 -07:00
2024-06-06 15:18:04 +02:00
2025-03-07 18:25:29 +01:00
2024-04-01 11:28:32 +01:00
2024-08-07 10:24:46 +01:00
2024-10-10 15:39:35 +02:00
2025-05-22 14:29:39 +02:00
2024-05-10 18:52:45 -07:00
2024-05-30 18:29:38 -07:00
2024-06-24 16:41:23 -07:00
2024-05-30 18:29:38 -07:00
2024-04-30 13:24:48 +02:00
2024-08-02 17:16:59 -07:00
2025-08-20 18:30:56 +02:00
2025-02-27 04:30:19 -08:00
2024-12-14 20:03:53 +01:00
2025-02-27 04:30:19 -08:00
2024-07-08 14:07:31 -07:00
2024-05-09 20:25:55 -07:00
2024-11-06 11:08:56 -08:00
2024-04-01 10:49:28 +01:00
2025-08-15 12:14:06 +02:00
2024-08-26 09:37:23 -07:00
2024-05-08 08:51:20 +02:00
2025-05-09 09:50:38 +02:00
2025-05-29 11:03:14 +02:00
2025-05-09 09:50:38 +02:00