Skip to main content
VulnerabilityPublished Updated

CVE-2026-43496: Linux kernel · net/sched: sch_red: Replace direct dequeue call with peek and qdisc_dequeue_peeked

Affects Linux kernelSource CVE Database V5

0
Compare

Not known to be exploited · fixed in ce051eede433f876d322ac3550a36a3c6fc4c231 : update Linux kernel when convenient.

Data as of 6 Nov 2026, 16:04 UTC

Severity
Unrated

Rated by Threat Radar · No CVSS score from NVD or the CNA

Thin evidence

One scorer or none
CISA SSVC
Exploitation
No evidence of active exploitation and no public proof of concept
Automatable
Attackers cannot reliably automate steps 1–4 of the kill chain
Technical impact
Limited control over the software or limited information exposure

CISA SSVC assessment, 2026-11-06.

Patch
Available – fixed in ce051eede433f876d322ac3550a36a3c6fc4c231, c7335f4dc0fa21f7015b910c6fc2f4d599732328, 587dcf970a525f543d8b5855d9f37a4ca97b76ef +5

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 21 May 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 6 Nov 2026.

What to do

Upgrade to a fixed release listed under Affected software.

Affected software

ProductAffectedFixed in
LinuxLinuxAffected
  • ≥ 77be155cba4e163e8bba9fd27222a8b6189ec4f7, < ce051eede433f876d322ac3550a36a3c6fc4c231
Fixed in
  • ce051eede433f876d322ac3550a36a3c6fc4c231
LinuxLinuxAffected
  • ≥ 77be155cba4e163e8bba9fd27222a8b6189ec4f7, < c7335f4dc0fa21f7015b910c6fc2f4d599732328
Fixed in
  • c7335f4dc0fa21f7015b910c6fc2f4d599732328
LinuxLinuxAffected
  • ≥ 77be155cba4e163e8bba9fd27222a8b6189ec4f7, < 587dcf970a525f543d8b5855d9f37a4ca97b76ef
Fixed in
  • 587dcf970a525f543d8b5855d9f37a4ca97b76ef
LinuxLinuxAffected
  • ≥ 77be155cba4e163e8bba9fd27222a8b6189ec4f7, < 458d5615272d3de535748342eb68ca492343048c
Fixed in
  • 458d5615272d3de535748342eb68ca492343048c
LinuxLinuxAffected
  • ≥ 77be155cba4e163e8bba9fd27222a8b6189ec4f7, < 45cd83c5c470ba49fe261489c8358ad7b9df7c45
Fixed in
  • 45cd83c5c470ba49fe261489c8358ad7b9df7c45
LinuxLinuxAffected
  • ≥ 77be155cba4e163e8bba9fd27222a8b6189ec4f7, < 36aa34f42cb6842cf371f3a2d3e855d24fd57a50
Fixed in
  • 36aa34f42cb6842cf371f3a2d3e855d24fd57a50

Description

In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_red: Replace direct dequeue call with peek and qdisc_dequeue_peeked When red qdisc has children (eg qfq qdisc) whose peek() callback is qdisc_peek_dequeued(), we could get a kernel panic. When the parent of such qdiscs (eg illustrated in patch #3 as tbf) wants to retrieve an skb from its child (red in this case), it will do the following: 1a. do a peek() - and when sensing there's an skb the child can offer, then - the child in this case(red) calls its child's (qfq) peek. qfq does the right thing and will return the gso_skb queue packet. Note: if there wasnt a gso_skb entry then qfq will store it there. 1b. invoke a dequeue() on the child (red). And herein lies the problem. - red will call the child's dequeue() which will essentially just try to grab something of qfq's queue. [ 78.667668][ T363] KASAN: null-ptr-deref in range [0x0000000000000048-0x000000000000004f] [ 78.667927][ T363] CPU: 1 UID: 0 PID: 363 Comm: ping Not tainted 7.1.0-rc1-00033-g46f74a3f7d57-dirty #790 PREEMPT(full) [ 78.668263][ T363] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 78.668486][ T363] RIP: 0010:qfq_dequeue+0x446/0xc90 [sch_qfq] [ 78.668718][ T363] Code: 54 c0 e8 dd 90 00 f1 48 c7 c7 e0 03 54 c0 48 89 de e8 ce 90 00 f1 48 8d 7b 48 b8 ff ff 37 00 48 89 fa 48 c1 e0 2a 48 c1 ea 03 <80> 3c 02 00 74 05 e8 ef a1 e1 f1 48 8b 7b 48 48 8d 54 24 58 48 8d [ 78.669312][ T363] RSP: 0018:ffff88810de573e0 EFLAGS: 00010216 [ 78.669533][ T363] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000 [ 78.669790][ T363] RDX: 0000000000000009 RSI: 0000000000000004 RDI: 0000000000000048 [ 78.670044][ T363] RBP: ffff888110dc4000 R08: ffffffffb1b0885a R09: fffffbfff6ba9078 [ 78.670297][ T363] R10: 0000000000000003 R11: ffff888110e31c80 R12: 0000001880000000 [ 78.670560][ T363] R13: ffff888110dc4150 R14: ffff888110dc42b8 R15: 0000000000000200 [ 78.670814][ T363] FS: 00007f66a8f09c40(0000) GS:ffff888163428000(0000) knlGS:0000000000000000 [ 78.671110][ T363] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 78.671324][ T363] CR2: 000055db4c6a30a8 CR3: 000000010da67000 CR4: 0000000000750ef0 [ 78.671585][ T363] PKRU: 55555554 [ 78.671713][ T363] Call Trace: [ 78.671843][ T363] <TASK> [ 78.671936][ T363] ? __pfx_qfq_dequeue+0x10/0x10 [sch_qfq] [ 78.672148][ T363] ? __pfx__printk+0x10/0x10 [ 78.672322][ T363] ? srso_alias_return_thunk+0x5/0xfbef5 [ 78.672496][ T363] ? lockdep_hardirqs_on_prepare+0xa8/0x1a0 [ 78.672706][ T363] ? srso_alias_return_thunk+0x5/0xfbef5 [ 78.672875][ T363] ? trace_hardirqs_on+0x19/0x1a0 [ 78.673047][ T363] red_dequeue+0x65/0x270 [sch_red] [ 78.673217][ T363] ? srso_alias_return_thunk+0x5/0xfbef5 [ 78.673385][ T363] tbf_dequeue.cold+0xb0/0x70c [sch_tbf] [ 78.673566][ T363] __qdisc_run+0x169/0x1900 The right thing to do in #1b is to grab the skb off gso_skb queue. This patchset fixes that issue by changing #1b to use qdisc_dequeue_peeked() method instead.

References

Community reviews

Loading reviews…