1
0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2026-01-12 01:20:14 +00:00
Pingfan Liu a3785ae5d3 kernel/kexec: fix IMA when allocation happens in CMA area
*** Bug description ***

When I tested kexec with the latest kernel, I ran into the following warning:

[   40.712410] ------------[ cut here ]------------
[   40.712576] WARNING: CPU: 2 PID: 1562 at kernel/kexec_core.c:1001 kimage_map_segment+0x144/0x198
[...]
[   40.816047] Call trace:
[   40.818498]  kimage_map_segment+0x144/0x198 (P)
[   40.823221]  ima_kexec_post_load+0x58/0xc0
[   40.827246]  __do_sys_kexec_file_load+0x29c/0x368
[...]
[   40.855423] ---[ end trace 0000000000000000 ]---

*** How to reproduce ***

This bug is only triggered when the kexec target address is allocated in
the CMA area. If no CMA area is reserved in the kernel, use the "cma="
option in the kernel command line to reserve one.

*** Root cause ***
The commit 07d24902977e ("kexec: enable CMA based contiguous
allocation") allocates the kexec target address directly on the CMA area
to avoid copying during the jump. In this case, there is no IND_SOURCE
for the kexec segment.  But the current implementation of
kimage_map_segment() assumes that IND_SOURCE pages exist and map them
into a contiguous virtual address by vmap().

*** Solution ***
If IMA segment is allocated in the CMA area, use its page_address()
directly.

Link: https://lkml.kernel.org/r/20251216014852.8737-2-piliu@redhat.com
Fixes: 07d24902977e ("kexec: enable CMA based contiguous allocation")
Signed-off-by: Pingfan Liu <piliu@redhat.com>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Alexander Graf <graf@amazon.com>
Cc: Steven Chen <chenste@linux.microsoft.com>
Cc: Mimi Zohar <zohar@linux.ibm.com>
Cc: Roberto Sassu <roberto.sassu@huawei.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2025-12-23 11:23:14 -08:00
..
2025-12-17 15:54:58 +12:00
2025-12-11 08:14:23 +09:00
2025-12-10 17:21:30 +09:00
2025-11-09 21:19:44 -08:00
2025-12-03 13:46:48 -08:00
2025-12-03 12:18:07 -08:00
2025-12-08 23:52:43 -08:00
2025-12-05 17:29:04 -08:00
2025-12-03 12:18:07 -08:00
2025-12-05 17:29:04 -08:00
2025-12-19 09:30:55 +12:00
2025-12-01 13:45:41 -08:00
2025-10-16 11:13:53 +02:00
2025-11-11 10:01:31 +01:00
2025-11-14 18:15:49 +08:00
2025-11-04 08:30:50 +01:00
2025-10-02 18:44:54 -07:00
2025-10-29 10:29:54 +01:00
2025-09-29 11:20:29 -07:00