Liu Jian
d84708451d
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:56:40 +02:00
..
2020-11-05 11:43:20 +01:00
2021-07-31 08:19:38 +02:00
2021-01-17 14:05:31 +01:00
2021-04-07 14:47:41 +02:00
2020-10-01 13:17:58 +02:00
2020-07-31 18:39:31 +02:00
2021-06-23 14:41:23 +02:00
2021-08-26 08:36:15 -04:00
2019-07-25 18:00:41 -07:00
2021-07-14 16:53:33 +02:00
2021-08-18 08:57:00 +02:00
2021-07-28 13:30:56 +02:00
2021-08-04 12:27:40 +02:00
2020-11-05 11:43:34 +01:00
2021-09-03 10:08:14 +02:00
2021-01-23 15:57:59 +01:00
2021-08-26 08:36:16 -04:00
2021-07-28 13:30:56 +02:00
2020-04-23 10:36:45 +02:00
2021-06-03 08:59:12 +02:00
2020-01-09 10:20:06 +01:00
2021-05-14 09:44:10 +02:00
2021-08-18 08:57:00 +02:00
2019-09-26 08:56:17 +02:00
2021-09-12 08:56:40 +02:00
2021-07-31 08:19:39 +02:00
2021-03-07 12:20:42 +01:00
2019-09-27 10:27:14 +02:00
2021-02-13 13:52:54 +01:00
2020-07-22 09:32:47 +02:00
2021-02-10 09:25:28 +01:00
2021-08-04 12:27:39 +02:00
2021-07-14 16:53:32 +02:00
2021-04-14 08:24:18 +02:00
2021-03-17 17:03:31 +01:00
2021-04-14 08:24:15 +02:00
2021-09-03 10:08:12 +02:00
2021-07-14 16:53:29 +02:00
2021-06-16 11:59:34 +02:00
2021-07-28 13:30:56 +02:00
2021-06-16 11:59:33 +02:00
2021-08-26 08:36:19 -04:00
2021-06-30 08:47:48 -04:00
2019-10-28 13:33:41 -07:00
2019-12-04 22:30:54 +01:00
2021-09-03 10:08:12 +02:00
2021-09-03 10:08:15 +02:00
2020-11-24 13:29:05 +01:00
2020-12-08 10:40:23 +01:00
2021-02-17 10:35:18 +01:00
2021-08-18 08:56:59 +02:00
2021-08-12 13:20:57 +02:00
2021-06-03 08:59:08 +02:00
2021-07-14 16:53:05 +02:00
2021-02-07 15:35:46 +01:00
2021-08-04 12:27:39 +02:00
2021-07-14 16:53:31 +02:00
2021-07-31 08:19:37 +02:00
2021-08-18 08:57:01 +02:00
2019-08-10 15:25:47 -07:00
2021-08-04 12:27:38 +02:00
2021-06-18 09:59:00 +02:00
2021-05-22 11:38:27 +02:00
2021-07-19 08:53:11 +02:00
2021-06-18 09:59:00 +02:00
2020-04-01 11:02:18 +02:00
2021-09-03 10:08:16 +02:00