mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad()
@ 2026-09-11  7:03 Bill Wendling
  2026-09-11  7:03 ` [PATCH 1/7] kasan: Add .kunitconfig for KUnit tests Bill Wendling
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Bill Wendling @ 2026-09-11  7:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Bill Wendling

This series makes the KASAN KUnit test suite easy to run via kunit.py
and fixes a real detection gap it uncovered along the way.

Patch 1 adds mm/kasan/.kunitconfig so the suite can be run with:

    ./tools/testing/kunit/kunit.py run --arch=x86_64 --kunitconfig mm/kasan

Getting CONFIG_KASAN_KUNIT_TEST to actually build required pulling in
CONFIG_SCHED_TRACER (CONFIG_FTRACE alone doesn't select the invisible
TRACEPOINTS symbol it depends on), plus a larger CONFIG_LOG_BUF_SHIFT
to stop KASAN's verbose reports from overflowing the printk buffer
under QEMU.

The migration from read_word_at_a_time() to load_unaligned_zeropad() lost
instrumentation, because the load_unaligned_zeropad() functions are
implemented as inline asm with an exception table entry on every
architecture, so the compiler never sees the memory access and can't
instrument it for KASAN/KCSAN. This meant sized_strscpy() silently
bypassed KASAN when reading its source buffer word-at-a-time, and the
same gap turned out to be open at every other call site in the tree.

Rather than patching each call site individually, patch 2 renames
x86's load_unaligned_zeropad() to arch_load_unaligned_zeropad() and
adds a single common, always-inlined wrapper that instruments the read
before calling through.

Patches 3-7 convert the remaining architectures (arm64, arm, riscv,
s390, powerpc) that implement load_unaligned_zeropad() to the same
pattern, so each can be reviewed independently by its arch maintainer.

Verified via objdump that the wrapper adds no calls or relocations
when KASAN and KCSAN are both disabled.

Bill Wendling (7):
  kasan: Add .kunitconfig for KUnit tests
  x86/word-at-a-time: Instrument load_unaligned_zeropad()
  arm64/word-at-a-time: Instrument load_unaligned_zeropad()
  arm/word-at-a-time: Instrument load_unaligned_zeropad()
  riscv/word-at-a-time: Instrument load_unaligned_zeropad()
  s390/word-at-a-time: Instrument load_unaligned_zeropad()
  powerpc/word-at-a-time: Instrument load_unaligned_zeropad()

 arch/arm/include/asm/word-at-a-time.h         |  4 ++-
 arch/arm64/include/asm/word-at-a-time.h       |  4 ++-
 arch/powerpc/include/asm/word-at-a-time.h     |  4 ++-
 arch/riscv/include/asm/word-at-a-time.h       |  4 ++-
 arch/s390/include/asm/word-at-a-time.h        |  4 ++-
 arch/x86/include/asm/word-at-a-time.h         |  4 ++-
 .../asm-generic/word-at-a-time-instrumented.h | 25 +++++++++++++++++++
 mm/kasan/.kunitconfig                         | 15 +++++++++++
 8 files changed, 58 insertions(+), 6 deletions(-)
 create mode 100644 include/asm-generic/word-at-a-time-instrumented.h
 create mode 100644 mm/kasan/.kunitconfig

-- 
2.47.3


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

* [PATCH 1/7] kasan: Add .kunitconfig for KUnit tests
  2026-09-11  7:03 [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad() Bill Wendling
@ 2026-09-11  7:03 ` Bill Wendling
  2026-09-11  7:03 ` [PATCH 2/7] x86/word-at-a-time: Instrument load_unaligned_zeropad() Bill Wendling
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Bill Wendling @ 2026-09-11  7:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Bill Wendling, Andrey Ryabinin, Alexander Potapenko,
	Andrey Konovalov, Dmitry Vyukov, Vincenzo Frascino,
	Andrew Morton, Mickaël Salaün, Günther Noack,
	kasan-dev, linux-mm, linux-security-module

Add a .kunitconfig file for the KASAN test suite so that it can easily
be run via kunit.py:

    ./tools/testing/kunit/kunit.py run --arch=x86_64 --kunitconfig mm/kasan

CONFIG_KASAN_KUNIT_TEST depends on TRACEPOINTS, which is an invisible
Kconfig symbol without a prompt. CONFIG_FTRACE alone only unlocks the
tracer submenu and does not select TRACEPOINTS by itself, so also
enable CONFIG_SCHED_TRACER=y, which selects GENERIC_TRACER -> TRACING
-> TRACEPOINTS. This follows the same pattern used by
security/landlock/.kunitconfig. Verified with:

    make KCONFIG_ALLCONFIG=mm/kasan/.kunitconfig allnoconfig

that CONFIG_TRACEPOINTS=y and CONFIG_KASAN_KUNIT_TEST=y both resolve.

In addition, set CONFIG_LOG_BUF_SHIFT=20 to prevent printk buffer
overflows on serial consoles when running under QEMU, as KASAN generates
extensive reports across its test cases.

Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Bill Wendling <morbo@google.com>
---
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: "Mickaël Salaün" <mic@digikod.net>
Cc: "Günther Noack" <gnoack@google.com>
Cc: linux-kernel@vger.kernel.org
Cc: kasan-dev@googlegroups.com
Cc: linux-mm@kvack.org
Cc: linux-security-module@vger.kernel.org
---
 mm/kasan/.kunitconfig | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 create mode 100644 mm/kasan/.kunitconfig

diff --git a/mm/kasan/.kunitconfig b/mm/kasan/.kunitconfig
new file mode 100644
index 000000000000..58a7448fa352
--- /dev/null
+++ b/mm/kasan/.kunitconfig
@@ -0,0 +1,15 @@
+CONFIG_KUNIT=y
+CONFIG_KASAN=y
+CONFIG_KASAN_KUNIT_TEST=y
+
+# Additional dependencies.
+# CONFIG_KASAN_KUNIT_TEST depends on TRACEPOINTS, an invisible Kconfig
+# symbol with no prompt. CONFIG_FTRACE alone only unlocks the tracer
+# submenu; CONFIG_SCHED_TRACER is needed to actually select
+# GENERIC_TRACER -> TRACING -> TRACEPOINTS.
+CONFIG_FTRACE=y
+CONFIG_SCHED_TRACER=y
+
+# Prevent printk buffer overflows on serial consoles when running under
+# QEMU, since KASAN generates extensive reports across its test cases.
+CONFIG_LOG_BUF_SHIFT=20
-- 
2.47.3


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

* [PATCH 2/7] x86/word-at-a-time: Instrument load_unaligned_zeropad()
  2026-09-11  7:03 [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad() Bill Wendling
  2026-09-11  7:03 ` [PATCH 1/7] kasan: Add .kunitconfig for KUnit tests Bill Wendling
