<?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, 29 Sep 2026 03:15:16 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-40052 — smb: client: fix crypto buffers in non-linear memory</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-40052</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;smb: client: fix crypto buffers in non-linear memory&lt;/p&gt;
&lt;p&gt;The crypto API, through the scatterlist API, expects input buffers to be
in linear memory.  We handle this with the cifs_sg_set_buf() helper
that converts vmalloc&amp;#39;d memory to their corresponding pages.&lt;/p&gt;
&lt;p&gt;However, when we allocate our aead_request buffer (@creq in
smb2ops.c::crypt_message()), we do so with kvzalloc(), which possibly
puts aead_request-&amp;gt;__ctx in vmalloc area.&lt;/p&gt;
&lt;p&gt;AEAD algorithm then uses -&amp;gt;__ctx for its private/internal data and
operations, and uses sg_set_buf() for such data on a few places.&lt;/p&gt;
&lt;p&gt;This works fine as long as @creq falls into kmalloc zone (small
requests) or vmalloc&amp;#39;d memory is still within linear range.&lt;/p&gt;
&lt;p&gt;Tasks&amp;#39; stacks are vmalloc&amp;#39;d by default (CONFIG_VMAP_STACK=y), so too
many tasks will increment the base stacks&amp;#39; addresses to a point where
virt_addr_valid(buf) will fail (BUG() in sg_set_buf()) when that
happens.&lt;/p&gt;
&lt;p&gt;In practice: too many parallel reads and writes on an encrypted mount
will trigger this bug.&lt;/p&gt;
&lt;p&gt;To fix this, always alloc @creq with kmalloc() instead.
Also drop the @sensitive_size variable/arguments since
kfree_sensitive() doesn&amp;#39;t need it.&lt;/p&gt;
&lt;p&gt;Backtrace:&lt;/p&gt;
&lt;p&gt;[  945.272081] ------------[ cut here ]------------
[  945.272774] kernel BUG at include/linux/scatterlist.h:209!
[  945.273520] Oops: invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC NOPTI
[  945.274412] CPU: 7 UID: 0 PID: 56 Comm: kworker/u33:0 Kdump: loaded Not tainted 6.15.…&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;smb: client: fix crypto buffers in non-linear memory&lt;/p&gt;
&lt;p&gt;The crypto API, through the scatterlist API, expects input buffers to be
in linear memory.  We handle this with the cifs_sg_set_buf() helper
that converts vmalloc&amp;#39;d memory to their corresponding pages.&lt;/p&gt;
&lt;p&gt;However, when we allocate our aead_request buffer (@creq in
smb2ops.c::crypt_message()), we do so with kvzalloc(), which possibly
puts aead_request-&amp;gt;__ctx in vmalloc area.&lt;/p&gt;
&lt;p&gt;AEAD algorithm then uses -&amp;gt;__ctx for its private/internal data and
operations, and uses sg_set_buf() for such data on a few places.&lt;/p&gt;
&lt;p&gt;This works fine as long as @creq falls into kmalloc zone (small
requests) or vmalloc&amp;#39;d memory is still within linear range.&lt;/p&gt;
&lt;p&gt;Tasks&amp;#39; stacks are vmalloc&amp;#39;d by default (CONFIG_VMAP_STACK=y), so too
many tasks will increment the base stacks&amp;#39; addresses to a point where
virt_addr_valid(buf) will fail (BUG() in sg_set_buf()) when that
happens.&lt;/p&gt;
&lt;p&gt;In practice: too many parallel reads and writes on an encrypted mount
will trigger this bug.&lt;/p&gt;
&lt;p&gt;To fix this, always alloc @creq with kmalloc() instead.
Also drop the @sensitive_size variable/arguments since
kfree_sensitive() doesn&amp;#39;t need it.&lt;/p&gt;
&lt;p&gt;Backtrace:&lt;/p&gt;
&lt;p&gt;[  945.272081] ------------[ cut here ]------------
[  945.272774] kernel BUG at include/linux/scatterlist.h:209!
[  945.273520] Oops: invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC NOPTI
[  945.274412] CPU: 7 UID: 0 PID: 56 Comm: kworker/u33:0 Kdump: loaded Not tainted 6.15.…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-40052</guid>
    </item>
  </channel>
</rss>
