{"id":41039,"date":"2026-10-19T00:31:54","date_gmt":"2026-10-18T16:31:54","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98567"},"modified":"2026-10-19T00:31:54","modified_gmt":"2026-10-18T16:31:54","slug":"cve-2026-98567","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98567","title":{"rendered":"CVE-2026-98567 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnet: xps: reject an o"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: xps: reject an out of range traffic class<\/p>\n<p>Only the entries below dev-&gt;num_tc are valid in dev-&gt;tc_to_txq[], and<br \/>\ndev-&gt;prio_tc_map[] may only name classes below it. netdev_set_num_tc()<br \/>\nlowers dev-&gt;num_tc without touching either array.<\/p>\n<p>netdev_txq_to_tc() walks all TC_MAX_QUEUE slots and<br \/>\nnetdev_get_prio_tc_map() returns the entry as it stands, so a leftover<br \/>\nentry is handed out as a traffic class &gt;= dev-&gt;num_tc. Taking that<br \/>\nclass from netdev_txq_to_tc(), __netif_set_xps_queue() rejects only a<br \/>\nnegative one and indexes an XPS map sized for dev-&gt;num_tc classes:<\/p>\n<p>\ttci = j * num_tc + tc;<br \/>\n\tRCU_INIT_POINTER(new_dev_maps-&gt;attr_map[tci], map);<\/p>\n<p>attr_map[] holds nr_ids * num_tc entries and j runs over the ids named<br \/>\nin the mask, so a class that is not below num_tc pushes tci past the end<br \/>\nof the map for the last ids and the store overruns it.<\/p>\n<p>Any caller that lowers num_tc leaves such entries behind, and<br \/>\nmqprio_destroy() tears down with netdev_set_num_tc(dev, 0) rather than<br \/>\nnetdev_reset_tc(). After mqprio with 8 classes then 1, tc_to_txq[1..7]<br \/>\nstill describe txq 1..7. The splat is from an XPS write to txq 2 on a<br \/>\nveth with 8 rx queues: attr_map[] has 8 * 1 entries, tci = j + 2, and<br \/>\nj == 6 stores one past the end of the 88-byte map:<\/p>\n<p>  BUG: KASAN: slab-out-of-bounds in __netif_set_xps_queue (net\/core\/dev.c:2954)<br \/>\n  Write of size 8 at addr ffff88813016bc58 by task xps_oob\/634<br \/>\n   __netif_set_xps_queue (net\/core\/dev.c:2954)<br \/>\n   xps_rxqs_store (net\/core\/net-sysfs.c:1880)<br \/>\n   netdev_queue_attr_store (net\/core\/net-sysfs.c:1390)<br \/>\n  Allocated by task 634:<br \/>\n   __kmalloc_noprof (mm\/slub.c:5439)<br \/>\n   __netif_set_xps_queue (net\/core\/dev.c:2937)<br \/>\n  The buggy address is located 0 bytes to the right of<br \/>\n   allocated 88-byte region [ffff88813016bc00, ffff88813016bc58)<\/p>\n<p>Reject a class the map has no room for.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: xps: reject an out of range traffic class<\/p>\n<p>Only the entries below dev-&gt;num_tc are valid in dev-&gt;tc_to_txq[], and<br \/>\ndev-&gt;prio_tc_<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41039","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41039"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}