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