<?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 21:47:03 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-72446 — ALSA: usb-audio: qcom: reject stream disable with no active interface</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-72446</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;ALSA: usb-audio: qcom: reject stream disable with no active interface&lt;/p&gt;
&lt;p&gt;handle_uaudio_stream_req() resolves an interface index with
info_idx_from_ifnum(), which returns -EINVAL when no interface matches.
The enable branch and the response: cleanup label both guard against a
negative index, but the disable branch does not: it forms
info = &amp;amp;uadev[pcm_card_num].info[info_idx] and dereferences it.&lt;/p&gt;
&lt;p&gt;uadev[].info is a pointer allocated only when a stream is first enabled,
so a negative info_idx on the disable path is unsafe in two ways:&lt;/p&gt;
&lt;p&gt;- If the card was never enabled, .info is NULL and &amp;amp;info[-EINVAL] is a
   wild pointer; reading info-&amp;gt;data_ep_pipe faults (kernel oops).&lt;/p&gt;
&lt;p&gt;- If the card was enabled at least once (.info allocated) and the
   disable names an interface that does not match, &amp;amp;info[-EINVAL] points
   before the allocation; info-&amp;gt;data_ep_pipe / info-&amp;gt;sync_ep_pipe are an
   out-of-bounds slab read and, when non-zero, an out-of-bounds 4-byte
   write (both pipe fields are cleared to 0). That is memory corruption,
   not just a NULL dereference.&lt;/p&gt;
&lt;p&gt;The request is reachable from unprivileged local userspace over
AF_QIPCRTR. Reject a disable request with no resolved interface, matching
the guard the enable path already has.&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;ALSA: usb-audio: qcom: reject stream disable with no active interface&lt;/p&gt;
&lt;p&gt;handle_uaudio_stream_req() resolves an interface index with
info_idx_from_ifnum(), which returns -EINVAL when no interface matches.
The enable branch and the response: cleanup label both guard against a
negative index, but the disable branch does not: it forms
info = &amp;amp;uadev[pcm_card_num].info[info_idx] and dereferences it.&lt;/p&gt;
&lt;p&gt;uadev[].info is a pointer allocated only when a stream is first enabled,
so a negative info_idx on the disable path is unsafe in two ways:&lt;/p&gt;
&lt;p&gt;- If the card was never enabled, .info is NULL and &amp;amp;info[-EINVAL] is a
   wild pointer; reading info-&amp;gt;data_ep_pipe faults (kernel oops).&lt;/p&gt;
&lt;p&gt;- If the card was enabled at least once (.info allocated) and the
   disable names an interface that does not match, &amp;amp;info[-EINVAL] points
   before the allocation; info-&amp;gt;data_ep_pipe / info-&amp;gt;sync_ep_pipe are an
   out-of-bounds slab read and, when non-zero, an out-of-bounds 4-byte
   write (both pipe fields are cleared to 0). That is memory corruption,
   not just a NULL dereference.&lt;/p&gt;
&lt;p&gt;The request is reachable from unprivileged local userspace over
AF_QIPCRTR. Reject a disable request with no resolved interface, matching
the guard the enable path already has.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-72446</guid>
    </item>
  </channel>
</rss>