@ 2026-09-11  7:03 ` Bill Wendling
  2026-09-11  7:03 ` [PATCH 3/7] arm64/word-at-a-time: " Bill Wendling
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Bill Wendling @ 2026-09-11  7:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Bill Wendling, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, H. Peter Anvin, Arnd Bergmann, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Kees Cook,
	Catalin Marinas, Peter Collingbourne, linux-arch, linux-riscv,
	x86

load_unaligned_zeropad() is implemented as inline asm plus an
exception table entry on every architecture, so the compiler never
sees the actual memory access and cannot emit KASAN/KCSAN
instrumentation for it.

Resurrect the instrumentation that was lost when migrating from
read_word_at_a_time() by renaming load_unaligned_zeropad() to
arch_load_unaligned_zeropad() and adding a common instrumented
load_unaligned_zeropad() in the new
asm-generic/word-at-a-time-instrumented.h, pulled in from the bottom
of asm/word-at-a-time.h. This mirrors the existing
arch_atomic_*()/atomic_*() split in linux/atomic/atomic-instrumented.h,
where the arch_* version is the raw, uninstrumented primitive and the
plain name is the instrumented one everyone should call.

The wrapper is __always_inline, so it compiles down to exactly the
same inline asm as before plus instrument_read() -- confirmed via
objdump that no calls or relocations to load_unaligned_zeropad(),
instrument_read(), or the KASAN/KCSAN check functions remain when
KASAN and KCSAN are both disabled.

