CVE-2026-68202

ALSA: seq: close a re-opened queue timer in the destructor

State
Published
Severity
7.8 High
Published
Aug 10, 2026
Updated
Oct 19, 2026
Reserved
Jul 30, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

ALSA: seq: close a re-opened queue timer in the destructor

queue_delete() closes the queue timer, then frees it. snd_seq_timer_close() clears q->timer->timeri. snd_use_lock_sync() then drains borrowers, and snd_seq_timer_delete() frees q->timer.

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.

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->timer with the instance still live. The queue is freed next.

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().

Reachable by an unprivileged user with access to /dev/snd/seq. No CAP and no queue ownership required.

Close any lingering instance in the destructor. There, ->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->timer. snd_timer_close() waits for any in-flight snd_seq_timer_interrupt() to finish, and that callback still reads q->timer (via snd_seq_check_queue()), so q->timer must stay valid until it drains.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before b7feeaca1f53b10df9b4de9eaf611767ca70dc92Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 7478ef94b49bc9789cf1a003deec58b42283dde4Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 9d9be6fc30f384f92c4e1b8ed40bd9d4796b7833Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before fb40d03ed792a8a8bf77aa0ee15df57b0ff78b07Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 24f0cabf173539f048946c8fc221131dc221f277Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 6a10025c7fd09a7d2af37a3ae1da188569fce470Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 31a6163e301d832060f8236f1ed17cbc1ca198dfAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 2c4dc0ed50b05cd847a4b34b8cebf0775f19aeb9Affected
LinuxLinux
  • 2.6.12Affected
  • before 2.6.12Not affected
  • 5.10.266 through 5.10.*Not affected
  • 5.15.217 through 5.15.*Not affected
  • 6.1.183 through 6.1.*Not affected
  • 6.6.148 through 6.6.*Not affected
  • 6.12.101 through 6.12.*Not affected
  • 6.18.42 through 6.18.*Not affected
  • 7.1.6 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.