{"id":25615,"date":"2026-09-18T04:31:38","date_gmt":"2026-09-17T20:31:38","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-90206"},"modified":"2026-09-18T04:31:38","modified_gmt":"2026-09-17T20:31:38","slug":"cve-2026-90206","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-90206","title":{"rendered":"CVE-2026-90206 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnvmet: fix max_qid ra"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nvmet: fix max_qid race between configfs and controller allocation<\/p>\n<p>The function nvmet_subsys_attr_qid_max_store() can race against<br \/>\nnvmet_alloc_ctrl() when a subsystem&#8217;s max_qid limit is modified.<\/p>\n<p>Suppose max_qid is currently 64. If nvmet_alloc_ctrl() executes:<br \/>\nctrl-&gt;sqs = kzalloc_objs(struct nvmet_sq *, subsys-&gt;max_qid + 1);<br \/>\nand at this exact point, a userspace process changes max_qid to 128,<br \/>\nnvmet_subsys_attr_qid_max_store() will set the new max_qid value. It<br \/>\nattempts to delete active controllers to force a reconnect, but the<br \/>\nnew controller won&#8217;t be deleted because it hasn&#8217;t been added to the<br \/>\nsubsys-&gt;ctrls list yet.<\/p>\n<p>nvmet_alloc_ctrl() then proceeds and adds the new controller to the<br \/>\nsubsys-&gt;ctrls list. Later, when nvmet_install_queue() is called, it<br \/>\nwill see max_qid set to 128, but the memory allocated for sqs is only<br \/>\nsized for 64 entries. This results in a KASAN out-of-bounds warning<br \/>\nand potential memory corruptions.<\/p>\n<p>Fix this by protecting the queue allocations and list insertion in<br \/>\nnvmet_alloc_ctrl() with down_read(&amp;nvmet_config_sem). Because<br \/>\nnvmet_subsys_attr_qid_max_store() acquires down_write(&amp;nvmet_config_sem)<br \/>\nto modify the attribute, this safely prevents the configfs writer from<br \/>\nmodifying max_qid during controller creation.<\/p>\n<p>Copy the max_qid from the subsystem to the controller&#8217;s structure<br \/>\nduring the allocation; ctrl-&gt;max_qid never changes as long as the<br \/>\ncontroller remains in LIVE state, so this will prevent similar race<br \/>\nconditions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nvmet: fix max_qid race between configfs and controller allocation<\/p>\n<p>The function nvmet_subsys_attr_qid_max_store() can race against<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-25615","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/25615","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=25615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}