{"id":29226,"date":"2026-09-25T20:32:11","date_gmt":"2026-09-25T12:32:11","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98071"},"modified":"2026-09-25T20:32:11","modified_gmt":"2026-09-25T12:32:11","slug":"cve-2026-98071","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98071","title":{"rendered":"CVE-2026-98071 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnet\/rds: clear cp_fla"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net\/rds: clear cp_flags bits individually in rds_conn_path_reset()<\/p>\n<p>rds_conn_path_reset() wipes the whole flag word with a plain<br \/>\ncp-&gt;cp_flags = 0 store.  Every other accessor of that word uses<br \/>\natomic bitops, and some of them can run concurrently with the reset:<br \/>\nRDS_LL_SEND_FULL is set from rds_send_xmit() and cleared from the<br \/>\ntransport completion paths, neither of which holds anything that<br \/>\nexcludes the shutdown worker.  A plain store racing an atomic<br \/>\nread-modify-write on the same word is a data race, and whichever<br \/>\nside loses has its update silently discarded.<\/p>\n<p>Clear the two bits the reset is actually responsible for instead.<br \/>\nRDS_IN_XMIT and RDS_RECV_REFILL need no store at all here: they<br \/>\nbelong to the caller, rds_conn_shutdown(), which waits for both to be<br \/>\nclear before calling the transport shutdown and this reset.<\/p>\n<p>This also gives every bit in cp_flags a single well-defined writer<br \/>\ndiscipline, which the following patches rely on when they turn<br \/>\nRDS_IN_XMIT and RDS_RECV_REFILL into bit locks held across the<br \/>\nteardown: a blanket store mid-teardown would destroy lock ownership<br \/>\nthat an atomic clear preserves.<\/p>\n<p>Oracle UEK carries the same conversion (&#8220;net\/rds: Preserve essential<br \/>\nconnection state flags&#8221;), motivated by its asynchronous shutdown<br \/>\nstate machine, whose progress and destroy flags must survive the<br \/>\nreset.  UEK&#8217;s variant also clears RDS_IN_XMIT and RDS_RECV_REFILL<br \/>\nbecause there the reset runs as the final step of a teardown that<br \/>\nowns both bits, making those clears its unlock.  Upstream that<br \/>\nrelease belongs in rds_conn_shutdown(): once a later patch in this<br \/>\nseries turns the two bits into locks held across the teardown, ending<br \/>\nownership needs release semantics and a wake-up that a plain clear<br \/>\ninside the reset would not provide.<\/p>\n<p>Based on Oracle UEK commit &#8220;net\/rds: Preserve essential connection<br \/>\nstate flags&#8221; by Gerd Rausch.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net\/rds: clear cp_flags bits individually in rds_conn_path_reset()<\/p>\n<p>rds_conn_path_reset() wipes the whole flag word with a plain<br \/>\ncp<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29226","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29226","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=29226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}