{
    "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"
            }
        }
    }
}