{"id":"DEBIAN-CVE-2026-22976","details":"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-\u003eleaf_qdisc-\u003eq.qlen \u003e 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-\u003eq.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-\u003eq.qlen == 0, but its class's leaf qdisc-\u003eq.qlen \u003e 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:\t0f 84 4d 01 00 00    \tje     0x153    6:\t48 89 70 18          \tmov    %rsi,0x18(%rax)    a:\t8b 4b 10             \tmov    0x10(%rbx),%ecx    d:\t48 c7 c2 ff ff ff ff \tmov    $0xffffffffffffffff,%rdx   14:\t48 8b 78 08          \tmov    0x8(%rax),%rdi   18:\t48 d3 e2             \tshl    %cl,%rdx   1b:\t48 21 f2             \tand    %rsi,%rdx   1e:\t48 2b 13             \tsub    (%rbx),%rdx   21:\t48 8b 30             \tmov    (%rax),%rsi   24:\t48 d3 ea             \tshr    %cl,%rdx   27:\t8b 4b 18             \tmov    0x18(%rbx),%ecx \t... [    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]  \u003cTASK\u003e [    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---","modified":"2026-09-14T17:02:51.215996920Z","published":"2026-01-21T07:16:01.433Z","upstream":["CVE-2026-22976"],"references":[{"type":"ADVISORY","url":"https://security-tracker.debian.org/tracker/CVE-2026-22976"}],"affected":[{"package":{"name":"linux","ecosystem":"Debian:12","purl":"pkg:deb/debian/linux?arch=source&distro=bookworm"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.1.162-1"}]}],"versions":["6.1.106-1","6.1.106-2","6.1.106-3","6.1.112-1","6.1.115-1","6.1.119-1","6.1.123-1","6.1.124-1","6.1.128-1","6.1.129-1","6.1.133-1","6.1.135-1","6.1.137-1","6.1.139-1","6.1.140-1","6.1.147-1","6.1.148-1","6.1.153-1","6.1.158-1","6.1.159-1","6.1.27-1","6.1.37-1","6.1.38-1","6.1.38-2","6.1.38-2~bpo11+1","6.1.38-3","6.1.38-4","6.1.38-4~bpo11+1","6.1.52-1","6.1.55-1","6.1.55-1~bpo11+1","6.1.64-1","6.1.66-1","6.1.67-1","6.1.69-1","6.1.69-1~bpo11+1","6.1.76-1","6.1.76-1~bpo11+1","6.1.82-1","6.1.85-1","6.1.90-1","6.1.90-1~bpo11+1","6.1.94-1","6.1.94-1~bpo11+1","6.1.98-1","6.1.99-1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-22976.json"}},{"package":{"name":"linux","ecosystem":"Debian:13","purl":"pkg:deb/debian/linux?arch=source&distro=trixie"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.12.69-1"}]}],"versions":["6.12.38-1","6.12.41-1","6.12.43-1","6.12.43-1~bpo12+1","6.12.48-1","6.12.57-1","6.12.57-1~bpo12+1","6.12.63-1","6.12.63-1~bpo12+1","6.12.69-1~bpo12+1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-22976.json"}},{"package":{"name":"linux","ecosystem":"Debian:14","purl":"pkg:deb/debian/linux?arch=source&distro=forky"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.18.8-1"}]}],"versions":["6.12.100-1","6.12.101-1","6.12.105-1","6.12.107-1","6.12.38-1","6.12.41-1","6.12.43-1","6.12.43-1~bpo12+1","6.12.48-1","6.12.57-1","6.12.57-1~bpo12+1","6.12.63-1","6.12.63-1~bpo12+1","6.12.69-1","6.12.69-1~bpo12+1","6.12.73-1","6.12.73-1~bpo12+1","6.12.74-1","6.12.74-2","6.12.74-2~bpo12+1","6.12.85-1","6.12.85-1~bpo12+1","6.12.86-1","6.12.86-1~bpo12+1","6.12.88-1","6.12.88-1~bpo12+1","6.12.90-1","6.12.90-1~bpo12+1","6.12.90-2","6.12.90-2~bpo12+1","6.12.94-1","6.12.94-1~bpo12+1","6.12.95-1","6.12.95-1~bpo12+1","6.12.96-1","6.13.10-1~exp1","6.13.11-1~exp1","6.13.2-1~exp1","6.13.3-1~exp1","6.13.4-1~exp1","6.13.5-1~exp1","6.13.6-1~exp1","6.13.7-1~exp1","6.13.8-1~exp1","6.13.9-1~exp1","6.13~rc6-1~exp1","6.13~rc7-1~exp1","6.14.3-1~exp1","6.14.5-1~exp1","6.14.6-1~exp1","6.15-1~exp1","6.15.1-1~exp1","6.15.2-1~exp1","6.15.3-1~exp1","6.15.4-1~exp1","6.15.5-1~exp1","6.15.6-1~exp1","6.15~rc7-1~exp1","6.16-1~exp1","6.16.1-1~exp1","6.16.10-1","6.16.11-1","6.16.12-1","6.16.12-1~bpo13+1","6.16.12-2","6.16.3-1","6.16.3-1~bpo13+1","6.16.5-1","6.16.6-1","6.16.7-1","6.16.8-1","6.16.9-1","6.16~rc7-1~exp1","6.17.10-1","6.17.11-1","6.17.12-1","6.17.13-1","6.17.13-1~bpo13+1","6.17.2-1~exp1","6.17.5-1~exp1","6.17.6-1","6.17.7-1","6.17.7-2","6.17.8-1","6.17.8-1~bpo13+1","6.17.9-1","6.18.1-1~exp1","6.18.2-1~exp1","6.18.3-1","6.18.5-1","6.18.5-1~bpo13+1","6.18~rc4-1~exp1","6.18~rc4-1~exp2","6.18~rc5-1~exp1","6.18~rc6-1~exp1","6.18~rc7-1~exp1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-22976.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"}]}