<?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>Fri, 02 Oct 2026 11:52:53 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64064 — netfs: Fix netfs_invalidate_folio() to clear dirty bit if all changes gone</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64064</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;netfs: Fix netfs_invalidate_folio() to clear dirty bit if all changes gone&lt;/p&gt;
&lt;p&gt;If a streaming write is made, this will leave the relevant modified folio
in a not-uptodate, but dirty state with a netfs_folio struct hung off of
folio-&amp;gt;private indicating the dirty range.  Subsequently truncating the
file such that the dirty data in the folio is removed, but the first part
of the folio theoretically remains will cause the netfs_folio struct to be
discarded... but will leave the dirty flag set.&lt;/p&gt;
&lt;p&gt;If the folio is then read via mmap(), netfs_read_folio() will see that the
page is dirty and jump to netfs_read_gaps() to fill in the missing bits.
netfs_read_gaps(), however, expects there to be a netfs_folio struct
present and can oops because truncate removed it.&lt;/p&gt;
&lt;p&gt;Fix this by calling folio_cancel_dirty() in netfs_invalidate_folio() in the
event that all the dirty data in the folio is erased (as nfs does).&lt;/p&gt;
&lt;p&gt;Also add some tracepoints to log modifications to a dirty page.&lt;/p&gt;
&lt;p&gt;This can be reproduced with something like:&lt;/p&gt;
&lt;p&gt;dd if=/dev/zero of=/xfstest.test/foo bs=1M count=1
    umount /xfstest.test
    mount /xfstest.test
    xfs_io -c &amp;#34;w 0xbbbf 0xf96c&amp;#34; \
           -c &amp;#34;truncate 0xbbbf&amp;#34; \
           -c &amp;#34;mmap -r 0xb000 0x11000&amp;#34; \
           -c &amp;#34;mr 0xb000 0x11000&amp;#34; \
           /xfstest.test/foo&lt;/p&gt;
&lt;p&gt;with fscaching disabled (otherwise streaming writes are suppressed) and a
change to netfs_perform_write() to disallow streaming writes…&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;netfs: Fix netfs_invalidate_folio() to clear dirty bit if all changes gone&lt;/p&gt;
&lt;p&gt;If a streaming write is made, this will leave the relevant modified folio
in a not-uptodate, but dirty state with a netfs_folio struct hung off of
folio-&amp;gt;private indicating the dirty range.  Subsequently truncating the
file such that the dirty data in the folio is removed, but the first part
of the folio theoretically remains will cause the netfs_folio struct to be
discarded... but will leave the dirty flag set.&lt;/p&gt;
&lt;p&gt;If the folio is then read via mmap(), netfs_read_folio() will see that the
page is dirty and jump to netfs_read_gaps() to fill in the missing bits.
netfs_read_gaps(), however, expects there to be a netfs_folio struct
present and can oops because truncate removed it.&lt;/p&gt;
&lt;p&gt;Fix this by calling folio_cancel_dirty() in netfs_invalidate_folio() in the
event that all the dirty data in the folio is erased (as nfs does).&lt;/p&gt;
&lt;p&gt;Also add some tracepoints to log modifications to a dirty page.&lt;/p&gt;
&lt;p&gt;This can be reproduced with something like:&lt;/p&gt;
&lt;p&gt;dd if=/dev/zero of=/xfstest.test/foo bs=1M count=1
    umount /xfstest.test
    mount /xfstest.test
    xfs_io -c &amp;#34;w 0xbbbf 0xf96c&amp;#34; \
           -c &amp;#34;truncate 0xbbbf&amp;#34; \
           -c &amp;#34;mmap -r 0xb000 0x11000&amp;#34; \
           -c &amp;#34;mr 0xb000 0x11000&amp;#34; \
           /xfstest.test/foo&lt;/p&gt;
&lt;p&gt;with fscaching disabled (otherwise streaming writes are suppressed) and a
change to netfs_perform_write() to disallow streaming writes…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64064</guid>
    </item>
  </channel>
</rss>
