<?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://db.gcve.eu</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 21:15:27 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-90424 — iommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path</title>
      <link>https://db.gcve.eu/vuln/cve-2026-90424</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;iommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path&lt;/p&gt;
&lt;p&gt;tegra241_cmdqv_init_structures() allocates VINTF0 with kzalloc_obj(), inits
it, and preallocates its logical VCMDQs. Two of its error paths leak.&lt;/p&gt;
&lt;p&gt;When tegra241_cmdqv_init_vintf() fails it returns before VINTF0 reaches the
cmdqv-&amp;gt;vintfs[] array, so the devres unwind on probe failure cannot reach
it; free it directly there.&lt;/p&gt;
&lt;p&gt;A later VCMDQ preallocation failure instead leaves VINTF0 published, and so
this time the unwind does reach tegra241_cmdqv_remove_vintf(), which then
frees it from vintf-&amp;gt;hyp_own. But tegra241_vintf_hw_init() sets that flag
only afterward, from a HW read-back, so the still-uninited VINTF0 reads as
guest-owned and leaks, with mutex_destroy() and ida_destroy() run on fields
it never set up.&lt;/p&gt;
&lt;p&gt;Decide ownership from vintf-&amp;gt;idx instead, the index assigned when its id is
allocated: idx 0 is the kernel-owned VINTF0, while idx &amp;gt;= 1 marks a guest
VINTF. So the in-kernel free decision in tegra241_cmdqv_remove_vintf() and
tegra241_vintf_free_lvcmdq() now keys on idx too, and hyp_own stays a pure
HW-readback state.&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;iommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path&lt;/p&gt;
&lt;p&gt;tegra241_cmdqv_init_structures() allocates VINTF0 with kzalloc_obj(), inits
it, and preallocates its logical VCMDQs. Two of its error paths leak.&lt;/p&gt;
&lt;p&gt;When tegra241_cmdqv_init_vintf() fails it returns before VINTF0 reaches the
cmdqv-&amp;gt;vintfs[] array, so the devres unwind on probe failure cannot reach
it; free it directly there.&lt;/p&gt;
&lt;p&gt;A later VCMDQ preallocation failure instead leaves VINTF0 published, and so
this time the unwind does reach tegra241_cmdqv_remove_vintf(), which then
frees it from vintf-&amp;gt;hyp_own. But tegra241_vintf_hw_init() sets that flag
only afterward, from a HW read-back, so the still-uninited VINTF0 reads as
guest-owned and leaks, with mutex_destroy() and ida_destroy() run on fields
it never set up.&lt;/p&gt;
&lt;p&gt;Decide ownership from vintf-&amp;gt;idx instead, the index assigned when its id is
allocated: idx 0 is the kernel-owned VINTF0, while idx &amp;gt;= 1 marks a guest
VINTF. So the in-kernel free decision in tegra241_cmdqv_remove_vintf() and
tegra241_vintf_free_lvcmdq() now keys on idx too, and hyp_own stays a pure
HW-readback state.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-90424</guid>
    </item>
  </channel>
</rss>
