Maintainer workflows discussions
 help / color / mirror / Atom feed
* Re: [PATCH v11 00/15] kasan: x86: arm64: KASAN tag-based mode for x86
From: Maciej Wieczor-Retman @ 2026-03-10 19:17 UTC (permalink / raw)
  To: Andrew Morton
  Cc: urezki, ryan.roberts, kevin.brodsky, samuel.holland, dave.hansen,
	jeremy.linton, peterz, weixugc, ljs, ryabinin.a.a, rppt, bp, luto,
	jan.kiszka, mingo, david, mhocko, andreas, kas, Liam.Howlett,
	morbo, thuth, catalin.marinas, ankur.a.arora, kbingham,
	nick.desaulniers+lkml, andreyknvl, dvyukov, corbet, leitao, hpa,
	tglx, yuanchu, ardb, vincenzo.frascino, tabba, joey.gouly, nsc,
	will, yeoreum.yun, nathan, maciej.wieczor-retman, skhan,
	axelrasmussen, osandov, surenb, justinstitt, kees, vbabka,
	hsj0512, trintaeoitogc, jackmanb, maz, glider, linux-doc, x86,
	linux-kernel, kasan-dev, workflows, llvm, linux-arm-kernel,
	linux-kbuild, linux-mm
In-Reply-To: <20260310112421.8ceb7415e14b49cbd86db715@linux-foundation.org>

On 2026-03-10 at 11:24:21 -0700, Andrew Morton wrote:
>On Tue, 10 Mar 2026 17:51:19 +0000 Maciej Wieczor-Retman <m.wieczorretman@pm.me> wrote:
>
>>
>> [1] Currently inline mode doesn't work on x86 due to things missing in
>> the compiler. I have written a patch for clang that seems to fix the
>> inline mode and I was able to boot and check that all patches regarding
>> the inline mode work as expected. My hope is to post the patch to LLVM
>> once this series is completed, and then make inline mode available in
>> the kernel config.
>>
>> [2] While I was able to boot the inline tag-based kernel with my
>> compiler changes in a simulated environment, due to toolchain
>> difficulties I couldn't get it to boot on the machine I had access to.
>> Also boot time results from the simulation seem too good to be true, and
>> they're much too worse for the generic case to be believable. Therefore
>> I'm posting only results from the physical server platform.
>>
>> ======= Compilation
>> Clang was used to compile the series (make LLVM=1) since gcc doesn't
>> seem to have support for KASAN tag-based compiler instrumentation on
>> x86. Patchset does seem to compile with gcc without an issue but doesn't
>> boot afterwards.
>
>So LLVM works partially and gcc doesn't work at all?

The non-working options are disabled in Kconfig so right now only outline KASAN
with LLVM works fully.

>Do we know which compiler people are using?  Google tells me that
>Android, ChromeOS, and OpenMandriva use LLVM.  That's pretty thin.

I don't have any numbers on this matter, from working on this I only got that
there is much more KASAN traffic around clang. So I thought that most KASAN
users prefer LLVM.

>This is all rather problematic and it isn't clear (to me) how to
>proceed at this time.  Do we have any projections on when all this will
>be fixed up?

My understanding is that there is something off in gcc support. I recall Andrey
Konovalov mentioning that gcc also doesn't work well with arm64's KASAN
tag-based mode. As for LLVM inline support I do know the codebase a bit so I got
some WIP patches there. But I wanted to see where this review process goes
before posting to LLVM.

>> The series is based on mm-new.
>
>I actually carry kexec patches in the mm-nonmm-[un]stable branches.
>But the series applies OK anyway.

Should I base this patchset on top of mm-nonmm-stable in the future? I was after
one patch by Andrey Ryabinin that was in mm-new and I needed to rebase on top of
it.

-- 
Kind regards
Maciej Wieczór-Retman


^ permalink raw reply

* Re: [PATCH v11 00/15] kasan: x86: arm64: KASAN tag-based mode for x86
From: Peter Zijlstra @ 2026-03-10 19:00 UTC (permalink / raw)
  To: Maciej Wieczor-Retman
  Cc: urezki, ryan.roberts, kevin.brodsky, samuel.holland, dave.hansen,
	jeremy.linton, weixugc, ljs, ryabinin.a.a, rppt, bp, luto,
	jan.kiszka, mingo, david, mhocko, akpm, andreas, kas,
	Liam.Howlett, morbo, thuth, catalin.marinas, ankur.a.arora,
	kbingham, nick.desaulniers+lkml, andreyknvl, dvyukov, corbet,
	leitao, hpa, tglx, yuanchu, ardb, vincenzo.frascino, tabba,
	joey.gouly, nsc, will, yeoreum.yun, nathan, maciej.wieczor-retman,
	skhan, axelrasmussen, osandov, surenb, justinstitt, kees, vbabka,
	hsj0512, trintaeoitogc, jackmanb, maz, glider, linux-doc, x86,
	linux-kernel, kasan-dev, workflows, llvm, linux-arm-kernel,
	linux-kbuild, linux-mm
In-Reply-To: <cover.1773164688.git.m.wieczorretman@pm.me>

On Tue, Mar 10, 2026 at 05:51:19PM +0000, Maciej Wieczor-Retman wrote:

> ======= Compilation
> Clang was used to compile the series (make LLVM=1) since gcc doesn't
> seem to have support for KASAN tag-based compiler instrumentation on
> x86. Patchset does seem to compile with gcc without an issue but doesn't
> boot afterwards.

Can you put all that under a specific CONFIG and make that depend on
CC_IS_CLANG?

^ permalink raw reply

* Re: [PATCH v11 00/15] kasan: x86: arm64: KASAN tag-based mode for x86
From: Andrew Morton @ 2026-03-10 18:24 UTC (permalink / raw)
  To: Maciej Wieczor-Retman
  Cc: urezki, ryan.roberts, kevin.brodsky, samuel.holland, dave.hansen,
	jeremy.linton, peterz, weixugc, ljs, ryabinin.a.a, rppt, bp, luto,
	jan.kiszka, mingo, david, mhocko, andreas, kas, Liam.Howlett,
	morbo, thuth, catalin.marinas, ankur.a.arora, kbingham,
	nick.desaulniers+lkml, andreyknvl, dvyukov, corbet, leitao, hpa,
	tglx, yuanchu, ardb, vincenzo.frascino, tabba, joey.gouly, nsc,
	will, yeoreum.yun, nathan, maciej.wieczor-retman, skhan,
	axelrasmussen, osandov, surenb, justinstitt, kees, vbabka,
	hsj0512, trintaeoitogc, jackmanb, maz, glider, linux-doc, x86,
	linux-kernel, kasan-dev, workflows, llvm, linux-arm-kernel,
	linux-kbuild, linux-mm
In-Reply-To: <cover.1773164688.git.m.wieczorretman@pm.me>

On Tue, 10 Mar 2026 17:51:19 +0000 Maciej Wieczor-Retman <m.wieczorretman@pm.me> wrote:

> 
> [1] Currently inline mode doesn't work on x86 due to things missing in
> the compiler. I have written a patch for clang that seems to fix the
> inline mode and I was able to boot and check that all patches regarding
> the inline mode work as expected. My hope is to post the patch to LLVM
> once this series is completed, and then make inline mode available in
> the kernel config.
> 
> [2] While I was able to boot the inline tag-based kernel with my
> compiler changes in a simulated environment, due to toolchain
> difficulties I couldn't get it to boot on the machine I had access to.
> Also boot time results from the simulation seem too good to be true, and
> they're much too worse for the generic case to be believable. Therefore
> I'm posting only results from the physical server platform.
> 
> ======= Compilation
> Clang was used to compile the series (make LLVM=1) since gcc doesn't
> seem to have support for KASAN tag-based compiler instrumentation on
> x86. Patchset does seem to compile with gcc without an issue but doesn't
> boot afterwards.

So LLVM works partially and gcc doesn't work at all?

Do we know which compiler people are using?  Google tells me that
Android, ChromeOS, and OpenMandriva use LLVM.  That's pretty thin.

This is all rather problematic and it isn't clear (to me) how to
proceed at this time.  Do we have any projections on when all this will
be fixed up?

> The series is based on mm-new.

I actually carry kexec patches in the mm-nonmm-[un]stable branches. 
But the series applies OK anyway.


^ permalink raw reply

* [PATCH v11 15/15] docs: Update KASAN and x86 memory map documentations
From: Maciej Wieczor-Retman @ 2026-03-10 17:55 UTC (permalink / raw)
  To: akpm, Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen,
	x86, H. Peter Anvin, Jonathan Corbet, Shuah Khan, Andrey Ryabinin,
	Alexander Potapenko, Andrey Konovalov, Dmitry Vyukov,
	Vincenzo Frascino
  Cc: m.wieczorretman, Maciej Wieczor-Retman, linux-kernel, linux-doc,
	kasan-dev, workflows
In-Reply-To: <cover.1773164688.git.m.wieczorretman@pm.me>

From: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>

Update the documentation concerning changes to x86's memory address
space and new architecture addition to KASAN's software tag-based mode.

Redo paragraphs in KASAN's documentation on hardware and software
implementation details to allow better extensibility.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
---
Changelog v11:
- Split off the documentation portion of v10's patch 13.
- Apply Dave's suggestions to reformat the footer explaining alternate
  ranges for KASAN shadow memory, put arch hardware implementation in a
  separate paragraph and make a table to hold various implementation
  details.

 Documentation/arch/x86/x86_64/mm.rst | 21 +++++++++-
 Documentation/dev-tools/kasan.rst    | 61 ++++++++++++++++++++--------
 2 files changed, 62 insertions(+), 20 deletions(-)

diff --git a/Documentation/arch/x86/x86_64/mm.rst b/Documentation/arch/x86/x86_64/mm.rst
index a6cf05d51bd8..3c78ab1afd8d 100644
--- a/Documentation/arch/x86/x86_64/mm.rst
+++ b/Documentation/arch/x86/x86_64/mm.rst
@@ -60,7 +60,7 @@ Complete virtual memory map with 4-level page tables
    ffffe90000000000 |  -23    TB | ffffe9ffffffffff |    1 TB | ... unused hole
    ffffea0000000000 |  -22    TB | ffffeaffffffffff |    1 TB | virtual memory map (vmemmap_base)
    ffffeb0000000000 |  -21    TB | ffffebffffffffff |    1 TB | ... unused hole
-   ffffec0000000000 |  -20    TB | fffffbffffffffff |   16 TB | KASAN shadow memory
+   ffffec0000000000 |  -20    TB | fffffbffffffffff |   16 TB | KASAN shadow memory[1]
   __________________|____________|__________________|_________|____________________________________________________________
                                                               |
                                                               | Identical layout to the 56-bit one from here on:
@@ -130,7 +130,7 @@ Complete virtual memory map with 5-level page tables
    ffd2000000000000 |  -11.5  PB | ffd3ffffffffffff |  0.5 PB | ... unused hole
    ffd4000000000000 |  -11    PB | ffd5ffffffffffff |  0.5 PB | virtual memory map (vmemmap_base)
    ffd6000000000000 |  -10.5  PB | ffdeffffffffffff | 2.25 PB | ... unused hole
-   ffdf000000000000 |   -8.25 PB | fffffbffffffffff |   ~8 PB | KASAN shadow memory
+   ffdf000000000000 |   -8.25 PB | fffffbffffffffff |   ~8 PB | KASAN shadow memory[1]
   __________________|____________|__________________|_________|____________________________________________________________
                                                               |
                                                               | Identical layout to the 47-bit one from here on:
@@ -178,3 +178,20 @@ correct as KASAN disables KASLR.
 
 For both 4- and 5-level layouts, the KSTACK_ERASE_POISON value in the last 2MB
 hole: ffffffffffff4111
