Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86: kasan: kmsan: support CONFIG_GENERIC_CSUM on x86, enable it for KASAN/KMSAN

This is needed to allow memory tools like KASAN and KMSAN see the memory
accesses from the checksum code. Without CONFIG_GENERIC_CSUM the tools
can't see memory accesses originating from handwritten assembly code.

For KASAN it's a question of detecting more bugs, for KMSAN using the C
implementation also helps avoid false positives originating from seemingly
uninitialized checksum values.

Link: https://lkml.kernel.org/r/20220915150417.722975-38-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>

authored by

Alexander Potapenko and committed by
Andrew Morton
d911c67e 3f1e2c7a

+16 -6
+4
arch/x86/Kconfig
··· 325 325 def_bool y 326 326 depends on ISA_DMA_API 327 327 328 + config GENERIC_CSUM 329 + bool 330 + default y if KMSAN || KASAN 331 + 328 332 config GENERIC_BUG 329 333 def_bool y 330 334 depends on BUG
+10 -6
arch/x86/include/asm/checksum.h
··· 1 1 /* SPDX-License-Identifier: GPL-2.0 */ 2 - #define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER 1 3 - #define HAVE_CSUM_COPY_USER 4 - #define _HAVE_ARCH_CSUM_AND_COPY 5 - #ifdef CONFIG_X86_32 6 - # include <asm/checksum_32.h> 2 + #ifdef CONFIG_GENERIC_CSUM 3 + # include <asm-generic/checksum.h> 7 4 #else 8 - # include <asm/checksum_64.h> 5 + # define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER 1 6 + # define HAVE_CSUM_COPY_USER 7 + # define _HAVE_ARCH_CSUM_AND_COPY 8 + # ifdef CONFIG_X86_32 9 + # include <asm/checksum_32.h> 10 + # else 11 + # include <asm/checksum_64.h> 12 + # endif 9 13 #endif
+2
arch/x86/lib/Makefile
··· 65 65 endif 66 66 else 67 67 obj-y += iomap_copy_64.o 68 + ifneq ($(CONFIG_GENERIC_CSUM),y) 68 69 lib-y += csum-partial_64.o csum-copy_64.o csum-wrappers_64.o 70 + endif 69 71 lib-y += clear_page_64.o copy_page_64.o 70 72 lib-y += memmove_64.o memset_64.o 71 73 lib-y += copy_user_64.o