Subject: CVE-2024-42230: powerpc/pseries: Fix scv instruction crash with kexec

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

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

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

powerpc/pseries: Fix scv instruction crash with kexec

kexec on pseries disables AIL (reloc_on_exc), required for scv
instruction support, before other CPUs have been shut down. This means
they can execute scv instructions after AIL is disabled, which causes an
interrupt at an unexpected entry location that crashes the kernel.

Change the kexec sequence to disable AIL after other CPUs have been
brought down.

As a refresher, the real-mode scv interrupt vector is 0x17000, and the
fixed-location head code probably couldn't easily deal with implementing
such high addresses so it was just decided not to support that interrupt
at all.

The Linux kernel CVE team has assigned CVE-2024-42230 to this issue.

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

	Issue introduced in 5.9 with commit 7fa95f9adaee and fixed in 6.1.98 with commit c550679d6047
	Issue introduced in 5.9 with commit 7fa95f9adaee and fixed in 6.6.39 with commit d10e3c39001e
	Issue introduced in 5.9 with commit 7fa95f9adaee and fixed in 6.9.9 with commit 8c6506616386
	Issue introduced in 5.9 with commit 7fa95f9adaee and fixed in 6.10 with commit 21a741eb75f8

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-2024-42230
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/powerpc/kexec/core_64.c
	arch/powerpc/platforms/pseries/kexec.c
	arch/powerpc/platforms/pseries/pseries.h
	arch/powerpc/platforms/pseries/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/c550679d604798d9fed8a5b2bb5693448a25407c
	https://git.kernel.org/stable/c/d10e3c39001e9194b9a1bfd6979bd3fa19dccdc5
	https://git.kernel.org/stable/c/8c6506616386ce37e59b2745fc481c6713fae4f3
	https://git.kernel.org/stable/c/21a741eb75f80397e5f7d3739e24d7d75e619011