Subject: CVE-2024-41055: mm: prevent derefencing NULL ptr in pfn_section_valid()

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

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

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

mm: prevent derefencing NULL ptr in pfn_section_valid()

Commit 5ec8e8ea8b77 ("mm/sparsemem: fix race in accessing
memory_section->usage") changed pfn_section_valid() to add a READ_ONCE()
call around "ms->usage" to fix a race with section_deactivate() where
ms->usage can be cleared.  The READ_ONCE() call, by itself, is not enough
to prevent NULL pointer dereference.  We need to check its value before
dereferencing it.

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

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

	Issue introduced in 5.10.210 with commit 90ad17575d26 and fixed in 5.10.222 with commit 0100aeb8a12d
	Issue introduced in 5.15.149 with commit b448de2459b6 and fixed in 5.15.163 with commit bc17f2377818
	Issue introduced in 6.1.76 with commit 68ed9e333240 and fixed in 6.1.100 with commit 941e81618566
	Issue introduced in 6.6.15 with commit 70064241f222 and fixed in 6.6.41 with commit 797323d1cf92
	Issue introduced in 6.8 with commit 5ec8e8ea8b77 and fixed in 6.9.10 with commit adccdf702b4e
	Issue introduced in 6.8 with commit 5ec8e8ea8b77 and fixed in 6.10 with commit 82f0b6f041fa
	Issue introduced in 6.7.3 with commit 3a01daace71b

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-41055
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:
	include/linux/mmzone.h

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/0100aeb8a12d51950418e685f879cc80cb8e5982
	https://git.kernel.org/stable/c/bc17f2377818dca643a74499c3f5333500c90503
	https://git.kernel.org/stable/c/941e816185661bf2b44b488565d09444ae316509
	https://git.kernel.org/stable/c/797323d1cf92d09b7a017cfec576d9babf99cde7
	https://git.kernel.org/stable/c/adccdf702b4ea913ded5ff512239e382d7473b63
	https://git.kernel.org/stable/c/82f0b6f041fad768c28b4ad05a683065412c226e