LiveActive security incident?Get immediate response
CVE Record

CVE-2024-43834: xdp: fix invalid wait context of page_pool_destroy()

In the Linux kernel, the following vulnerability has been resolved: xdp: fix invalid wait context of page_pool_destroy() If the driver uses a page pool, it creates a page pool with page_pool_create(). The reference count of page pool is 1 as default. A page pool will be destroyed only when a reference count reaches 0. page_pool_destroy() is used to destroy page pool, it decreases a reference count. When a page pool is destroyed, ->disconnect() is called, which is mem_allocator_disconnect(). This function internally acquires mutex_lock(). If the driver uses XDP, it registers a memory model with xdp_rxq_info_reg_mem_model(). The xdp_rxq_info_reg_mem_model() internally increases a page pool reference count if a memory model is a page pool. Now the reference count is 2. To destroy a page pool, the driver should call both page_pool_destroy() and xdp_unreg_mem_model(). The xdp_unreg_mem_model() internally calls page_pool_destroy(). Only page_pool_destroy() decreases a reference count. If a driver calls page_pool_destroy() then xdp_unreg_mem_model(), we will face an invalid wait context warning. Because xdp_unreg_mem_model() calls page_pool_destroy() with rcu_read_lock(). The page_pool_destroy() internally acquires mutex_lock(). Splat looks like: ============================= [ BUG: Invalid wait context ] 6.10.0-rc6+ #4 Tainted: G W ----------------------------- ethtool/1806 is trying to lock: ffffffff90387b90 (mem_id_lock){+.+.}-{4:4}, at: mem_allocator_disconnect+0x73/0x150 other info that might help us debug this: context-{5:5} 3 locks held by ethtool/1806: stack backtrace: CPU: 0 PID: 1806 Comm: ethtool Tainted: G W 6.10.0-rc6+ #4 f916f41f172891c800f2fed Hardware name: ASUS System Product Name/PRIME Z690-P D4, BIOS 0603 11/01/2021 Call Trace: <TASK> dump_stack_lvl+0x7e/0xc0 __lock_acquire+0x1681/0x4de0 ? _printk+0x64/0xe0 ? __pfx_mark_lock.part.0+0x10/0x10 ? __pfx___lock_acquire+0x10/0x10 lock_acquire+0x1b3/0x580 ? mem_allocator_disconnect+0x73/0x150 ? __wake_up_klogd.part.0+0x16/0xc0 ? __pfx_lock_acquire+0x10/0x10 ? dump_stack_lvl+0x91/0xc0 __mutex_lock+0x15c/0x1690 ? mem_allocator_disconnect+0x73/0x150 ? __pfx_prb_read_valid+0x10/0x10 ? mem_allocator_disconnect+0x73/0x150 ? __pfx_llist_add_batch+0x10/0x10 ? console_unlock+0x193/0x1b0 ? lockdep_hardirqs_on+0xbe/0x140 ? __pfx___mutex_lock+0x10/0x10 ? tick_nohz_tick_stopped+0x16/0x90 ? __irq_work_queue_local+0x1e5/0x330 ? irq_work_queue+0x39/0x50 ? __wake_up_klogd.part.0+0x79/0xc0 ? mem_allocator_disconnect+0x73/0x150 mem_allocator_disconnect+0x73/0x150 ? __pfx_mem_allocator_disconnect+0x10/0x10 ? mark_held_locks+0xa5/0xf0 ? rcu_is_watching+0x11/0xb0 page_pool_release+0x36e/0x6d0 page_pool_destroy+0xd7/0x440 xdp_unreg_mem_model+0x1a7/0x2a0 ? __pfx_xdp_unreg_mem_model+0x10/0x10 ? kfree+0x125/0x370 ? bnxt_free_ring.isra.0+0x2eb/0x500 ? bnxt_free_mem+0x5ac/0x2500 xdp_rxq_info_unreg+0x4a/0xd0 bnxt_free_mem+0x1356/0x2500 bnxt_close_nic+0xf0/0x3b0 ? __pfx_bnxt_close_nic+0x10/0x10 ? ethnl_parse_bit+0x2c6/0x6d0 ? __pfx___nla_validate_parse+0x10/0x10 ? __pfx_ethnl_parse_bit+0x10/0x10 bnxt_set_features+0x2a8/0x3e0 __netdev_update_features+0x4dc/0x1370 ? ethnl_parse_bitset+0x4ff/0x750 ? __pfx_ethnl_parse_bitset+0x10/0x10 ? __pfx___netdev_update_features+0x10/0x10 ? mark_held_locks+0xa5/0xf0 ? _raw_spin_unlock_irqrestore+0x42/0x70 ? __pm_runtime_resume+0x7d/0x110 ethnl_set_features+0x32d/0xa20 To fix this problem, it uses rhashtable_lookup_fast() instead of rhashtable_lookup() with rcu_read_lock(). Using xa without rcu_read_lock() here is safe. xa is freed by __xdp_mem_allocator_rcu_free() and this is called by call_rcu() of mem_xa_remove(). The mem_xa_remove() is called by page_pool_destroy() if a reference count reaches 0. The xa is already protected by the reference count mechanism well in the control plane. So removing rcu_read_lock() for page_pool_destroy() is safe.

