Re: [PATCH 1/2] ALSA: hwdep: Serialize DSP load requests

From: Takashi Iwai

Date: Sat Oct 31 2026 - 12:01:08 EST


On Thu, 29 Oct 2026 09:48:09 +0100,
YuanZhe Liu wrote:
>
> The check of the loaded DSP indices and the call of the driver's
> dsp_load callback in snd_hwdep_dsp_load() are not serialized. A hwdep
> file descriptor can be shared among threads, or inherited across fork,
> so two SNDRV_HWDEP_IOCTL_DSP_LOAD requests for the same index can both
> observe the index as unloaded and enter the driver's callback
> concurrently, even though the device itself is opened exclusively.
>
> This breaks the assumption behind hw->dsp_loaded that a firmware index
> is loaded only once. For example, snd-usb-usx2y hits
> WARN_ON(usx2y->as04.buffer) in usx2y_async_seq04_init() and may
> allocate the US-428 sequence URBs twice.
>
> Serialize the check, the callback invocation and the bookkeeping with a
> per-hwdep mutex, so that the second request returns -EBUSY.
>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Cc: stable@xxxxxxxxxxxxxxx
> Co-developed-by: Bin Yu <byu@xxxxxxxxxxxxx>
> Signed-off-by: Bin Yu <byu@xxxxxxxxxxxxx>
> Co-developed-by: Cheng Wen <wencheng@xxxxxxxxxxxxx>
> Signed-off-by: Cheng Wen <wencheng@xxxxxxxxxxxxx>
> Signed-off-by: YuanZhe Liu <25031212351@xxxxxxxxxxxxxxxxx>

Applied this one. Thanks.


Takashi