<?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>Tue, 06 Oct 2026 04:32:52 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64437 — ksmbd: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64437</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: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL&lt;/p&gt;
&lt;p&gt;Commit f580d27e8928 (&amp;#34;ksmbd: fix use-after-free of a deferred file_lock on
double SMB2_CANCEL&amp;#34;) made smb2_cancel() skip a work whose state is
KSMBD_WORK_CANCELLED, so its cancel_fn cannot be fired a second time. But
KSMBD_WORK has three states (ACTIVE, CANCELLED, CLOSED), and the same
freeing producer path is reached for CLOSED too:&lt;/p&gt;
&lt;p&gt;SMB2_CLOSE on the locking handle -&amp;gt; set_close_state_blocked_works() sets
  the deferred work&amp;#39;s state to KSMBD_WORK_CLOSED and wakes the smb2_lock()
  worker. The worker takes the non-ACTIVE early-exit, locks_free_lock()s
  the file_lock and, because the state is not KSMBD_WORK_CANCELLED, takes
  the STATUS_RANGE_NOT_LOCKED branch with &amp;#34;goto out2&amp;#34; -- which, like the
  cancelled branch, skips release_async_work(). The work stays on
  conn-&amp;gt;async_requests with a live cancel_fn = smb2_remove_blocked_lock
  pointing at the freed file_lock.&lt;/p&gt;
&lt;p&gt;A subsequent SMB2_CANCEL for the same AsyncId then passes the
KSMBD_WORK_CANCELLED-only guard (its state is KSMBD_WORK_CLOSED), so
smb2_cancel() fires cancel_fn again over the freed file_lock -- the same
use-after-free fixed, via SMB2_CLOSE instead of a first SMB2_CANCEL:&lt;/p&gt;
&lt;p&gt;BUG: KASAN: slab-use-after-free in __locks_delete_block
    __locks_delete_block
    locks_delete_block
    ksmbd_vfs_posix_lock_unblock
    smb2_remove_blocked_lock
    smb2_cancel…&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: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL&lt;/p&gt;
&lt;p&gt;Commit f580d27e8928 (&amp;#34;ksmbd: fix use-after-free of a deferred file_lock on
double SMB2_CANCEL&amp;#34;) made smb2_cancel() skip a work whose state is
KSMBD_WORK_CANCELLED, so its cancel_fn cannot be fired a second time. But
KSMBD_WORK has three states (ACTIVE, CANCELLED, CLOSED), and the same
freeing producer path is reached for CLOSED too:&lt;/p&gt;
&lt;p&gt;SMB2_CLOSE on the locking handle -&amp;gt; set_close_state_blocked_works() sets
  the deferred work&amp;#39;s state to KSMBD_WORK_CLOSED and wakes the smb2_lock()
  worker. The worker takes the non-ACTIVE early-exit, locks_free_lock()s
  the file_lock and, because the state is not KSMBD_WORK_CANCELLED, takes
  the STATUS_RANGE_NOT_LOCKED branch with &amp;#34;goto out2&amp;#34; -- which, like the
  cancelled branch, skips release_async_work(). The work stays on
  conn-&amp;gt;async_requests with a live cancel_fn = smb2_remove_blocked_lock
  pointing at the freed file_lock.&lt;/p&gt;
&lt;p&gt;A subsequent SMB2_CANCEL for the same AsyncId then passes the
KSMBD_WORK_CANCELLED-only guard (its state is KSMBD_WORK_CLOSED), so
smb2_cancel() fires cancel_fn again over the freed file_lock -- the same
use-after-free fixed, via SMB2_CLOSE instead of a first SMB2_CANCEL:&lt;/p&gt;
&lt;p&gt;BUG: KASAN: slab-use-after-free in __locks_delete_block
    __locks_delete_block
    locks_delete_block
    ksmbd_vfs_posix_lock_unblock
    smb2_remove_blocked_lock
    smb2_cancel…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64437</guid>
    </item>
  </channel>
</rss>
