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

ALSA: timer: Clear SNDRV_TIMER_IFLG_DEAD once the close completes

snd_timer_close_locked() marks an instance with SNDRV_TIMER_IFLG_DEAD
and returns early when the flag is already set, but the flag is never
cleared again. A completed close ends in remove_slave_links(), which
leaves timeri->timer NULL, so a second close is already harmless through
the timer == NULL path; the early return can only be reached by an
instance that was opened again in between. For such an instance the
close unlinks nothing, so snd_timer_instance_free() frees an object that
is still on timer->open_list_head, still on snd_timer_master_list if it
was opened with a slave key, still owns any adopted slaves, and still
holds its timer and module references.

snd_seq_timer_open() reopens an instance exactly like that: it retries
its fallback open on the same object after a failure that has already
run snd_timer_close_locked() internally. An unprivileged user with
access to /dev/snd/timer and /dev/snd/seq can force that failure, since
snd_timer_check_master() returns -EBUSY when a pending slave matches the
new master's (slave_class, slave_id) key and the target timer has
reached max_instances, and SNDRV_TIMER_IOCTL_SELECT with dev_class =
SNDRV_TIMER_CLASS_SLAVE keeps the caller-supplied dev_sclass, so a
sequencer queue's key can be forged. The freed instance is afterwards
dereferenced by any further snd_timer_open() on that timer, by
snd_timer_check_slave(), and by /proc/asound/timers, which faults on the
stale ti->owner pointer.

The flag only has to be visible while the close is in progress, which is
all its other users need. Clear it in remove_slave_links(), under the
same timer->lock that sets it, once the instance is off every list.
Published: 2026-08-15
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The ALSA timer code in the Linux kernel marks a timer instance with a DEAD flag upon close but fails to clear it after removal from internal lists. If the instance is reopened before the flag is cleared, the close routine returns early and the instance is freed while still linked to kernel structures. Subsequent operations such as snd_timer_open, snd_timer_check_slave, or reading /proc/asound/timers can dereference the stale instance, leading to a kernel fault. An attacker with local access to /dev/snd/timer and /dev/snd/seq can trigger the open‑close sequence that produces the state, causing a kernel crash. The description does not suggest any privilege escalation outcome, only that the crash results in a denial of service.

Affected Systems

All Linux kernels containing the unpatched ALSA timer implementation are vulnerable. The fix is part of the core kernel, so any distribution not yet updated to the branch that clears the DEAD flag after removal is affected. The vulnerability is not limited to a single kernel version but applies to any kernel built before the code change referenced by commit 0c561fab5.

Risk and Exploitability

The vulnerability's exploitation results in a kernel crash, causing denial of service to the local system. The CVSS score of 7.8 classifies this as high severity. The EPSS score of <1% indicates a very low probability of exploitation, and the vulnerability is not listed in CISA's KEV catalog. An unprivileged user who can read/write /dev/snd/timer and /dev/snd/seq can provoke the sequence that triggers the crash. The CVE payload does not mention any publicly disclosed exploits. Although no escalation is documented, the crash could be leveraged by a malicious user to disrupt system operation.

Generated by OpenCVE AI on August 18, 2026 at 02:31 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update to a kernel version that incorporates the ALSA timer fix (any kernel release following commit 0c561fab5).
  • Restrict access to /dev/snd/timer and /dev/snd/seq by setting them to privileged groups and removing world or group write permissions to prevent unprivileged triggers.
  • If audio functionality is not required, configure the kernel to disable the ALSA timer module, removing the vulnerable code path.

Generated by OpenCVE AI on August 18, 2026 at 02:31 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DSA Debian DSA DSA-6466-1 linux security update
History

Tue, 18 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-825
References
Metrics threat_severity

None

threat_severity

Important


Mon, 17 Aug 2026 14:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Mon, 17 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Mon, 17 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Sat, 15 Aug 2026 16:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Sat, 15 Aug 2026 12:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: ALSA: timer: Clear SNDRV_TIMER_IFLG_DEAD once the close completes snd_timer_close_locked() marks an instance with SNDRV_TIMER_IFLG_DEAD and returns early when the flag is already set, but the flag is never cleared again. A completed close ends in remove_slave_links(), which leaves timeri->timer NULL, so a second close is already harmless through the timer == NULL path; the early return can only be reached by an instance that was opened again in between. For such an instance the close unlinks nothing, so snd_timer_instance_free() frees an object that is still on timer->open_list_head, still on snd_timer_master_list if it was opened with a slave key, still owns any adopted slaves, and still holds its timer and module references. snd_seq_timer_open() reopens an instance exactly like that: it retries its fallback open on the same object after a failure that has already run snd_timer_close_locked() internally. An unprivileged user with access to /dev/snd/timer and /dev/snd/seq can force that failure, since snd_timer_check_master() returns -EBUSY when a pending slave matches the new master's (slave_class, slave_id) key and the target timer has reached max_instances, and SNDRV_TIMER_IOCTL_SELECT with dev_class = SNDRV_TIMER_CLASS_SLAVE keeps the caller-supplied dev_sclass, so a sequencer queue's key can be forged. The freed instance is afterwards dereferenced by any further snd_timer_open() on that timer, by snd_timer_check_slave(), and by /proc/asound/timers, which faults on the stale ti->owner pointer. The flag only has to be visible while the close is in progress, which is all its other users need. Clear it in remove_slave_links(), under the same timer->lock that sets it, once the instance is off every list.
Title ALSA: timer: Clear SNDRV_TIMER_IFLG_DEAD once the close completes
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-17T05:47:54.696Z

Reserved: 2026-08-15T05:44:03.908Z

Link: CVE-2026-74503

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T13:17:55.310

Modified: 2026-08-17T06:19:46.810

Link: CVE-2026-74503

cve-icon Redhat

Severity : Important

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-74503 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T02:45:03Z

Weaknesses