CVE-2026-72409

net: mvneta: re-enable percpu interrupt on resume

State
Published
Severity
7.5 High
Published
Aug 15, 2026
Updated
Oct 16, 2026
Reserved
Aug 9, 2026

Read the record on cve.org

Description

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

net: mvneta: re-enable percpu interrupt on resume

On Marvell MPIC platforms (Armada 370/XP/38x), mvneta uses a percpu IRQ disable/enable scheme for NAPI: the ISR (mvneta_percpu_isr) calls disable_percpu_irq() to mask the MPIC per-CPU interrupt and schedules NAPI poll, which calls enable_percpu_irq() on completion to unmask.

If suspend occurs while NAPI poll is pending (between disable_percpu_irq in the ISR and enable_percpu_irq in poll completion), the interrupt is never re-enabled:

1. mvneta_percpu_isr: disable_percpu_irq() + napi_schedule() => MPIC masked, percpu_enabled cpumask bit cleared 2. NAPI poll does not complete before suspend proceeds (on PREEMPT_RT this is highly likely since softirqs run in ksoftirqd which gets frozen; on non-RT it can happen when softirq processing is deferred to ksoftirqd) 3. mvneta_stop_dev => napi_disable(): cancels the pending poll without executing the completion path 4. suspend_device_irqs => IRQCHIP_MASK_ON_SUSPEND: masks MPIC (already masked, but records IRQS_SUSPENDED) 5. Resume: mpic_resume checks irq_percpu_is_enabled() => false (bit was cleared in step 1) => skips unmask 6. mvneta_start_dev only restores device-level INTR_NEW_MASK, does not touch the MPIC per-CPU mask

Result: MPIC per-CPU interrupt stays masked permanently. The NIC generates interrupts (INTR_NEW_CAUSE != 0) but the CPU never receives them, causing complete loss of network connectivity.

Fix by calling on_each_cpu(mvneta_percpu_enable) in the resume path to unconditionally unmask the MPIC per-CPU interrupt regardless of pre-suspend state.

Scores

CVSSScoreVectorSource
3.17.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 12bb03b436dad56692e9a103ed26156156bef5d2 to before bf88cd3b649bc3e638f1e8a77649581852747a68Affected
  • 12bb03b436dad56692e9a103ed26156156bef5d2 to before 8c7a489aa71d2693752b2e794a68bf672d16c829Affected
  • 12bb03b436dad56692e9a103ed26156156bef5d2 to before 82c13027ed283b856017adee970dbfdffce5c6b8Affected
  • 12bb03b436dad56692e9a103ed26156156bef5d2 to before be626ac1faadd49c2cead9f9cd06ba8752d81563Affected
  • 12bb03b436dad56692e9a103ed26156156bef5d2 to before 1cc312dc8bc78fa24c80d5bc193dbf5b57a99cc6Affected
  • 12bb03b436dad56692e9a103ed26156156bef5d2 to before b84dd48f9da1eb132bdc06a944423cd5a1641ef1Affected
  • 12bb03b436dad56692e9a103ed26156156bef5d2 to before 5bdb33ff6e58bdc43632e98b30723eb65352d671Affected
  • 12bb03b436dad56692e9a103ed26156156bef5d2 to before fd398d6480987e4c84fff0aaab6b9d6642a93343Affected
LinuxLinux
  • 4.4Affected
  • before 4.4Not affected
  • 5.10.261 through 5.10.*Not affected
  • 5.15.212 through 5.15.*Not affected
  • 6.1.178 through 6.1.*Not affected
  • 6.6.145 through 6.6.*Not affected
  • 6.12.97 through 6.12.*Not affected
  • 6.18.40 through 6.18.*Not affected
  • 7.1.5 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.