Skip to main content

Linux Kernel CVE-2025-40199

HIGH
2025-11-12 416baaa9-dc9f-4396-8d5f-8c081fb06d67
7.8
CVSS 3.1 · Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
4.7 MEDIUM

Availability-only boot crash on specific 32-bit configs, so A:H with C:N/I:N; local, low-privilege but architecture-conditional trigger gives AV:L, PR:L, AC:H.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Red Hat
7.0 MEDIUM
qualitative

Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

6
Analysis Updated
Jul 30, 2026 - 08:28 vuln.today
v3 (cvss_changed)
Analysis Updated
Jul 30, 2026 - 08:28 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jul 30, 2026 - 06:37 vuln.today
cvss_changed
CVSS changed
Jul 30, 2026 - 06:37 NVD
7.8 (HIGH)
Analysis Generated
Mar 28, 2026 - 19:21 vuln.today
CVE Published
Nov 12, 2025 - 22:15 nvd
N/A

DescriptionCVE.org

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

page_pool: Fix PP_MAGIC_MASK to avoid crashing on some 32-bit arches

Helge reported that the introduction of PP_MAGIC_MASK let to crashes on boot on his 32-bit parisc machine. The cause of this is the mask is set too wide, so the page_pool_page_is_pp() incurs false positives which crashes the machine.

Just disabling the check in page_pool_is_pp() will lead to the page_pool code itself malfunctioning; so instead of doing this, this patch changes the define for PP_DMA_INDEX_BITS to avoid mistaking arbitrary kernel pointers for page_pool-tagged pages.

The fix relies on the kernel pointers that alias with the pp_magic field always being above PAGE_OFFSET. With this assumption, we can use the lowest bit of the value of PAGE_OFFSET as the upper bound of the PP_DMA_INDEX_MASK, which should avoid the false positives.

Because we cannot rely on PAGE_OFFSET always being a compile-time constant, nor on it always being >0, we fall back to disabling the dma_index storage when there are not enough bits available. This leaves us in the situation we were in before the patch in the Fixes tag, but only on a subset of architecture configurations. This seems to be the best we can do until the transition to page types in complete for page_pool pages.

v2:

  • Make sure there's at least 8 bits available and that the PAGE_OFFSET

bit calculation doesn't wrap

AnalysisAI

Denial of service in the Linux kernel networking stack (page_pool subsystem) can crash affected systems at boot, originally observed on 32-bit PA-RISC hardware. The PP_MAGIC_MASK introduced for page_pool page tagging was defined too wide, causing page_pool_page_is_pp() to mistake ordinary kernel pointers for page_pool-tagged pages (false positives) and panic the machine. There is no public exploit identified at time of analysis, and EPSS exploitation probability is negligible (0.03%); this is a reliability/robustness regression rather than an attacker-driven flaw.

Technical ContextAI

The Linux kernel's page_pool is a fast allocator for DMA-mapped pages used heavily by network drivers to recycle RX buffers. To distinguish page_pool-owned pages, the kernel stores a 'magic' signature in the page's pp_magic field and checks it with page_pool_page_is_pp(). PP_MAGIC_MASK (and the associated PP_DMA_INDEX_BITS used to pack a DMA index into the same field) was masked over too many bits, so arbitrary kernel pointers that alias the pp_magic field passed the magic test. The fix bounds PP_DMA_INDEX_MASK using the lowest set bit of PAGE_OFFSET as an upper limit, exploiting the invariant that aliasing kernel pointers always sit above PAGE_OFFSET; where too few bits are available (some 32-bit configs), dma_index storage is disabled entirely as a fallback. No CWE was assigned in the source data, but the root cause is an incorrect bit-mask/boundary condition (a bit-manipulation error, CWE-682/CWE-193 class) leading to type confusion between generic and page_pool pages.

Affected ProductsAI

The affected product is the mainline Linux kernel page_pool subsystem, specifically kernel builds that included the earlier PP_MAGIC_MASK change referenced in the commit's Fixes tag. No exact affected version range or CPE string was provided in the input; the three references are stable-tree git commits (git.kernel.org/stable/c/15b8a5b4cdc16e9a8bb2a548e12a0fd92997605a, .../95920c2ed02bde551ab654e9749c2ca7bc3100e0, and .../f62934cea32c8f7b11b747975d69bf5afe4264cf) representing the fix backported across stable branches. Impact is concentrated on 32-bit architectures where PAGE_OFFSET and pointer aliasing trigger the false positive, with 32-bit PA-RISC explicitly confirmed by the reporter.

RemediationAI

Upstream fix available (commit); a released patched tag version was not independently confirmed in the input - apply the kernel update containing commits 15b8a5b4cdc16e9a8bb2a548e12a0fd92997605a / 95920c2ed02bde551ab654e9749c2ca7bc3100e0 / f62934cea32c8f7b11b747975d69bf5afe4264cf, available at git.kernel.org/stable, by upgrading to your distribution's kernel package that incorporates this stable backport. As a compensating control until patched, operators of affected 32-bit systems (particularly PA-RISC) should avoid deploying kernels built with the offending PP_MAGIC_MASK change; there is no runtime configuration toggle to disable the check safely because merely disabling page_pool_is_pp() would make page_pool itself malfunction (that trade-off is why the maintainers changed the mask instead). Because the trigger is architecture/boot dependent, the practical mitigation for production 32-bit fleets is to pin to a known-good kernel build and validate boot on representative hardware before rollout.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Not-Affected

Share

CVE-2025-40199 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy