Liu Jian
ddd7e8b7b8
igmp: Add ip_mc_list lock in ip_check_mc_rcu
...
commit 23d2b94043ca8835bd1e67749020e839f396a1c2 upstream.
I got below panic when doing fuzz test:
Kernel panic - not syncing: panic_on_warn set ...
CPU: 0 PID: 4056 Comm: syz-executor.3 Tainted: G B 5.14.0-rc1-00195-gcff5c4254439-dirty #2
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
Call Trace:
dump_stack_lvl+0x7a/0x9b
panic+0x2cd/0x5af
end_report.cold+0x5a/0x5a
kasan_report+0xec/0x110
ip_check_mc_rcu+0x556/0x5d0
__mkroute_output+0x895/0x1740
ip_route_output_key_hash_rcu+0x2d0/0x1050
ip_route_output_key_hash+0x182/0x2e0
ip_route_output_flow+0x28/0x130
udp_sendmsg+0x165d/0x2280
udpv6_sendmsg+0x121e/0x24f0
inet6_sendmsg+0xf7/0x140
sock_sendmsg+0xe9/0x180
____sys_sendmsg+0x2b8/0x7a0
___sys_sendmsg+0xf0/0x160
__sys_sendmmsg+0x17e/0x3c0
__x64_sys_sendmmsg+0x9e/0x100
do_syscall_64+0x3b/0x90
entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x462eb9
Code: f7 d8 64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 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 bc ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f3df5af1c58 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
RAX: ffffffffffffffda RBX: 000000000073bf00 RCX: 0000000000462eb9
RDX: 0000000000000312 RSI: 0000000020001700 RDI: 0000000000000007
RBP: 0000000000000004 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00007f3df5af26bc
R13: 00000000004c372d R14: 0000000000700b10 R15: 00000000ffffffff
It is one use-after-free in ip_check_mc_rcu.
In ip_mc_del_src, the ip_sf_list of pmc has been freed under pmc->lock protection.
But access to ip_sf_list in ip_check_mc_rcu is not protected by the lock.
Signed-off-by: Liu Jian <liujian56@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-12 08:58:26 +02:00
..
2021-04-07 15:00:08 +02:00
2021-07-31 08:16:11 +02:00
2021-01-17 14:16:55 +01:00
2021-04-07 15:00:08 +02:00
2020-10-31 12:26:30 -07:00
2021-06-23 14:42:41 +02:00
2021-08-26 08:35:40 -04:00
2021-09-03 10:09:21 +02:00
2021-07-14 16:56:29 +02:00
2021-08-18 08:59:13 +02:00
2021-07-28 14:35:38 +02:00
2021-08-04 12:46:45 +02:00
2020-10-12 15:29:27 +02:00
2021-09-03 10:09:25 +02:00
2021-01-23 16:04:01 +01:00
2021-08-26 08:35:41 -04:00
2021-07-28 14:35:38 +02:00
2021-07-25 14:36:20 +02:00
2021-06-30 08:47:20 -04:00
2021-06-03 09:00:50 +02:00
2021-08-18 08:59:12 +02:00
2021-09-12 08:58:26 +02:00
2021-09-03 10:09:24 +02:00
2021-03-07 12:34:05 +01:00
2021-02-13 13:55:02 +01:00
2021-03-17 17:06:11 +01:00
2020-08-27 07:55:59 -07:00
2021-02-10 09:29:14 +01:00
2021-08-04 12:46:43 +02:00
2021-08-04 12:46:42 +02:00
2021-04-14 08:42:13 +02:00
2021-03-17 17:06:11 +01:00
2021-07-28 14:35:34 +02:00
2021-04-14 08:42:08 +02:00
2021-09-03 10:09:21 +02:00
2021-07-14 16:56:22 +02:00
2021-06-16 12:01:36 +02:00
2021-07-28 14:35:38 +02:00
2021-06-16 12:01:35 +02:00
2021-08-26 08:35:50 -04:00
2021-06-30 08:47:22 -04:00
2021-03-07 12:34:07 +01:00
2021-09-03 10:09:21 +02:00
2021-09-03 10:09:28 +02:00
2020-11-12 09:18:06 +01:00
2020-11-20 10:04:58 -08:00
2021-02-17 11:02:28 +01:00
2021-09-03 10:09:24 +02:00
2021-08-12 13:22:06 +02:00
2021-08-18 08:59:10 +02:00
2021-07-20 16:05:51 +02:00
2021-02-07 15:37:12 +01:00
2021-09-03 10:09:28 +02:00
2021-07-14 16:56:24 +02:00
2021-07-31 08:16:11 +02:00
2021-08-18 08:59:14 +02:00
2020-10-02 19:11:11 -07:00
2021-08-04 12:46:41 +02:00
2021-06-18 10:00:06 +02:00
2021-07-14 16:56:23 +02:00
2021-08-26 08:35:35 -04:00
2021-06-18 10:00:06 +02:00
2020-09-30 18:01:26 -07:00
2021-09-03 10:09:31 +02:00