All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Potapenko <glider@google.com>
To: syzbot <syzbot+9767be679ef5016b6082@syzkaller.appspotmail.com>
Cc: adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org,
	linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com,
	tytso@mit.edu
Subject: Re: [syzbot] KMSAN: uninit-value in pagecache_write
Date: Mon, 7 Nov 2022 10:46:13 +0100	[thread overview]
Message-ID: <CAG_fn=WAyOc+1GEC+P3PpTM2zLcLcepAX1pPXkj5C6aPyrDVUA@mail.gmail.com> (raw)
In-Reply-To: <00000000000058d01705ecddccb0@google.com>

On Mon, Nov 7, 2022 at 10:10 AM syzbot
<syzbot+9767be679ef5016b6082@syzkaller.appspotmail.com> wrote:
>
> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit:    968c2729e576 x86: kmsan: fix comment in kmsan_shadow.c
> git tree:       https://github.com/google/kmsan.git master
> console output: https://syzkaller.appspot.com/x/log.txt?x=11d01ad6880000
> kernel config:  https://syzkaller.appspot.com/x/.config?x=131312b26465c190
> dashboard link: https://syzkaller.appspot.com/bug?extid=9767be679ef5016b6082
> compiler:       clang version 15.0.0 (https://github.com/llvm/llvm-project.git 610139d2d9ce6746b3c617fb3e2f7886272d26ff), GNU ld (GNU Binutils for Debian) 2.35.2
> userspace arch: i386
>
> Unfortunately, I don't have any reproducer for this issue yet.
>
> Downloadable assets:
> disk image: https://storage.googleapis.com/syzbot-assets/c78ce21b953f/disk-968c2729.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/22868d826804/vmlinux-968c2729.xz
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+9767be679ef5016b6082@syzkaller.appspotmail.com
>
> =====================================================
> BUG: KMSAN: uninit-value in pagecache_write+0x655/0x720 fs/ext4/verity.c:91
>  pagecache_write+0x655/0x720 fs/ext4/verity.c:91
>  ext4_write_merkle_tree_block+0x84/0xa0 fs/ext4/verity.c:389
>  build_merkle_tree_level+0x972/0x1250 fs/verity/enable.c:121
>  build_merkle_tree fs/verity/enable.c:182 [inline]
>  enable_verity+0xede/0x1920 fs/verity/enable.c:268
>  fsverity_ioctl_enable+0x895/0xab0 fs/verity/enable.c:392
>  __ext4_ioctl fs/ext4/ioctl.c:1572 [inline]
>  ext4_ioctl+0x26dd/0x8c50 fs/ext4/ioctl.c:1606
>  ext4_compat_ioctl+0x702/0x800 fs/ext4/ioctl.c:1682
>  __do_compat_sys_ioctl fs/ioctl.c:968 [inline]
>  __se_compat_sys_ioctl+0x781/0xfa0 fs/ioctl.c:910
>  __ia32_compat_sys_ioctl+0x8f/0xd0 fs/ioctl.c:910
>  do_syscall_32_irqs_on arch/x86/entry/common.c:112 [inline]
>  __do_fast_syscall_32+0xa2/0x100 arch/x86/entry/common.c:178
>  do_fast_syscall_32+0x33/0x70 arch/x86/entry/common.c:203
>  do_SYSENTER_32+0x1b/0x20 arch/x86/entry/common.c:246
>  entry_SYSENTER_compat_after_hwframe+0x70/0x82
>
> Local variable fsdata created at:
>  pagecache_write+0x21c/0x720 fs/ext4/verity.c:85
>  ext4_write_merkle_tree_block+0x84/0xa0 fs/ext4/verity.c:389
>
> CPU: 1 PID: 15121 Comm: syz-executor.3 Not tainted 6.0.0-rc5-syzkaller-48543-g968c2729e576 #0
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022
> =====================================================

This is identical to other reports fixed in
https://lore.kernel.org/lkml/20220915150417.722975-43-glider@google.com/
To fix the error, we need to initialize fsdata explicitly, because
aops->write_begin is not guaranteed to do so:

=============================================================================
   ext4: initialize fsdata in pagecache_write()

    When aops->write_begin() does not initialize fsdata, KMSAN reports
    an error passing the latter to aops->write_end().

    Fix this by unconditionally initializing fsdata.

    Fixes: c93d8f885809 ("ext4: add basic fs-verity support")
    Reported-by: syzbot+9767be679ef5016b6082@syzkaller.appspotmail.com
    Signed-off-by: Alexander Potapenko <glider@google.com>

diff --git a/fs/ext4/verity.c b/fs/ext4/verity.c
index 3c640bd7ecaeb..30e3b65798b50 100644
--- a/fs/ext4/verity.c
+++ b/fs/ext4/verity.c
@@ -79,7 +79,7 @@ static int pagecache_write(struct inode *inode,
const void *buf, size_t count,
                size_t n = min_t(size_t, count,
                                 PAGE_SIZE - offset_in_page(pos));
                struct page *page;
-               void *fsdata;
+               void *fsdata = NULL;
                int res;

                res = aops->write_begin(NULL, mapping, pos, n, &page, &fsdata);
=============================================================================

  reply	other threads:[~2022-11-07  9:46 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-07  9:10 [syzbot] KMSAN: uninit-value in pagecache_write syzbot
2022-11-07  9:46 ` Alexander Potapenko [this message]
2022-11-07 17:56   ` Eric Biggers
2022-11-07 18:14     ` Alexander Potapenko
2022-11-08  9:08       ` Alexander Potapenko
2022-11-08 17:41         ` Eric Biggers
2022-11-10 11:01           ` Alexander Potapenko

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='CAG_fn=WAyOc+1GEC+P3PpTM2zLcLcepAX1pPXkj5C6aPyrDVUA@mail.gmail.com' \
    --to=glider@google.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=syzbot+9767be679ef5016b6082@syzkaller.appspotmail.com \
    --cc=syzkaller-bugs@googlegroups.com \
    --cc=tytso@mit.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.