From: Dmitry Vyukov <dvyukov@google.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: syzbot <syzbot+194dffdb8b22fc5d207a@syzkaller.appspotmail.com>,
alsa-devel-bounces@alsa-project.org, alsa-devel@alsa-project.org,
LKML <linux-kernel@vger.kernel.org>,
Jaroslav Kysela <perex@perex.cz>,
syzkaller-bugs <syzkaller-bugs@googlegroups.com>
Subject: Re: KMSAN: uninit-value in snd_midi_event_encode_byte
Date: Mon, 3 Sep 2018 15:33:12 +0200 [thread overview]
Message-ID: <CACT4Y+bJM4dfx_2_qwPLOYdU_snGv7Zhhu3g_sHuzUM3sjnZQQ@mail.gmail.com> (raw)
In-Reply-To: <s5h7ek2hfp6.wl-tiwai@suse.de>
On Mon, Sep 3, 2018 at 3:29 PM, Takashi Iwai <tiwai@suse.de> wrote:
> On Mon, 03 Sep 2018 15:22:42 +0200,
> syzbot wrote:
>>
>> > On Mon, 03 Sep 2018 03:53:03 +0200,
>> > syzbot wrote:
>>
>> >> syzbot has found a reproducer for the following crash on:
>>
>> >> HEAD commit: 28f0ca98eadf kmsan: don't instrument
>> >> do_syscall_64() and _..
>> >> git tree: https://github.com/google/kmsan.git/master
>> >> console output: https://syzkaller.appspot.com/x/log.txt?x=10556c92400000
>> >> kernel config:
>> >> https://syzkaller.appspot.com/x/.config?x=3431f03869413153
>> >> dashboard link:
>> >> https://syzkaller.appspot.com/bug?extid=194dffdb8b22fc5d207a
>> >> compiler: clang version 8.0.0 (trunk 339414)
>> >> syz repro:
>> >> https://syzkaller.appspot.com/x/repro.syz?x=123a520a400000
>> >> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=16068dc1400000
>>
>> >> IMPORTANT: if you fix the bug, please add the following tag to the
>> >> commit:
>> >> Reported-by: syzbot+194dffdb8b22fc5d207a@syzkaller.appspotmail.com
>>
>> >> ==================================================================
>> >> BUG: KMSAN: uninit-value in snd_midi_event_encode_byte+0x569/0xff0
>> >> sound/core/seq/seq_midi_event.c:195
>> >> CPU: 1 PID: 1659 Comm: kworker/1:1H Not tainted 4.19.0-rc1+ #40
>> >> Hardware name: Google Google Compute Engine/Google Compute Engine,
>> >> BIOS Google 01/01/2011
>> >> Workqueue: events_highpri snd_vmidi_output_work
>> >> Call Trace:
>> >> __dump_stack lib/dump_stack.c:77 [inline]
>> >> dump_stack+0x14b/0x190 lib/dump_stack.c:113
>> >> kmsan_report+0x183/0x2b0 mm/kmsan/kmsan.c:956
>> >> __msan_warning+0x70/0xc0 mm/kmsan/kmsan_instr.c:645
>> >> snd_midi_event_encode_byte+0x569/0xff0
>> >> sound/core/seq/seq_midi_event.c:195
>> >> snd_vmidi_output_work+0x34e/0x5b0 sound/core/seq/seq_virmidi.c:161
>> >> process_one_work+0x1605/0x1f40 kernel/workqueue.c:2153
>> >> worker_thread+0x11a2/0x2590 kernel/workqueue.c:2296
>> >> kthread+0x465/0x4a0 kernel/kthread.c:247
>> >> ret_from_fork+0x35/0x40 arch/x86/entry/entry_64.S:416
>>
>> >> Uninit was stored to memory at:
>> >> kmsan_save_stack_with_flags mm/kmsan/kmsan.c:256 [inline]
>> >> kmsan_save_stack mm/kmsan/kmsan.c:271 [inline]
>> >> kmsan_internal_chain_origin+0x128/0x210 mm/kmsan/kmsan.c:573
>> >> __msan_chain_origin+0x69/0xc0 mm/kmsan/kmsan_instr.c:482
>> >> __snd_rawmidi_transmit_peek sound/core/rawmidi.c:1103 [inline]
>> >> snd_rawmidi_transmit+0xa75/0xbf0 sound/core/rawmidi.c:1228
>> >> snd_vmidi_output_work+0x2ac/0x5b0 sound/core/seq/seq_virmidi.c:159
>> >> process_one_work+0x1605/0x1f40 kernel/workqueue.c:2153
>> >> worker_thread+0x11a2/0x2590 kernel/workqueue.c:2296
>> >> kthread+0x465/0x4a0 kernel/kthread.c:247
>> >> ret_from_fork+0x35/0x40 arch/x86/entry/entry_64.S:416
>>
>> >> Uninit was created at:
>> >> kmsan_save_stack_with_flags mm/kmsan/kmsan.c:256 [inline]
>> >> kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:181
>> >> kmsan_kmalloc+0x98/0x100 mm/kmsan/kmsan_hooks.c:91
>> >> __kmalloc_node+0x7bf/0x11c0 mm/slub.c:3828
>> >> kmalloc_node include/linux/slab.h:555 [inline]
>> >> kvmalloc_node+0x19d/0x3e0 mm/util.c:423
>> >> kvmalloc include/linux/mm.h:577 [inline]
>> >> snd_rawmidi_runtime_create sound/core/rawmidi.c:132 [inline]
>> >> open_substream+0x3c8/0xaa0 sound/core/rawmidi.c:276
>> >> rawmidi_open_priv+0x347/0x1000 sound/core/rawmidi.c:327
>> >> snd_rawmidi_open+0x7d4/0x1120 sound/core/rawmidi.c:424
>> >> soundcore_open+0x9be/0xa60 sound/sound_core.c:597
>> >> chrdev_open+0xc26/0xdb0 fs/char_dev.c:417
>> >> do_dentry_open+0xce6/0x1740 fs/open.c:771
>> >> vfs_open+0xaf/0xe0 fs/open.c:880
>> >> do_last fs/namei.c:3418 [inline]
>> >> path_openat+0x1799/0x6870 fs/namei.c:3534
>> >> do_filp_open+0x259/0x610 fs/namei.c:3564
>> >> do_sys_open+0x630/0x940 fs/open.c:1063
>> >> __do_sys_open fs/open.c:1081 [inline]
>> >> __se_sys_open+0xad/0xc0 fs/open.c:1076
>> >> __x64_sys_open+0x4a/0x70 fs/open.c:1076
>> >> do_syscall_64+0xb8/0x100 arch/x86/entry/common.c:291
>> >> entry_SYSCALL_64_after_hwframe+0x63/0xe7
>> >> ==================================================================
>>
>> > This looks like some small race at virmidi reading and the buffer
>> > handling, which should be almost harmless by itself.
>> > Nevertheless, the fix should be easy, just replacing kvmalloc() with
>> > kvzalloc(), as below.
>>
>> > Let's check whether this works.
>>
>> > #syz test:
>> > git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
>> > topic/rawmidi-fixes
>>
>> KMSAN bugs can only be tested on https://github.com/google/kmsan.git tree
>> because KMSAN tool is not upstreamed yet.
>> See
>> https://github.com/google/syzkaller/blob/master/docs/syzbot.md#kmsan-bugs
>> for details.
>
> So how is the procedure to test a patch for bugs spotted by KMSAN?
>
> In this case, the fix is trivial, so I can put it to my tree for the
> next pull request. Of course, it'd be better if it can be confirmed
> to work beforehand...
https://github.com/google/syzkaller/blob/master/docs/syzbot.md#kmsan-bugs
Which means you need to attach a patch because it's not in that tree.
next prev parent reply other threads:[~2018-09-03 13:33 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-02 19:29 KMSAN: uninit-value in snd_midi_event_encode_byte syzbot
2018-09-03 1:53 ` syzbot
2018-09-03 13:22 ` Takashi Iwai
2018-09-03 13:22 ` syzbot
2018-09-03 13:29 ` Takashi Iwai
2018-09-03 13:33 ` Dmitry Vyukov [this message]
2018-09-03 13:37 ` Takashi Iwai
2018-09-03 13:41 ` Dmitry Vyukov
2018-09-03 14:04 ` Takashi Iwai
2018-09-03 14:19 ` Dmitry Vyukov
2018-09-03 14:30 ` Takashi Iwai
2018-09-03 14:54 ` Dmitry Vyukov
2018-09-03 15:00 ` Takashi Iwai
2018-09-03 15:06 ` Dmitry Vyukov
2018-09-03 15:18 ` Takashi Iwai
2018-09-03 17:25 ` Dmitry Vyukov
2018-09-03 21:35 ` Takashi Iwai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CACT4Y+bJM4dfx_2_qwPLOYdU_snGv7Zhhu3g_sHuzUM3sjnZQQ@mail.gmail.com \
--to=dvyukov@google.com \
--cc=alsa-devel-bounces@alsa-project.org \
--cc=alsa-devel@alsa-project.org \
--cc=linux-kernel@vger.kernel.org \
--cc=perex@perex.cz \
--cc=syzbot+194dffdb8b22fc5d207a@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).