linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH AUTOSEL 5.4 10/13] kmsan: disable physical page merging in biovec
       [not found] <20221018001102.2731930-1-sashal@kernel.org>
@ 2022-10-18  0:10 ` Sasha Levin
  2022-10-18  0:22   ` Eric Biggers
  0 siblings, 1 reply; 3+ messages in thread
From: Sasha Levin @ 2022-10-18  0:10 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Alexander Potapenko, Alexander Viro, Alexei Starovoitov,
	Andrey Konovalov, Andrey Konovalov, Andy Lutomirski,
	Arnd Bergmann, Borislav Petkov, Christoph Hellwig,
	Christoph Lameter, David Rientjes, Dmitry Vyukov, Eric Biggers,
	Eric Biggers, Eric Dumazet, Greg Kroah-Hartman, Herbert Xu,
	Ilya Leoshkevich, Ingo Molnar, Jens Axboe, Joonsoo Kim, Kees Cook,
	Marco Elver, Mark Rutland, Matthew Wilcox, Michael S . Tsirkin,
	Pekka Enberg, Peter Zijlstra, Petr Mladek, Stephen Rothwell,
	Steven Rostedt, Thomas Gleixner, Vasily Gorbik, Vegard Nossum,
	Vlastimil Babka, Andrew Morton, Sasha Levin, linux-block

From: Alexander Potapenko <glider@google.com>

[ Upstream commit f630a5d0ca59a6e73b61e3f82c371dc230da99ff ]

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.

Link: https://lkml.kernel.org/r/20220915150417.722975-28-glider@google.com
Signed-off-by: Alexander Potapenko <glider@google.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Andrey Konovalov <andreyknvl@google.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Christoph Lameter <cl@linux.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Eric Biggers <ebiggers@google.com>
Cc: Eric Biggers <ebiggers@kernel.org>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Ilya Leoshkevich <iii@linux.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Marco Elver <elver@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Vegard Nossum <vegard.nossum@oracle.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 block/blk.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/block/blk.h b/block/blk.h
index ee3d5664d962..3358ef4244fe 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -79,6 +79,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))
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH AUTOSEL 5.4 10/13] kmsan: disable physical page merging in biovec
  2022-10-18  0:10 ` [PATCH AUTOSEL 5.4 10/13] kmsan: disable physical page merging in biovec Sasha Levin
@ 2022-10-18  0:22   ` Eric Biggers
  2022-10-18  9:23     ` Vlastimil Babka
  0 siblings, 1 reply; 3+ messages in thread
From: Eric Biggers @ 2022-10-18  0:22 UTC (permalink / raw)
  To: Sasha Levin
  Cc: linux-kernel, stable, Alexander Potapenko, Alexander Viro,
	Alexei Starovoitov, Andrey Konovalov, Andrey Konovalov,
	Andy Lutomirski, Arnd Bergmann, Borislav Petkov,
	Christoph Hellwig, Christoph Lameter, David Rientjes,
	Dmitry Vyukov, Eric Dumazet, Greg Kroah-Hartman, Herbert Xu,
	Ilya Leoshkevich, Ingo Molnar, Jens Axboe, Joonsoo Kim, Kees Cook,
	Marco Elver, Mark Rutland, Matthew Wilcox, Michael S . Tsirkin,
	Pekka Enberg, Peter Zijlstra, Petr Mladek, Stephen Rothwell,
	Steven Rostedt, Thomas Gleixner, Vasily Gorbik, Vegard Nossum,
	Vlastimil Babka, Andrew Morton, linux-block

On Mon, Oct 17, 2022 at 08:10:59PM -0400, Sasha Levin wrote:
> From: Alexander Potapenko <glider@google.com>
> 
> [ Upstream commit f630a5d0ca59a6e73b61e3f82c371dc230da99ff ]
> 
> 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.
> 
> Link: https://lkml.kernel.org/r/20220915150417.722975-28-glider@google.com
> Signed-off-by: Alexander Potapenko <glider@google.com>
> Cc: Alexander Viro <viro@zeniv.linux.org.uk>
> Cc: Alexei Starovoitov <ast@kernel.org>
> Cc: Andrey Konovalov <andreyknvl@gmail.com>
> Cc: Andrey Konovalov <andreyknvl@google.com>
> Cc: Andy Lutomirski <luto@kernel.org>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Christoph Lameter <cl@linux.com>
> Cc: David Rientjes <rientjes@google.com>
> Cc: Dmitry Vyukov <dvyukov@google.com>
> Cc: Eric Biggers <ebiggers@google.com>
> Cc: Eric Biggers <ebiggers@kernel.org>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: Ilya Leoshkevich <iii@linux.ibm.com>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Jens Axboe <axboe@kernel.dk>
> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
> Cc: Kees Cook <keescook@chromium.org>
> Cc: Marco Elver <elver@google.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Matthew Wilcox <willy@infradead.org>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Pekka Enberg <penberg@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Petr Mladek <pmladek@suse.com>
> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Vasily Gorbik <gor@linux.ibm.com>
> Cc: Vegard Nossum <vegard.nossum@oracle.com>
> Cc: Vlastimil Babka <vbabka@suse.cz>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
>  block/blk.h | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/block/blk.h b/block/blk.h
> index ee3d5664d962..3358ef4244fe 100644
> --- a/block/blk.h
> +++ b/block/blk.h
> @@ -79,6 +79,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))

So KMSAN is being backported to 5.4?

- Eric

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH AUTOSEL 5.4 10/13] kmsan: disable physical page merging in biovec
  2022-10-18  0:22   ` Eric Biggers
