[PATCH v3 1/2] ARM: ioremap: Sync PGDs for VMALLOC shadow

Clement LE GOFFIC clement.legoffic at foss.st.com
Thu Oct 17 07:19:57 PDT 2024


On 10/17/24 14:59, Linus Walleij wrote:
> [...]
>   
> +static unsigned long arm_kasan_mem_to_shadow(unsigned long addr)
> +{
> +	return (unsigned long)kasan_mem_to_shadow((void *)addr);
> +}
> +

`kasan_mem_to_shadow` function symbol is only exported with :
CONFIG_KASAN_GENERIC or defined(CONFIG_KASAN_SW_TAGS) from kasan.h

To me, the if condition you added below should be expanded with those 
two macros.

> [...]
>   void __check_vmalloc_seq(struct mm_struct *mm)
>   {
>   	int seq;
>   
>   	do {
>   		seq = atomic_read(&init_mm.context.vmalloc_seq);
> -		memcpy(pgd_offset(mm, VMALLOC_START),
> -		       pgd_offset_k(VMALLOC_START),
> -		       sizeof(pgd_t) * (pgd_index(VMALLOC_END) -
> -					pgd_index(VMALLOC_START)));
> +		memcpy_pgd(mm, VMALLOC_START, VMALLOC_END);
> +		if (IS_ENABLED(CONFIG_KASAN_VMALLOC)) {
> +			unsigned long start =
> +				arm_kasan_mem_to_shadow(VMALLOC_START);
> +			unsigned long end =
> +				arm_kasan_mem_to_shadow(VMALLOC_END);
> +			memcpy_pgd(mm, start, end);
> +		}
>   		/*
>   		 * Use a store-release so that other CPUs that observe the
>   		 * counter's new value are guaranteed to see the results of the
>
Otherwise it compiles with KASAN enabled, I am running some tests with 
your patches.

Regards,

Clément



More information about the linux-arm-kernel mailing list