Convert x86 to the new split here. Follow-up patches convert the
remaining architectures (arm64, arm, riscv, s390, powerpc) that
implement load_unaligned_zeropad().

Fixes: d94c12bd97d5 ("string: Add load_unaligned_zeropad() code path to sized_strscpy()")
Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Bill Wendling <morbo@google.com>
---
Cc: Thomas Gleixner <tglx@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Paul Walmsley <pjw@kernel.org>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Alexandre Ghiti <alex@ghiti.fr>
Cc: Kees Cook <kees@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Peter Collingbourne <peter@pcc.me.uk>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: linux-riscv@lists.infradead.org
Cc: x86@kernel.org
---
 arch/x86/include/asm/word-at-a-time.h         |  4 ++-
 .../asm-generic/word-at-a-time-instrumented.h | 25 +++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 include/asm-generic/word-at-a-time-instrumented.h

diff --git a/arch/x86/include/asm/word-at-a-time.h b/arch/x86/include/asm/word-at-a-time.h
index 422a47746657..483d27dc96b2 100644
--- a/arch/x86/include/asm/word-at-a-time.h
+++ b/arch/x86/include/asm/word-at-a-time.h
@@ -67,7 +67,7 @@ static inline unsigned long find_zero(unsigned long mask)
  * and the next page not being mapped, take the exception and
  * return zeroes in the non-existing part.
  */
-static inline unsigned long load_unaligned_zeropad(const void *addr)
+static inline unsigned long arch_load_unaligned_zeropad(const void *addr)
 {
 	unsigned long ret;
 
@@ -81,4 +81,6 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)
 	return ret;
 }
 
+#include <asm-generic/word-at-a-time-instrumented.h>
+
 #endif /* _ASM_WORD_AT_A_TIME_H */
diff --git a/include/asm-generic/word-at-a-time-instrumented.h b/include/asm-generic/word-at-a-time-instrumented.h
new file mode 100644
index 000000000000..8a66d53bf538
--- /dev/null
+++ b/include/asm-generic/word-at-a-time-instrumented.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_GENERIC_WORD_AT_A_TIME_INSTRUMENTED_H
+#define _ASM_GENERIC_WORD_AT_A_TIME_INSTRUMENTED_H
+
+#include <linux/instrumented.h>
+
+/*
+ * Each arch's asm/word-at-a-time.h defines arch_load_unaligned_zeropad()
+ * as inline asm plus an exception table entry, so the compiler never sees
+ * the actual memory access and cannot emit KASAN/KCSAN instrumentation
+ * for it. Provide the common, instrumented load_unaligned_zeropad() that
+ * every caller uses by wrapping the arch version with instrument_read().
+ *
+ * This is marked __always_inline, and arch_load_unaligned_zeropad() is
+ * itself a tiny inline-asm-only function, so this compiles down to the
+ * same inline asm as before plus instrument_read() (which itself compiles
+ * to nothing when KASAN and KCSAN are both disabled) -- no actual call.
+ */
+static __always_inline unsigned long load_unaligned_zeropad(const void *addr)
+{
+	instrument_read(addr, 1);
+	return arch_load_unaligned_zeropad(addr);
+}
+
+#endif /* _ASM_GENERIC_WORD_AT_A_TIME_INSTRUMENTED_H */
-- 
2.47.3


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

