Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH 6.12.y 0/2] ima: kexec: fix kexec_file_load panic with IMA_KEXEC
@ 2026-06-09 21:58 Sherry Yang
  2026-06-09 21:58 ` [PATCH 6.12.y 1/2] ima: kexec: skip IMA segment validation after kexec soft reboot Sherry Yang
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Sherry Yang @ 2026-06-09 21:58 UTC (permalink / raw)
  To: stable
  Cc: sashal, chenste, sherry.yang, ebiederm, tusharsu, zohar,
	roberto.sassu, dmitry.kasatkin, eric.snowberg

Hi Stable Maintainers,

This series backports two upstream IMA/kexec commits to linux-6.12.y:

  9ee8888a80fe ("ima: kexec: skip IMA segment validation after kexec soft reboot")
  9f0ec4b16f2b ("ima: kexec: move IMA log copy from kexec load to execute")

linux-6.12.y already contains the surrounding IMA kexec backports, including
the buffer reuse change:

  d0a00ce470e3 ("ima: verify if the segment size has changed")

but it is missing the commit that moves the measurement list copy from
kexec load time to kexec execute time.  With CONFIG_IMA_KEXEC=y and
CONFIG_KEXEC_FILE=y, this leaves the static IMA seq_file buffer with the
old load-time ownership model.

With repeated file-based kexec loads, for example

  kexec -l /boot/vmlinuz-$(uname -r) \
    --initrd=/boot/initramfs-$(uname -r).img --reuse-cmdline

We hit kernel panic

[   64.411644] BUG: unable to handle page fault for address: ff5f3d77a44d9018
[   64.423320] Call Trace:
[   64.423516]  <TASK>
[   64.423684]  ima_measurements_show+0xb2/0x250
[   64.424015]  ima_dump_measurement_list.constprop.0.isra.0+0x81/0x15e
[   64.424475]  ima_add_kexec_buffer+0x160/0x1f2
[   64.424809]  kimage_file_alloc_init+0x1af/0x3df
[   64.425143]  __do_sys_kexec_file_load+0xc4/0x2bc
[   64.425483]  do_syscall_64+0x90/0x1c0
[   64.425768]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.426121]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.426473]  ? syscall_exit_work+0x103/0x130
[   64.426794]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.427142]  ? arch_exit_to_user_mode_prepare.isra.0+0x1e/0xf0
[   64.427562]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.427911]  ? syscall_exit_to_user_mode+0x36/0x190
[   64.428263]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.428616]  ? do_syscall_64+0xb6/0x1c0
[   64.428894]  ? inode_security+0x22/0x60
[   64.429179]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.429519]  ? mutex_lock+0x12/0x40
[   64.429783]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.430405]  ? seq_read_iter+0x1fc/0x433
[   64.430931]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.431513]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.432167]  ? vfs_read+0x252/0x370
[   64.432676]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.433249]  ? syscall_exit_work+0x103/0x130
[   64.433791]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.434362]  ? arch_exit_to_user_mode_prepare.isra.0+0x1e/0xf0
[   64.435010]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.435579]  ? syscall_exit_to_user_mode+0x36/0x190
[   64.436149]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.436718]  ? do_syscall_64+0xb6/0x1c0
[   64.437222]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.437801]  ? syscall_exit_work+0x103/0x130
[   64.438337]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.438899]  ? arch_exit_to_user_mode_prepare.isra.0+0x1e/0xf0
[   64.439545]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.440099]  ? syscall_exit_to_user_mode+0x36/0x190
[   64.440656]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.441202]  ? do_syscall_64+0xb6/0x1c0
[   64.441680]  ? srso_alias_return_thunk+0x5/0xfbef5
[   64.442221]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[   64.442792] RIP: 0033:0x7f2cef50887d
[   64.443249] Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 6b 15 0f 00 f7 d8 64 89 01 48
[   64.444968] RSP: 002b:00007ffdb22657b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000140
[   64.445715] RAX: ffffffffffffffda RBX: 0000000000000080 RCX: 00007f2cef50887d
[   64.446432] RDX: 00000000000001de RSI: 0000000000000005 RDI: 0000000000000003
[   64.447153] RBP: 0000000000000003 R08: 0000000000000000 R09: 00000005b2265b28
[   64.447870] R10: 0000561563d37dc0 R11: 0000000000000246 R12: 0000000000000000
[   64.448589] R13: 00007ffdb2265b28 R14: 00007f2cee241010 R15: 00007ffdb22662a7
[   64.449313]  </TASK>

After backporting these two patches and tested with CONFIG_IMA_KEXEC=y
and CONFIG_KEXEC_FILE=y, the panic is no longer reproducible.

Thanks,
Sherry

Steven Chen (2):
  ima: kexec: skip IMA segment validation after kexec soft reboot
  ima: kexec: move IMA log copy from kexec load to execute

 include/linux/kexec.h              |  3 ++
 kernel/kexec_file.c                | 33 ++++++++++++++++++++-
 security/integrity/ima/ima_kexec.c | 46 +++++++++++++++++++++---------
 3 files changed, 67 insertions(+), 15 deletions(-)

-- 
2.50.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-06-11  0:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-09 21:58 [PATCH 6.12.y 0/2] ima: kexec: fix kexec_file_load panic with IMA_KEXEC Sherry Yang
2026-06-09 21:58 ` [PATCH 6.12.y 1/2] ima: kexec: skip IMA segment validation after kexec soft reboot Sherry Yang
2026-06-09 21:58 ` [PATCH 6.12.y 2/2] ima: kexec: move IMA log copy from kexec load to execute Sherry Yang
2026-06-11  0:45 ` [PATCH 6.12.y 0/2] ima: kexec: fix kexec_file_load panic with IMA_KEXEC Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox