<?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:24:41 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-35873 — riscv: Fix vector state restore in rt_sigreturn()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-35873</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;riscv: Fix vector state restore in rt_sigreturn()&lt;/p&gt;
&lt;p&gt;The RISC-V Vector specification states in &amp;#34;Appendix D: Calling
Convention for Vector State&amp;#34; [1] that &amp;#34;Executing a system call causes
all caller-saved vector registers (v0-v31, vl, vtype) and vstart to
become unspecified.&amp;#34;. In the RISC-V kernel this is called &amp;#34;discarding
the vstate&amp;#34;.&lt;/p&gt;
&lt;p&gt;Returning from a signal handler via the rt_sigreturn() syscall, vector
discard is also performed. However, this is not an issue since the
vector state should be restored from the sigcontext, and therefore not
care about the vector discard.&lt;/p&gt;
&lt;p&gt;The &amp;#34;live state&amp;#34; is the actual vector register in the running context,
and the &amp;#34;vstate&amp;#34; is the vector state of the task. A dirty live state,
means that the vstate and live state are not in synch.&lt;/p&gt;
&lt;p&gt;When vectorized user_from_copy() was introduced, an bug sneaked in at
the restoration code, related to the discard of the live state.&lt;/p&gt;
&lt;p&gt;An example when this go wrong:&lt;/p&gt;
&lt;p&gt;1. A userland application is executing vector code
  2. The application receives a signal, and the signal handler is
     entered.
  3. The application returns from the signal handler, using the
     rt_sigreturn() syscall.
  4. The live vector state is discarded upon entering the
     rt_sigreturn(), and the live state is marked as &amp;#34;dirty&amp;#34;, indicating
     that the live state need to be synchronized with the current
     vstate.
  5. rt_sigreturn() restores the vstate, except the V…&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;riscv: Fix vector state restore in rt_sigreturn()&lt;/p&gt;
&lt;p&gt;The RISC-V Vector specification states in &amp;#34;Appendix D: Calling
Convention for Vector State&amp;#34; [1] that &amp;#34;Executing a system call causes
all caller-saved vector registers (v0-v31, vl, vtype) and vstart to
become unspecified.&amp;#34;. In the RISC-V kernel this is called &amp;#34;discarding
the vstate&amp;#34;.&lt;/p&gt;
&lt;p&gt;Returning from a signal handler via the rt_sigreturn() syscall, vector
discard is also performed. However, this is not an issue since the
vector state should be restored from the sigcontext, and therefore not
care about the vector discard.&lt;/p&gt;
&lt;p&gt;The &amp;#34;live state&amp;#34; is the actual vector register in the running context,
and the &amp;#34;vstate&amp;#34; is the vector state of the task. A dirty live state,
means that the vstate and live state are not in synch.&lt;/p&gt;
&lt;p&gt;When vectorized user_from_copy() was introduced, an bug sneaked in at
the restoration code, related to the discard of the live state.&lt;/p&gt;
&lt;p&gt;An example when this go wrong:&lt;/p&gt;
&lt;p&gt;1. A userland application is executing vector code
  2. The application receives a signal, and the signal handler is
     entered.
  3. The application returns from the signal handler, using the
     rt_sigreturn() syscall.
  4. The live vector state is discarded upon entering the
     rt_sigreturn(), and the live state is marked as &amp;#34;dirty&amp;#34;, indicating
     that the live state need to be synchronized with the current
     vstate.
  5. rt_sigreturn() restores the vstate, except the V…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-35873</guid>
    </item>
  </channel>
</rss>