* [PATCH 3/7] arm64/word-at-a-time: Instrument load_unaligned_zeropad()
  2026-09-11  7:03 [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad() Bill Wendling
  2026-09-11  7:03 ` [PATCH 1/7] kasan: Add .kunitconfig for KUnit tests Bill Wendling
  2026-09-11  7:03 ` [PATCH 2/7] x86/word-at-a-time: Instrument load_unaligned_zeropad() Bill Wendling
@ 2026-09-11  7:03 ` Bill Wendling
  2026-09-11  7:03 ` [PATCH 4/7] arm/word-at-a-time: " Bill Wendling
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Bill Wendling @ 2026-09-11  7:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Bill Wendling, Catalin Marinas, Will Deacon, Mark Rutland,
	linux-arm-kernel

Convert arm64 to the arch_load_unaligned_zeropad() /
load_unaligned_zeropad() split introduced for x86 in the previous
patch, so KASAN/KCSAN also see reads through load_unaligned_zeropad()
on this architecture (e.g. under CONFIG_KASAN_SW_TAGS).

Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Bill Wendling <morbo@google.com>
---
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 arch/arm64/include/asm/word-at-a-time.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/include/asm/word-at-a-time.h b/arch/arm64/include/asm/word-at-a-time.h
index 824ca6987a51..656e3274ed7a 100644
--- a/arch/arm64/include/asm/word-at-a-time.h
+++ b/arch/arm64/include/asm/word-at-a-time.h
@@ -47,7 +47,7 @@ static inline unsigned long zero_bytemask(unsigned long bits)
  * and the next page not being mapped, take the exception and
  * return zeroes in the non-existing part.
  */
-static inline unsigned long load_unaligned_zeropad(const void *addr)
+static inline unsigned long arch_load_unaligned_zeropad(const void *addr)
 {
 	unsigned long ret;
 
@@ -66,4 +66,6 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)
 	return ret;
 }
 
+#include <asm-generic/word-at-a-time-instrumented.h>
+
 #endif /* __ASM_WORD_AT_A_TIME_H */
-- 
2.47.3


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

* [PATCH 4/7] arm/word-at-a-time: Instrument load_unaligned_zeropad()
  2026-09-11  7:03 [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad() Bill Wendling
                   ` (2 preceding siblings ...)
  2026-09-11  7:03 ` [PATCH 3/7] arm64/word-at-a-time: " Bill Wendling
@ 2026-09-11  7:03 ` Bill Wendling
  2026-09-11  7:03 ` [PATCH 5/7] riscv/word-at-a-time: " Bill Wendling
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Bill Wendling @ 2026-09-11  7:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Bill Wendling, Russell King, Russell King (Oracle),
	Liyuan Pang, Xie Yuanbin, linux-arm-kernel

Convert arm to the arch_load_unaligned_zeropad() /
load_unaligned_zeropad() split introduced for x86 earlier in this
series, so KASAN/KCSAN also see reads through load_unaligned_zeropad()
on this architecture.

Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Bill Wendling <morbo@google.com>
---
Cc: Russell King <linux@armlinux.org.uk>
Cc: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
Cc: Liyuan Pang <pangliyuan1@huawei.com>
Cc: Xie Yuanbin <xieyuanbin1@huawei.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 arch/arm/include/asm/word-at-a-time.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/include/asm/word-at-a-time.h b/arch/arm/include/asm/word-at-a-time.h
index 5023f98d8293..ef0002d16dc1 100644
--- a/arch/arm/include/asm/word-at-a-time.h
+++ b/arch/arm/include/asm/word-at-a-time.h
@@ -65,7 +65,7 @@ static inline unsigned long find_zero(unsigned long mask)
  * and the next page not being mapped, take the exception and
  * return zeroes in the non-existing part.
  */
-static inline unsigned long load_unaligned_zeropad(const void *addr)
+static inline unsigned long arch_load_unaligned_zeropad(const void *addr)
 {
 	unsigned long ret, tmp;
 
@@ -96,5 +96,7 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)
 	return ret;
 }
 
