> Why is ext4 special here? Wouldn't other filesystems need this too? ext4 isn't special, it's just the FS we're using on syzbot. > Is it possible the problem is the page merging logic in bio_add_page()? > Maybe we need something like: > > diff --git a/block/bio.c b/block/bio.c > index a5d75f6bf4c7e..9449a1e571ee7 100644 > --- a/block/bio.c > +++ b/block/bio.c > @@ -646,6 +646,8 @@ static inline bool page_is_mergeable(const struct bio_vec *bv, > *same_page = ((vec_end_addr & PAGE_MASK) == page_addr); > if (!*same_page && pfn_to_page(PFN_DOWN(vec_end_addr)) + 1 != page) > return false; > + if (!*same_page && IS_ENABLED(CONFIG_KMSAN)) > + return false; > return true; > } > This one appears to work, thanks! I'll pick it for v5. -- 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