2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/sound/core
Takashi Iwai c9ce148ea7 ALSA: seq: Avoid module auto-load handling at event delivery
snd_seq_client_use_ptr() is supposed to return the snd_seq_client
object for the given client ID, and it tries to handle the module
auto-loading when no matching object is found.  Although the module
handling is performed only conditionally with "!in_interrupt()", this
condition may be fragile, e.g. when the code is called from the ALSA
timer callback where the spinlock is temporarily disabled while the
irq is disabled.  Then his doesn't fit well and spews the error about
sleep from invalid context, as complained recently by syzbot.

Also, in general, handling the module-loading at each time if no
matching object is found is really an overkill.  It can be still
useful when performed at the top-level ioctl or proc reads, but it
shouldn't be done at event delivery at all.

For addressing the issues above, this patch disables the module
handling in snd_seq_client_use_ptr() in normal cases like event
deliveries, but allow only in limited and safe situations.
A new function client_load_and_use_ptr() is used for the cases where
the module loading can be done safely, instead.

Reported-by: syzbot+4cb9fad083898f54c517@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/67c272e5.050a0220.dc10f.0159.GAE@google.com
Cc: <stable@vger.kernel.org>
Link: https://patch.msgid.link/20250301114530.8975-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2025-03-02 08:27:52 +01:00
..
oss ASoC: Fixes for v6.12 2024-10-02 21:29:16 +02:00
seq ALSA: seq: Avoid module auto-load handling at event delivery 2025-03-02 08:27:52 +01:00
.kunitconfig ALSA: core: add kunitconfig 2024-03-17 09:36:45 +01:00
compress_offload.c ALSA: compress_offload: fix remaining descriptor races in sound/core/compress_offload.c 2024-12-30 11:49:38 +01:00
control_compat.c Merge branch 'topic/control-lookup-rwlock' into for-next 2024-08-09 14:25:24 +02:00
control_led.c ALSA: control: Avoid WARN() for symlink errors 2024-12-10 12:32:34 +01:00
control.c ASoC: Fixes for v6.12 2024-10-02 21:29:16 +02:00
ctljack.c ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
device.c ALSA: core: Fix missing return value comments for kernel docs 2022-07-13 13:42:38 +02:00
hrtimer.c ALSA: Switch to use hrtimer_setup() 2025-02-10 09:26:31 +01:00
hwdep_compat.c ALSA: compat_ioctl: avoid compat_alloc_user_space 2020-09-21 10:37:07 +02:00
hwdep.c ALSA: hwdep: Move put_user() call out of scoped_guard() in snd_hwdep_control_ioctl() 2024-03-01 18:10:57 +01:00
info_oss.c ALSA: info: Use guard() for locking 2024-02-28 15:01:21 +01:00
info.c ALSA: info: Use guard() for locking 2024-02-28 15:01:21 +01:00
init.c ALSA: core: add isascii() check to card ID generator 2024-10-03 09:16:58 +02:00
isadma.c sound updates for 6.0-rc1 2022-08-06 10:19:51 -07:00
jack.c ALSA: core: Remove debugfs at disconnection 2024-05-27 09:28:21 +02:00
Kconfig ALSA: compress_offload: introduce accel operation mode 2024-10-25 10:53:20 +02:00
Makefile ALSA: core: Use *-y instead of *-objs in Makefile 2024-05-08 18:17:32 +02:00
memalloc.c ALSA: memalloc: prefer dma_mapping_error() over explicit address checking 2024-12-20 09:54:12 +01:00
memory.c ALSA: Align the syntax of iov_iter helpers with standard ones 2024-12-30 12:50:04 +01:00
misc.c ALSA: core: Drop snd_print stuff and co 2024-08-08 07:49:47 +02:00
pcm_compat.c ALSA: pcm: Use guard() for PCM stream locks 2024-02-28 15:01:22 +01:00
pcm_dmaengine.c ALSA: pcm_dmaengine: Don't synchronize DMA channel when DMA is paused 2024-07-17 10:39:47 +02:00
pcm_drm_eld.c drm/edid: include drm_eld.h only where required 2023-11-09 16:47:31 +02:00
pcm_iec958.c ALSA: iec958: Split status creation and fill 2021-06-08 17:05:41 +02:00
pcm_lib.c ALSA: pcm: Add xrun counter for snd_pcm_substream 2024-08-10 10:40:58 +02:00
pcm_local.h ALSA: pcm: Revert "ALSA: pcm: rewrite snd_pcm_playback_silence()" 2023-05-05 18:23:48 +02:00
pcm_memory.c ALSA: pcm: Fix yet more compile warning at replacement with kstrtoul() 2024-09-02 10:17:42 +02:00
pcm_misc.c ALSA: pcm: Fix breakage of PCM rates used for topology 2024-09-11 16:17:44 +02:00
pcm_native.c ALSA: pcm: use new array-copying-wrapper 2025-01-28 08:48:08 +01:00
pcm_param_trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pcm_timer.c ALSA: pcm_timer: use snd_pcm_direction_name() 2024-08-01 12:50:13 +02:00
pcm_trace.h tracing/treewide: Remove second parameter of __assign_str() 2024-05-22 20:14:47 -04:00
pcm.c ALSA: pcm: Add xrun counter for snd_pcm_substream 2024-08-10 10:40:58 +02:00
rawmidi_compat.c ALSA: rawmidi: Replace with __packed attribute 2023-10-26 09:42:55 +02:00
rawmidi.c ALSA: rawmidi: Make tied_device=0 as default / unknown 2025-01-14 16:52:07 +01:00
seq_device.c driver core: have match() callback in struct bus_type take a const * 2024-07-03 15:16:54 +02:00
sound_kunit.c ALSA: core: Fix possible NULL dereference caused by kunit_kzalloc() 2024-11-27 08:06:31 +01:00
sound_oss.c ALSA: core: Use guard() for locking 2024-02-28 15:01:21 +01:00
sound.c ALSA: Fix typos in comments across various files 2024-09-30 09:52:31 +02:00
timer_compat.c ALSA: timer: Use guard() for locking 2024-02-28 15:01:20 +01:00
timer.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
ump_convert.c ALSA: ump: Explicitly reset RPN with Null RPN 2024-07-31 15:08:39 +02:00
ump.c ALSA: rawmidi: Make tied_device=0 as default / unknown 2025-01-14 16:52:07 +01:00
vmaster.c ALSA: vmaster: Return error for invalid input values 2024-06-18 12:00:18 +02:00