[syzbot] [mptcp?] KMSAN: uninit-value in mptcp_incoming_options

12 views
Skip to first unread message

syzbot

unread,
Nov 22, 2023, 10:43:25 AM11/22/23
to da...@davemloft.net, edum...@google.com, ku...@kernel.org, linux-...@vger.kernel.org, mart...@kernel.org, matthie...@tessares.net, mat...@kernel.org, mp...@lists.linux.dev, net...@vger.kernel.org, pab...@redhat.com, syzkall...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: c2d5304e6c64 Merge tag 'platform-drivers-x86-v6.7-2' of gi..
git tree: upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=1536e3d4e80000
kernel config: https://syzkaller.appspot.com/x/.config?x=e32016b84cf917ca
dashboard link: https://syzkaller.appspot.com/bug?extid=b834a6b2decad004cfa1
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=11469724e80000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=13934aaf680000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/23ea827adf3b/disk-c2d5304e.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/0f964ac588f5/vmlinux-c2d5304e.xz
kernel image: https://storage.googleapis.com/syzbot-assets/b061be889285/bzImage-c2d5304e.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+b834a6...@syzkaller.appspotmail.com

=====================================================
BUG: KMSAN: uninit-value in mptcp_incoming_options+0xc93/0x3a80 net/mptcp/options.c:1197
mptcp_incoming_options+0xc93/0x3a80 net/mptcp/options.c:1197
tcp_data_queue+0xb4/0x7f20 net/ipv4/tcp_input.c:5141
tcp_rcv_established+0x1132/0x2600 net/ipv4/tcp_input.c:6155
tcp_v4_do_rcv+0x8a8/0xff0 net/ipv4/tcp_ipv4.c:1906
tcp_v4_rcv+0x4ce0/0x51a0 net/ipv4/tcp_ipv4.c:2329
ip_protocol_deliver_rcu+0x264/0x1300 net/ipv4/ip_input.c:205
ip_local_deliver_finish+0x2b8/0x440 net/ipv4/ip_input.c:233
NF_HOOK include/linux/netfilter.h:314 [inline]
ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
dst_input include/net/dst.h:461 [inline]
ip_rcv_finish net/ipv4/ip_input.c:449 [inline]
NF_HOOK include/linux/netfilter.h:314 [inline]
ip_rcv+0x476/0x770 net/ipv4/ip_input.c:569
__netif_receive_skb_one_core net/core/dev.c:5529 [inline]
__netif_receive_skb+0x1a6/0x5a0 net/core/dev.c:5643
process_backlog+0x480/0x8b0 net/core/dev.c:5971
__napi_poll+0xe3/0x970 net/core/dev.c:6533
napi_poll net/core/dev.c:6602 [inline]
net_rx_action+0x884/0x16d0 net/core/dev.c:6735
__do_softirq+0x1b7/0x7c3 kernel/softirq.c:553
do_softirq+0x9a/0xf0 kernel/softirq.c:454
__local_bh_enable_ip+0x99/0xa0 kernel/softirq.c:381
local_bh_enable include/linux/bottom_half.h:33 [inline]
rcu_read_unlock_bh include/linux/rcupdate.h:817 [inline]
__dev_queue_xmit+0x24ff/0x5130 net/core/dev.c:4373
dev_queue_xmit include/linux/netdevice.h:3112 [inline]
neigh_hh_output include/net/neighbour.h:526 [inline]
neigh_output include/net/neighbour.h:540 [inline]
ip_finish_output2+0x14be/0x1b40 net/ipv4/ip_output.c:235
__ip_finish_output+0x266/0x720
ip_finish_output+0x4b/0x550 net/ipv4/ip_output.c:323
NF_HOOK_COND include/linux/netfilter.h:303 [inline]
ip_output+0x15f/0x3e0 net/ipv4/ip_output.c:433
dst_output include/net/dst.h:451 [inline]
ip_local_out net/ipv4/ip_output.c:129 [inline]
__ip_queue_xmit+0x1c02/0x1e00 net/ipv4/ip_output.c:535
ip_queue_xmit+0x60/0x80 net/ipv4/ip_output.c:549
__tcp_transmit_skb+0x3b26/0x4c40 net/ipv4/tcp_output.c:1462
tcp_transmit_skb net/ipv4/tcp_output.c:1480 [inline]
tcp_write_xmit+0x3e0f/0x8940 net/ipv4/tcp_output.c:2792
__tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:2977
tcp_push+0x755/0x7a0 net/ipv4/tcp.c:736
mptcp_push_release net/mptcp/protocol.c:1489 [inline]
__mptcp_push_pending+0x8bc/0xde0 net/mptcp/protocol.c:1624
mptcp_sendmsg+0x1e90/0x2300 net/mptcp/protocol.c:1890
inet_sendmsg+0x105/0x190 net/ipv4/af_inet.c:847
sock_sendmsg_nosec net/socket.c:730 [inline]
__sock_sendmsg net/socket.c:745 [inline]
____sys_sendmsg+0x9c2/0xd60 net/socket.c:2584
___sys_sendmsg+0x28d/0x3c0 net/socket.c:2638
__sys_sendmmsg+0x3c4/0x950 net/socket.c:2724
__do_sys_sendmmsg net/socket.c:2753 [inline]
__se_sys_sendmmsg net/socket.c:2750 [inline]
__x64_sys_sendmmsg+0xbc/0x120 net/socket.c:2750
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x44/0x110 arch/x86/entry/common.c:82
entry_SYSCALL_64_after_hwframe+0x63/0x6b

Uninit was stored to memory at:
mptcp_parse_option net/mptcp/options.c:110 [inline]
mptcp_get_options+0x2d86/0x2e60 net/mptcp/options.c:396
mptcp_incoming_options+0x124/0x3a80 net/mptcp/options.c:1139
tcp_data_queue+0xb4/0x7f20 net/ipv4/tcp_input.c:5141
tcp_rcv_established+0x1132/0x2600 net/ipv4/tcp_input.c:6155
tcp_v4_do_rcv+0x8a8/0xff0 net/ipv4/tcp_ipv4.c:1906
tcp_v4_rcv+0x4ce0/0x51a0 net/ipv4/tcp_ipv4.c:2329
ip_protocol_deliver_rcu+0x264/0x1300 net/ipv4/ip_input.c:205
ip_local_deliver_finish+0x2b8/0x440 net/ipv4/ip_input.c:233
NF_HOOK include/linux/netfilter.h:314 [inline]
ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
dst_input include/net/dst.h:461 [inline]
ip_rcv_finish net/ipv4/ip_input.c:449 [inline]
NF_HOOK include/linux/netfilter.h:314 [inline]
ip_rcv+0x476/0x770 net/ipv4/ip_input.c:569
__netif_receive_skb_one_core net/core/dev.c:5529 [inline]
__netif_receive_skb+0x1a6/0x5a0 net/core/dev.c:5643
process_backlog+0x480/0x8b0 net/core/dev.c:5971
__napi_poll+0xe3/0x970 net/core/dev.c:6533
napi_poll net/core/dev.c:6602 [inline]
net_rx_action+0x884/0x16d0 net/core/dev.c:6735
__do_softirq+0x1b7/0x7c3 kernel/softirq.c:553

Local variable mp_opt created at:
mptcp_incoming_options+0x9b/0x3a80 net/mptcp/options.c:1116
tcp_data_queue+0xb4/0x7f20 net/ipv4/tcp_input.c:5141

CPU: 0 PID: 5031 Comm: syz-executor376 Not tainted 6.7.0-rc2-syzkaller-00014-gc2d5304e6c64 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/10/2023
=====================================================


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup

Edward Adam Davis

unread,
Nov 22, 2023, 7:06:56 PM11/22/23
to syzbot+b834a6...@syzkaller.appspotmail.com, syzkall...@googlegroups.com
please test uninit-value in mptcp_incoming_options

#syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git c2d5304e6c64

diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index cd15ec73073e..c53914012d01 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -108,6 +108,7 @@ static void mptcp_parse_option(const struct sk_buff *skb,
mp_opt->suboptions |= OPTION_MPTCP_DSS;
mp_opt->use_map = 1;
mp_opt->mpc_map = 1;
+ mp_opt->use_ack = 0;
mp_opt->data_len = get_unaligned_be16(ptr);
ptr += 2;
}

