From: George Guo <[email protected]> luo_session.c calls virt_to_phys() and phys_to_virt(). On LoongArch with CONFIG_KFENCE=y, these macros (in arch/loongarch/include/asm/io.h) expand to offset_in_page() and page_address(), both declared in <linux/mm.h>.
Since luo_session.c only includes <linux/io.h>, the translation unit fails to build with CONFIG_KFENCE=y: asm/io.h: error: implicit declaration of function 'offset_in_page' asm/io.h: error: implicit declaration of function 'page_address' Add the missing include to fix these build errors. Co-developed-by: Kexin Liu <[email protected]> Signed-off-by: Kexin Liu <[email protected]> Signed-off-by: George Guo <[email protected]> --- v2: Move the include from arch/loongarch/include/asm/io.h to the consumer luo_session.c, instead of pulling the heavy <linux/mm.h> into the low-level asm/io.h header (per review feedback). The 0-day report confirmed the v1 approach introduces a circular include (slab.h -> kasan.h -> asm/kasan.h -> asm/io.h -> mm.h, where mm.h needs kfree() before slab.h declares it). Link: https://lore.kernel.org/r/[email protected]/ # v1 kernel/liveupdate/luo_session.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c index 7a42385dabe2..4ce7128a4ae9 100644 --- a/kernel/liveupdate/luo_session.c +++ b/kernel/liveupdate/luo_session.c @@ -62,6 +62,7 @@ #include <linux/libfdt.h> #include <linux/list.h> #include <linux/liveupdate.h> +#include <linux/mm.h> #include <linux/mutex.h> #include <linux/rwsem.h> #include <linux/slab.h> -- 2.25.1
