Re: [akpm-mm:mm-unstable 302/323] arch/x86/mm/pgprot.c:26:6: warning: no previous prototype for 'add_encrypt_protection_map'

From: Andrew Morton
Date: Sat Jul 02 2022 - 16:30:58 EST


On Sat, 2 Jul 2022 16:32:52 +0800 kernel test robot <lkp@xxxxxxxxx> wrote:

> tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
> head: 706370e5c2ea7bb4544eee6e1172c4d68117a526
> commit: d845587c05fd4ae52aaa0cd5c8939e8f4793301f [302/323] x86/mm: move protection_map[] inside the platform
> config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20220702/202207021647.Jb0wNWF5-lkp@xxxxxxxxx/config)
> compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
> reproduce (this is a W=1 build):
> # https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?id=d845587c05fd4ae52aaa0cd5c8939e8f4793301f
> git remote add akpm-mm https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git
> git fetch --no-tags akpm-mm mm-unstable
> git checkout d845587c05fd4ae52aaa0cd5c8939e8f4793301f
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash arch/x86/mm/
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
> All warnings (new ones prefixed by >>):
>
> >> arch/x86/mm/pgprot.c:26:6: warning: no previous prototype for 'add_encrypt_protection_map' [-Wmissing-prototypes]
> 26 | void add_encrypt_protection_map(void)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
> vim +/add_encrypt_protection_map +26 arch/x86/mm/pgprot.c
>
> 25
> > 26 void add_encrypt_protection_map(void)
> 27 {
> 28 unsigned int i;
> 29
> 30 for (i = 0; i < ARRAY_SIZE(protection_map); i++)
> 31 protection_map[i] = pgprot_encrypted(protection_map[i]);
> 32 }
> 33

Something like this?


arch/x86/include/asm/mem_encrypt.h | 2 ++
arch/x86/mm/mem_encrypt_amd.c | 3 +--
arch/x86/mm/pgprot.c | 1 +
3 files changed, 4 insertions(+), 2 deletions(-)

--- a/arch/x86/include/asm/mem_encrypt.h~x86-mm-move-protection_map-inside-the-platform-fix
+++ a/arch/x86/include/asm/mem_encrypt.h
@@ -89,6 +89,8 @@ static inline void mem_encrypt_free_decr
/* Architecture __weak replacement functions */
void __init mem_encrypt_init(void);

+void add_encrypt_protection_map(void);
+
/*
* The __sme_pa() and __sme_pa_nodebug() macros are meant for use when
* writing to or comparing values from the cr3 register. Having the
--- a/arch/x86/mm/mem_encrypt_amd.c~x86-mm-move-protection_map-inside-the-platform-fix
+++ a/arch/x86/mm/mem_encrypt_amd.c
@@ -26,6 +26,7 @@
#include <asm/tlbflush.h>
#include <asm/fixmap.h>
#include <asm/setup.h>
+#include <asm/mem_encrypt.h>
#include <asm/bootparam.h>
#include <asm/set_memory.h>
#include <asm/cacheflush.h>
@@ -484,8 +485,6 @@ void __init early_set_mem_enc_dec_hyperc
enc_dec_hypercall(vaddr, npages, enc);
}

-void add_encrypt_protection_map(void);
-
void __init sme_early_init(void)
{
if (!sme_me_mask)
--- a/arch/x86/mm/pgprot.c~x86-mm-move-protection_map-inside-the-platform-fix
+++ a/arch/x86/mm/pgprot.c
@@ -3,6 +3,7 @@
#include <linux/export.h>
#include <linux/mm.h>
#include <asm/pgtable.h>
+#include <asm/mem_encrypt.h>

static pgprot_t protection_map[16] __ro_after_init = {
[VM_NONE] = PAGE_NONE,
_