<?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>Mon, 28 Sep 2026 07:49:11 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-46147 — KVM: arm64: Fix pin leak and publication ordering in __pkvm_init_vcpu()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-46147</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;KVM: arm64: Fix pin leak and publication ordering in __pkvm_init_vcpu()&lt;/p&gt;
&lt;p&gt;Two bugs exist in the vCPU initialisation path:&lt;/p&gt;
&lt;p&gt;1. If a check fails after hyp_pin_shared_mem() succeeds, the cleanup
   path jumps to &amp;#39;unlock&amp;#39; without calling unpin_host_vcpu() or
   unpin_host_sve_state(), permanently leaking pin references on the
   host vCPU and SVE state pages.&lt;/p&gt;
&lt;p&gt;Extract a register_hyp_vcpu() helper that performs the checks and
   the store. When register_hyp_vcpu() returns an error, call
   unpin_host_vcpu() and unpin_host_sve_state() inline before falling
   through to the existing &amp;#39;unlock&amp;#39; label.&lt;/p&gt;
&lt;p&gt;2. register_hyp_vcpu() publishes the new vCPU pointer into
   &amp;#39;hyp_vm-&amp;gt;vcpus[]&amp;#39; with a bare store, allowing a concurrent caller
   of pkvm_load_hyp_vcpu() to observe a partially initialised vCPU
   object.&lt;/p&gt;
&lt;p&gt;Ensure the store uses smp_store_release() and the load uses
   smp_load_acquire(). While &amp;#39;vm_table_lock&amp;#39; currently serialises the
   store and the load, these barriers ensure the reader sees the fully
   initialised &amp;#39;hyp_vcpu&amp;#39; object even if there were a lockless path or
   if the lock&amp;#39;s own ordering guarantees were insufficient for nested
   object initialization.&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;KVM: arm64: Fix pin leak and publication ordering in __pkvm_init_vcpu()&lt;/p&gt;
&lt;p&gt;Two bugs exist in the vCPU initialisation path:&lt;/p&gt;
&lt;p&gt;1. If a check fails after hyp_pin_shared_mem() succeeds, the cleanup
   path jumps to &amp;#39;unlock&amp;#39; without calling unpin_host_vcpu() or
   unpin_host_sve_state(), permanently leaking pin references on the
   host vCPU and SVE state pages.&lt;/p&gt;
&lt;p&gt;Extract a register_hyp_vcpu() helper that performs the checks and
   the store. When register_hyp_vcpu() returns an error, call
   unpin_host_vcpu() and unpin_host_sve_state() inline before falling
   through to the existing &amp;#39;unlock&amp;#39; label.&lt;/p&gt;
&lt;p&gt;2. register_hyp_vcpu() publishes the new vCPU pointer into
   &amp;#39;hyp_vm-&amp;gt;vcpus[]&amp;#39; with a bare store, allowing a concurrent caller
   of pkvm_load_hyp_vcpu() to observe a partially initialised vCPU
   object.&lt;/p&gt;
&lt;p&gt;Ensure the store uses smp_store_release() and the load uses
   smp_load_acquire(). While &amp;#39;vm_table_lock&amp;#39; currently serialises the
   store and the load, these barriers ensure the reader sees the fully
   initialised &amp;#39;hyp_vcpu&amp;#39; object even if there were a lockless path or
   if the lock&amp;#39;s own ordering guarantees were insufficient for nested
   object initialization.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-46147</guid>
    </item>
  </channel>
</rss>
