Ziyang Xuan
0cf600ca1b
ipv6: Fix an uninit variable access bug in __ip6_make_skb()
...
[ Upstream commit ea30388baebcce37fd594d425a65037ca35e59e8 ]
Syzbot reported a bug as following:
=====================================================
BUG: KMSAN: uninit-value in arch_atomic64_inc arch/x86/include/asm/atomic64_64.h:88 [inline]
BUG: KMSAN: uninit-value in arch_atomic_long_inc include/linux/atomic/atomic-long.h:161 [inline]
BUG: KMSAN: uninit-value in atomic_long_inc include/linux/atomic/atomic-instrumented.h:1429 [inline]
BUG: KMSAN: uninit-value in __ip6_make_skb+0x2f37/0x30f0 net/ipv6/ip6_output.c:1956
arch_atomic64_inc arch/x86/include/asm/atomic64_64.h:88 [inline]
arch_atomic_long_inc include/linux/atomic/atomic-long.h:161 [inline]
atomic_long_inc include/linux/atomic/atomic-instrumented.h:1429 [inline]
__ip6_make_skb+0x2f37/0x30f0 net/ipv6/ip6_output.c:1956
ip6_finish_skb include/net/ipv6.h:1122 [inline]
ip6_push_pending_frames+0x10e/0x550 net/ipv6/ip6_output.c:1987
rawv6_push_pending_frames+0xb12/0xb90 net/ipv6/raw.c:579
rawv6_sendmsg+0x297e/0x2e60 net/ipv6/raw.c:922
inet_sendmsg+0x101/0x180 net/ipv4/af_inet.c:827
sock_sendmsg_nosec net/socket.c:714 [inline]
sock_sendmsg net/socket.c:734 [inline]
____sys_sendmsg+0xa8e/0xe70 net/socket.c:2476
___sys_sendmsg+0x2a1/0x3f0 net/socket.c:2530
__sys_sendmsg net/socket.c:2559 [inline]
__do_sys_sendmsg net/socket.c:2568 [inline]
__se_sys_sendmsg net/socket.c:2566 [inline]
__x64_sys_sendmsg+0x367/0x540 net/socket.c:2566
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
Uninit was created at:
slab_post_alloc_hook mm/slab.h:766 [inline]
slab_alloc_node mm/slub.c:3452 [inline]
__kmem_cache_alloc_node+0x71f/0xce0 mm/slub.c:3491
__do_kmalloc_node mm/slab_common.c:967 [inline]
__kmalloc_node_track_caller+0x114/0x3b0 mm/slab_common.c:988
kmalloc_reserve net/core/skbuff.c:492 [inline]
__alloc_skb+0x3af/0x8f0 net/core/skbuff.c:565
alloc_skb include/linux/skbuff.h:1270 [inline]
__ip6_append_data+0x51c1/0x6bb0 net/ipv6/ip6_output.c:1684
ip6_append_data+0x411/0x580 net/ipv6/ip6_output.c:1854
rawv6_sendmsg+0x2882/0x2e60 net/ipv6/raw.c:915
inet_sendmsg+0x101/0x180 net/ipv4/af_inet.c:827
sock_sendmsg_nosec net/socket.c:714 [inline]
sock_sendmsg net/socket.c:734 [inline]
____sys_sendmsg+0xa8e/0xe70 net/socket.c:2476
___sys_sendmsg+0x2a1/0x3f0 net/socket.c:2530
__sys_sendmsg net/socket.c:2559 [inline]
__do_sys_sendmsg net/socket.c:2568 [inline]
__se_sys_sendmsg net/socket.c:2566 [inline]
__x64_sys_sendmsg+0x367/0x540 net/socket.c:2566
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
It is because icmp6hdr does not in skb linear region under the scenario
of SOCK_RAW socket. Access icmp6_hdr(skb)->icmp6_type directly will
trigger the uninit variable access bug.
Use a local variable icmp6_type to carry the correct value in different
scenarios.
Fixes: 14878f75abd5 ("[IPV6]: Add ICMPMsgStats MIB (RFC 4293) [rev 2]")
Reported-by: syzbot+8257f4dcef79de670baf@syzkaller.appspotmail.com
Link: https://syzkaller.appspot.com/bug?id=3d605ec1d0a7f2a269a1a6936ac7f2b85975ee9c
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-04-20 12:07:33 +02:00
..
2021-09-15 09:47:31 +02:00
2023-03-11 16:44:12 +01:00
2023-01-18 11:41:37 +01:00
2021-12-01 09:23:34 +01:00
2021-04-07 14:47:41 +02:00
2023-04-20 12:07:32 +02:00
2022-04-20 09:19:40 +02:00
2022-05-18 09:47:24 +02:00
2023-03-11 16:44:16 +01:00
2023-01-18 11:41:04 +01:00
2021-07-14 16:53:33 +02:00
2023-02-22 12:50:24 +01:00
2023-03-17 08:32:51 +01:00
2023-04-05 11:16:44 +02:00
2020-11-05 11:43:34 +01:00
2023-04-20 12:07:33 +02:00
2022-03-08 19:07:51 +01:00
2023-02-22 12:50:40 +01:00
2021-07-28 13:30:56 +02:00
2020-04-23 10:36:45 +02:00
2022-12-14 11:30:45 +01:00
2023-01-18 11:41:09 +01:00
2022-11-03 23:56:54 +09:00
2023-04-20 12:07:33 +02:00
2023-04-20 12:07:33 +02:00
2023-04-20 12:07:32 +02:00
2022-11-25 17:42:21 +01:00
2022-12-08 11:22:57 +01:00
2023-02-06 07:52:38 +01:00
2022-04-27 13:50:47 +02:00
2021-02-10 09:25:28 +01:00
2022-03-28 08:46:48 +02:00
2023-04-20 12:07:33 +02:00
2022-12-14 11:30:45 +01:00
2023-02-22 12:50:41 +01:00
2022-01-05 12:37:45 +01:00
2023-03-22 13:28:04 +01:00
2022-04-15 14:18:35 +02:00
2023-02-06 07:52:45 +01:00
2023-02-22 12:50:24 +01:00
2023-03-17 08:32:48 +01:00
2023-02-22 12:50:25 +01:00
2023-01-18 11:41:45 +01:00
2022-01-11 15:23:33 +01:00
2021-09-03 10:08:12 +02:00
2023-03-11 16:43:41 +01:00
2020-11-24 13:29:05 +01:00
2023-02-22 12:50:34 +01:00
2023-01-18 11:41:33 +01:00
2023-04-05 11:16:46 +02:00
2023-04-20 12:07:33 +02:00
2023-03-17 08:32:51 +01:00
2021-11-17 09:48:48 +01:00
2023-02-22 12:50:29 +01:00
2021-10-27 09:54:24 +02:00
2023-01-18 11:42:06 +01:00
2023-04-05 11:16:36 +02:00
2022-12-14 11:30:44 +01:00
2023-01-18 11:41:13 +01:00
2023-03-13 10:18:25 +01:00
2023-02-22 12:50:26 +01:00
2021-12-22 09:29:40 +01:00
2023-03-22 13:28:03 +01:00
2021-06-18 09:59:00 +02:00
2020-04-01 11:02:18 +02:00
2022-09-05 10:27:42 +02:00