[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAG_fn=XDS-HTNQnzLixYHVFmg0EZkiFvZosOCALjoCMeNxYwWQ@mail.gmail.com>
Date: Thu, 12 Jul 2018 15:36:21 +0200
From: Alexander Potapenko <glider@...gle.com>
To: syzbot+4de40388f584432bf004@...kaller.appspotmail.com
Cc: David Miller <davem@...emloft.net>, ericvh@...il.com,
LKML <linux-kernel@...r.kernel.org>, lucho@...kov.net,
Networking <netdev@...r.kernel.org>, rminnich@...dia.gov,
syzkaller-bugs@...glegroups.com,
v9fs-developer@...ts.sourceforge.net
Subject: Re: KMSAN: uninit-value in p9_client_rpc
On Thu, Jul 12, 2018 at 11:24 AM syzbot
<syzbot+4de40388f584432bf004@...kaller.appspotmail.com> wrote:
>
> syzbot has found a reproducer for the following crash on:
>
> HEAD commit: b64f7ec04e12 kmsan: implement kmsan_memmove_shadow() and k..
> git tree: https://github.com/google/kmsan.git/master
> console output: https://syzkaller.appspot.com/x/log.txt?x=12f6791c400000
> kernel config: https://syzkaller.appspot.com/x/.config?x=93d57043084eee38
> dashboard link: https://syzkaller.appspot.com/bug?extid=4de40388f584432bf004
> compiler: clang version 7.0.0 (trunk 334104)
> syzkaller repro:https://syzkaller.appspot.com/x/repro.syz?x=147c36dc400000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=14e87044400000
>
> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> Reported-by: syzbot+4de40388f584432bf004@...kaller.appspotmail.com
>
> FS-Cache: O-key=[10] '34323934373135343132'
> FS-Cache: N-cookie c=(____ptrval____) [p=(____ptrval____) fl=2 nc=0 na=1]
> FS-Cache: N-cookie d=(____ptrval____) n=(____ptrval____)
> FS-Cache: N-key=[10] '34323934373135343132'
> ==================================================================
> BUG: KMSAN: uninit-value in p9_client_rpc+0x194c/0x1dc0 net/9p/client.c:818
> CPU: 1 PID: 4620 Comm: syz-executor262 Not tainted 4.18.0-rc4+ #24
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> Call Trace:
> __dump_stack lib/dump_stack.c:77 [inline]
> dump_stack+0x185/0x1e0 lib/dump_stack.c:113
> kmsan_report+0x195/0x2c0 mm/kmsan/kmsan.c:1092
> __msan_warning_32+0x7d/0xe0 mm/kmsan/kmsan_instr.c:640
> p9_client_rpc+0x194c/0x1dc0 net/9p/client.c:818
> p9_client_attach+0x35b/0xc30 net/9p/client.c:1147
> v9fs_session_init+0x24b9/0x2970 fs/9p/v9fs.c:449
> v9fs_mount+0x107/0x11b0 fs/9p/vfs_super.c:135
> mount_fs+0x29b/0x780 fs/super.c:1277
> vfs_kern_mount+0x222/0x990 fs/namespace.c:1037
> do_new_mount fs/namespace.c:2518 [inline]
> do_mount+0xd30/0x5310 fs/namespace.c:2848
> ksys_mount+0x32e/0x3d0 fs/namespace.c:3064
> __do_sys_mount fs/namespace.c:3078 [inline]
> __se_sys_mount fs/namespace.c:3075 [inline]
> __x64_sys_mount+0x157/0x1c0 fs/namespace.c:3075
> do_syscall_64+0x15b/0x230 arch/x86/entry/common.c:290
> entry_SYSCALL_64_after_hwframe+0x63/0xe7
> RIP: 0033:0x445f79
> Code: e8 cc e6 ff ff 48 83 c4 18 c3 0f 1f 80 00 00 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 0f 83 3b 0d fc ff c3 66 2e 0f 1f 84 00 00 00 00
> RSP: 002b:00007ffb83104da8 EFLAGS: 00000202 ORIG_RAX: 00000000000000a5
> RAX: ffffffffffffffda RBX: 00000000006dbc3c RCX: 0000000000445f79
> RDX: 0000000020000180 RSI: 00000000200000c0 RDI: 0000000000000000
> RBP: 00000000006dbc38 R08: 00000000200001c0 R09: 0000000000000000
> R10: 0000000000000000 R11: 0000000000000202 R12: 0030656c69662f2e
> R13: 64663d736e617274 R14: 7974697275636573 R15: 0000000000000001
>
> Local variable description: ----ecode.i@...client_rpc
> Variable was created at:
> p9_client_rpc+0x183/0x1dc0 net/9p/client.c:750
> p9_client_attach+0x35b/0xc30 net/9p/client.c:1147
> ==================================================================
FWIW the bug occurs here:
https://elixir.bootlin.com/linux/latest/source/net/9p/client.c#L560
} else {
err = p9pdu_readf(req->rc, c->proto_version, "d", &ecode);
err = -ecode;
p9_debug(P9_DEBUG_9P, "<<< RLERROR (%d)\n", -ecode);
}
When p9pdu_readf() fails with -EFAULT, |ecode| may remain uninitialized.
We need to check the value of |err| before assigning |-ecode| to it.
> --
> You received this message because you are subscribed to the Google Groups "syzkaller-bugs" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to syzkaller-bugs+unsubscribe@...glegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/syzkaller-bugs/00000000000077da4b0570c9eccc%40google.com.
> For more options, visit https://groups.google.com/d/optout.
--
Alexander Potapenko
Software Engineer
Google Germany GmbH
Erika-Mann-Straße, 33
80636 München
Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Powered by blists - more mailing lists