+
+1. The range is different based on what KASAN mode is used and what paging level
+   is used:
+
+::
+
+  ============================================================================================================
+      Start addr    |   Offset   |     End addr     |  Size   | VM area description
+  ============================================================================================================
+                    |            |                  |         | 4-level paging:
+   ffffec0000000000 |  -20    TB | fffffbffffffffff |   16 TB | KASAN shadow memory (generic mode)
+   fffff40000000000 |   -8    TB | fffffbffffffffff |    8 TB | KASAN shadow memory (software tag-based mode)
+  __________________|____________|__________________|_________|_______________________________________________
+                    |            |                  |         | 5-level paging:
+   ffdf000000000000 |   -8.25 PB | fffffbffffffffff |   ~8 PB | KASAN shadow memory (generic mode)
+   ffeffc0000000000 |   -6    PB | fffffbffffffffff |    4 PB | KASAN shadow memory (software tag-based mode)
+  __________________|____________|__________________|_________|_______________________________________________
diff --git a/Documentation/dev-tools/kasan.rst b/Documentation/dev-tools/kasan.rst
index b11c1be8dff4..d42d80e9fcf1 100644
--- a/Documentation/dev-tools/kasan.rst
+++ b/Documentation/dev-tools/kasan.rst
@@ -22,8 +22,8 @@ architectures, but it has significant performance and memory overheads.
 
 Software Tag-Based KASAN or SW_TAGS KASAN, enabled with CONFIG_KASAN_SW_TAGS,
 can be used for both debugging and dogfood testing, similar to userspace HWASan.
-This mode is only supported for arm64, but its moderate memory overhead allows
-using it for testing on memory-restricted devices with real workloads.
+This mode is only supported for arm64 and x86, but its moderate memory overhead
+allows using it for testing on memory-restricted devices with real workloads.
 
 Hardware Tag-Based KASAN or HW_TAGS KASAN, enabled with CONFIG_KASAN_HW_TAGS,
 is the mode intended to be used as an in-field memory bug detector or as a
@@ -346,16 +346,21 @@ Software Tag-Based KASAN
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
 Software Tag-Based KASAN uses a software memory tagging approach to checking
-access validity. It is currently only implemented for the arm64 architecture.
-
-Software Tag-Based KASAN uses the Top Byte Ignore (TBI) feature of arm64 CPUs
-to store a pointer tag in the top byte of kernel pointers. It uses shadow memory
-to store memory tags associated with each 16-byte memory cell (therefore, it
-dedicates 1/16th of the kernel memory for shadow memory).
-
-On each memory allocation, Software Tag-Based KASAN generates a random tag, tags
-the allocated memory with this tag, and embeds the same tag into the returned
-pointer.
+access validity. It is currently only implemented for the arm64 and x86
+architectures. To function, special hardware CPU features* are needed for
+repurposing space inside the kernel pointers to store pointer tags.
+
+Software Tag-Based mode uses shadow memory to store memory tags associated with
+each 16-byte memory cell (therefore, it dedicates 1/16th of the kernel memory
+for shadow memory). On each memory allocation, Software Tag-Based KASAN
+generates a random tag, tags the allocated memory with this tag, and embeds the
+same tag into the returned pointer.
+
+Two special tag values can be distinguished. A match-all pointer tag (otherwise
+called the 'kernel tag' because it's supposed to be equal to the value normally
+present in the same bits of the linear address when KASAN is disabled) -
+accesses through such pointers are not checked. Another value is also reserved
+to tag freed memory regions.
 
 Software Tag-Based KASAN uses compile-time instrumentation to insert checks
 before each memory access. These checks make sure that the tag of the memory
@@ -367,12 +372,32 @@ Software Tag-Based KASAN also has two instrumentation modes (outline, which
 emits callbacks to check memory accesses; and inline, which performs the shadow
 memory checks inline). With outline instrumentation mode, a bug report is
 printed from the function that performs the access check. With inline
-instrumentation, a ``brk`` instruction is emitted by the compiler, and a
-dedicated ``brk`` handler is used to print bug reports.
-
-Software Tag-Based KASAN uses 0xFF as a match-all pointer tag (accesses through
-pointers with the 0xFF pointer tag are not checked). The value 0xFE is currently
-reserved to tag freed memory regions.
+instrumentation, the compiler emits a specific arch-dependent instruction with a
+dedicated handler to print bug reports.
+
+Architecture specific details:
+
+::
+
+  +-----------------------+--------+---------------------+
+  | detail \ architecture | arm64  | x86                 |
+  +=======================+========+=====================+
+  | Hardware feature      | TBI    | LAM                 |
+  +-----------------------+--------+---------------------+
+  | Kernel tag            | 0xFF   | 0x0F                |
+  +-----------------------+--------+---------------------+
+  | Freed memory tag      | 0xFE   | 0x0E                |
+  +-----------------------+--------+---------------------+
+  | Tag width             | 8 bits | 4 bits              |
+  +-----------------------+--------+---------------------+
+  | Inline instruction    | brk    | no compiler support |
+  +-----------------------+--------+---------------------+
+
+* Different architectures implement different hardware features to mask and
+  repurpose linear address bits. arm64 utilizes Top Byte Ignore (TBI) to mask
+  out and allow storing tags in the top byte of the pointer. x86 uses Linear
+  Address Masking (LAM) to store tags in the four bits of the kernel pointer's
+  top byte.
 
 Hardware Tag-Based KASAN
 ~~~~~~~~~~~~~~~~~~~~~~~~
-- 
2.53.0



^ permalink raw reply related

* [PATCH v11 01/15] kasan: sw_tags: Use arithmetic shift for shadow computation
From: Maciej Wieczor-Retman @ 2026-03-10 17:53 UTC (permalink / raw)
  To: akpm, Catalin Marinas, Will Deacon, Jonathan Corbet, Shuah Khan,
	Andrey Ryabinin, Alexander Potapenko, Andrey Konovalov,
	Dmitry Vyukov, Vincenzo Frascino, Jan Kiszka, Kieran Bingham,
	Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt
  Cc: m.wieczorretman, Samuel Holland, Maciej Wieczor-Retman,
	linux-arm-kernel, linux-doc, linux-kernel, kasan-dev, workflows,
	linux-mm, llvm
In-Reply-To: <cover.1773164688.git.m.wieczorretman@pm.me>

From: Samuel Holland <samuel.holland@sifive.com>

Currently, kasan_mem_to_shadow() uses a logical right shift, which turns
canonical kernel addresses into non-canonical addresses by clearing the
high KASAN_SHADOW_SCALE_SHIFT bits. The value of KASAN_SHADOW_OFFSET is
then chosen so that the addition results in a canonical address for the
shadow memory.

For KASAN_GENERIC, this shift/add combination is ABI with the compiler,
because KASAN_SHADOW_OFFSET is used in compiler-generated inline tag
checks[1], which must only attempt to dereference canonical addresses.

However, for KASAN_SW_TAGS there is some freedom to change the algorithm
without breaking the ABI. Because TBI is enabled for kernel addresses,
the top bits of shadow memory addresses computed during tag checks are
irrelevant, and so likewise are the top bits of KASAN_SHADOW_OFFSET.
This is demonstrated by the fact that LLVM uses a logical right shift in
the tag check fast path[2] but a sbfx (signed bitfield extract)
instruction in the slow path[3] without causing any issues.

Use an arithmetic shift in kasan_mem_to_shadow() as it provides a number
of benefits:

1) The memory layout doesn't change but is easier to understand.
KASAN_SHADOW_OFFSET becomes a canonical memory address, and the shifted
pointer becomes a negative offset, so KASAN_SHADOW_OFFSET ==
KASAN_SHADOW_END regardless of the shift amount or the size of the
virtual address space.

2) KASAN_SHADOW_OFFSET becomes a simpler constant, requiring only one
instruction to load instead of two. Since it must be loaded in each
function with a tag check, this decreases kernel text size by 0.5%.

3) This shift and the sign extension from kasan_reset_tag() can be
combined into a single sbfx instruction. When this same algorithm change
is applied to the compiler, it removes an instruction from each inline
tag check, further reducing kernel text size by an additional 4.6%.

These benefits extend to other architectures as well. On RISC-V, where
the baseline ISA does not shifted addition or have an equivalent to the
sbfx instruction, loading KASAN_SHADOW_OFFSET is reduced from 3 to 2
instructions, and kasan_mem_to_shadow(kasan_reset_tag(addr)) similarly
combines two consecutive right shifts.

Link: https://github.com/llvm/llvm-project/blob/llvmorg-20-init/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp#L1316 [1]
Link: https://github.com/llvm/llvm-project/blob/llvmorg-20-init/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp#L895 [2]
Link: https://github.com/llvm/llvm-project/blob/llvmorg-20-init/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp#L669 [3]
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Co-developed-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
---
Changelog v11: (Maciej)
- Remove the arch_kasan_non_canonical_hook() scheme in favor of Andrey
  Ryabinin's much nicer simple implementation.

Changelog v10: (Maciej)
- Update the Documentation/dev-tools/kasan.rst file with the changed
  kasan_mem_to_shadow().

Changelog v9: (Maciej)
- Take out the arm64 related code from mm/kasan/report.c and put it in
  the arch specific directory in a new file so the kasan_mem_to_shadow()
  function can be included.
- Reset addr tag bits in arm64's arch_kasan_non_canonical_hook() so the
  inline mode can also work with that function (Andrey Ryabinin).
- Fix incorrect number of zeros in a comment in mm/kasan/report.c.
- Remove Catalin's acked-by since changes were made.

Changelog v7: (Maciej)
- Change UL to ULL in report.c to fix some compilation warnings.

Changelog v6: (Maciej)
- Add Catalin's acked-by.
- Move x86 gdb snippet here from the last patch.

Changelog v5: (Maciej)
- (u64) -> (unsigned long) in report.c

Changelog v4: (Maciej)
- Revert x86 to signed mem_to_shadow mapping.
- Remove last two paragraphs since they were just poorer duplication of
  the comments in kasan_non_canonical_hook().

Changelog v3: (Maciej)
- Fix scripts/gdb/linux/kasan.py so the new signed mem_to_shadow() is
  reflected there.
- Fix Documentation/arch/arm64/kasan-offsets.sh to take new offsets into
  account.
- Made changes to the kasan_non_canonical_hook() according to upstream
  discussion. Settled on overflow on both ranges and separate checks for
  x86 and arm.

Changelog v2: (Maciej)
- Correct address range that's checked in kasan_non_canonical_hook().
  Adjust the comment inside.
- Remove part of comment from arch/arm64/include/asm/memory.h.
- Append patch message paragraph about the overflow in
  kasan_non_canonical_hook().

 Documentation/arch/arm64/kasan-offsets.sh |  8 ++++++--
 Documentation/dev-tools/kasan.rst         | 18 ++++++++++++------
 arch/arm64/Kconfig                        | 10 +++++-----
 arch/arm64/include/asm/memory.h           | 14 +++++++++++++-
 arch/arm64/mm/kasan_init.c                |  7 +++++--
 include/linux/kasan.h                     | 10 ++++++++--
 mm/kasan/report.c                         | 16 ++++++++++++----
 scripts/gdb/linux/kasan.py                |  5 ++++-
 scripts/gdb/linux/mm.py                   |  5 +++--
 9 files changed, 68 insertions(+), 25 deletions(-)

diff --git a/Documentation/arch/arm64/kasan-offsets.sh b/Documentation/arch/arm64/kasan-offsets.sh
index 2dc5f9e18039..ce777c7c7804 100644
--- a/Documentation/arch/arm64/kasan-offsets.sh
+++ b/Documentation/arch/arm64/kasan-offsets.sh
@@ -5,8 +5,12 @@
 
 print_kasan_offset () {
 	printf "%02d\t" $1
-	printf "0x%08x00000000\n" $(( (0xffffffff & (-1 << ($1 - 1 - 32))) \
-			- (1 << (64 - 32 - $2)) ))
+	if [[ $2 -ne 4 ]] then
+		printf "0x%08x00000000\n" $(( (0xffffffff & (-1 << ($1 - 1 - 32))) \
+				- (1 << (64 - 32 - $2)) ))
+	else
+		printf "0x%08x00000000\n" $(( (0xffffffff & (-1 << ($1 - 1 - 32))) ))
+	fi
 }
 
 echo KASAN_SHADOW_SCALE_SHIFT = 3