UnknownCVSS not scoredNot KEV-listedUpdated
Glexia's TakeAutomated analysismoderate

Security readout for executives and security teams

Plain-English summary

CVE-2024-43834 is a Linux kernel networking bug in XDP page-pool cleanup. Under specific driver teardown ordering, the kernel can try to take a mutex while inside an invalid RCU wait context, producing a kernel warning. The sources do not show active exploitation, a public exploit, or a CVSS score.

Executive priority

Treat this as a kernel maintenance and reliability issue, not an emergency remote-exploitation event based on current evidence. Patch through normal accelerated kernel update channels for exposed Linux networking workloads, especially appliances or systems using XDP-capable NIC drivers.

Technical view

The issue occurs when drivers using XDP and page_pool call page_pool_destroy() before xdp_unreg_mem_model(). xdp_unreg_mem_model() can call page_pool_destroy() while under rcu_read_lock(), but page_pool_destroy() may reach mem_allocator_disconnect(), which takes mutex_lock(). Stable fixes remove the problematic RCU-locked lookup path.

Likely exposure

Exposure is most likely on Linux systems running affected kernel branches with network drivers using XDP page pools. The trace shows a bnxt-related teardown path triggered via ethtool feature changes. Downstream advisories from Debian and Siemens indicate packaged and productized kernels may also need vendor-specific updates.

Exploitation context

The provided sources do not claim active exploitation, and KEV is false. Evidence points to a reliability or kernel-correctness flaw triggered through networking driver lifecycle behavior, not a documented remote compromise path. Impact details remain incomplete because no CVSS, CWE, or exploitability analysis is provided.

Researcher notes

The root condition is page_pool_destroy() reaching mutex-taking cleanup from xdp_unreg_mem_model() under rcu_read_lock(). The fix replaces rhashtable_lookup() under RCU with rhashtable_lookup_fast() and relies on existing reference-count protection for the control plane. Source evidence is strong for the bug mechanism but limited for impact severity.

Mitigation direction

  • Update to a kernel containing the referenced stable fixes or vendor backport.
  • Apply Debian or affected vendor kernel security updates where relevant.
  • Check Siemens guidance if using products covered by SSA-265688.
  • Prioritize systems using XDP, high-performance NIC drivers, or custom kernel builds.
  • Avoid inventing local workarounds; follow kernel or vendor guidance.

Validation and detection

  • Inventory Linux kernel versions across servers, appliances, and embedded products.
  • Identify hosts using XDP or page-pool-capable network drivers.
  • Check vendor advisories for patched package versions and backport status.
  • Review kernel logs for invalid wait context warnings in XDP/page_pool paths.
  • Confirm fixed kernel commits or distro package changelogs are present.
Prepared
Confidence
medium
Sources
11

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-43834 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
Unknown
CVSS
Not scored
Known Exploited
No
Published
Official CVE source material

CNA and ADP enrichment extracted from CVE v5

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.

0CVSS vectors
3Timeline events
3ADP providers
10Source links

SSVC decision data

CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: noneAutomatable: noTechnical Impact: partial

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

ADP provider summaries

CISA-ADPCISA ADP Vulnrichment
other:ssvc
CVECVE Program Container
siemens-SADPADP container
Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
LinuxLinuxc3f812cea0d7006469d1cf33a4a9f0a12bb4b3a3, c3f812cea0d7006469d1cf33a4a9f0a12bb4b3a3, c3f812cea0d7006469d1cf33a4a9f0a12bb4b3a3, c3f812cea0d7006469d1cf33a4a9f0a12bb4b3a3, c3f812cea0d7006469d1cf33a4a9f0a12bb4b3a3, c3f812cea0d7006469d1cf33a4a9f0a12bb4b3a3, bf22306d92ca59c59dc4aa3bab14768948193d56, 05f646cb2174d1a4e032b60b99097f5c4b522616, 5.3.18, 5.4.5unaffected
LinuxLinux5.5, 0, 5.10.224, 5.15.165, 6.1.103, 6.6.44, 6.10.3, 6.11affected
Weakness

CWE details

No CWE listed

CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.