CVE-2024-42071: ionic: use dev_consume_skb_any outside of napi
In the Linux kernel, the following vulnerability has been resolved:
ionic: use dev_consume_skb_any outside of napi
If we're not in a NAPI softirq context, we need to be careful
about how we call napi_consume_skb(), specifically we need to
call it with budget==0 to signal to it that we're not in a
safe context.
This was found while running some configuration stress testing
of traffic and a change queue config loop running, and this
curious note popped out:
[ 4371.402645] BUG: using smp_processor_id() in preemptible [00000000] code: ethtool/20545
[ 4371.402897] caller is napi_skb_cache_put+0x16/0x80
[ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G OE 6.10.0-rc3-netnext+ #8
[ 4371.403302] Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 01/23/2021
[ 4371.403460] Call Trace:
[ 4371.403613] <TASK>
[ 4371.403758] dump_stack_lvl+0x4f/0x70
[ 4371.403904] check_preemption_disabled+0xc1/0xe0
[ 4371.404051] napi_skb_cache_put+0x16/0x80
[ 4371.404199] ionic_tx_clean+0x18a/0x240 [ionic]
[ 4371.404354] ionic_tx_cq_service+0xc4/0x200 [ionic]
[ 4371.404505] ionic_tx_flush+0x15/0x70 [ionic]
[ 4371.404653] ? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic]
[ 4371.404805] ionic_txrx_deinit+0x71/0x190 [ionic]
[ 4371.404956] ionic_reconfigure_queues+0x5f5/0xff0 [ionic]
[ 4371.405111] ionic_set_ringparam+0x2e8/0x3e0 [ionic]
[ 4371.405265] ethnl_set_rings+0x1f1/0x300
[ 4371.405418] ethnl_default_set_doit+0xbb/0x160
[ 4371.405571] genl_family_rcv_msg_doit+0xff/0x130
[...]
I found that ionic_tx_clean() calls napi_consume_skb() which calls
napi_skb_cache_put(), but before that last call is the note
/* Zero budget indicate non-NAPI context called us, like netpoll */
and
DEBUG_NET_WARN_ON_ONCE(!in_softirq());
Those are pretty big hints that we're doing it wrong. We can pass a
context hint down through the calls to let ionic_tx_clean() know what
we're doing so it can call napi_consume_skb() correctly.
Security readout for executives and security teams
Plain-English summary
A Linux ionic network-driver bug can use packet cleanup logic from an unsafe execution context while network queues are being reconfigured. The supplied rating is high, but the public evidence describes a kernel warning found during stress testing rather than a demonstrated compromise. Systems without the ionic driver or affected kernel versions are unlikely to be exposed.
Executive priority
Treat as a high-priority maintenance issue on systems actively using ionic networking, especially shared or sensitive hosts. Accelerate vendor-supported kernel updates, but avoid declaring an emergency based solely on CVSS: the supplied evidence shows no active exploitation and does not demonstrate the stated confidentiality, integrity, and availability consequences.
Technical view
During ionic transmit cleanup outside NAPI softirq context, napi_consume_skb() received an incorrect nonzero budget and reached napi_skb_cache_put() from preemptible code. The correction passes context information through the cleanup path so packet consumption uses the appropriate non-NAPI behavior. The supplied CVSS is 7.8 with local access and low privileges required.
Likely exposure
The bundle identifies Linux kernel versions 6.9 through 6.9.8 and 6.10 as affected. Practical exposure also depends on the ionic network driver being present and its queue-reconfiguration path being exercised. Distribution kernels may carry backports, so version numbers alone are insufficient.
Exploitation context
CISA KEV status is false, and the supplied sources provide no evidence of active exploitation or a public exploit. Discovery occurred during traffic and queue-configuration stress testing involving ethtool. The CVSS vector describes a local, low-privilege attack surface, but the sources do not establish a reliable security-impact path.
Researcher notes
The strongest evidence is the reported unsafe-context warning and the two kernel correction commits. The supplied CVSS claims high confidentiality, integrity, and availability impact, but the bundle does not explain how those outcomes are achieved. Researchers should distinguish the confirmed context misuse from inferred exploitability and examine distribution-specific backports.
Mitigation direction
Apply a supported vendor kernel containing the referenced ionic correction or an equivalent backport.
Confirm remediation status with the operating-system or kernel vendor before relying on version numbers.
Prioritize hosts using ionic network adapters and permitting network queue reconfiguration.
Test the updated driver under representative traffic and queue changes before broad deployment.
Validation and detection
Inventory kernel releases and determine whether the ionic driver is loaded or used.
Verify the vendor kernel includes either referenced correction or an equivalent backport.
Review kernel logs for preemption warnings involving ionic_tx_clean or napi_skb_cache_put.
Repeat approved queue-configuration stress tests in a controlled environment after updating.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2024-42071 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.