diff --git a/Documentation/dev-tools/kasan.rst b/Documentation/dev-tools/kasan.rst
index 4968b2aa60c8..b11c1be8dff4 100644
--- a/Documentation/dev-tools/kasan.rst
+++ b/Documentation/dev-tools/kasan.rst
@@ -315,13 +315,19 @@ translate a memory address to its corresponding shadow address.
 Here is the function which translates an address to its corresponding shadow
 address::
 
-    static inline void *kasan_mem_to_shadow(const void *addr)
-    {
-	return (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT)
-		+ KASAN_SHADOW_OFFSET;
-    }
+        static inline void *kasan_mem_to_shadow(const void *addr)
+        {
+                void *scaled;
 
-where ``KASAN_SHADOW_SCALE_SHIFT = 3``.
+                if (IS_ENABLED(CONFIG_KASAN_GENERIC))
+                        scaled = (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT);
+                else
+                        scaled = (void *)((long)addr >> KASAN_SHADOW_SCALE_SHIFT);
+
+                return KASAN_SHADOW_OFFSET + scaled;
+        }
+
+where for Generic KASAN ``KASAN_SHADOW_SCALE_SHIFT = 3``.
 
 Compile-time instrumentation is used to insert memory access checks. Compiler
 inserts function calls (``__asan_load*(addr)``, ``__asan_store*(addr)``) before
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 38dba5f7e4d2..4de7e721f32e 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -435,11 +435,11 @@ config KASAN_SHADOW_OFFSET
 	default 0xdffffe0000000000 if ARM64_VA_BITS_42 && !KASAN_SW_TAGS
 	default 0xdfffffc000000000 if ARM64_VA_BITS_39 && !KASAN_SW_TAGS
 	default 0xdffffff800000000 if ARM64_VA_BITS_36 && !KASAN_SW_TAGS
-	default 0xefff800000000000 if (ARM64_VA_BITS_48 || (ARM64_VA_BITS_52 && !ARM64_16K_PAGES)) && KASAN_SW_TAGS
-	default 0xefffc00000000000 if (ARM64_VA_BITS_47 || ARM64_VA_BITS_52) && ARM64_16K_PAGES && KASAN_SW_TAGS
-	default 0xeffffe0000000000 if ARM64_VA_BITS_42 && KASAN_SW_TAGS
-	default 0xefffffc000000000 if ARM64_VA_BITS_39 && KASAN_SW_TAGS
-	default 0xeffffff800000000 if ARM64_VA_BITS_36 && KASAN_SW_TAGS
+	default 0xffff800000000000 if (ARM64_VA_BITS_48 || (ARM64_VA_BITS_52 && !ARM64_16K_PAGES)) && KASAN_SW_TAGS
+	default 0xffffc00000000000 if (ARM64_VA_BITS_47 || ARM64_VA_BITS_52) && ARM64_16K_PAGES && KASAN_SW_TAGS
+	default 0xfffffe0000000000 if ARM64_VA_BITS_42 && KASAN_SW_TAGS
+	default 0xffffffc000000000 if ARM64_VA_BITS_39 && KASAN_SW_TAGS
+	default 0xfffffff800000000 if ARM64_VA_BITS_36 && KASAN_SW_TAGS
 	default 0xffffffffffffffff
 
 config UNWIND_TABLES
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index a2b7a33966ff..875c0bd0d85a 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -89,7 +89,15 @@
  *
  * KASAN_SHADOW_END is defined first as the shadow address that corresponds to
  * the upper bound of possible virtual kernel memory addresses UL(1) << 64
