On Mon, Nov 7, 2022 at 6:56 PM Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > On Mon, Nov 07, 2022 at 10:46:13AM +0100, 'Alexander Potapenko' via syzkaller-bugs wrote: > > 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@xxxxxxxxxxxxxxxxxxxxxxxxx > > Signed-off-by: Alexander Potapenko <glider@xxxxxxxxxx> > > > > 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); > > Are you sure that KMSAN should be reporting this? The uninitialized value is > passed as a function parameter, but it's never actually used. To summarize what's written here: https://lore.kernel.org/lkml/20220701142310.2188015-44-glider@xxxxxxxxxx/ : - this is UB from the C11 standpoint; - Linus despises UB in general, but expecting function arguments to be initialized is reasonable; - if a function ends up being a no-op, tools should not warn about uninits passed to it; - KMSAN only warns about functions that survive inlining. In addition, one cannot really rely on write_end() being consistent with write_begin(), in particular if fsdata was ignored initially and only appeared at a later point. > > Anyway, this patch doesn't hurt, I suppose. Can please you send it out as a > formal patch to linux-ext4? It would be easy for people to miss this patch > buried in this thread. Also, can you please send a patch to linux-f2fs-devel > for the same code in fs/f2fs/verity.c? Will do! > Thanks! > > - Eric -- Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Straße, 33 80636 München Geschäftsführer: Paul Manicle, Liana Sebastian Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg