Paolo Abeni
1c518ae983
mr: consolidate the ipmr_can_free_table() checks.
[ Upstream commit c46286fdd6 ]
Guoyu Yin reported a splat in the ipmr netns cleanup path:
WARNING: CPU: 2 PID: 14564 at net/ipv4/ipmr.c:440 ipmr_free_table net/ipv4/ipmr.c:440 [inline]
WARNING: CPU: 2 PID: 14564 at net/ipv4/ipmr.c:440 ipmr_rules_exit+0x135/0x1c0 net/ipv4/ipmr.c:361
Modules linked in:
CPU: 2 UID: 0 PID: 14564 Comm: syz.4.838 Not tainted 6.14.0 #1
Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
RIP: 0010:ipmr_free_table net/ipv4/ipmr.c:440 [inline]
RIP: 0010:ipmr_rules_exit+0x135/0x1c0 net/ipv4/ipmr.c:361
Code: ff df 48 c1 ea 03 80 3c 02 00 75 7d 48 c7 83 60 05 00 00 00 00 00 00 5b 5d 41 5c 41 5d 41 5e e9 71 67 7f 00 e8 4c 2d 8a fd 90 <0f> 0b 90 eb 93 e8 41 2d 8a fd 0f b6 2d 80 54 ea 01 31 ff 89 ee e8
RSP: 0018:ffff888109547c58 EFLAGS: 00010293
RAX: 0000000000000000 RBX: ffff888108c12dc0 RCX: ffffffff83e09868
RDX: ffff8881022b3300 RSI: ffffffff83e098d4 RDI: 0000000000000005
RBP: ffff888104288000 R08: 0000000000000000 R09: ffffed10211825c9
R10: 0000000000000001 R11: ffff88801816c4a0 R12: 0000000000000001
R13: ffff888108c13320 R14: ffff888108c12dc0 R15: fffffbfff0b74058
FS: 00007f84f39316c0(0000) GS:ffff88811b100000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f84f3930f98 CR3: 0000000113b56000 CR4: 0000000000350ef0
Call Trace:
<TASK>
ipmr_net_exit_batch+0x50/0x90 net/ipv4/ipmr.c:3160
ops_exit_list+0x10c/0x160 net/core/net_namespace.c:177
setup_net+0x47d/0x8e0 net/core/net_namespace.c:394
copy_net_ns+0x25d/0x410 net/core/net_namespace.c:516
create_new_namespaces+0x3f6/0xaf0 kernel/nsproxy.c:110
unshare_nsproxy_namespaces+0xc3/0x180 kernel/nsproxy.c:228
ksys_unshare+0x78d/0x9a0 kernel/fork.c:3342
__do_sys_unshare kernel/fork.c:3413 [inline]
__se_sys_unshare kernel/fork.c:3411 [inline]
__x64_sys_unshare+0x31/0x40 kernel/fork.c:3411
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0xa6/0x1a0 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f84f532cc29
Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f84f3931038 EFLAGS: 00000246 ORIG_RAX: 0000000000000110
RAX: ffffffffffffffda RBX: 00007f84f5615fa0 RCX: 00007f84f532cc29
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000040000400
RBP: 00007f84f53fba18 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000000 R14: 00007f84f5615fa0 R15: 00007fff51c5f328
</TASK>
The running kernel has CONFIG_IP_MROUTE_MULTIPLE_TABLES disabled, and
the sanity check for such build is still too loose.
Address the issue consolidating the relevant sanity check in a single
helper regardless of the kernel configuration. Also share it between
the ipv4 and ipv6 code.
Reported-by: Guoyu Yin <y04609127@gmail.com>
Fixes: 50b9420444 ("ipmr: tune the ipmr_can_free_table() checks.")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Link: https://patch.msgid.link/372dc261e1bf12742276e1b984fc5a071b7fc5a8.1747321903.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-05-29 11:13:58 +02:00
..
2025-03-06 11:08:45 +01:00
2025-05-02 08:01:46 +02:00
2024-01-30 12:43:18 +01:00
2025-05-18 08:25:57 +02:00
2024-10-15 18:52:26 -07:00
2024-10-15 18:43:08 -07:00
2024-02-09 14:12:01 -08:00
2025-01-09 12:54:45 +01:00
2025-04-10 14:44:40 +02:00
2023-12-11 10:59:17 +00:00
2024-10-29 11:56:18 +01:00
2025-05-29 11:13:55 +02:00
2023-05-24 08:43:39 +01:00
2024-01-05 08:11:49 -08:00
2024-03-11 15:15:08 -07:00
2024-10-11 15:35:05 -07:00
2025-05-29 11:13:33 +02:00
2020-06-20 21:33:57 -07:00
2025-02-06 16:14:15 -08:00
2023-10-01 19:09:54 +01:00
2024-08-05 16:27:26 -07:00
2025-03-20 11:25:52 +01:00
2024-11-11 10:32:06 -08:00
2024-11-11 15:26:10 -08:00
2023-09-15 10:33:48 +01:00
2025-05-29 11:13:11 +02:00
2021-02-23 11:29:52 -08:00
2025-02-06 16:14:15 -08:00
2024-05-27 16:46:59 -07:00
2025-05-29 11:13:49 +02:00
2025-05-29 11:13:11 +02:00
2024-02-09 14:12:01 -08:00
2025-05-29 11:13:11 +02:00
2025-05-29 11:13:58 +02:00
2022-09-29 07:18:00 +02:00
2024-08-26 14:53:50 -07:00
2024-09-22 19:52:07 +01:00
2023-10-27 10:35:44 +01:00
2021-04-27 14:02:06 -07:00
2025-02-13 08:37:21 -08:00
2024-02-09 14:12:01 -08:00
2025-02-10 18:09:10 -08:00
2024-06-13 13:13:46 -07:00
2024-03-01 08:42:31 +00:00
2024-12-16 18:13:44 -08:00
2024-07-28 13:41:14 -07:00
2024-12-16 18:13:44 -08:00
2024-05-23 14:14:23 -07:00
2025-04-25 10:50:50 +02:00
2025-02-27 14:18:22 +01:00
2023-06-19 11:32:58 -07:00
2024-05-21 13:16:25 +02:00
2025-02-27 14:18:21 +01:00
2024-11-12 11:24:51 +01:00
2024-05-30 18:29:38 -07:00
2025-05-29 11:13:11 +02:00
2024-06-19 12:44:22 +01:00
2024-07-24 20:59:29 +02:00
2023-10-27 10:35:46 +01:00
2024-11-14 11:29:15 -08:00
2025-05-09 09:56:03 +02:00
2024-02-09 14:12:01 -08:00
2022-10-12 17:50:37 -07:00
2024-05-02 11:02:48 +02:00
2025-02-03 10:13:27 +00:00
2023-09-14 16:16:36 +02:00
2025-05-29 11:13:55 +02:00
2025-01-20 07:06:53 +01:00
2024-09-23 07:02:07 +02:00
2024-03-08 10:56:05 +00:00