Re: [akpm-mm:mm-unstable 154/159] mm/memory-failure.c:1538:9: error: implicit declaration of function 'hugetlb_set_page_hwpoison'

From: HORIGUCHI NAOYA(堀口 直也)
Date: Thu Jun 02 2022 - 22:11:44 EST


On Fri, Jun 03, 2022 at 08:27:50AM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
> head: 1bdf44dbc966e31c635199d413ee064a7d320844
> commit: d4edf38ab95397f32ae017848deeeb3b6d2c5bb7 [154/159] mm, hwpoison, hugetlb: introduce SUBPAGE_INDEX_HWPOISON to save raw error page
> config: x86_64-kexec (https://download.01.org/0day-ci/archive/20220603/202206030829.0eS2kZa0-lkp@xxxxxxxxx/config)
> compiler: gcc-11 (Debian 11.3.0-1) 11.3.0
> reproduce (this is a W=1 build):
> # https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?id=d4edf38ab95397f32ae017848deeeb3b6d2c5bb7
> 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 d4edf38ab95397f32ae017848deeeb3b6d2c5bb7
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@xxxxxxxxx>

Thank you!

>
> All errors (new ones prefixed by >>):
>
> mm/memory-failure.c: In function '__get_huge_page_for_hwpoison':
> >> mm/memory-failure.c:1538:9: error: implicit declaration of function 'hugetlb_set_page_hwpoison' [-Werror=implicit-function-declaration]
> 1538 | hugetlb_set_page_hwpoison(head, page);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> cc1: some warnings being treated as errors

__get_huge_page_for_hwpoison() is not needed when CONFIG_HUGETLB_PAGE is n,
so extending "#ifdef CONFIG_HUGETLB_PAG" to cover __get_huge_page_for_hwpoison()
would be a simple resolution.


diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index ced033a99e19..31d7eff35acf 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -1501,6 +1501,7 @@ static int try_to_split_thp_page(struct page *page, const char *msg)
return 0;
}

+#ifdef CONFIG_HUGETLB_PAGE
/*
* Called from hugetlb code with hugetlb_lock held.
*
@@ -1550,7 +1551,6 @@ int __get_huge_page_for_hwpoison(unsigned long pfn, int flags)
return ret;
}

-#ifdef CONFIG_HUGETLB_PAGE
/*
* Taking refcount of hugetlb pages needs extra care about race conditions
* with basic operations like hugepage allocation/free/demotion.

Thanks,
Naoya Horiguchi