@ 2022-10-18  9:23     ` Vlastimil Babka
  0 siblings, 0 replies; 3+ messages in thread
From: Vlastimil Babka @ 2022-10-18  9:23 UTC (permalink / raw)
  To: Eric Biggers, Sasha Levin
  Cc: linux-kernel, stable, Alexander Potapenko, Alexander Viro,
	Alexei Starovoitov, Andrey Konovalov, Andrey Konovalov,
	Andy Lutomirski, Arnd Bergmann, Borislav Petkov,
	Christoph Hellwig, Christoph Lameter, David Rientjes,
	Dmitry Vyukov, Eric Dumazet, Greg Kroah-Hartman, Herbert Xu,
	Ilya Leoshkevich, Ingo Molnar, Jens Axboe, Joonsoo Kim, Kees Cook,
	Marco Elver, Mark Rutland, Matthew Wilcox, Michael S . Tsirkin,
	Pekka Enberg, Peter Zijlstra, Petr Mladek, Stephen Rothwell,
	Steven Rostedt, Thomas Gleixner, Vasily Gorbik, Vegard Nossum,
	Andrew Morton, linux-block

On 10/18/22 02:22, Eric Biggers wrote:
> On Mon, Oct 17, 2022 at 08:10:59PM -0400, Sasha Levin wrote:
>> From: Alexander Potapenko <glider@google.com>
>>
>> [ Upstream commit f630a5d0ca59a6e73b61e3f82c371dc230da99ff ]
>>
>> 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.
>>
>> Link: https://lkml.kernel.org/r/20220915150417.722975-28-glider@google.com
>> Signed-off-by: Alexander Potapenko <glider@google.com>
>> Cc: Alexander Viro <viro@zeniv.linux.org.uk>
>> Cc: Alexei Starovoitov <ast@kernel.org>
>> Cc: Andrey Konovalov <andreyknvl@gmail.com>
>> Cc: Andrey Konovalov <andreyknvl@google.com>
>> Cc: Andy Lutomirski <luto@kernel.org>
>> Cc: Arnd Bergmann <arnd@arndb.de>
>> Cc: Borislav Petkov <bp@alien8.de>
>> Cc: Christoph Hellwig <hch@lst.de>
>> Cc: Christoph Lameter <cl@linux.com>
>> Cc: David Rientjes <rientjes@google.com>
>> Cc: Dmitry Vyukov <dvyukov@google.com>
>> Cc: Eric Biggers <ebiggers@google.com>
>> Cc: Eric Biggers <ebiggers@kernel.org>
>> Cc: Eric Dumazet <edumazet@google.com>
>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> Cc: Herbert Xu <herbert@gondor.apana.org.au>
>> Cc: Ilya Leoshkevich <iii@linux.ibm.com>
>> Cc: Ingo Molnar <mingo@redhat.com>
>> Cc: Jens Axboe <axboe@kernel.dk>
>> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
>> Cc: Kees Cook <keescook@chromium.org>
>> Cc: Marco Elver <elver@google.com>
>> Cc: Mark Rutland <mark.rutland@arm.com>
>> Cc: Matthew Wilcox <willy@infradead.org>
>> Cc: Michael S. Tsirkin <mst@redhat.com>
>> Cc: Pekka Enberg <penberg@kernel.org>
>> Cc: Peter Zijlstra <peterz@infradead.org>
>> Cc: Petr Mladek <pmladek@suse.com>
>> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
>> Cc: Steven Rostedt <rostedt@goodmis.org>
>> Cc: Thomas Gleixner <tglx@linutronix.de>
>> Cc: Vasily Gorbik <gor@linux.ibm.com>
>> Cc: Vegard Nossum <vegard.nossum@oracle.com>
>> Cc: Vlastimil Babka <vbabka@suse.cz>
>> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
>> Signed-off-by: Sasha Levin <sashal@kernel.org>
>> ---
>>   block/blk.h | 7 +++++++
>>   1 file changed, 7 insertions(+)
>>
>> diff --git a/block/blk.h b/block/blk.h
>> index ee3d5664d962..3358ef4244fe 100644
>> --- a/block/blk.h
>> +++ b/block/blk.h
>> @@ -79,6 +79,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))
> 
> So KMSAN is being backported to 5.4?

No, AUTOSEL is drunk and should drop the random kmsan patches for random 
stable versions.

> - Eric


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-10-18  9:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20221018001102.2731930-1-sashal@kernel.org>
2022-10-18  0:10 ` [PATCH AUTOSEL 5.4 10/13] kmsan: disable physical page merging in biovec Sasha Levin
2022-10-18  0:22   ` Eric Biggers
2022-10-18  9:23     ` Vlastimil Babka

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).