<?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>Wed, 30 Sep 2026 22:32:11 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64142 — ksmbd: close durable scavenger races against m_fp_list lookups</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64142</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;ksmbd: close durable scavenger races against m_fp_list lookups&lt;/p&gt;
&lt;p&gt;ksmbd_durable_scavenger() has two related races against any walker
that iterates f_ci-&amp;gt;m_fp_list, including ksmbd_lookup_fd_inode()
(used by ksmbd_vfs_rename) and the share-mode checks in
fs/smb/server/smb_common.c.&lt;/p&gt;
&lt;p&gt;(1) fp-&amp;gt;node list-head reuse.  Durable-preserved handles can remain
linked on f_ci-&amp;gt;m_fp_list after session teardown so share-mode checks
still see them while the handle is reconnectable.  The scavenger
collected expired handles by adding fp-&amp;gt;node to a local
scavenger_list after removing them from the global durable idr.
Because fp-&amp;gt;node is the same list_head used by m_fp_list,
list_add(&amp;amp;fp-&amp;gt;node, &amp;amp;scavenger_list) overwrites the m_fp_list links
and corrupts both lists.  CONFIG_DEBUG_LIST can report this on the
share-mode walk path.&lt;/p&gt;
&lt;p&gt;(2) Refcount race against m_fp_list walkers.  The scavenger qualifies
an expired durable handle with atomic_read(&amp;amp;fp-&amp;gt;refcount) &amp;gt; 1 and
fp-&amp;gt;conn under global_ft.lock, removes fp from global_ft, then drops
global_ft.lock before unlinking fp from m_fp_list and freeing it.
During that gap fp is still linked on m_fp_list with f_state ==
FP_INITED.  ksmbd_lookup_fd_inode() under m_lock read calls
ksmbd_fp_get() (atomic_inc_not_zero on refcount that is still 1) and
takes a live reference; the scavenger then unlinks and frees fp
while the holder owns a reference, leading to UAF on the holder&amp;#39;s
subsequent ksmbd…&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;ksmbd: close durable scavenger races against m_fp_list lookups&lt;/p&gt;
&lt;p&gt;ksmbd_durable_scavenger() has two related races against any walker
that iterates f_ci-&amp;gt;m_fp_list, including ksmbd_lookup_fd_inode()
(used by ksmbd_vfs_rename) and the share-mode checks in
fs/smb/server/smb_common.c.&lt;/p&gt;
&lt;p&gt;(1) fp-&amp;gt;node list-head reuse.  Durable-preserved handles can remain
linked on f_ci-&amp;gt;m_fp_list after session teardown so share-mode checks
still see them while the handle is reconnectable.  The scavenger
collected expired handles by adding fp-&amp;gt;node to a local
scavenger_list after removing them from the global durable idr.
Because fp-&amp;gt;node is the same list_head used by m_fp_list,
list_add(&amp;amp;fp-&amp;gt;node, &amp;amp;scavenger_list) overwrites the m_fp_list links
and corrupts both lists.  CONFIG_DEBUG_LIST can report this on the
share-mode walk path.&lt;/p&gt;
&lt;p&gt;(2) Refcount race against m_fp_list walkers.  The scavenger qualifies
an expired durable handle with atomic_read(&amp;amp;fp-&amp;gt;refcount) &amp;gt; 1 and
fp-&amp;gt;conn under global_ft.lock, removes fp from global_ft, then drops
global_ft.lock before unlinking fp from m_fp_list and freeing it.
During that gap fp is still linked on m_fp_list with f_state ==
FP_INITED.  ksmbd_lookup_fd_inode() under m_lock read calls
ksmbd_fp_get() (atomic_inc_not_zero on refcount that is still 1) and
takes a live reference; the scavenger then unlinks and frees fp
while the holder owns a reference, leading to UAF on the holder&amp;#39;s
subsequent ksmbd…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64142</guid>
    </item>
  </channel>
</rss>
