<?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 10:30:13 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-68202 — ALSA: seq: close a re-opened queue timer in the destructor</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-68202</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: seq: close a re-opened queue timer in the destructor&lt;/p&gt;
&lt;p&gt;queue_delete() closes the queue timer, then frees it. snd_seq_timer_close()
clears q-&amp;gt;timer-&amp;gt;timeri. snd_use_lock_sync() then drains borrowers, and
snd_seq_timer_delete() frees q-&amp;gt;timer.&lt;/p&gt;
&lt;p&gt;A borrower can re-open the timer inside that window. A SET_QUEUE_CLIENT
that took a queueptr() use_lock reference before the queue was unlinked
runs snd_seq_timer_open() after the close. Open refuses re-open only while
timeri is set, and the close just cleared it, so it re-opens timeri.&lt;/p&gt;
&lt;p&gt;snd_seq_timer_delete() does not close that instance. Its snd_seq_timer_stop()
is a no-op, because running was cleared first. So it frees q-&amp;gt;timer with the
instance still live. The queue is freed next.&lt;/p&gt;
&lt;p&gt;The instance stays on the global timer with callback_data pointing at the
freed queue. A non-owner START on the unlocked queue arms it. The next tick
derefs the freed queue in snd_seq_timer_interrupt().&lt;/p&gt;
&lt;p&gt;Reachable by an unprivileged user with access to /dev/snd/seq. No CAP and
no queue ownership required.&lt;/p&gt;
&lt;p&gt;Close any lingering instance in the destructor. There, -&amp;gt;timeri can no
longer change: the queue is unlinked and all use_lock borrowers have
drained, so no snd_seq_queue_use() can re-open it. Close it before clearing
q-&amp;gt;timer. snd_timer_close() waits for any in-flight snd_seq_timer_interrupt()
to finish, and that callback still reads q-&amp;gt;timer (via snd_seq_check_queue()),
so q-&amp;gt;time…&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: seq: close a re-opened queue timer in the destructor&lt;/p&gt;
&lt;p&gt;queue_delete() closes the queue timer, then frees it. snd_seq_timer_close()
clears q-&amp;gt;timer-&amp;gt;timeri. snd_use_lock_sync() then drains borrowers, and
snd_seq_timer_delete() frees q-&amp;gt;timer.&lt;/p&gt;
&lt;p&gt;A borrower can re-open the timer inside that window. A SET_QUEUE_CLIENT
that took a queueptr() use_lock reference before the queue was unlinked
runs snd_seq_timer_open() after the close. Open refuses re-open only while
timeri is set, and the close just cleared it, so it re-opens timeri.&lt;/p&gt;
&lt;p&gt;snd_seq_timer_delete() does not close that instance. Its snd_seq_timer_stop()
is a no-op, because running was cleared first. So it frees q-&amp;gt;timer with the
instance still live. The queue is freed next.&lt;/p&gt;
&lt;p&gt;The instance stays on the global timer with callback_data pointing at the
freed queue. A non-owner START on the unlocked queue arms it. The next tick
derefs the freed queue in snd_seq_timer_interrupt().&lt;/p&gt;
&lt;p&gt;Reachable by an unprivileged user with access to /dev/snd/seq. No CAP and
no queue ownership required.&lt;/p&gt;
&lt;p&gt;Close any lingering instance in the destructor. There, -&amp;gt;timeri can no
longer change: the queue is unlinked and all use_lock borrowers have
drained, so no snd_seq_queue_use() can re-open it. Close it before clearing
q-&amp;gt;timer. snd_timer_close() waits for any in-flight snd_seq_timer_interrupt()
to finish, and that callback still reads q-&amp;gt;timer (via snd_seq_check_queue()),
so q-&amp;gt;time…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-68202</guid>
    </item>
  </channel>
</rss>
