x86/mm, kexec, ima: Use memblock_free_late() from ima_free_kexec_buffer()
authorRik van Riel <riel@surriel.com>
Thu, 17 Aug 2023 17:55:58 +0000 (13:55 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 6 Oct 2023 12:56:39 +0000 (14:56 +0200)
commiteef16bfdb212da60f5144689f2967fb25b051a2b
tree1773dbf27f2c926ef68d21c6c58a639489a97645
parent73be49248a04746096339a48a33fa2f03bd85969
x86/mm, kexec, ima: Use memblock_free_late() from ima_free_kexec_buffer()

[ Upstream commit 34cf99c250d5cd2530b93a57b0de31d3aaf8685b ]

The code calling ima_free_kexec_buffer() runs long after the memblock
allocator has already been torn down, potentially resulting in a use
after free in memblock_isolate_range().

With KASAN or KFENCE, this use after free will result in a BUG
from the idle task, and a subsequent kernel panic.

Switch ima_free_kexec_buffer() over to memblock_free_late() to avoid
that bug.

Fixes: fee3ff99bc67 ("powerpc: Move arch independent ima kexec functions to drivers/of/kexec.c")
Suggested-by: Mike Rappoport <rppt@kernel.org>
Signed-off-by: Rik van Riel <riel@surriel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20230817135558.67274c83@imladris.surriel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/kernel/setup.c