Kuniyuki Iwashima

unread,
Nov 22, 2023, 7:48:56 PM11/22/23
to syzbot+b834a6...@syzkaller.appspotmail.com, da...@davemloft.net, edum...@google.com, ku...@kernel.org, linux-...@vger.kernel.org, mart...@kernel.org, matthie...@tessares.net, mat...@kernel.org, mp...@lists.linux.dev, net...@vger.kernel.org, pab...@redhat.com, syzkall...@googlegroups.com, kun...@amazon.com
From: syzbot <syzbot+b834a6...@syzkaller.appspotmail.com>
Date: Wed, 22 Nov 2023 07:43:23 -0800
> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit: c2d5304e6c64 Merge tag 'platform-drivers-x86-v6.7-2' of gi..
> git tree: upstream
> console+strace: https://syzkaller.appspot.com/x/log.txt?x=1536e3d4e80000
> kernel config: https://syzkaller.appspot.com/x/.config?x=e32016b84cf917ca
> dashboard link: https://syzkaller.appspot.com/bug?extid=b834a6b2decad004cfa1
> compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=11469724e80000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=13934aaf680000
>
> Downloadable assets:
> disk image: https://storage.googleapis.com/syzbot-assets/23ea827adf3b/disk-c2d5304e.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/0f964ac588f5/vmlinux-c2d5304e.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/b061be889285/bzImage-c2d5304e.xz
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+b834a6...@syzkaller.appspotmail.com
>
> =====================================================
> BUG: KMSAN: uninit-value in mptcp_incoming_options+0xc93/0x3a80 net/mptcp/options.c:1197

#syz test git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git c2d5304e6c648ebcf653bace7e51e0e6742e46c8

diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index cd15ec73073e..01066aa7e67d 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -370,6 +370,7 @@ void mptcp_get_options(const struct sk_buff *skb,

/* initialize option status */
mp_opt->suboptions = 0;
+ mp_opt->use_ack = 0;

length = (th->doff * 4) - sizeof(struct tcphdr);
ptr = (const unsigned char *)(th + 1);

syzbot

unread,
Nov 22, 2023, 7:51:07 PM11/22/23
to ead...@qq.com, linux-...@vger.kernel.org, syzkall...@googlegroups.com
Hello,

syzbot has tested the proposed patch and the reproducer did not trigger any issue:

Reported-and-tested-by: syzbot+b834a6...@syzkaller.appspotmail.com

Tested on:

commit: c2d5304e Merge tag 'platform-drivers-x86-v6.7-2' of gi..
git tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
console output: https://syzkaller.appspot.com/x/log.txt?x=1756c634e80000
kernel config: https://syzkaller.appspot.com/x/.config?x=e32016b84cf917ca
dashboard link: https://syzkaller.appspot.com/bug?extid=b834a6b2decad004cfa1
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
patch: https://syzkaller.appspot.com/x/patch.diff?x=14d59a34e80000

Note: testing is done by a robot and is best-effort only.

syzbot

unread,
Nov 22, 2023, 8:17:08 PM11/22/23
to da...@davemloft.net, edum...@google.com, ku...@kernel.org, kun...@amazon.com, linux-...@vger.kernel.org, mart...@kernel.org, matthie...@tessares.net, mat...@kernel.org, mp...@lists.linux.dev, net...@vger.kernel.org, pab...@redhat.com, syzkall...@googlegroups.com
Hello,

syzbot has tested the proposed patch and the reproducer did not trigger any issue:

Reported-and-tested-by: syzbot+b834a6...@syzkaller.appspotmail.com

Tested on:

commit: c2d5304e Merge tag 'platform-drivers-x86-v6.7-2' of gi..
git tree: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
console output: https://syzkaller.appspot.com/x/log.txt?x=16f3d6c8e80000
kernel config: https://syzkaller.appspot.com/x/.config?x=e32016b84cf917ca
dashboard link: https://syzkaller.appspot.com/bug?extid=b834a6b2decad004cfa1
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
patch: https://syzkaller.appspot.com/x/patch.diff?x=139ddc4f680000

Edward Adam Davis

unread,
Nov 22, 2023, 8:23:50 PM11/22/23
to syzbot+b834a6...@syzkaller.appspotmail.com, da...@davemloft.net, edum...@google.com, ku...@kernel.org, linux-...@vger.kernel.org, mart...@kernel.org, matthie...@tessares.net, mat...@kernel.org, mp...@lists.linux.dev, net...@vger.kernel.org, pab...@redhat.com, syzkall...@googlegroups.com
Added initialization use_ack to mptcp_parse_option().

Reported-by: syzbot+b834a6...@syzkaller.appspotmail.com
Signed-off-by: Edward Adam Davis <ead...@qq.com>
---
net/mptcp/options.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index cd15ec73073e..c53914012d01 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -108,6 +108,7 @@ static void mptcp_parse_option(const struct sk_buff *skb,
mp_opt->suboptions |= OPTION_MPTCP_DSS;
mp_opt->use_map = 1;
mp_opt->mpc_map = 1;
+ mp_opt->use_ack = 0;
mp_opt->data_len = get_unaligned_be16(ptr);
ptr += 2;
}
--
2.25.1

Paolo Abeni

unread,
Nov 23, 2023, 3:01:04 AM11/23/23
to Kuniyuki Iwashima, syzbot+b834a6...@syzkaller.appspotmail.com, da...@davemloft.net, edum...@google.com, ku...@kernel.org, linux-...@vger.kernel.org, mart...@kernel.org, matthie...@tessares.net, mat...@kernel.org, mp...@lists.linux.dev, net...@vger.kernel.org, syzkall...@googlegroups.com
Hi.
Thanks for the patch! AFAICS it should work, but I think the variant
proposed by Edward:

https://lore.kernel.org/netdev/tencent_B0E02F1D6C0094...@qq.com/

should be better, adding the additional instruction only in the code
path needing it.

Thank!

Paolo

Paolo Abeni

unread,
Nov 23, 2023, 11:41:41 AM11/23/23
to Edward Adam Davis, syzbot+b834a6...@syzkaller.appspotmail.com, da...@davemloft.net, edum...@google.com, ku...@kernel.org, linux-...@vger.kernel.org, mart...@kernel.org, matthie...@tessares.net, mat...@kernel.org, mp...@lists.linux.dev, net...@vger.kernel.org, syzkall...@googlegroups.com
LGTM, and syzbot tested it.

Acked-by: Paolo Abeni <pab...@redhat.com>

@Edward: for future similar patches, please add also the tested tag
from syzbot, will make tracking easier.

Thanks!

Paolo

Edward Adam Davis

unread,
Nov 24, 2023, 6:06:47 AM11/24/23
to pab...@redhat.com, da...@davemloft.net, ead...@qq.com, edum...@google.com, ku...@kernel.org, linux-...@vger.kernel.org, mart...@kernel.org, matthie...@tessares.net, mat...@kernel.org, mp...@lists.linux.dev, net...@vger.kernel.org, syzbot+b834a6...@syzkaller.appspotmail.com, syzkall...@googlegroups.com
OK, I will.

Edward

patchwork-b...@kernel.org

unread,
Nov 24, 2023, 10:00:29 AM11/24/23
to Edward Adam Davis, syzbot+b834a6...@syzkaller.appspotmail.com, da...@davemloft.net, edum...@google.com, ku...@kernel.org, linux-...@vger.kernel.org, mart...@kernel.org, matthie...@tessares.net, mat...@kernel.org, mp...@lists.linux.dev, net...@vger.kernel.org, pab...@redhat.com, syzkall...@googlegroups.com
Hello:

This patch was applied to netdev/net.git (main)
by David S. Miller <da...@davemloft.net>:

On Thu, 23 Nov 2023 09:23:39 +0800 you wrote:
> Added initialization use_ack to mptcp_parse_option().
>
> Reported-by: syzbot+b834a6...@syzkaller.appspotmail.com
> Signed-off-by: Edward Adam Davis <ead...@qq.com>
> ---
> net/mptcp/options.c | 1 +
> 1 file changed, 1 insertion(+)

Here is the summary with links:
- mptcp: fix uninit-value in mptcp_incoming_options
https://git.kernel.org/netdev/net/c/237ff253f2d4

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html


Reply all
Reply to author
Forward
0 new messages