<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Thu, 01 Oct 2026 05:34:32 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-26759 — mm/swap: fix race when skipping swapcache</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-26759</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;mm/swap: fix race when skipping swapcache&lt;/p&gt;
&lt;p&gt;When skipping swapcache for SWP_SYNCHRONOUS_IO, if two or more threads
swapin the same entry at the same time, they get different pages (A, B). 
Before one thread (T0) finishes the swapin and installs page (A) to the
PTE, another thread (T1) could finish swapin of page (B), swap_free the
entry, then swap out the possibly modified page reusing the same entry. 
It breaks the pte_same check in (T0) because PTE value is unchanged,
causing ABA problem.  Thread (T0) will install a stalled page (A) into the
PTE and cause data corruption.&lt;/p&gt;
&lt;p&gt;One possible callstack is like this:&lt;/p&gt;
&lt;p&gt;CPU0                                 CPU1
----                                 ----
do_swap_page()                       do_swap_page() with same entry
&amp;lt;direct swapin path&amp;gt;                 &amp;lt;direct swapin path&amp;gt;
&amp;lt;alloc page A&amp;gt;                       &amp;lt;alloc page B&amp;gt;
swap_read_folio() &amp;lt;- read to page A  swap_read_folio() &amp;lt;- read to page B
&amp;lt;slow on later locks or interrupt&amp;gt;   &amp;lt;finished swapin first&amp;gt;
...                                  set_pte_at()
                                     swap_free() &amp;lt;- entry is free
                                     &amp;lt;write to page B, now page A stalled&amp;gt;
                                     &amp;lt;swap out page B to same swap entry&amp;gt;
pte_same() &amp;lt;- Check pass, PTE seems
              unchanged, but page A
              is stalled!
swap_free() &amp;lt;- page B content lost!
set_pte_at() &amp;lt;-…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;mm/swap: fix race when skipping swapcache&lt;/p&gt;
&lt;p&gt;When skipping swapcache for SWP_SYNCHRONOUS_IO, if two or more threads
swapin the same entry at the same time, they get different pages (A, B). 
Before one thread (T0) finishes the swapin and installs page (A) to the
PTE, another thread (T1) could finish swapin of page (B), swap_free the
entry, then swap out the possibly modified page reusing the same entry. 
It breaks the pte_same check in (T0) because PTE value is unchanged,
causing ABA problem.  Thread (T0) will install a stalled page (A) into the
PTE and cause data corruption.&lt;/p&gt;
&lt;p&gt;One possible callstack is like this:&lt;/p&gt;
&lt;p&gt;CPU0                                 CPU1
----                                 ----
do_swap_page()                       do_swap_page() with same entry
&amp;lt;direct swapin path&amp;gt;                 &amp;lt;direct swapin path&amp;gt;
&amp;lt;alloc page A&amp;gt;                       &amp;lt;alloc page B&amp;gt;
swap_read_folio() &amp;lt;- read to page A  swap_read_folio() &amp;lt;- read to page B
&amp;lt;slow on later locks or interrupt&amp;gt;   &amp;lt;finished swapin first&amp;gt;
...                                  set_pte_at()
                                     swap_free() &amp;lt;- entry is free
                                     &amp;lt;write to page B, now page A stalled&amp;gt;
                                     &amp;lt;swap out page B to same swap entry&amp;gt;
pte_same() &amp;lt;- Check pass, PTE seems
              unchanged, but page A
              is stalled!
swap_free() &amp;lt;- page B content lost!
set_pte_at() &amp;lt;-…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-26759</guid>
    </item>
  </channel>
</rss>
