s390/checksum: support GENERIC_CSUM, enable it for KASAN
authorHeiko Carstens <hca@linux.ibm.com>
Wed, 30 Nov 2022 09:40:34 +0000 (10:40 +0100)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Fri, 2 Dec 2022 17:25:04 +0000 (18:25 +0100)
This is the s390 variant of commit d911c67e10b4 ("x86: kasan: kmsan:
support CONFIG_GENERIC_CSUM on x86, enable it for KASAN/KMSAN"). Even
though most of the s390 specific checksum code is written in C there is
still the csum_partial() inline assembly which could prevent KASAN and
KMSAN from seeing all memory accesses.

Therefore switch to GENERIC_CSUM if KASAN is enabled just like x86.

Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/Kconfig
arch/s390/include/asm/checksum.h

index 0c154e8..72d20d3 100644 (file)
@@ -26,6 +26,10 @@ config GENERIC_BUG
 config GENERIC_BUG_RELATIVE_POINTERS
        def_bool y
 
+config GENERIC_CSUM
+       bool
+       default y if KASAN
+
 config GENERIC_LOCKBREAK
        def_bool y if PREEMPTION
 
index cdd19d3..d977a3a 100644 (file)
 #ifndef _S390_CHECKSUM_H
 #define _S390_CHECKSUM_H
 
+#ifdef CONFIG_GENERIC_CSUM
+
+#include <asm-generic/checksum.h>
+
+#else /* CONFIG_GENERIC_CSUM */
+
 #include <linux/uaccess.h>
 #include <linux/in6.h>
 
@@ -129,4 +135,5 @@ static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
        return csum_fold((__force __wsum)(sum >> 32));
 }
 
+#endif /* CONFIG_GENERIC_CSUM */
 #endif /* _S390_CHECKSUM_H */