Subject: CVE-2023-52576: x86/mm, kexec, ima: Use memblock_free_late() from ima_free_kexec_buffer()

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

x86/mm, kexec, ima: Use memblock_free_late() from ima_free_kexec_buffer()

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.

The Linux kernel CVE team has assigned CVE-2023-52576 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 5.13 with commit fee3ff99bc67 and fixed in 6.1.56 with commit eef16bfdb212
	Issue introduced in 5.13 with commit fee3ff99bc67 and fixed in 6.5.6 with commit d2dfbc0e3b7a
	Issue introduced in 5.13 with commit fee3ff99bc67 and fixed in 6.6 with commit 34cf99c250d5

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2023-52576
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	arch/x86/kernel/setup.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/eef16bfdb212da60f5144689f2967fb25b051a2b
	https://git.kernel.org/stable/c/d2dfbc0e3b7a04c2d941421a958dc31c897fb204
	https://git.kernel.org/stable/c/34cf99c250d5cd2530b93a57b0de31d3aaf8685b