On Mon, Aug 25, 2025 at 10:26 PM Maciej Wieczor-Retman
<maciej.wieczor-retman@intel.com> wrote:
>
> The LLVM compiler uses hwasan-instrument-with-calls parameter to setup
> inline or outline mode in tag-based KASAN. If zeroed, it means the
> instrumentation implementation will be pasted into each relevant
> location along with KASAN related constants during compilation. If set
> to one all function instrumentation will be done with function calls
> instead.
>
> The default hwasan-instrument-with-calls value for the x86 architecture
> in the compiler is "1", which is not true for other architectures.
> Because of this, enabling inline mode in software tag-based KASAN
> doesn't work on x86 as the kernel script doesn't zero out the parameter
> and always sets up the outline mode.
>
> Explicitly zero out hwasan-instrument-with-calls when enabling inline
> mode in tag-based KASAN.
>
> Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
> ---
> Changelog v3:
> - Add this patch to the series.
>
> scripts/Makefile.kasan | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/scripts/Makefile.kasan b/scripts/Makefile.kasan
> index 693dbbebebba..2c7be96727ac 100644
> --- a/scripts/Makefile.kasan
> +++ b/scripts/Makefile.kasan
> @@ -76,8 +76,11 @@ CFLAGS_KASAN := -fsanitize=kernel-hwaddress
> RUSTFLAGS_KASAN := -Zsanitizer=kernel-hwaddress \
> -Zsanitizer-recover=kernel-hwaddress
>
> +# LLVM sets hwasan-instrument-with-calls to 1 on x86 by default. Set it to 0
> +# when inline mode is enabled.
> ifdef CONFIG_KASAN_INLINE
> kasan_params += hwasan-mapping-offset=$(KASAN_SHADOW_OFFSET)
> + kasan_params += hwasan-instrument-with-calls=0
> else
> kasan_params += hwasan-instrument-with-calls=1
> endif
> --
> 2.50.1
>
Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>