drop_monitor: perform u64_stats updates under IRQ-disabled section
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.1.189, 6.6.158, 6.12.111, 6.18.53, 7.1.6
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: drop_monitor: perform u64_stats updates under IRQ-disabled section In net_dm_packet_trace_kfree_skb_hit() and net_dm_hw_trap_packet_probe(), u64_stats_update_begin() / u64_stats_inc() / u64_stats_update_end() were called after spin_unlock_irqrestore(&...drop_queue.lock, flags), when local IRQs had already been re-enabled. Tracepoint probes can execute in IRQ or softirq context. On 32-bit architectures, u64_stats_update_begin() disables preemption but not interrupts, relying on seqcount writes. If a nested interrupt occurs on the same CPU during the 64-bit stats update, the reentrant seqcount update can corrupt the seqcount state or stats value. Fix this by performing the 64-bit per-CPU stats update before releasing drop_queue.lock via spin_unlock_irqrestore(), ensuring local interrupts remain disabled during the u64_stats update.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From e9feb58020f952f7d9de785ede9a7d54ab1eda5c · fixed in dd8472526a04f2185afd792b8041a912a7d75d85; From e9feb58020f952f7d9de785ede9a7d54ab1eda5c · fixed in 3454c729ee8aa682ec871f1b174b047f731933ae; From e9feb58020f952f7d9de785ede9a7d54ab1eda5c · fixed in be9b121894d6ad44f0011f79543a2e3245979497; From e9feb58020f952f7d9de785ede9a7d54ab1eda5c · fixed in 7d857cf5f0120bb0e020fa20b03bd21b9d3e0c04; From e9feb58020f952f7d9de785ede9a7d54ab1eda5c · fixed in d5e2cd2bc8ae36617346b3a54ee9da61d866bf92; From e9feb58020f952f7d9de785ede9a7d54ab1eda5c · fixed in fd098a23bf8fda7eae48db9b06e7c34fc4d228fa
- Linux Linux
5.4
- KernelLinux
From 5.4.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53; From 6.19.0 · fixed in 7.1.6