On Thu, 15 Sep 2022 17:04:01 +0200 Alexander Potapenko <glider@xxxxxxxxxx> wrote: > KMSAN metadata for adjacent physical pages may not be adjacent, > therefore accessing such pages together may lead to metadata > corruption. > We disable merging pages in biovec to prevent such corruptions. > > ... > > --- a/block/blk.h > +++ b/block/blk.h > @@ -88,6 +88,13 @@ static inline bool biovec_phys_mergeable(struct request_queue *q, > phys_addr_t addr1 = page_to_phys(vec1->bv_page) + vec1->bv_offset; > phys_addr_t addr2 = page_to_phys(vec2->bv_page) + vec2->bv_offset; > > + /* > + * Merging adjacent physical pages may not work correctly under KMSAN > + * if their metadata pages aren't adjacent. Just disable merging. > + */ > + if (IS_ENABLED(CONFIG_KMSAN)) > + return false; > + > if (addr1 + vec1->bv_len != addr2) > return false; > if (xen_domain() && !xen_biovec_phys_mergeable(vec1, vec2->bv_page)) What are the runtime effects of this? In other words, how much slowdown is this likely to cause in a reasonable worst-case?