{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-22061","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-12-29T08:45:45.812Z","datePublished":"2025-04-16T14:12:16.924Z","dateUpdated":"2026-08-05T11:56:27.146Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:56:27.146Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: airoha: Fix qid report in airoha_tc_get_htb_get_leaf_queue()\n\nFix the following kernel warning deleting HTB offloaded leafs and/or root\nHTB qdisc in airoha_eth driver properly reporting qid in\nairoha_tc_get_htb_get_leaf_queue routine.\n\n$tc qdisc replace dev eth1 root handle 10: htb offload\n$tc class add dev eth1 arent 10: classid 10:4 htb rate 100mbit ceil 100mbit\n$tc qdisc replace dev eth1 parent 10:4 handle 4: ets bands 8 \\\n quanta 1514 3028 4542 6056 7570 9084 10598 12112\n$tc qdisc del dev eth1 root\n\n[   55.827864] ------------[ cut here ]------------\n[   55.832493] WARNING: CPU: 3 PID: 2678 at 0xffffffc0798695a4\n[   55.956510] CPU: 3 PID: 2678 Comm: tc Tainted: G           O 6.6.71 #0\n[   55.963557] Hardware name: Airoha AN7581 Evaluation Board (DT)\n[   55.969383] pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)\n[   55.976344] pc : 0xffffffc0798695a4\n[   55.979851] lr : 0xffffffc079869a20\n[   55.983358] sp : ffffffc0850536a0\n[   55.986665] x29: ffffffc0850536a0 x28: 0000000000000024 x27: 0000000000000001\n[   55.993800] x26: 0000000000000000 x25: ffffff8008b19000 x24: ffffff800222e800\n[   56.000935] x23: 0000000000000001 x22: 0000000000000000 x21: ffffff8008b19000\n[   56.008071] x20: ffffff8002225800 x19: ffffff800379d000 x18: 0000000000000000\n[   56.015206] x17: ffffffbf9ea59000 x16: ffffffc080018000 x15: 0000000000000000\n[   56.022342] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000001\n[   56.029478] x11: ffffffc081471008 x10: ffffffc081575a98 x9 : 0000000000000000\n[   56.036614] x8 : ffffffc08167fd40 x7 : ffffffc08069e104 x6 : ffffff8007f86000\n[   56.043748] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000001\n[   56.050884] x2 : 0000000000000000 x1 : 0000000000000250 x0 : ffffff800222c000\n[   56.058020] Call trace:\n[   56.060459]  0xffffffc0798695a4\n[   56.063618]  0xffffffc079869a20\n[   56.066777]  __qdisc_destroy+0x40/0xa0\n[   56.070528]  qdisc_put+0x54/0x6c\n[   56.073748]  qdisc_graft+0x41c/0x648\n[   56.077324]  tc_get_qdisc+0x168/0x2f8\n[   56.080978]  rtnetlink_rcv_msg+0x230/0x330\n[   56.085076]  netlink_rcv_skb+0x5c/0x128\n[   56.088913]  rtnetlink_rcv+0x14/0x1c\n[   56.092490]  netlink_unicast+0x1e0/0x2c8\n[   56.096413]  netlink_sendmsg+0x198/0x3c8\n[   56.100337]  ____sys_sendmsg+0x1c4/0x274\n[   56.104261]  ___sys_sendmsg+0x7c/0xc0\n[   56.107924]  __sys_sendmsg+0x44/0x98\n[   56.111492]  __arm64_sys_sendmsg+0x20/0x28\n[   56.115580]  invoke_syscall.constprop.0+0x58/0xfc\n[   56.120285]  do_el0_svc+0x3c/0xbc\n[   56.123592]  el0_svc+0x18/0x4c\n[   56.126647]  el0t_64_sync_handler+0x118/0x124\n[   56.131005]  el0t_64_sync+0x150/0x154\n[   56.134660] ---[ end trace 0000000000000000 ]---"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable code is reached only through an `AF_NETLINK`/`NETLINK_ROUTE` socket (`RTM_NEWQDISC`/`RTM_DELQDISC` via `tc`), which requires local system access. No remote peer data reaches `airoha_tc_get_htb_get_leaf_queue()`.\nAC:L - The wrong qid is returned deterministically for every `TC_HTB_LEAF_QUERY_QUEUE`, and the four-command reproducer in the commit triggers the WARN 100% of the time; the follow-on lock-exclusion race has both sides under attacker control (they issue `tc qdisc change` while generating traffic on the offloaded channel).\nPR:L - `rtnetlink_rcv_msg()` gates on namespace-relative `CAP_NET_ADMIN` (`netlink_net_capable`), which an unprivileged user obtains via `unshare -Urn`; per kernel scoring practice tc/qdisc netlink paths are Low, not High.\nUI:N - The attacker performs the entire sequence (create offloaded HTB root, add class, graft a child qdisc, tear it down) from their own process. No victim action is involved.\nS:U - The corruption and the resulting crash stay within the kernel's own security authority on the affected host; no VM, sandbox, or IOMMU boundary is crossed.\nC:H - The mismatched `sch->dev_queue` makes `sch_tree_lock()` acquire an unrelated qdisc's lock, so `ets_qdisc_change()` mutates `q->active`/`q->classes[].alist` and swaps child qdisc pointers concurrently with `ets_qdisc_dequeue()`, yielding a use-after-free on freed qdisc objects that can be leveraged as a kernel-memory read primitive.\nI:H - The same loss of mutual exclusion permits unsynchronized `list_del`/`list_move_tail` on the ETS active list and `qdisc_put()` of a qdisc the datapath is still dereferencing, giving linked-list corruption and a UAF write primitive suitable for control-flow hijacking.\nA:H - The commit documents a reproducible `WARN_ON` splat on `tc qdisc del dev eth1 root`, which is a kernel panic on the `panic_on_warn` configurations common to hardened and embedded builds, and the resulting corrupted qdisc/TX-queue state additionally causes oopses via the racing ETS teardown."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/airoha/airoha_eth.c"],"versions":[{"version":"ef1ca9271313b4ea7b03de69576aacef1e78f381","lessThan":"d7f76197e49e46a8c082a6fededaa8a07e69a860","status":"affected","versionType":"git"},{"version":"ef1ca9271313b4ea7b03de69576aacef1e78f381","lessThan":"57b290d97c6150774bf929117ca737a26d8fc33d","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/airoha/airoha_eth.c"],"versions":[{"version":"6.14","status":"affected"},{"version":"0","lessThan":"6.14","status":"unaffected","versionType":"semver"},{"version":"6.14.2","lessThanOrEqual":"6.14.*","status":"unaffected","versionType":"semver"},{"version":"6.15","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.14","versionEndExcluding":"6.14.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.14","versionEndExcluding":"6.15"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/d7f76197e49e46a8c082a6fededaa8a07e69a860"},{"url":"https://git.kernel.org/stable/c/57b290d97c6150774bf929117ca737a26d8fc33d"}],"title":"net: airoha: Fix qid report in airoha_tc_get_htb_get_leaf_queue()","x_generator":{"engine":"bippy-1.2.0"}}}}