- * according to the mapping formula.
+ * according to the mapping formula. For Generic KASAN, the address in the
+ * mapping formula is treated as unsigned (part of the compiler's ABI), so the
+ * end of the shadow memory region is at a large positive offset from
+ * KASAN_SHADOW_OFFSET. For Software Tag-Based KASAN, the address in the
+ * formula is treated as signed. Since all kernel addresses are negative, they
+ * map to shadow memory below KASAN_SHADOW_OFFSET, making KASAN_SHADOW_OFFSET
+ * itself the end of the shadow memory region. (User pointers are positive and
+ * would map to shadow memory above KASAN_SHADOW_OFFSET, but shadow memory is
+ * not allocated for them.)
  *
  * KASAN_SHADOW_START is defined second based on KASAN_SHADOW_END. The shadow
  * memory start must map to the lowest possible kernel virtual memory address
@@ -100,7 +108,11 @@
  */
 #if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
 #define KASAN_SHADOW_OFFSET	_AC(CONFIG_KASAN_SHADOW_OFFSET, UL)
+#ifdef CONFIG_KASAN_GENERIC
 #define KASAN_SHADOW_END	((UL(1) << (64 - KASAN_SHADOW_SCALE_SHIFT)) + KASAN_SHADOW_OFFSET)
+#else
+#define KASAN_SHADOW_END	KASAN_SHADOW_OFFSET
+#endif
 #define _KASAN_SHADOW_START(va)	(KASAN_SHADOW_END - (UL(1) << ((va) - KASAN_SHADOW_SCALE_SHIFT)))
 #define KASAN_SHADOW_START	_KASAN_SHADOW_START(vabits_actual)
 #define PAGE_END		KASAN_SHADOW_START
diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c
index abeb81bf6ebd..937f6eb8115b 100644
--- a/arch/arm64/mm/kasan_init.c
+++ b/arch/arm64/mm/kasan_init.c
@@ -198,8 +198,11 @@ static bool __init root_level_aligned(u64 addr)
 /* The early shadow maps everything to a single page of zeroes */
 asmlinkage void __init kasan_early_init(void)
 {
-	BUILD_BUG_ON(KASAN_SHADOW_OFFSET !=
-		KASAN_SHADOW_END - (1UL << (64 - KASAN_SHADOW_SCALE_SHIFT)));
+	if (IS_ENABLED(CONFIG_KASAN_GENERIC))
+		BUILD_BUG_ON(KASAN_SHADOW_OFFSET !=
+			KASAN_SHADOW_END - (1UL << (64 - KASAN_SHADOW_SCALE_SHIFT)));
+	else
+		BUILD_BUG_ON(KASAN_SHADOW_OFFSET != KASAN_SHADOW_END);
 	BUILD_BUG_ON(!IS_ALIGNED(_KASAN_SHADOW_START(VA_BITS), SHADOW_ALIGN));
 	BUILD_BUG_ON(!IS_ALIGNED(_KASAN_SHADOW_START(VA_BITS_MIN), SHADOW_ALIGN));
 	BUILD_BUG_ON(!IS_ALIGNED(KASAN_SHADOW_END, SHADOW_ALIGN));
diff --git a/include/linux/kasan.h b/include/linux/kasan.h
index 338a1921a50a..81c83dcfcebe 100644
--- a/include/linux/kasan.h
+++ b/include/linux/kasan.h
@@ -62,8 +62,14 @@ int kasan_populate_early_shadow(const void *shadow_start,
 #ifndef kasan_mem_to_shadow
 static inline void *kasan_mem_to_shadow(const void *addr)
 {
-	return (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT)
-		+ KASAN_SHADOW_OFFSET;
+	void *scaled;
+
+	if (IS_ENABLED(CONFIG_KASAN_GENERIC))
+		scaled = (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT);
+	else
+		scaled = (void *)((long)addr >> KASAN_SHADOW_SCALE_SHIFT);
+
+	return KASAN_SHADOW_OFFSET + scaled;
 }
 #endif
 
diff --git a/mm/kasan/report.c b/mm/kasan/report.c
index e804b1e1f886..1e4521b5ef14 100644
--- a/mm/kasan/report.c
+++ b/mm/kasan/report.c
@@ -640,12 +640,20 @@ void kasan_non_canonical_hook(unsigned long addr)
 {
 	unsigned long orig_addr, user_orig_addr;
 	const char *bug_type;
+	void *tagged_null = set_tag(NULL, KASAN_TAG_KERNEL);
+	void *tagged_addr = set_tag((void *)addr, KASAN_TAG_KERNEL);
 
 	/*
-	 * All addresses that came as a result of the memory-to-shadow mapping
-	 * (even for bogus pointers) must be >= KASAN_SHADOW_OFFSET.
+	 * Filter out addresses that cannot be shadow memory accesses generated
+	 * by the compiler.
+	 *
+	 * In SW_TAGS mode, when computing a shadow address, the compiler always
+	 * sets the kernel tag (some top bits) on the pointer *before* computing
+	 * the memory-to-shadow mapping. As a result, valid shadow addresses
+	 * are derived from tagged kernel pointers.
 	 */
-	if (addr < KASAN_SHADOW_OFFSET)
+	if (tagged_addr < kasan_mem_to_shadow(tagged_null) ||
+	    tagged_addr > kasan_mem_to_shadow((void *)(~0ULL)))
 		return;
 
 	orig_addr = (unsigned long)kasan_shadow_to_mem((void *)addr);
@@ -670,7 +678,7 @@ void kasan_non_canonical_hook(unsigned long addr)
 	} else if (user_orig_addr < TASK_SIZE) {
 		bug_type = "probably user-memory-access";
 		orig_addr = user_orig_addr;
-	} else if (addr_in_shadow((void *)addr))
+	} else if (addr_in_shadow(tagged_addr))
 		bug_type = "probably wild-memory-access";
 	else
 		bug_type = "maybe wild-memory-access";
diff --git a/scripts/gdb/linux/kasan.py b/scripts/gdb/linux/kasan.py
index 56730b3fde0b..4b86202b155f 100644
--- a/scripts/gdb/linux/kasan.py
+++ b/scripts/gdb/linux/kasan.py
@@ -7,7 +7,8 @@
 #
 
 import gdb
-from linux import constants, mm
+from linux import constants, utils, mm
+from ctypes import c_int64 as s64
 
 def help():
     t = """Usage: lx-kasan_mem_to_shadow [Hex memory addr]
@@ -39,6 +40,8 @@ class KasanMemToShadow(gdb.Command):
         else:
             help()
     def kasan_mem_to_shadow(self, addr):
+        if constants.CONFIG_KASAN_SW_TAGS and not utils.is_target_arch('x86'):
+            addr = s64(addr)
         return (addr >> self.p_ops.KASAN_SHADOW_SCALE_SHIFT) + self.p_ops.KASAN_SHADOW_OFFSET
 
 KasanMemToShadow()
diff --git a/scripts/gdb/linux/mm.py b/scripts/gdb/linux/mm.py
index d78908f6664d..d4ab341d89c5 100644
--- a/scripts/gdb/linux/mm.py
+++ b/scripts/gdb/linux/mm.py
@@ -281,12 +281,13 @@ class aarch64_page_ops():
         self.KERNEL_END = gdb.parse_and_eval("_end")
 
         if constants.LX_CONFIG_KASAN_GENERIC or constants.LX_CONFIG_KASAN_SW_TAGS:
+            self.KASAN_SHADOW_OFFSET = constants.LX_CONFIG_KASAN_SHADOW_OFFSET
             if constants.LX_CONFIG_KASAN_GENERIC:
                 self.KASAN_SHADOW_SCALE_SHIFT = 3
+                self.KASAN_SHADOW_END = (1 << (64 - self.KASAN_SHADOW_SCALE_SHIFT)) + self.KASAN_SHADOW_OFFSET
             else:
                 self.KASAN_SHADOW_SCALE_SHIFT = 4
-            self.KASAN_SHADOW_OFFSET = constants.LX_CONFIG_KASAN_SHADOW_OFFSET
-            self.KASAN_SHADOW_END = (1 << (64 - self.KASAN_SHADOW_SCALE_SHIFT)) + self.KASAN_SHADOW_OFFSET
+                self.KASAN_SHADOW_END = self.KASAN_SHADOW_OFFSET
             self.PAGE_END = self.KASAN_SHADOW_END - (1 << (self.vabits_actual - self.KASAN_SHADOW_SCALE_SHIFT))
         else:
             self.PAGE_END = self._PAGE_END(self.VA_BITS_MIN)
-- 
2.53.0



^ permalink raw reply related

* [PATCH v11 00/15] kasan: x86: arm64: KASAN tag-based mode for x86
From: Maciej Wieczor-Retman @ 2026-03-10 17:51 UTC (permalink / raw)
  To: urezki, ryan.roberts, kevin.brodsky, samuel.holland, dave.hansen,
	jeremy.linton, peterz, weixugc, ljs, ryabinin.a.a, rppt, bp, luto,
	jan.kiszka, mingo, david, mhocko, akpm, andreas, kas,
	Liam.Howlett, morbo, thuth, catalin.marinas, ankur.a.arora,
	kbingham, nick.desaulniers+lkml, andreyknvl, dvyukov, corbet,
	leitao, hpa, tglx, yuanchu, ardb, vincenzo.frascino, tabba,
	joey.gouly, nsc, will, yeoreum.yun, nathan, maciej.wieczor-retman,
	skhan, axelrasmussen, osandov, surenb, justinstitt, kees, vbabka,
	hsj0512, trintaeoitogc, jackmanb, maz, glider
  Cc: linux-doc, x86, linux-kernel, kasan-dev, workflows, llvm,
	linux-arm-kernel, linux-kbuild, linux-mm, m.wieczorretman

======= Introduction
The patchset aims to add a KASAN tag-based mode for the x86 architecture
with the help of the new CPU feature called Linear Address Masking
(LAM). Main improvement introduced by the series is 2x lower memory
usage compared to KASAN's generic mode, the only currently available
mode on x86. The tag based mode may also find errors that the generic
mode couldn't because of differences in how these modes operate.

======= How does KASAN' tag-based mode work?
When enabled, memory accesses and allocations are augmented by the
compiler during kernel compilation. Instrumentation functions are added
to each memory allocation and each pointer dereference.

The allocation related functions generate a random tag and save it in
two places: in shadow memory that maps to the allocated memory, and in
the top bits of the pointer that points to the allocated memory. Storing
the tag in the top of the pointer is possible because of Top-Byte Ignore
(TBI) on arm64 architecture and LAM on x86.

The access related functions are performing a comparison between the tag
stored in the pointer and the one stored in shadow memory. If the tags
don't match an out of bounds error must have occurred and so an error
report is generated.

The general idea for the tag-based mode is very well explained in the
series with the original implementation [1].

[1] https://lore.kernel.org/all/cover.1544099024.git.andreyknvl@google.com/

======= Differences summary compared to the arm64 tag-based mode
- Tag width:
	- Tag width influences the chance of a tag mismatch due to two
	  tags from different allocations having the same value. The
	  bigger the possible range of tag values the lower the chance
	  of that happening.
	- Shortening the tag width from 8 bits to 4, while it can help
	  with memory usage, it also increases the chance of not
	  reporting an error. 4 bit tags have a ~7% chance of a tag
	  mismatch.

- Address masking mechanism
	- TBI in arm64 allows for storing metadata in the top 8 bits of
	  the virtual address.
	- LAM in x86 allows storing tags in bits [62:57] of the pointer.
	  To maximize memory savings the tag width is reduced to bits
	  [60:57].

- Inline mode mismatch reporting
	- Arm64 inserts a BRK instruction to pass metadata about a tag
	  mismatch to the KASAN report.
	- Right now on x86 the INT3 instruction is used for the same
	  purpose. The attempt to move it over to use UD1 is already
	  implemented and tested but relies on another series that needs
	  merging first. Therefore this patch will be posted separately
	  once the dependency is satisfied by being merged upstream.

======= Testing
Checked all the kunits for both software tags and generic KASAN after
making changes.

In generic mode (both with these patches and without) the results were:

kasan: pass:61 fail:1 skip:14 total:76
Totals: pass:61 fail:1 skip:14 total:76
not ok 1 kasan

and for software tags:

kasan: pass:65 fail:1 skip:10 total:76
Totals: pass:65 fail:1 skip:10 total:76
not ok 1 kasan

At the time of testing the one failing case is also present on generic
mode without this patchset applied. This seems to point to something
else being at fault for the one case not passing. The test case in
question concerns strscpy() out of bounds error not getting caught.

======= Benchmarks [1]
All tests were ran on a Sierra Forest server platform. The only
differences between the tests were kernel options:
	- CONFIG_KASAN
	- CONFIG_KASAN_GENERIC
	- CONFIG_KASAN_SW_TAGS
	- CONFIG_KASAN_INLINE [1]
	- CONFIG_KASAN_OUTLINE

Boot time (until login prompt):
* 02:55 for clean kernel
* 05:42 / 06:32 for generic KASAN (inline/outline)
* 05:58 for tag-based KASAN (outline) [2]

Total memory usage (512GB present on the system - MemAvailable just
after boot):
* 12.56 GB for clean kernel
* 81.74 GB for generic KASAN
* 44.39 GB for tag-based KASAN

Kernel size:
* 14 MB for clean kernel
* 24.7 MB / 19.5 MB for generic KASAN (inline/outline)
* 27.1 MB / 18.1 MB for tag-based KASAN (inline/outline)

Work under load time comparison (compiling the mainline kernel) (200 cores):
*  62s for clean kernel
* 171s / 125s for generic KASAN (outline/inline)
* 145s for tag-based KASAN (outline) [2]

[1] Currently inline mode doesn't work on x86 due to things missing in
the compiler. I have written a patch for clang that seems to fix the
inline mode and I was able to boot and check that all patches regarding
the inline mode work as expected. My hope is to post the patch to LLVM
once this series is completed, and then make inline mode available in
the kernel config.

[2] While I was able to boot the inline tag-based kernel with my
compiler changes in a simulated environment, due to toolchain
difficulties I couldn't get it to boot on the machine I had access to.
Also boot time results from the simulation seem too good to be true, and
they're much too worse for the generic case to be believable. Therefore
I'm posting only results from the physical server platform.

======= Compilation
Clang was used to compile the series (make LLVM=1) since gcc doesn't
seem to have support for KASAN tag-based compiler instrumentation on
x86. Patchset does seem to compile with gcc without an issue but doesn't
boot afterwards.

======= Dependencies
The series is based on mm-new.

======= Previous versions
v10: https://lore.kernel.org/all/cover.1770232424.git.m.wieczorretman@pm.me/
v9:  https://lore.kernel.org/all/cover.1768845098.git.m.wieczorretman@pm.me/
v8:  https://lore.kernel.org/all/cover.1768233085.git.m.wieczorretman@pm.me/
v7:  https://lore.kernel.org/all/cover.1765386422.git.m.wieczorretman@pm.me/
v6:  https://lore.kernel.org/all/cover.1761763681.git.m.wieczorretman@pm.me/
v5:  https://lore.kernel.org/all/cover.1756151769.git.maciej.wieczor-retman@intel.com/
v4:  https://lore.kernel.org/all/cover.1755004923.git.maciej.wieczor-retman@intel.com/
v3:  https://lore.kernel.org/all/cover.1743772053.git.maciej.wieczor-retman@intel.com/
v2:  https://lore.kernel.org/all/cover.1739866028.git.maciej.wieczor-retman@intel.com/
v1:  https://lore.kernel.org/all/cover.1738686764.git.maciej.wieczor-retman@intel.com/

=== (two fixes patches were split off after v6) (merged into mm-unstable)
v1: https://lore.kernel.org/all/cover.1762267022.git.m.wieczorretman@pm.me/
v2: https://lore.kernel.org/all/cover.1764685296.git.m.wieczorretman@pm.me/
v3: https://lore.kernel.org/all/cover.1764874575.git.m.wieczorretman@pm.me/
v4: https://lore.kernel.org/all/cover.1764945396.git.m.wieczorretman@pm.me/

Changes v11:
- Rebase series onto mm-new.
- Split off and modify the documentation patch.
- Split the pointer arithmetic reset tag patch in two. One patch for
  slight rework of page_to_virt() and one for putting x -
  __START_KERNEL_map into a tag reset helper.
- Fix issue pointed out by Dave on copy_from_kernel_nofault_allowed().
- Remove the arch_kasan_non_canonical_hook function scheme in favor of
  Andrey Ryabinin's simpler arch independent implementation.

Changes v10:
- Rebase the series onto 6.19-rc8.
- Add Mike Rapoport's acked-by to patch 6.
- Modify Documentation/dev-tools/kasan.rst in patches 1 and 13.

Changes v9:
- Lock HAVE_ARCH_KASAN_SW_TAGS behind CC_IS_CLANG due to gcc not working
  in practice.
- Remove pr_info() from KASAN initialization.
- Add paragraph to mm.rst explaining the alternative KASAN memory
  ranges.
- Move out arch based code from kasan_non_canonical_hook() into arch
  subdirectories. arm64 and non-arch changes in patch 1, x86 changes in
  patch 12.
- Reset tag bits on arm64's non-canonical hook to allow inline mode to
  work.
- Revert modifying __is_canonical_address() since it can break KVM. Just
  untag address in copy_from_kernel_no_fault_allowed().
- Add a bunch of reviewed-by tags.

Changes v8:
- Detached the UD1/INT3 inline patch from the series so the whole
  patchset can be merged without waiting on other dependency series. For
  now with lack of compiler support for the inline mode that patch
  didn't work anyway so this delay is not an issue.
- Rebased patches onto 6.19-rc5.
- Added acked-by tag to "kasan: arm64: x86: Make special tags arch
  specific".

Changes v7:
- Rebased the series onto Peter Zijlstra's "WARN() hackery" v2 patchset.
- Fix flipped memset arguments in "x86/kasan: KASAN raw shadow memory
  PTE init".
- Reorder tag width defines on arm64 to avoid redefinition warnings.
- Split off the pcpu unpoison patches into a separate fix oriented
  series.
- Redid the canonicality checks so it works for KVM too (didn't change
  the __canonical_address() function previously).
- A lot of fixes pointed out by Alexander in his great review:
	- Fixed "x86/mm: Physical address comparisons in fill_p*d/pte"
	- Merged "Support tag widths less than 8 bits" and "Make special
	  tags arch specific".
	- Added comments and extended patch messages for patches
	  "x86/kasan: Make software tag-based kasan available" and
	  "mm/execmem: Untag addresses in EXECMEM_ROX related pointer arithmetic",
	- Fixed KASAN_TAG_MASK definition order so all patches compile
	  individually.
	- Renamed kasan_inline.c to kasan_sw_tags.c.

Changes v6:
- Initialize sw-tags only when LAM is available.
- Move inline mode to use UD1 instead of INT3
- Remove inline multishot patch.
- Fix the canonical check to work for user addresses too.
- Revise patch names and messages to align to tip tree rules.
- Fix vdso compilation issue.

Changes v5:
- Fix a bunch of arm64 compilation errors I didn't catch earlier.
  Thank You Ada for testing the series!
- Simplify the usage of the tag handling x86 functions (virt_to_page,
  phys_addr etc.).
- Remove within() and within_range() from the EXECMEM_ROX patch.

Changes v4:
- Revert x86 kasan_mem_to_shadow() scheme to the same on used in generic
  KASAN. Keep the arithmetic shift idea for the KASAN in general since
  it makes more sense for arm64 and in risc-v.
- Fix inline mode but leave it unavailable until a complementary
  compiler patch can be merged.
- Apply Dave Hansen's comments on series formatting, patch style and
  code simplifications.

Changes v3:
- Remove the runtime_const patch and setup a unified offset for both 5
  and 4 paging levels.
- Add a fix for inline mode on x86 tag-based KASAN. Add a handler for
  int3 that is generated on inline tag mismatches.
- Fix scripts/gdb/linux/kasan.py so the new signed mem_to_shadow() is
  reflected there.
- Fix Documentation/arch/arm64/kasan-offsets.sh to take new offsets into
  account.
- Made changes to the kasan_non_canonical_hook() according to upstream
  discussion.
- Remove patches 2 and 3 since they related to risc-v and this series
  adds only x86 related things.
- Reorder __tag_*() functions so they're before arch_kasan_*(). Remove
  CONFIG_KASAN condition from __tag_set().

Changes v2:
- Split the series into one adding KASAN tag-based mode (this one) and
  another one that adds the dense mode to KASAN (will post later).
- Removed exporting kasan_poison() and used a wrapper instead in
  kasan_init_64.c
- Prepended series with 4 patches from the risc-v series and applied
  review comments to the first patch as the rest already are reviewed.

Maciej Wieczor-Retman (13):
  kasan: Fix inline mode for x86 tag-based mode
  x86/kasan: Add arch specific kasan functions
  x86/mm: Reset pointer tag in x - __START_KERNEL_map instances
  kasan: arm64: x86: Make page_to_virt() KASAN aware
  mm/execmem: Untag addresses in EXECMEM_ROX related pointer arithmetic
  x86/mm: Use physical address comparisons in fill_p*d/pte
  x86/kasan: Initialize KASAN raw shadow memory
  x86/mm: Reset tags in a canonical address helper call
  x86/mm: Initialize LAM_SUP
  x86: Increase minimal SLAB alignment for KASAN
  x86/kasan: Use a logical bit shift for kasan_mem_to_shadow
  x86/kasan: Make software tag-based kasan available
  docs: Update KASAN and x86 memory map documentations

Samuel Holland (2):
  kasan: sw_tags: Use arithmetic shift for shadow computation
  kasan: arm64: x86: Make special tags arch specific

 Documentation/arch/arm64/kasan-offsets.sh |  8 ++-
 Documentation/arch/x86/x86_64/mm.rst      | 21 +++++-
 Documentation/dev-tools/kasan.rst         | 79 ++++++++++++++++-------
 MAINTAINERS                               |  2 +-
 arch/arm64/Kconfig                        | 10 +--
 arch/arm64/include/asm/kasan-tags.h       | 14 ++++
 arch/arm64/include/asm/kasan.h            |  2 -
 arch/arm64/include/asm/memory.h           | 19 ++++--
 arch/arm64/include/asm/uaccess.h          |  1 +
 arch/arm64/mm/kasan_init.c                |  7 +-
 arch/x86/Kconfig                          |  4 ++
 arch/x86/boot/compressed/misc.h           |  1 +
 arch/x86/include/asm/cache.h              |  4 ++
 arch/x86/include/asm/kasan-tags.h         |  9 +++
 arch/x86/include/asm/kasan.h              | 62 +++++++++++++++++-
 arch/x86/include/asm/page_64.h            | 11 +++-
 arch/x86/kernel/head_64.S                 |  3 +
 arch/x86/mm/init.c                        |  3 +
 arch/x86/mm/init_64.c                     | 11 ++--
 arch/x86/mm/kasan_init_64.c               | 24 ++++++-
 arch/x86/mm/maccess.c                     |  1 +
 arch/x86/mm/physaddr.c                    |  4 +-
 include/linux/kasan-tags.h                | 21 ++++--
 include/linux/kasan.h                     | 23 +++++--
 include/linux/mm.h                        | 11 ++--
 include/linux/mmzone.h                    |  2 +-
 include/linux/page-flags-layout.h         |  9 +--
 lib/Kconfig.kasan                         |  4 +-
 mm/execmem.c                              |  9 ++-
 mm/kasan/report.c                         | 16 +++--
 mm/vmalloc.c                              |  7 +-
 scripts/Makefile.kasan                    |  3 +
 scripts/gdb/linux/kasan.py                |  5 +-
 scripts/gdb/linux/mm.py                   |  5 +-
 34 files changed, 326 insertions(+), 89 deletions(-)
 create mode 100644 arch/arm64/include/asm/kasan-tags.h
 create mode 100644 arch/x86/include/asm/kasan-tags.h

-- 
2.53.0



^ permalink raw reply

* [PATCH v2] coccinelle: update Coccinelle URL
From: Julia Lawall @ 2026-03-10 12:14 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Shuah Khan, workflows, cocci, Nicolas Palix, Hu Haowen, Alex Shi,
	Yanteng Si, Dongliang Mu, linux-doc, linux-kernel, Federico Vaga,
	Carlos Bilbao, Avadhut Naik, LIU Haoyang

The LIP6 URL no longer functions.

Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>

---

v2: corrected the character encoding, no other changes

 Documentation/dev-tools/coccinelle.rst                |    2 +-
 Documentation/translations/it_IT/process/4.Coding.rst |    3 ++-
 Documentation/translations/sp_SP/process/4.Coding.rst |    3 ++-
 Documentation/translations/zh_CN/process/4.Coding.rst |    2 +-
 Documentation/translations/zh_TW/process/4.Coding.rst |    2 +-
 5 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/Documentation/translations/zh_CN/process/4.Coding.rst b/Documentation/translations/zh_CN/process/4.Coding.rst
index 4cc35d410dbc..a00ad5d6b81e 100644
--- a/Documentation/translations/zh_CN/process/4.Coding.rst
+++ b/Documentation/translations/zh_CN/process/4.Coding.rst
@@ -216,7 +216,7 @@ Documentation/fault-injection/fault-injection.rst。
 可以在 https://sparse.wiki.kernel.org/index.php/Main_page 找到),
 然后可以通过在make命令中添加“C=1”在代码上运行它。
 
-“Coccinelle”工具 :ref:`http://coccinelle.lip6.fr/ <devtools_coccinelle>`
+“Coccinelle”工具 :ref:`https://coccinelle.gitlabpages.inria.fr/website/ <devtools_coccinelle>`
 能够发现各种潜在的编码问题;它还可以为这些问题提出修复方案。在
 scripts/coccinelle目录下已经打包了相当多的内核“语义补丁”;运行
 “make coccicheck”将运行这些语义补丁并报告发现的任何问题。有关详细信息,请参阅
diff --git a/Documentation/translations/zh_TW/process/4.Coding.rst b/Documentation/translations/zh_TW/process/4.Coding.rst
index e90a6b51fb98..233e8718ed41 100644
--- a/Documentation/translations/zh_TW/process/4.Coding.rst
+++ b/Documentation/translations/zh_TW/process/4.Coding.rst
@@ -219,7 +219,7 @@ Documentation/fault-injection/fault-injection.rst。
 可以在 https://sparse.wiki.kernel.org/index.php/Main_page 找到),
 然後可以通過在make命令中添加“C=1”在代碼上運行它。
 
-“Coccinelle”工具 :ref:`http://coccinelle.lip6.fr/ <devtools_coccinelle>`
+“Coccinelle”工具 :ref:`https://coccinelle.gitlabpages.inria.fr/website/ <devtools_coccinelle>`
 能夠發現各種潛在的編碼問題;它還可以爲這些問題提出修復方案。在
 scripts/coccinelle目錄下已經打包了相當多的內核“語義補丁”;運行
 “make coccicheck”將運行這些語義補丁並報告發現的任何問題。有關詳細信息,請參閱
diff --git a/Documentation/translations/it_IT/process/4.Coding.rst b/Documentation/translations/it_IT/process/4.Coding.rst
index 3126342c4b4a..a2ec35e016b7 100644
--- a/Documentation/translations/it_IT/process/4.Coding.rst
+++ b/Documentation/translations/it_IT/process/4.Coding.rst
@@ -329,7 +329,8 @@ Sparse deve essere installato separatamente (se il vostra distribuzione non
 lo prevede, potete trovarlo su https://sparse.wiki.kernel.org/index.php/Main_Page);
 può essere attivato sul codice aggiungendo "C=1" al comando make.
 
-Lo strumento "Coccinelle" (http://coccinelle.lip6.fr/) è in grado di trovare
+Lo strumento "Coccinelle" (https://coccinelle.gitlabpages.inria.fr/website/)
+è in grado di trovare
 una vasta varietà di potenziali problemi di codifica; e può inoltre proporre
 soluzioni per risolverli.  Un buon numero di "patch semantiche" per il kernel
 sono state preparate nella cartella scripts/coccinelle; utilizzando
diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/dev-tools/coccinelle.rst
index c714780d458a..05614c469b47 100644
--- a/Documentation/dev-tools/coccinelle.rst
+++ b/Documentation/dev-tools/coccinelle.rst
@@ -34,7 +34,7 @@ of many distributions, e.g. :
 
 Some distribution packages are obsolete and it is recommended
 to use the latest version released from the Coccinelle homepage at
-http://coccinelle.lip6.fr/
+https://coccinelle.gitlabpages.inria.fr/website
 
 Or from Github at:
 
diff --git a/Documentation/translations/sp_SP/process/4.Coding.rst b/Documentation/translations/sp_SP/process/4.Coding.rst
index 7cc347c34354..6c3750ccdea2 100644
--- a/Documentation/translations/sp_SP/process/4.Coding.rst
+++ b/Documentation/translations/sp_SP/process/4.Coding.rst
@@ -336,7 +336,8 @@ https://sparse.wiki.kernel.org/index.php/Main_Page si su distribución no lo
 empaqueta); luego, puede ejecutarse en el código agregando "C=1" a su
 comando make.
 
-La herramienta "Coccinelle" (http://coccinelle.lip6.fr/) puede encontrar
+La herramienta "Coccinelle" (https://coccinelle.gitlabpages.inria.fr/website/)
+puede encontrar
 una amplia variedad de posibles problemas de codificación; también puede
 proponer correcciones para esos problemas. Bastantes "parches semánticos"
 para el kernel se han empaquetado en el directorio scripts/coccinelle;


^ permalink raw reply related

* Re: [cocci] [PATCH] coccinelle: update Coccinelle URL
From: Akira Yokosawa @ 2026-03-10 12:12 UTC (permalink / raw)
  To: Julia Lawall; +Cc: linux-doc, linux-kernel, workflows
In-Reply-To: <c94cd15-2052-f746-ae38-304b4d838486@inria.fr>

On Tue, 10 Mar 2026 12:46:46 +0100 (CET), Julia Lawall wrote:
> On Tue, 10 Mar 2026, Akira Yokosawa wrote:
> 
>> [removed most CCs]
>>
>> Hi Julia,
>>
>>> On Tue, 10 Mar 2026, Julia Lawall wrote:
>>>
>>>> The LIP6 URL no longer functions.
>>>>
>>>> Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
>>>>
>>>> ---
>>>>
>>>> I used the UTF-8 encoding for the email.
>>>> Let me know if this was not the right choice.
>>>
>>> OK, this doesn't look good.  Sorry for the noise.  What is the proper
>>> encoding?
>>
>> Encoding itself looks good, but your patch has this in its header:
>>
>>     MIME-Version: 1.0
>>     Content-Type: text/plain; charset=y
>>     Content-Transfer-Encoding: 8bit
>>
>> , which should look like:
>>
>>     MIME-Version: 1.0
>>     Content-Type: text/plain; charset=UTF-8
>>     Content-Transfer-Encoding: 8bit
>>
>> Didn't you say "y" to git-send-email's prompt of ...[UTF-8] ?
> 
> Yes, I did.  I thought that would select the default...  Thanks for
> letting me know.  Should I send it again, or is it ok as is?

I'd just resend with a proper charset.

    Content-Type: text/plain; charset=y

would look confusing at best.

Thanks, Akira

> 
> thanks,
> julia
> 
>>
>> Thanks, Akira
>>
>>>
>>> thanks,
>>> julia
>>


^ permalink raw reply

* Re: [cocci] [PATCH] coccinelle: update Coccinelle URL
From: Julia Lawall @ 2026-03-10 11:46 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: julia.lawall, linux-doc, linux-kernel, workflows
In-Reply-To: <793c8771-83ab-4e6b-811d-41fd54b78e3a@gmail.com>



On Tue, 10 Mar 2026, Akira Yokosawa wrote:

> [removed most CCs]
>
> Hi Julia,
>
> > On Tue, 10 Mar 2026, Julia Lawall wrote:
> >
> >> The LIP6 URL no longer functions.
> >>
> >> Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
> >>
> >> ---
> >>
> >> I used the UTF-8 encoding for the email.
> >> Let me know if this was not the right choice.
> >
> > OK, this doesn't look good.  Sorry for the noise.  What is the proper
> > encoding?
>
> Encoding itself looks good, but your patch has this in its header:
>
>     MIME-Version: 1.0
>     Content-Type: text/plain; charset=y
>     Content-Transfer-Encoding: 8bit
>
> , which should look like:
>
>     MIME-Version: 1.0
>     Content-Type: text/plain; charset=UTF-8
>     Content-Transfer-Encoding: 8bit
>
> Didn't you say "y" to git-send-email's prompt of ...[UTF-8] ?

Yes, I did.  I thought that would select the default...  Thanks for
letting me know.  Should I send it again, or is it ok as is?

thanks,
julia

>
> Thanks, Akira
>
> >
> > thanks,
> > julia
>

^ permalink raw reply

* Re: [cocci] [PATCH] coccinelle: update Coccinelle URL
From: Akira Yokosawa @ 2026-03-10 10:41 UTC (permalink / raw)
  To: julia.lawall; +Cc: linux-doc, linux-kernel, workflows
In-Reply-To: <7db99952-d1ef-7148-4c8f-1e6ae8f0d875@inria.fr>

[removed most CCs]

Hi Julia,

> On Tue, 10 Mar 2026, Julia Lawall wrote:
> 
>> The LIP6 URL no longer functions.
>>
>> Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
>>
>> ---
>>
>> I used the UTF-8 encoding for the email.
>> Let me know if this was not the right choice.
> 
> OK, this doesn't look good.  Sorry for the noise.  What is the proper
> encoding?

Encoding itself looks good, but your patch has this in its header:

    MIME-Version: 1.0
    Content-Type: text/plain; charset=y
    Content-Transfer-Encoding: 8bit

, which should look like:

    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit

Didn't you say "y" to git-send-email's prompt of ...[UTF-8] ?

Thanks, Akira

> 
> thanks,
> julia

^ permalink raw reply

* Re: [cocci] [PATCH] coccinelle: update Coccinelle URL
From: Julia Lawall @ 2026-03-10  8:14 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Jonathan Corbet, Shuah Khan, workflows, cocci, Nicolas Palix,
	Hu Haowen, Alex Shi, Yanteng Si, Dongliang Mu, linux-doc,
	linux-kernel, Federico Vaga, Carlos Bilbao, Avadhut Naik,
	LIU Haoyang
In-Reply-To: <20260310081112.354802-1-Julia.Lawall@inria.fr>



On Tue, 10 Mar 2026, Julia Lawall wrote:

> The LIP6 URL no longer functions.
>
> Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
>
> ---
>
> I used the UTF-8 encoding for the email.
> Let me know if this was not the right choice.

OK, this doesn't look good.  Sorry for the noise.  What is the proper
encoding?

thanks,
julia

>
>  Documentation/dev-tools/coccinelle.rst                |    2 +-
>  Documentation/translations/it_IT/process/4.Coding.rst |    3 ++-
>  Documentation/translations/sp_SP/process/4.Coding.rst |    3 ++-
>  Documentation/translations/zh_CN/process/4.Coding.rst |    2 +-
>  Documentation/translations/zh_TW/process/4.Coding.rst |    2 +-
>  5 files changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/process/4.Coding.rst b/Documentation/translations/zh_CN/process/4.Coding.rst
> index 4cc35d410dbc..a00ad5d6b81e 100644
> --- a/Documentation/translations/zh_CN/process/4.Coding.rst
> +++ b/Documentation/translations/zh_CN/process/4.Coding.rst
> @@ -216,7 +216,7 @@ Documentation/fault-injection/fault-injection.rst???
>  ????????? https://sparse.wiki.kernel.org/index.php/Main_page ?????????,
>  ?????????????????????make??????????????????C=1???????????????????????????
>
> -???Coccinelle????????? :ref:`http://coccinelle.lip6.fr/ <devtools_coccinelle>`
> +???Coccinelle????????? :ref:`https://coccinelle.gitlabpages.inria.fr/website/ <devtools_coccinelle>`
>  ?????????????????????????????????????????????????????????????????????????????????????????????
>  scripts/coccinelle?????????????????????????????????????????????????????????????????????
>  ???make coccicheck?????????????????????????????????????????????????????????????????????????????????????????????
> diff --git a/Documentation/translations/zh_TW/process/4.Coding.rst b/Documentation/translations/zh_TW/process/4.Coding.rst
> index e90a6b51fb98..233e8718ed41 100644
> --- a/Documentation/translations/zh_TW/process/4.Coding.rst
> +++ b/Documentation/translations/zh_TW/process/4.Coding.rst
> @@ -219,7 +219,7 @@ Documentation/fault-injection/fault-injection.rst???
>  ????????? https://sparse.wiki.kernel.org/index.php/Main_page ?????????,
>  ?????????????????????make??????????????????C=1???????????????????????????
>
> -???Coccinelle????????? :ref:`http://coccinelle.lip6.fr/ <devtools_coccinelle>`
> +???Coccinelle????????? :ref:`https://coccinelle.gitlabpages.inria.fr/website/ <devtools_coccinelle>`
>  ?????????????????????????????????????????????????????????????????????????????????????????????
>  scripts/coccinelle?????????????????????????????????????????????????????????????????????
>  ???make coccicheck?????????????????????????????????????????????????????????????????????????????????????????????
> diff --git a/Documentation/translations/it_IT/process/4.Coding.rst b/Documentation/translations/it_IT/process/4.Coding.rst
> index 3126342c4b4a..a2ec35e016b7 100644
> --- a/Documentation/translations/it_IT/process/4.Coding.rst
> +++ b/Documentation/translations/it_IT/process/4.Coding.rst
> @@ -329,7 +329,8 @@ Sparse deve essere installato separatamente (se il vostra distribuzione non
>  lo prevede, potete trovarlo su https://sparse.wiki.kernel.org/index.php/Main_Page);
>  pu?? essere attivato sul codice aggiungendo "C=1" al comando make.
>
> -Lo strumento "Coccinelle" (http://coccinelle.lip6.fr/) ?? in grado di trovare
> +Lo strumento "Coccinelle" (https://coccinelle.gitlabpages.inria.fr/website/)
> +?? in grado di trovare
>  una vasta variet?? di potenziali problemi di codifica; e pu?? inoltre proporre
>  soluzioni per risolverli.  Un buon numero di "patch semantiche" per il kernel
>  sono state preparate nella cartella scripts/coccinelle; utilizzando
> diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/dev-tools/coccinelle.rst
> index c714780d458a..05614c469b47 100644
> --- a/Documentation/dev-tools/coccinelle.rst
> +++ b/Documentation/dev-tools/coccinelle.rst
> @@ -34,7 +34,7 @@ of many distributions, e.g. :
>
>  Some distribution packages are obsolete and it is recommended
>  to use the latest version released from the Coccinelle homepage at
> -http://coccinelle.lip6.fr/
> +https://coccinelle.gitlabpages.inria.fr/website
>
>  Or from Github at:
>
> diff --git a/Documentation/translations/sp_SP/process/4.Coding.rst b/Documentation/translations/sp_SP/process/4.Coding.rst
> index 7cc347c34354..6c3750ccdea2 100644
> --- a/Documentation/translations/sp_SP/process/4.Coding.rst
> +++ b/Documentation/translations/sp_SP/process/4.Coding.rst
> @@ -336,7 +336,8 @@ https://sparse.wiki.kernel.org/index.php/Main_Page si su distribuci??n no lo
>  empaqueta); luego, puede ejecutarse en el c??digo agregando "C=1" a su
>  comando make.
>
> -La herramienta "Coccinelle" (http://coccinelle.lip6.fr/) puede encontrar
> +La herramienta "Coccinelle" (https://coccinelle.gitlabpages.inria.fr/website/)
> +puede encontrar
>  una amplia variedad de posibles problemas de codificaci??n; tambi??n puede
>  proponer correcciones para esos problemas. Bastantes "parches sem??nticos"
>  para el kernel se han empaquetado en el directorio scripts/coccinelle;
>
>

^ permalink raw reply

* [PATCH] coccinelle: update Coccinelle URL
From: Julia Lawall @ 2026-03-10  8:11 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Shuah Khan, workflows, cocci, Nicolas Palix, Hu Haowen, Alex Shi,
	Yanteng Si, Dongliang Mu, linux-doc, linux-kernel, Federico Vaga,
	Carlos Bilbao, Avadhut Naik, LIU Haoyang

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 4842 bytes --]

The LIP6 URL no longer functions.

Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>

---

I used the UTF-8 encoding for the email.
Let me know if this was not the right choice.

 Documentation/dev-tools/coccinelle.rst                |    2 +-
 Documentation/translations/it_IT/process/4.Coding.rst |    3 ++-
 Documentation/translations/sp_SP/process/4.Coding.rst |    3 ++-
 Documentation/translations/zh_CN/process/4.Coding.rst |    2 +-
 Documentation/translations/zh_TW/process/4.Coding.rst |    2 +-
 5 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/Documentation/translations/zh_CN/process/4.Coding.rst b/Documentation/translations/zh_CN/process/4.Coding.rst
index 4cc35d410dbc..a00ad5d6b81e 100644
--- a/Documentation/translations/zh_CN/process/4.Coding.rst
+++ b/Documentation/translations/zh_CN/process/4.Coding.rst
@@ -216,7 +216,7 @@ Documentation/fault-injection/fault-injection.rst。
 可以在 https://sparse.wiki.kernel.org/index.php/Main_page 找到),
 然后可以通过在make命令中添加“C=1”在代码上运行它。
 
-“Coccinelle”工具 :ref:`http://coccinelle.lip6.fr/ <devtools_coccinelle>`
+“Coccinelle”工具 :ref:`https://coccinelle.gitlabpages.inria.fr/website/ <devtools_coccinelle>`
 能够发现各种潜在的编码问题;它还可以为这些问题提出修复方案。在
 scripts/coccinelle目录下已经打包了相当多的内核“语义补丁”;运行
 “make coccicheck”将运行这些语义补丁并报告发现的任何问题。有关详细信息,请参阅
diff --git a/Documentation/translations/zh_TW/process/4.Coding.rst b/Documentation/translations/zh_TW/process/4.Coding.rst
index e90a6b51fb98..233e8718ed41 100644
--- a/Documentation/translations/zh_TW/process/4.Coding.rst
+++ b/Documentation/translations/zh_TW/process/4.Coding.rst
@@ -219,7 +219,7 @@ Documentation/fault-injection/fault-injection.rst。
 可以在 https://sparse.wiki.kernel.org/index.php/Main_page 找到),
 然後可以通過在make命令中添加“C=1”在代碼上運行它。
 
-“Coccinelle”工具 :ref:`http://coccinelle.lip6.fr/ <devtools_coccinelle>`
+“Coccinelle”工具 :ref:`https://coccinelle.gitlabpages.inria.fr/website/ <devtools_coccinelle>`
 能夠發現各種潛在的編碼問題;它還可以爲這些問題提出修復方案。在
 scripts/coccinelle目錄下已經打包了相當多的內核“語義補丁”;運行
 “make coccicheck”將運行這些語義補丁並報告發現的任何問題。有關詳細信息,請參閱
diff --git a/Documentation/translations/it_IT/process/4.Coding.rst b/Documentation/translations/it_IT/process/4.Coding.rst
index 3126342c4b4a..a2ec35e016b7 100644
--- a/Documentation/translations/it_IT/process/4.Coding.rst
+++ b/Documentation/translations/it_IT/process/4.Coding.rst
@@ -329,7 +329,8 @@ Sparse deve essere installato separatamente (se il vostra distribuzione non
 lo prevede, potete trovarlo su https://sparse.wiki.kernel.org/index.php/Main_Page);
 può essere attivato sul codice aggiungendo "C=1" al comando make.
 
-Lo strumento "Coccinelle" (http://coccinelle.lip6.fr/) è in grado di trovare
+Lo strumento "Coccinelle" (https://coccinelle.gitlabpages.inria.fr/website/)
+è in grado di trovare
 una vasta varietà di potenziali problemi di codifica; e può inoltre proporre
 soluzioni per risolverli.  Un buon numero di "patch semantiche" per il kernel
 sono state preparate nella cartella scripts/coccinelle; utilizzando
diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/dev-tools/coccinelle.rst
index c714780d458a..05614c469b47 100644
--- a/Documentation/dev-tools/coccinelle.rst
+++ b/Documentation/dev-tools/coccinelle.rst
@@ -34,7 +34,7 @@ of many distributions, e.g. :
 
 Some distribution packages are obsolete and it is recommended
 to use the latest version released from the Coccinelle homepage at
-http://coccinelle.lip6.fr/
+https://coccinelle.gitlabpages.inria.fr/website
 
 Or from Github at:
 
diff --git a/Documentation/translations/sp_SP/process/4.Coding.rst b/Documentation/translations/sp_SP/process/4.Coding.rst
index 7cc347c34354..6c3750ccdea2 100644
--- a/Documentation/translations/sp_SP/process/4.Coding.rst
+++ b/Documentation/translations/sp_SP/process/4.Coding.rst
@@ -336,7 +336,8 @@ https://sparse.wiki.kernel.org/index.php/Main_Page si su distribución no lo
 empaqueta); luego, puede ejecutarse en el código agregando "C=1" a su
 comando make.
 
-La herramienta "Coccinelle" (http://coccinelle.lip6.fr/) puede encontrar
+La herramienta "Coccinelle" (https://coccinelle.gitlabpages.inria.fr/website/)
+puede encontrar
 una amplia variedad de posibles problemas de codificación; también puede
 proponer correcciones para esos problemas. Bastantes "parches semánticos"
 para el kernel se han empaquetado en el directorio scripts/coccinelle;


^ permalink raw reply related

* Re: [PATCH] docs/dev-tools: fix a broken URL in dev-tools/coccinelle.rst
From: Julia Lawall @ 2026-03-10  7:39 UTC (permalink / raw)
  To: Nicolas Palix
  Cc: Haoyang Liu, Jonathan Corbet, Shuah Khan, cocci, workflows,
	linux-doc, linux-kernel
In-Reply-To: <1c546ad7-14f8-4695-9754-32a020f8a082@imag.fr>

[-- Attachment #1: Type: text/plain, Size: 2178 bytes --]



On Tue, 10 Mar 2026, Nicolas Palix wrote:

> Hi,
>
> Maybe we can just throw away that section of "Supplemental documentation" and
> its link ?
>
> Nowadays, there is much more SmPL provided, and the rst file
> describes better and up-to-date information.
>
> Would a link to
> https://www.kernel.org/doc/html/latest/dev-tools/coccinelle.html
> be useful to point to latest version ?

OK, thanks.

There is also an out of date URL in that page.  I will send a patch.

julia

>
> Sincerely,
>
> Le 09/03/2026 à 17:28, Haoyang Liu a écrit :
> >
> > On 3/10/2026 12:10 AM, Jonathan Corbet wrote:
> > > LIU Haoyang <tttturtleruss@gmail.com> writes:
> > >
> > > > The original supplemental documentation for coccicheck is
> > > > https://bottest.wiki.kernel.org/coccicheck, which redirects to a not
> > > > found page,
> > > > thus change it to https://bottest.wiki.kernel.org/coccicheck.html,
> > > > which adds a suffix to original URL to make it direct to the right page.
> > > >
> > > > Signed-off-by: LIU Haoyang <tttturtleruss@gmail.com>
> > > > ---
> > > >   Documentation/dev-tools/coccinelle.rst | 2 +-
> > > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/
> > > > dev-tools/coccinelle.rst
> > > > index 2b942e3c8049..f73ccf5397f3 100644
> > > > --- a/Documentation/dev-tools/coccinelle.rst
> > > > +++ b/Documentation/dev-tools/coccinelle.rst
> > > > @@ -61,7 +61,7 @@ Supplemental documentation
> > > >   For supplemental documentation refer to the wiki:
> > > > -https://bottest.wiki.kernel.org/coccicheck
> > > > +https://bottest.wiki.kernel.org/coccicheck.html
> > > >   The wiki documentation always refers to the linux-next version of the
> > > > script.
> > > I'll apply this - a working URL is better than a broken one.  But is
> > > there really nothing better to link to than a page that warns "OBSOLETE
> > > CONTENT" at the top?
> >
> > Dear Jon,
> >
> > Unfortunately, I do not find any other documents about this script, so I
> > have to use it even though it's obsolete.
> >
> > Sincerely,
> > Haoyang
> >
> > >
> > > Thanks,
> > >
> > > jon
> >
> >
> >
> >
>
>

^ permalink raw reply

* Re: Hosting first-party kernel.org container images
From: Nathan Chancellor @ 2026-03-10  0:48 UTC (permalink / raw)
  To: Guillaume Tucker
  Cc: Ben Copeland, Konstantin Ryabitsev, Miguel Ojeda, Nicolas Schier,
	Arnd Bergmann, Onur Özkan, linux-kernel@vger.kernel.org,
	workflows, automated-testing, kernelci@lists.linux.dev
In-Reply-To: <78adef0e-81b0-47d4-be20-32f42ab8ec04@gtucker.io>

Hi Guillaume,

On Wed, Feb 25, 2026 at 03:44:13PM +0100, Guillaume Tucker wrote:
> This boils things down to a few practical options:
> 
> 1. treating TuxMake images with kernel.org toolchains as the de facto
>    stardard,
> 
> 2. creating a repository from scratch on git.kernel.org with
>    independent hosting for base images,
> 
> 3. some middle ground to be defined which would remove the risks
>    associated with third parties without duplicating efforts.
> 
> I feel it would be good to have more maintainers' feedback though.
> 
> Nathan, Nicolas, Miguel - what are your thoughts on this?

To be entirely honest, I do not really have a strong opinion here. I
generally agree with your thoughts around branded container images,
although I do think that TuxMake's images tend to be fairly lean, so
those easily could become the recommended images without many downsides
aside from maybe where they are hosted and how they are maintained.
Having a clean set of Containerfiles on git.kernel.org does not sound
like a bad idea, especially if they would be structured in such a way
that other entities could customize them for their use case further. I
guess its usefulness really depends on the other stakeholders like
KernelCI. It seems like there has to be some sort of buy in from the
kernel.org administrators around hosting built container images
somewhere on kernel.org though, as I don't think the regular developer
is going to want to build images locally. Not really sure what that
looks like.

Cheers,
Nathan

^ permalink raw reply

* Re: [PATCH] docs/dev-tools: fix a broken URL in dev-tools/coccinelle.rst
From: Nicolas Palix @ 2026-03-10  0:10 UTC (permalink / raw)
  To: Haoyang Liu, Jonathan Corbet, Julia Lawall, Shuah Khan
  Cc: cocci, workflows, linux-doc, linux-kernel
In-Reply-To: <ae8dda71-9e25-4f3b-ab95-1b00809ade37@gmail.com>

Hi,

Maybe we can just throw away that section of "Supplemental 
documentation" and its link ?

Nowadays, there is much more SmPL provided, and the rst file
describes better and up-to-date information.

Would a link to
https://www.kernel.org/doc/html/latest/dev-tools/coccinelle.html
be useful to point to latest version ?

Sincerely,

Le 09/03/2026 à 17:28, Haoyang Liu a écrit :
> 
> On 3/10/2026 12:10 AM, Jonathan Corbet wrote:
>> LIU Haoyang <tttturtleruss@gmail.com> writes:
>>
>>> The original supplemental documentation for coccicheck is
>>> https://bottest.wiki.kernel.org/coccicheck, which redirects to a not 
>>> found page,
>>> thus change it to https://bottest.wiki.kernel.org/coccicheck.html,
>>> which adds a suffix to original URL to make it direct to the right page.
>>>
>>> Signed-off-by: LIU Haoyang <tttturtleruss@gmail.com>
>>> ---
>>>   Documentation/dev-tools/coccinelle.rst | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/ 
>>> dev-tools/coccinelle.rst
>>> index 2b942e3c8049..f73ccf5397f3 100644
>>> --- a/Documentation/dev-tools/coccinelle.rst
>>> +++ b/Documentation/dev-tools/coccinelle.rst
>>> @@ -61,7 +61,7 @@ Supplemental documentation
>>>   For supplemental documentation refer to the wiki:
>>> -https://bottest.wiki.kernel.org/coccicheck
>>> +https://bottest.wiki.kernel.org/coccicheck.html
>>>   The wiki documentation always refers to the linux-next version of 
>>> the script.
>> I'll apply this - a working URL is better than a broken one.  But is
>> there really nothing better to link to than a page that warns "OBSOLETE
>> CONTENT" at the top?
> 
> Dear Jon,
> 
> Unfortunately, I do not find any other documents about this script, so I 
> have to use it even though it's obsolete.
> 
> Sincerely,
> Haoyang
> 
>>
>> Thanks,
>>
>> jon
> 
> 
> 
> 


^ permalink raw reply

* Re: [PATCH] docs/dev-tools: fix a broken URL in dev-tools/coccinelle.rst
From: Haoyang Liu @ 2026-03-09 16:28 UTC (permalink / raw)
  To: Jonathan Corbet, Julia Lawall, Nicolas Palix, Shuah Khan
  Cc: cocci, workflows, linux-doc, linux-kernel
In-Reply-To: <87v7f5vv9x.fsf@trenco.lwn.net>


On 3/10/2026 12:10 AM, Jonathan Corbet wrote:
> LIU Haoyang <tttturtleruss@gmail.com> writes:
>
>> The original supplemental documentation for coccicheck is
>> https://bottest.wiki.kernel.org/coccicheck, which redirects to a not found page,
>> thus change it to https://bottest.wiki.kernel.org/coccicheck.html,
>> which adds a suffix to original URL to make it direct to the right page.
>>
>> Signed-off-by: LIU Haoyang <tttturtleruss@gmail.com>
>> ---
>>   Documentation/dev-tools/coccinelle.rst | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/dev-tools/coccinelle.rst
>> index 2b942e3c8049..f73ccf5397f3 100644
>> --- a/Documentation/dev-tools/coccinelle.rst
>> +++ b/Documentation/dev-tools/coccinelle.rst
>> @@ -61,7 +61,7 @@ Supplemental documentation
>>   
>>   For supplemental documentation refer to the wiki:
>>   
>> -https://bottest.wiki.kernel.org/coccicheck
>> +https://bottest.wiki.kernel.org/coccicheck.html
>>   
>>   The wiki documentation always refers to the linux-next version of the script.
> I'll apply this - a working URL is better than a broken one.  But is
> there really nothing better to link to than a page that warns "OBSOLETE
> CONTENT" at the top?

Dear Jon,

Unfortunately, I do not find any other documents about this script, so I 
have to use it even though it's obsolete.

Sincerely,
Haoyang

>
> Thanks,
>
> jon

^ permalink raw reply

* Re: [PATCH] docs/dev-tools: fix a broken URL in dev-tools/coccinelle.rst
From: Jonathan Corbet @ 2026-03-09 16:10 UTC (permalink / raw)
  To: LIU Haoyang, Julia Lawall, Nicolas Palix, Shuah Khan
  Cc: LIU Haoyang, cocci, workflows, linux-doc, linux-kernel
In-Reply-To: <20260308100851.341-1-tttturtleruss@gmail.com>

LIU Haoyang <tttturtleruss@gmail.com> writes:

> The original supplemental documentation for coccicheck is
> https://bottest.wiki.kernel.org/coccicheck, which redirects to a not found page,
> thus change it to https://bottest.wiki.kernel.org/coccicheck.html,
> which adds a suffix to original URL to make it direct to the right page.
>
> Signed-off-by: LIU Haoyang <tttturtleruss@gmail.com>
> ---
>  Documentation/dev-tools/coccinelle.rst | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/dev-tools/coccinelle.rst
> index 2b942e3c8049..f73ccf5397f3 100644
> --- a/Documentation/dev-tools/coccinelle.rst
> +++ b/Documentation/dev-tools/coccinelle.rst
> @@ -61,7 +61,7 @@ Supplemental documentation
>  
>  For supplemental documentation refer to the wiki:
>  
> -https://bottest.wiki.kernel.org/coccicheck
> +https://bottest.wiki.kernel.org/coccicheck.html
>  
>  The wiki documentation always refers to the linux-next version of the script.

I'll apply this - a working URL is better than a broken one.  But is
there really nothing better to link to than a page that warns "OBSOLETE
CONTENT" at the top?

Thanks,

jon

^ permalink raw reply

* Re: [PATCH] docs/dev-tools: fix a broken URL in dev-tools/coccinelle.rst
From: Dongliang Mu @ 2026-03-09  1:22 UTC (permalink / raw)
  To: LIU Haoyang
  Cc: Julia Lawall, Nicolas Palix, Jonathan Corbet, Shuah Khan, cocci,
	workflows, linux-doc, linux-kernel
In-Reply-To: <20260308100851.341-1-tttturtleruss@gmail.com>

On Sun, Mar 8, 2026 at 6:09 PM LIU Haoyang <tttturtleruss@gmail.com> wrote:
>
> The original supplemental documentation for coccicheck is
> https://bottest.wiki.kernel.org/coccicheck, which redirects to a not found page,
> thus change it to https://bottest.wiki.kernel.org/coccicheck.html,
> which adds a suffix to original URL to make it direct to the right page.
>

Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>

> Signed-off-by: LIU Haoyang <tttturtleruss@gmail.com>
> ---
>  Documentation/dev-tools/coccinelle.rst | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/dev-tools/coccinelle.rst
> index 2b942e3c8049..f73ccf5397f3 100644
> --- a/Documentation/dev-tools/coccinelle.rst
> +++ b/Documentation/dev-tools/coccinelle.rst
> @@ -61,7 +61,7 @@ Supplemental documentation
>
>  For supplemental documentation refer to the wiki:
>
> -https://bottest.wiki.kernel.org/coccicheck
> +https://bottest.wiki.kernel.org/coccicheck.html
>
>  The wiki documentation always refers to the linux-next version of the script.
>
> --
> 2.53.0
>
>

^ permalink raw reply

* Re: [PATCH v3 0/2] workflow, scripts: sort changes.rst and ver_linux
From: Manuel @ 2026-03-08 20:06 UTC (permalink / raw)
  To: Jonathan Corbet, Collin Funk, Shuah Khan
  Cc: workflows, linux-doc, linux-kernel
In-Reply-To: <87ldg8af2j.fsf@trenco.lwn.net>

On Tue, 2026-03-03 at 12:27 -0700, Jonathan Corbet wrote:
> 
> > > - Why my request to separate out the logically different changes were
> > >   ignored.
> > 
> > I split the patch into a series like i responded on Tue, 24 Feb 2026
> > 08:13:02 
> > > > i will make a Patch series with the files split.
> > 
> > Do you want me to send two patches, which are not in a patch series?
> 
> No, I want you to separate the logical changes.
> 
> - Sorting the entries in the list is one logical change.
> 
> - Adding new items is a different one.  If you mix it in with the sort,
>   nobody can really see which items are new.

so I got that. I have a follow-up question.

should i make two or four patches?

[PATCH 1/2] ver_linux and changes.rst: addition and changes
[PATCH 2/2] ver_linux and changes.rst: sort

[PATCH 1/4] ver_linux: addition and changes
[PATCH 2/4] changes.rst: addition and changes
[PATCH 3/4] ver_linux: sort
[PATCH 4/4] changes.rst sort

Manuel

^ permalink raw reply

* [PATCH] docs/dev-tools: fix a broken URL in dev-tools/coccinelle.rst
From: LIU Haoyang @ 2026-03-08 10:08 UTC (permalink / raw)
  To: Julia Lawall, Nicolas Palix, Jonathan Corbet, Shuah Khan
  Cc: LIU Haoyang, cocci, workflows, linux-doc, linux-kernel

The original supplemental documentation for coccicheck is
https://bottest.wiki.kernel.org/coccicheck, which redirects to a not found page,
thus change it to https://bottest.wiki.kernel.org/coccicheck.html,
which adds a suffix to original URL to make it direct to the right page.

Signed-off-by: LIU Haoyang <tttturtleruss@gmail.com>
---
 Documentation/dev-tools/coccinelle.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/dev-tools/coccinelle.rst b/Documentation/dev-tools/coccinelle.rst
index 2b942e3c8049..f73ccf5397f3 100644
--- a/Documentation/dev-tools/coccinelle.rst
+++ b/Documentation/dev-tools/coccinelle.rst
@@ -61,7 +61,7 @@ Supplemental documentation
 
 For supplemental documentation refer to the wiki:
 
-https://bottest.wiki.kernel.org/coccicheck
+https://bottest.wiki.kernel.org/coccicheck.html
 
 The wiki documentation always refers to the linux-next version of the script.
 
-- 
2.53.0


^ permalink raw reply related

* Re: [PATCH] kunit: Add documentation of --list_suites
From: David Gow @ 2026-03-08  9:38 UTC (permalink / raw)
  To: Ryota Sakamoto, Brendan Higgins, David Gow, Rae Moar,
	Jonathan Corbet, Shuah Khan
  Cc: linux-kselftest, kunit-dev, workflows, linux-doc, linux-kernel
In-Reply-To: <20260308-kunit-list_suites-doc-v1-1-4ccd7641a484@gmail.com>

Le 08/03/2026 à 5:06 PM, Ryota Sakamoto a écrit :
> Commit 60f3ada4174f ("kunit: Add --list_suites to show suites") introduced
> the --list_suites option to kunit.py, but the update to the corresponding
> run_wrapper documentation was omitted.
> 
> Add the missing description for --list_suites to keep the documentation in
> sync with the tool's supported arguments.
> 
> Fixes: 60f3ada4174f ("kunit: Add --list_suites to show suites")
> Signed-off-by: Ryota Sakamoto <sakamo.ryota@gmail.com>
> ---

Thanks very much!

Reviewed-by: David Gow <david@davidgow.net>

Cheers,
-- David

^ permalink raw reply

* [PATCH] kunit: Add documentation of --list_suites
From: Ryota Sakamoto @ 2026-03-08  9:06 UTC (permalink / raw)
  To: Brendan Higgins, David Gow, Rae Moar, Jonathan Corbet, Shuah Khan
  Cc: linux-kselftest, kunit-dev, workflows, linux-doc, linux-kernel,
	David Gow, Ryota Sakamoto

Commit 60f3ada4174f ("kunit: Add --list_suites to show suites") introduced
the --list_suites option to kunit.py, but the update to the corresponding
run_wrapper documentation was omitted.

Add the missing description for --list_suites to keep the documentation in
sync with the tool's supported arguments.

Fixes: 60f3ada4174f ("kunit: Add --list_suites to show suites")
Signed-off-by: Ryota Sakamoto <sakamo.ryota@gmail.com>
---
 Documentation/dev-tools/kunit/run_wrapper.rst | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/dev-tools/kunit/run_wrapper.rst b/Documentation/dev-tools/kunit/run_wrapper.rst
index 3c0b585dcfffbd3929d0eef1ab9376fa4f380872..770bb09a475ae799d9247d4c5558fc3306b9cd64 100644
--- a/Documentation/dev-tools/kunit/run_wrapper.rst
+++ b/Documentation/dev-tools/kunit/run_wrapper.rst
@@ -336,6 +336,8 @@ command line arguments:
 - ``--list_tests_attr``: If set, lists all tests that will be run and all of their
   attributes.
 
+- ``--list_suites``: If set, lists all suites that will be run.
+
 Command-line completion
 ==============================
 

---
base-commit: fa2c3ed5f079d41db0433a8dc829b9f6fb408aaf
change-id: 20260305-kunit-list_suites-doc-c0bf7b2482d8

Best regards,
-- 
Ryota Sakamoto <sakamo.ryota@gmail.com>


^ permalink raw reply related

* Re: [PATCH net-next] docs: netdev: refine netdevsim testing guidance
From: patchwork-bot+netdevbpf @ 2026-03-06 21:20 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, corbet,
	skhan, workflows, linux-doc
In-Reply-To: <20260304151647.2770466-1-kuba@kernel.org>

Hello:

This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed,  4 Mar 2026 07:16:46 -0800 you wrote:
> The library to create tests for both NIC HW and netdevsim has existed
> for almost a year. netdevsim-only tests we get increasingly feel like
> a waste, we should try to write tests that work both on netdevsim and
> real HW. Refine the guidance accordingly.
> 
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> 
> [...]

Here is the summary with links:
  - [net-next] docs: netdev: refine netdevsim testing guidance
    https://git.kernel.org/netdev/net-next/c/8e235bc43326

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply

* Re: [PATCH net-next] docs: netdev: refine netdevsim testing guidance
From: Simon Horman @ 2026-03-06 14:39 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: davem, netdev, edumazet, pabeni, andrew+netdev, corbet, skhan,
	workflows, linux-doc
In-Reply-To: <20260304151647.2770466-1-kuba@kernel.org>

On Wed, Mar 04, 2026 at 07:16:46AM -0800, Jakub Kicinski wrote:
> The library to create tests for both NIC HW and netdevsim has existed
> for almost a year. netdevsim-only tests we get increasingly feel like
> a waste, we should try to write tests that work both on netdevsim and
> real HW. Refine the guidance accordingly.
> 
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> CC: corbet@lwn.net
> CC: skhan@linuxfoundation.org
> CC: workflows@vger.kernel.org
> CC: linux-doc@vger.kernel.org

Reviewed-by: Simon Horman <horms@kernel.org>

> ---
>  Documentation/process/maintainer-netdev.rst | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/process/maintainer-netdev.rst b/Documentation/process/maintainer-netdev.rst
> index 6bce4507d5d3..3aa13bc2405d 100644
> --- a/Documentation/process/maintainer-netdev.rst
> +++ b/Documentation/process/maintainer-netdev.rst
> @@ -479,8 +479,14 @@ netdevsim
>  
>  ``netdevsim`` is a test driver which can be used to exercise driver
>  configuration APIs without requiring capable hardware.
> -Mock-ups and tests based on ``netdevsim`` are strongly encouraged when
> -adding new APIs, but ``netdevsim`` in itself is **not** considered
> +Mock-ups and tests based on ``netdevsim`` are encouraged when
> +adding new APIs with complex logic in the stack. The tests should
> +be written so that they can run both against ``netdevsim`` and a real
> +device (see ``tools/testing/selftests/drivers/net/README.rst``).
> +``netdevsim``-only tests should focus on testing corner cases
> +and failure paths in the core which are hard to exercise with a real driver.
> +
> +``netdevsim`` in itself is **not** considered
>  a use case/user. You must also implement the new APIs in a real driver.

I don't know if it's desirable, but the line wrapping could
also be updated.

>  
>  We give no guarantees that ``netdevsim`` won't change in the future
> -- 
> 2.53.0
> 

^ permalink raw reply

* Re: [PATCH v10 01/13] kasan: sw_tags: Use arithmetic shift for shadow computation
From: Maciej Wieczor-Retman @ 2026-03-05 21:25 UTC (permalink / raw)
  To: Andrey Ryabinin
  Cc: Catalin Marinas, Will Deacon, Jonathan Corbet,
	Alexander Potapenko, Andrey Konovalov, Dmitry Vyukov,
	Vincenzo Frascino, Andrew Morton, Jan Kiszka, Kieran Bingham,
	Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt,
	Samuel Holland, Maciej Wieczor-Retman, linux-arm-kernel,
	linux-doc, linux-kernel, kasan-dev, workflows, linux-mm, llvm
In-Reply-To: <CAPAsAGyiukChPLYO_tQci-7Bvmnnxh+w=bO6eUYLrO3RVuUThw@mail.gmail.com>

On 2026-03-06 at 06:22:32 +0900, Andrey Ryabinin wrote:
>Maciej Wieczor-Retman <m.wieczorretman@pm.me> writes:
>
>> Thanks, that looks really neat! I should've thought of that instead of making
>> separate arch versions :)
>>
>> Do you want me to attach the code you posted here to this patchset or do you
>> intend to post it yourself?
>
>I think you can just squash my diff into the subject patch.

Cool, thanks, will do!

-- 
Kind regards
Maciej Wieczór-Retman


^ permalink raw reply


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