diff options
| author | Cen Zhang <zzzccc427@gmail.com> | 2026-10-19 17:06:13 +0800 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2026-10-19 20:04:32 +0200 |
| commit | 762ef425cf0ac9c4b9e9e61e0da0950e16e6fbea (patch) | |
| tree | 70e003c44a5a6f55a9656b12f4d207571ff8b1d8 /scripts/Makefile.thinlto | |
| parent | a7d4d780f34b9e43eefab6a7e6c9f4101f2c144e (diff) | |
| download | linux-762ef425cf0ac9c4b9e9e61e0da0950e16e6fbea.tar.gz linux-762ef425cf0ac9c4b9e9e61e0da0950e16e6fbea.zip | |
ALSA: aloop: Keep the timer source alive until card release
The timer_source string must remain valid while PCM opens can select
and parse it. loopback_set_timer_source() allocates the string with
parent-device devres, which can release it while the card is still
registered.
A successful nonempty proc replacement after snd_card_register() adds
the string allocation after trigger_card_free. Unbinding the platform
device while snd_aloop remains loaded releases devres in reverse order.
An open for an unused cable can run after the string is freed and before
the card-free action disconnects the card:
Device unbind PCM open
devres_release_all()
free replacement string
snd_pcm_open()
snd_card_file_add()
loopback_open()
loopback_snd_timer_open()
loopback_parse_timer_id()
trigger_card_free()
snd_card_free()
snd_card_disconnect()
The parser can then read freed memory. KASAN has reported a one-byte
use-after-free read in strchr() from loopback_snd_timer_open(). The
cable_lock mutex serializes explicit replacements with opens, but
implicit devres release does not take it. The card and module references
held by PCM open do not retain this separate devres allocation.
Use kstrdup() and release the current string from card->private_free.
PCM admission already retains the card until each file is removed, and
card disconnect drains proc callbacks before final card release. This
keeps the string alive across admitted PCM opens and preserves the
cable_lock serialization of replacements. Install the callback before
the initial allocation so probe failures also release the string.
Fixes: b072e65aadd6 ("ALSA: aloop: Allocate resources with device-managed APIs")
Signed-off-by: Cen Zhang <zzzccc427@gmail.com>
Assisted-by: LLM
Link: https://patch.msgid.link/pm-pmb-71a33a26d68356e3ade7-v1-108d86919c5c92fe1ea8@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
