CVE-2024-35892: net/sched: fix lockdep splat in qdisc_tree_reduce_backlog()
In the Linux kernel, the following vulnerability has been resolved:
net/sched: fix lockdep splat in qdisctreereducebacklog()
qdisctreereducebacklog() is called with the qdisc lock held, not RTNL.
We must use qdisclookuprcu() instead of qdisclookup()
syzbot reported:
WARNING: suspicious RCU usage 6.1.74-syzkaller #0 Not tainted ----------------------------- net/sched/schapi.c:305 suspicious rcudereferenceprotected() usage!
other info that might help us debug this:
rcuscheduleractive = 2, debuglocks = 1 3 locks held by udevd/1142: #0: ffffffff87c729a0 (rcureadlock){....}-{1:2}, at: rculockacquire include/linux/rcupdate.h:306 [inline] #0: ffffffff87c729a0 (rcureadlock){....}-{1:2}, at: rcureadlock include/linux/rcupdate.h:747 [inline] #0: ffffffff87c729a0 (rcureadlock){....}-{1:2}, at: nettxaction+0x64a/0x970 net/core/dev.c:5282 #1: ffff888171861108 (&sch->q.lock){+.-.}-{2:2}, at: spinlock include/linux/spinlock.h:350 [inline] #1: ffff888171861108 (&sch->q.lock){+.-.}-{2:2}, at: nettxaction+0x754/0x970 net/core/dev.c:5297 #2: ffffffff87c729a0 (rcureadlock){....}-{1:2}, at: rculockacquire include/linux/rcupdate.h:306 [inline] #2: ffffffff87c729a0 (rcureadlock){....}-{1:2}, at: rcureadlock include/linux/rcupdate.h:747 [inline] #2: ffffffff87c729a0 (rcureadlock){....}-{1:2}, at: qdisctreereducebacklog+0x84/0x580 net/sched/schapi.c:792
stack backtrace: CPU: 1 PID: 1142 Comm: udevd Not tainted 6.1.74-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/25/2024 Call Trace: <TASK> [<ffffffff85b85f14>] dumpstack lib/dumpstack.c:88 [inline] [<ffffffff85b85f14>] dumpstacklvl+0x1b1/0x28f lib/dumpstack.c:106 [<ffffffff85b86007>] dumpstack+0x15/0x1e lib/dumpstack.c:113 [<ffffffff81802299>] lockdeprcususpicious+0x1b9/0x260 kernel/locking/lockdep.c:6592 [<ffffffff84f0054c>] qdisclookup+0xac/0x6f0 net/sched/schapi.c:305 [<ffffffff84f037c3>] qdisctreereducebacklog+0x243/0x580 net/sched/schapi.c:811 [<ffffffff84f5b78c>] pfifotailenqueue+0x32c/0x4b0 net/sched/schfifo.c:51 [<ffffffff84fbcf63>] qdiscenqueue include/net/schgeneric.h:833 [inline] [<ffffffff84fbcf63>] netemdequeue+0xeb3/0x15d0 net/sched/schnetem.c:723 [<ffffffff84eecab9>] dequeueskb net/sched/schgeneric.c:292 [inline] [<ffffffff84eecab9>] qdiscrestart net/sched/schgeneric.c:397 [inline] [<ffffffff84eecab9>] qdiscrun+0x249/0x1e60 net/sched/schgeneric.c:415 [<ffffffff84d7aa96>] qdiscrun+0xd6/0x260 include/net/pktsched.h:125 [<ffffffff84d85d29>] nettxaction+0x7c9/0x970 net/core/dev.c:5313 [<ffffffff85e002bd>] dosoftirq+0x2bd/0x9bd kernel/softirq.c:616 [<ffffffff81568bca>] invokesoftirq kernel/softirq.c:447 [inline] [<ffffffff81568bca>] irqexitrcu+0xca/0x230 kernel/softirq.c:700 [<ffffffff81568ae9>] irqexitrcu+0x9/0x20 kernel/softirq.c:712 [<ffffffff85b89f52>] sysvecapictimerinterrupt+0x42/0x90 arch/x86/kernel/apic/apic.c:1107 [<ffffffff85c00ccb>] asmsysvecapictimerinterrupt+0x1b/0x20 arch/x86/include/asm/idtentry.h:656
Other sources
In the Linux kernel, the following vulnerability has been resolved:
net/sched: fix lockdep splat in qdisctreereducebacklog()
The Linux kernel CVE team has assigned CVE-2024-35892 to this issue.
Upstream advisory: https://lore.kernel.org/linux-cve-announce/2024051949-CVE-2024-35892-0f0c@gregkh/T
— Red Hat
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2024-35892?
CVE-2024-35892 has a medium severity rating due to the potential for locking issues in the Linux kernel.
How do I fix CVE-2024-35892?
To resolve CVE-2024-35892, upgrade the Linux kernel to one of the patched versions such as 6.1.85, 6.6.26, 6.8.5, or 6.9.
What Linux kernel versions are affected by CVE-2024-35892?
CVE-2024-35892 affects various versions of the Linux kernel including those below 6.1.85, 6.6.26, 6.8.5, and 6.9.
What is the impact of CVE-2024-35892?
The impact of CVE-2024-35892 may lead to unexpected behavior in network scheduling due to lock management issues.
Is CVE-2024-35892 specific to any Linux distribution?
CVE-2024-35892 is present in kernels used by both Red Hat and Debian distributions.