{"id":29150,"date":"2026-09-25T20:31:59","date_gmt":"2026-09-25T12:31:59","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97994"},"modified":"2026-09-25T20:31:59","modified_gmt":"2026-09-25T12:31:59","slug":"cve-2026-97994","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97994","title":{"rendered":"CVE-2026-97994 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nvhost\/vdpa: reject VR"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>vhost\/vdpa: reject VRING_NUM larger than device max<\/p>\n<p>vhost_vring_set_num() accepts any non-zero power-of-two queue size that<br \/>\nfits in 16 bits. vhost-vdpa then passes that value to set_vq_num()<br \/>\nwithout comparing it with get_vq_num_max().<\/p>\n<p>A process with access to \/dev\/vhost-vdpa-* can therefore configure a<br \/>\nqueue larger than the device advertises. With vdpa_sim, the worker can<br \/>\nwalk descriptors beyond the mapped descriptor ring. KASAN reports a<br \/>\n16-byte out-of-bounds read, corresponding to one vring_desc, in the<br \/>\nvringh IOTLB path:<\/p>\n<p>  BUG: KASAN: out-of-bounds in _copy_from_iter<br \/>\n  Read of size 16<br \/>\n  copy_from_iotlb<br \/>\n  copydesc_iotlb<br \/>\n  vringh_getdesc_iotlb<br \/>\n  vdpasim_net_work<\/p>\n<p>Cache get_vq_num_max() immediately after reset. Some backends derive<br \/>\nit from writable queue-size state, so querying it after SET_NUM may<br \/>\nreturn the current size instead of the device capability. Invalidate<br \/>\nthe cached value before reset so a failed reset leaves SET_NUM<br \/>\ndisabled.<\/p>\n<p>For VHOST_SET_VRING_NUM, copy the complete vring state once and use<br \/>\nthe same index and size for validation, vq-&gt;num, and set_vq_num().<br \/>\nThis ensures that validation and use operate on the same copied values.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>vhost\/vdpa: reject VRING_NUM larger than device max<\/p>\n<p>vhost_vring_set_num() accepts any non-zero power-of-two queue size that<br \/>\nfits i<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29150","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29150","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=29150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}