Re: [PATCH] kfence: fix implicit function declaration

From: Marco Elver
Date: Fri Dec 04 2020 - 07:39:16 EST


On Fri, Dec 04, 2020 at 01:18PM +0100, Anders Roxell wrote:
> When building kfence the following error shows up:
>
> In file included from mm/kfence/report.c:13:
> arch/arm64/include/asm/kfence.h: In function ‘kfence_protect_page’:
> arch/arm64/include/asm/kfence.h:12:2: error: implicit declaration of function ‘set_memory_valid’ [-Werror=implicit-function-declaration]
> 12 | set_memory_valid(addr, 1, !protect);
> | ^~~~~~~~~~~~~~~~
>
> Use the correct include both
> f2b7c491916d ("set_memory: allow querying whether set_direct_map_*() is actually enabled")
> and 4c4c75881536 ("arm64, kfence: enable KFENCE for ARM64") went in the

Note that -mm does not have stable commit hashes.

> same day via different trees.
>
> Signed-off-by: Anders Roxell <anders.roxell@xxxxxxxxxx>
> ---

Ack, we need this patch somewhere but we should probably fix the patch
that does the move, otherwise we'll have a build-broken kernel still.

> I got this build error in todays next-20201204.
> Andrew, since both patches are in your -mm tree, I think this can be
> folded into 4c4c75881536 ("arm64, kfence: enable KFENCE for ARM64")

I don't think that's the right way around. This would result in a
build-broken commit point as well.

Looking at current -next, I see that "set_memory: allow querying whether
set_direct_map_*() is actually enabled" is after "arm64, kfence: enable
KFENCE for ARM64".

I think the patch that introduces set_memory.h for arm64 simply needs to
squash in this patch (assuming the order is retained as-is in -mm).

Thanks,
-- Marco

> arch/arm64/include/asm/kfence.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm64/include/asm/kfence.h b/arch/arm64/include/asm/kfence.h
> index 6c0afeeab635..c44bb368a810 100644
> --- a/arch/arm64/include/asm/kfence.h
> +++ b/arch/arm64/include/asm/kfence.h
> @@ -3,7 +3,7 @@
> #ifndef __ASM_KFENCE_H
> #define __ASM_KFENCE_H
>
> -#include <asm/cacheflush.h>
> +#include <asm/set_memory.h>
>
> static inline bool arch_kfence_init_pool(void) { return true; }
>