* [syzbot] [afs?] [net?] KMSAN: uninit-value in rxrpc_lookup_peer_rcu
@ 2024-10-24 22:43 syzbot
2024-11-05 19:19 ` [PATCH] rxrpc: Initialize sockaddr_rxrpc directly Matt Jan
0 siblings, 1 reply; 3+ messages in thread
From: syzbot @ 2024-10-24 22:43 UTC (permalink / raw)
To: davem, dhowells, edumazet, kuba, linux-afs, linux-kernel,
marc.dionne, netdev, pabeni, syzkaller-bugs
Hello,
syzbot found the following issue on:
HEAD commit: db87114dcf13 Merge tag 'x86_urgent_for_v6.12_rc4' of git:/..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=12cf2a40580000
kernel config: https://syzkaller.appspot.com/x/.config?x=7a0aee472a2b5f0a
dashboard link: https://syzkaller.appspot.com/bug?extid=14c04e62ca58315571d1
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
Unfortunately, I don't have any reproducer for this issue yet.
Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/140719cfa0c4/disk-db87114d.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/fb8a264c89a8/vmlinux-db87114d.xz
kernel image: https://storage.googleapis.com/syzbot-assets/4de63179d231/bzImage-db87114d.xz
IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+14c04e62ca58315571d1@syzkaller.appspotmail.com
=====================================================
BUG: KMSAN: uninit-value in rxrpc_lookup_peer_rcu+0x2f8/0x300 net/rxrpc/peer_object.c:142
rxrpc_lookup_peer_rcu+0x2f8/0x300 net/rxrpc/peer_object.c:142
rxrpc_lookup_peer_local_rcu net/rxrpc/peer_event.c:97 [inline]
rxrpc_input_error+0x756/0x16e0 net/rxrpc/peer_event.c:148
rxrpc_io_thread+0x13aa/0x5190 net/rxrpc/io_thread.c:498
kthread+0x3e2/0x540 kernel/kthread.c:389
ret_from_fork+0x6d/0x90 arch/x86/kernel/process.c:147
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
Uninit was stored to memory at:
rxrpc_input_error+0x499/0x16e0 net/rxrpc/peer_event.c:148
rxrpc_io_thread+0x13aa/0x5190 net/rxrpc/io_thread.c:498
kthread+0x3e2/0x540 kernel/kthread.c:389
ret_from_fork+0x6d/0x90 arch/x86/kernel/process.c:147
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
Uninit was created at:
slab_post_alloc_hook mm/slub.c:4091 [inline]
slab_alloc_node mm/slub.c:4134 [inline]
kmem_cache_alloc_node_noprof+0x6bf/0xb80 mm/slub.c:4186
kmalloc_reserve+0x13d/0x4a0 net/core/skbuff.c:587
__alloc_skb+0x363/0x7b0 net/core/skbuff.c:678
alloc_skb include/linux/skbuff.h:1322 [inline]
ipv6_local_error+0xd0/0xa10 net/ipv6/datagram.c:354
__ip6_append_data+0x6f3/0x68e0 net/ipv6/ip6_output.c:1491
ip6_make_skb+0x5bd/0xd60 net/ipv6/ip6_output.c:2048
udpv6_sendmsg+0x3b5e/0x40c0 net/ipv6/udp.c:1584
do_udp_sendmsg net/rxrpc/output.c:32 [inline]
rxrpc_send_data_packet net/rxrpc/output.c:488 [inline]
rxrpc_transmit_one+0xf68/0x2f20 net/rxrpc/output.c:713
rxrpc_decant_prepared_tx net/rxrpc/call_event.c:271 [inline]
rxrpc_transmit_some_data net/rxrpc/call_event.c:295 [inline]
rxrpc_input_call_event+0x18ba/0x2c10 net/rxrpc/call_event.c:401
rxrpc_io_thread+0xa5c/0x5190 net/rxrpc/io_thread.c:478
kthread+0x3e2/0x540 kernel/kthread.c:389
ret_from_fork+0x6d/0x90 arch/x86/kernel/process.c:147
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
CPU: 0 UID: 0 PID: 12896 Comm: krxrpcio/0 Tainted: G W 6.12.0-rc3-syzkaller-00454-gdb87114dcf13 #0
Tainted: [W]=WARN
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
=====================================================
---
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 syzkaller@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 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
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] rxrpc: Initialize sockaddr_rxrpc directly
2024-10-24 22:43 [syzbot] [afs?] [net?] KMSAN: uninit-value in rxrpc_lookup_peer_rcu syzbot
@ 2024-11-05 19:19 ` Matt Jan
2024-11-18 15:00 ` David Howells
0 siblings, 1 reply; 3+ messages in thread
From: Matt Jan @ 2024-11-05 19:19 UTC (permalink / raw)
To: syzbot+14c04e62ca58315571d1
Cc: davem, dhowells, edumazet, kuba, linux-afs, linux-kernel,
marc.dionne, netdev, pabeni, syzkaller-bugs, skhan, Matt Jan
In rxrpc_lookup_peer_local_rcu(), removed the redundant memset call
that zeros out the sockaddr_rxrpc structure before setting its fields.
Instead, initialize the sockaddr_rxrpc structure directly in
rxrpc_input_error().
This change simplifies the code and ensures that the sockaddr_rxrpc
structure is properly zero-initialized.
Reported-by: syzbot+14c04e62ca58315571d1@syzkaller.appspotmail.com
Signed-off-by: Matt Jan <zoo868e@gmail.com>
---
net/rxrpc/peer_event.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/net/rxrpc/peer_event.c b/net/rxrpc/peer_event.c
index 552ba84a255c..c86b432201fd 100644
--- a/net/rxrpc/peer_event.c
+++ b/net/rxrpc/peer_event.c
@@ -33,7 +33,6 @@ static struct rxrpc_peer *rxrpc_lookup_peer_local_rcu(struct rxrpc_local *local,
_enter("");
- memset(srx, 0, sizeof(*srx));
srx->transport_type = local->srx.transport_type;
srx->transport_len = local->srx.transport_len;
srx->transport.family = local->srx.transport.family;
@@ -134,7 +133,7 @@ static void rxrpc_adjust_mtu(struct rxrpc_peer *peer, unsigned int mtu)
void rxrpc_input_error(struct rxrpc_local *local, struct sk_buff *skb)
{
struct sock_exterr_skb *serr = SKB_EXT_ERR(skb);
- struct sockaddr_rxrpc srx;
+ struct sockaddr_rxrpc srx = {};
struct rxrpc_peer *peer = NULL;
_enter("L=%x", local->debug_id);
--
2.25.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] rxrpc: Initialize sockaddr_rxrpc directly
2024-11-05 19:19 ` [PATCH] rxrpc: Initialize sockaddr_rxrpc directly Matt Jan
@ 2024-11-18 15:00 ` David Howells
0 siblings, 0 replies; 3+ messages in thread
From: David Howells @ 2024-11-18 15:00 UTC (permalink / raw)
To: Matt Jan
Cc: dhowells, syzbot+14c04e62ca58315571d1, davem, edumazet, kuba,
linux-afs, linux-kernel, marc.dionne, netdev, pabeni,
syzkaller-bugs, skhan
Matt Jan <zoo868e@gmail.com> wrote:
> In rxrpc_lookup_peer_local_rcu(), removed the redundant memset call
> that zeros out the sockaddr_rxrpc structure before setting its fields.
> Instead, initialize the sockaddr_rxrpc structure directly in
> rxrpc_input_error().
>
> This change simplifies the code and ensures that the sockaddr_rxrpc
> structure is properly zero-initialized.
How does that actually fix the issue?
All the patch does is move the initialisation of srx from
rxrpc_lookup_peer_local_rcu() into its only caller - and nothing samples the
contents of srx between.
Looking at the bug report, the history of the uninitialised location goes back
further, to a network address generated/assembled in the ipv6 stack or from
the transmission side of the rxrpc stack, possibly call->peer->srx.transport.
David
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-11-18 15:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-24 22:43 [syzbot] [afs?] [net?] KMSAN: uninit-value in rxrpc_lookup_peer_rcu syzbot
2024-11-05 19:19 ` [PATCH] rxrpc: Initialize sockaddr_rxrpc directly Matt Jan
2024-11-18 15:00 ` David Howells
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).