[PATCH v2] liveupdate: luo_session: include linux/mm.h for virt/phys translation

From: George Guo

Date: Thu Jun 04 2026 - 05:28:18 EST


From: George Guo <guodongtai@xxxxxxxxxx>

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 <liukexin@xxxxxxxxxx>
Signed-off-by: Kexin Liu <liukexin@xxxxxxxxxx>
Signed-off-by: George Guo <guodongtai@xxxxxxxxxx>
---
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/20260521063310.52926-1-dongtai.guo@xxxxxxxxx/ # 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