CVE-2026-22976CWE-476

CVE-2026-22976

Medium · published January 21, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
3.2
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

net/sched: sch_qfq: Fix NULL deref when deactivating inactive aggregate in qfq_reset

`qfq_class->leaf_qdisc->q.qlen > 0` does not imply that the class

itself is active.

Two qfq_class objects may point to the same leaf_qdisc. This happens

when:

1. one QFQ qdisc is attached to the dev as the root qdisc, and

2. another QFQ qdisc is temporarily referenced (e.g., via qdisc_get()

/ qdisc_put()) and is pending to be destroyed, as in function

tc_new_tfilter.

When packets are enqueued through the root QFQ qdisc, the shared

leaf_qdisc->q.qlen increases. At the same time, the second QFQ

qdisc triggers qdisc_put and qdisc_destroy: the qdisc enters

qfq_reset() with its own q->q.qlen == 0, but its class's leaf

qdisc->q.qlen > 0. Therefore, the qfq_reset would wrongly deactivate

an inactive aggregate and trigger a null-deref in qfq_deactivate_agg:

[ 0.903172] BUG: kernel NULL pointer dereference, address: 0000000000000000

[ 0.903571] #PF: supervisor write access in kernel mode

[ 0.903860] #PF: error_code(0x0002) - not-present page

[ 0.904177] PGD 10299b067 P4D 10299b067 PUD 10299c067 PMD 0

[ 0.904502] Oops: Oops: 0002 [#1] SMP NOPTI

[ 0.904737] CPU: 0 UID: 0 PID: 135 Comm: exploit Not tainted 6.19.0-rc3+ #2 NONE

[ 0.905157] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.17.0-0-gb52ca86e094d-prebuilt.qemu.org 04/01/2014

[ 0.905754] RIP: 0010:qfq_deactivate_agg (include/linux/list.h:992 (discriminator 2) include/linux/list.h:1006 (discriminator 2) net/sched/sch_qfq.c:1367 (discriminator 2) net/sched/sch_qfq.c:1393 (discriminator 2))

[ 0.906046] Code: 0f 84 4d 01 00 00 48 89 70 18 8b 4b 10 48 c7 c2 ff ff ff ff 48 8b 78 08 48 d3 e2 48 21 f2 48 2b 13 48 8b 30 48 d3 ea 8b 4b 18 0

Code starting with the faulting instruction

===========================================

0: 0f 84 4d 01 00 00 je 0x153

6: 48 89 70 18 mov %rsi,0x18(%rax)

a: 8b 4b 10 mov 0x10(%rbx),%ecx

d: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx

14: 48 8b 78 08 mov 0x8(%rax),%rdi

18: 48 d3 e2 shl %cl,%rdx

1b: 48 21 f2 and %rsi,%rdx

1e: 48 2b 13 sub (%rbx),%rdx

21: 48 8b 30 mov (%rax),%rsi

24: 48 d3 ea shr %cl,%rdx

27: 8b 4b 18 mov 0x18(%rbx),%ecx

...

[ 0.907095] RSP: 0018:ffffc900004a39a0 EFLAGS: 00010246

[ 0.907368] RAX: ffff8881043a0880 RBX: ffff888102953340 RCX: 0000000000000000

[ 0.907723] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000

[ 0.908100] RBP: ffff888102952180 R08: 0000000000000000 R09: 0000000000000000

[ 0.908451] R10: ffff8881043a0000 R11: 0000000000000000 R12: ffff888102952000

[ 0.908804] R13: ffff888102952180 R14: ffff8881043a0ad8 R15: ffff8881043a0880

[ 0.909179] FS: 000000002a1a0380(0000) GS:ffff888196d8d000(0000) knlGS:0000000000000000

[ 0.909572] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033

[ 0.909857] CR2: 0000000000000000 CR3: 0000000102993002 CR4: 0000000000772ef0

[ 0.910247] PKRU: 55555554

[ 0.910391] Call Trace:

[ 0.910527] <TASK>

[ 0.910638] qfq_reset_qdisc (net/sched/sch_qfq.c:357 net/sched/sch_qfq.c:1485)

[ 0.910826] qdisc_reset (include/linux/skbuff.h:2195 include/linux/skbuff.h:2501 include/linux/skbuff.h:3424 include/linux/skbuff.h:3430 net/sched/sch_generic.c:1036)

[ 0.911040] __qdisc_destroy (net/sched/sch_generic.c:1076)

[ 0.911236] tc_new_tfilter (net/sched/cls_api.c:2447)

[ 0.911447] rtnetlink_rcv_msg (net/core/rtnetlink.c:6958)

[ 0.911663] ? __pfx_rtnetlink_rcv_msg (net/core/rtnetlink.c:6861)

[ 0.911894] netlink_rcv_skb (net/netlink/af_netlink.c:2550)

[ 0.912100] netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344)

[ 0.912296] ? __alloc_skb (net/core/skbuff.c:706)

[ 0.912484] netlink_sendmsg (net/netlink/af

---truncated---

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00142 · 3.2th percentile
Weakness
CWE-476 · NULL Pointer Dereference
Published
2026-01-21T12:16Z
Affected products (10)
ProductVersionsFixed in
linux/linux_kernel≥ 3.0, < 5.10.2485.10.248
linux/linux_kernel≥ 5.11, < 5.15.1985.15.198
linux/linux_kernel≥ 5.16, < 6.1.1616.1.161
linux/linux_kernel≥ 6.2, < 6.6.1216.6.121
linux/linux_kernel≥ 6.7, < 6.12.666.12.66
linux/linux_kernel≥ 6.13, < 6.18.66.18.6
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (8)
EPSS history
Timeline
  • 21 JAN 06:57Z
    net/sched: sch_qfq: Fix NULL deref when deactivating inactive aggregate in qfq_reset
    cvelistv5