+#include <asm-generic/word-at-a-time-instrumented.h>
+
 #endif	/* DCACHE_WORD_ACCESS */
 #endif /* __ASM_ARM_WORD_AT_A_TIME_H */
-- 
2.47.3


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

* [PATCH 5/7] riscv/word-at-a-time: Instrument load_unaligned_zeropad()
  2026-09-11  7:03 [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad() Bill Wendling
                   ` (3 preceding siblings ...)
  2026-09-11  7:03 ` [PATCH 4/7] arm/word-at-a-time: " Bill Wendling
@ 2026-09-11  7:03 ` Bill Wendling
  2026-09-11  7:03 ` [PATCH 6/7] s390/word-at-a-time: " Bill Wendling
  2026-09-11  7:03 ` [PATCH 7/7] powerpc/word-at-a-time: " Bill Wendling
  6 siblings, 0 replies; 8+ messages in thread
From: Bill Wendling @ 2026-09-11  7:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Bill Wendling, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, linux-riscv

Convert riscv to the arch_load_unaligned_zeropad() /
load_unaligned_zeropad() split introduced for x86 earlier in this
series, so KASAN/KCSAN also see reads through load_unaligned_zeropad()
on this architecture.

Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Bill Wendling <morbo@google.com>
---
Cc: Paul Walmsley <pjw@kernel.org>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Alexandre Ghiti <alex@ghiti.fr>
Cc: linux-riscv@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 arch/riscv/include/asm/word-at-a-time.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/riscv/include/asm/word-at-a-time.h b/arch/riscv/include/asm/word-at-a-time.h
index 3802cda71ab7..a4294b50c918 100644
--- a/arch/riscv/include/asm/word-at-a-time.h
+++ b/arch/riscv/include/asm/word-at-a-time.h
@@ -56,7 +56,7 @@ static inline unsigned long find_zero(unsigned long mask)
  * and the next page not being mapped, take the exception and
  * return zeroes in the non-existing part.
  */
-static inline unsigned long load_unaligned_zeropad(const void *addr)
+static inline unsigned long arch_load_unaligned_zeropad(const void *addr)
 {
 	unsigned long ret;
 
@@ -71,6 +71,8 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)
 	return ret;
 }
 
+#include <asm-generic/word-at-a-time-instrumented.h>
+
 #endif	/* CONFIG_DCACHE_WORD_ACCESS */
 
 #endif /* _ASM_RISCV_WORD_AT_A_TIME_H */
-- 
2.47.3


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

* [PATCH 6/7] s390/word-at-a-time: Instrument load_unaligned_zeropad()
  2026-09-11  7:03 [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad() Bill Wendling
                   ` (4 preceding siblings ...)
  2026-09-11  7:03 ` [PATCH 5/7] riscv/word-at-a-time: " Bill Wendling
@ 2026-09-11  7:03 ` Bill Wendling
  2026-09-11  7:03 ` [PATCH 7/7] powerpc/word-at-a-time: " Bill Wendling
  6 siblings, 0 replies; 8+ messages in thread
From: Bill Wendling @ 2026-09-11  7:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Bill Wendling, Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, linux-s390

Convert s390 to the arch_load_unaligned_zeropad() /
load_unaligned_zeropad() split introduced for x86 earlier in this
series, so KASAN/KCSAN also see reads through load_unaligned_zeropad()
on this architecture.

Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Bill Wendling <morbo@google.com>
---
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: linux-s390@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 arch/s390/include/asm/word-at-a-time.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/s390/include/asm/word-at-a-time.h b/arch/s390/include/asm/word-at-a-time.h
index eaa19dee7699..6a055bee5ba0 100644
--- a/arch/s390/include/asm/word-at-a-time.h
+++ b/arch/s390/include/asm/word-at-a-time.h
@@ -48,7 +48,7 @@ static inline unsigned long zero_bytemask(unsigned long data)
  * and the next page not being mapped, take the exception and
  * return zeroes in the non-existing part.
  */
-static inline unsigned long load_unaligned_zeropad(const void *addr)
+static inline unsigned long arch_load_unaligned_zeropad(const void *addr)
 {
 	unsigned long data;
 
@@ -62,4 +62,6 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)
 	return data;
 }
 
+#include <asm-generic/word-at-a-time-instrumented.h>
+
 #endif /* _ASM_WORD_AT_A_TIME_H */
-- 
2.47.3


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

* [PATCH 7/7] powerpc/word-at-a-time: Instrument load_unaligned_zeropad()
  2026-09-11  7:03 [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad() Bill Wendling
                   ` (5 preceding siblings ...)
  2026-09-11  7:03 ` [PATCH 6/7] s390/word-at-a-time: " Bill Wendling
@ 2026-09-11  7:03 ` Bill Wendling
  6 siblings, 0 replies; 8+ messages in thread
From: Bill Wendling @ 2026-09-11  7:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Bill Wendling, Madhavan Srinivasan, Michael Ellerman,
	Nicholas Piggin, Christophe Leroy (CS GROUP),
	Ritesh Harjani (IBM),
	Shrikanth Hegde, linuxppc-dev

Convert powerpc to the arch_load_unaligned_zeropad() /
load_unaligned_zeropad() split introduced for x86 earlier in this
series, so KASAN/KCSAN also see reads through load_unaligned_zeropad()
on this architecture.

Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Bill Wendling <morbo@google.com>
---
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
Cc: "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>
Cc: Shrikanth Hegde <sshegde@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-kernel@vger.kernel.org
---
 arch/powerpc/include/asm/word-at-a-time.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/asm/word-at-a-time.h b/arch/powerpc/include/asm/word-at-a-time.h
index 54653a863414..9a09620ca776 100644
--- a/arch/powerpc/include/asm/word-at-a-time.h
+++ b/arch/powerpc/include/asm/word-at-a-time.h
@@ -164,7 +164,7 @@ static inline unsigned long prep_zero_mask(unsigned long a, unsigned long bits,
 #define FIXUP_SECTION ".fixup"
 #endif
 
-static inline unsigned long load_unaligned_zeropad(const void *addr)
+static inline unsigned long arch_load_unaligned_zeropad(const void *addr)
 {
 	unsigned long ret, offset, tmp;
 
@@ -203,4 +203,6 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)
 
 #undef FIXUP_SECTION
 
+#include <asm-generic/word-at-a-time-instrumented.h>
+
 #endif /* _ASM_WORD_AT_A_TIME_H */
-- 
2.47.3


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

end of thread, other threads:[~2026-09-11  7:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-11  7:03 [PATCH 0/7] kasan: Add KUnit config and fix missing instrumentation in load_unaligned_zeropad() Bill Wendling
2026-09-11  7:03 ` [PATCH 1/7] kasan: Add .kunitconfig for KUnit tests Bill Wendling
2026-09-11  7:03 ` [PATCH 2/7] x86/word-at-a-time: Instrument load_unaligned_zeropad() Bill Wendling
2026-09-11  7:03 ` [PATCH 3/7] arm64/word-at-a-time: " Bill Wendling
2026-09-11  7:03 ` [PATCH 4/7] arm/word-at-a-time: " Bill Wendling
2026-09-11  7:03 ` [PATCH 5/7] riscv/word-at-a-time: " Bill Wendling
2026-09-11  7:03 ` [PATCH 6/7] s390/word-at-a-time: " Bill Wendling
2026-09-11  7:03 ` [PATCH 7/7] powerpc/word-at-a-time: " Bill Wendling

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®