Subject: CVE-2024-44948: x86/mtrr: Check if fixed MTRRs exist before saving them

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

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

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

x86/mtrr: Check if fixed MTRRs exist before saving them

MTRRs have an obsolete fixed variant for fine grained caching control
of the 640K-1MB region that uses separate MSRs. This fixed variant has
a separate capability bit in the MTRR capability MSR.

So far all x86 CPUs which support MTRR have this separate bit set, so it
went unnoticed that mtrr_save_state() does not check the capability bit
before accessing the fixed MTRR MSRs.

Though on a CPU that does not support the fixed MTRR capability this
results in a #GP.  The #GP itself is harmless because the RDMSR fault is
handled gracefully, but results in a WARN_ON().

Add the missing capability check to prevent this.

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

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

	Issue introduced in 2.6.22 with commit 2b1f6278d77c and fixed in 4.19.320 with commit 34f36e6ee5bd
	Issue introduced in 2.6.22 with commit 2b1f6278d77c and fixed in 5.4.282 with commit 06c1de44d378
	Issue introduced in 2.6.22 with commit 2b1f6278d77c and fixed in 5.10.224 with commit 450b6b22acda
	Issue introduced in 2.6.22 with commit 2b1f6278d77c and fixed in 5.15.165 with commit ca7d00c5656d
	Issue introduced in 2.6.22 with commit 2b1f6278d77c and fixed in 6.1.105 with commit 8aa79dfb216b
	Issue introduced in 2.6.22 with commit 2b1f6278d77c and fixed in 6.6.46 with commit 8a90d3fc7c24
	Issue introduced in 2.6.22 with commit 2b1f6278d77c and fixed in 6.10.5 with commit 388f1c954019
	Issue introduced in 2.6.22 with commit 2b1f6278d77c and fixed in 6.11 with commit 919f18f961c0

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-44948
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/cpu/mtrr/mtrr.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/34f36e6ee5bd7eff8b2adcd9fcaef369f752d82e
	https://git.kernel.org/stable/c/06c1de44d378ec5439db17bf476507d68589bfe9
	https://git.kernel.org/stable/c/450b6b22acdaac67a18eaf5ed498421ffcf10051
	https://git.kernel.org/stable/c/ca7d00c5656d1791e28369919e3e10febe9c3b16
	https://git.kernel.org/stable/c/8aa79dfb216b865e96ff890bc4ea71650f9bc8d7
	https://git.kernel.org/stable/c/8a90d3fc7c24608548d3a750671f9dac21d1a462
	https://git.kernel.org/stable/c/388f1c954019f253a8383f7eb733f38d541e10b6
	https://git.kernel.org/stable/c/919f18f961c03d6694aa726c514184f2311a4614