mirror of
https://github.com/torvalds/linux.git
synced 2026-09-13 06:23:02 +02:00
ALSA: usb-audio: Add PM guard to Studio 1810c controls
The Studio 1810c control callbacks issue vendor transfers without preventing runtime suspend or disconnect. A transfer attempted after runtime suspend can fail because the USB device cannot accept submissions. Take snd_usb_lock before the driver data and USB mutexes in both callbacks. This resumes the device before either the state read or control write. It also prevents disconnect cleanup from racing the complete operation. Assisted-by: Codex:gpt-5.6-sol Signed-off-by: Will Porter <mrwillporter@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20260827232143.149197-2-mrwillporter@gmail.com
This commit is contained in:
parent
cee9395acd
commit
077304dfa7
|
|
@ -474,6 +474,10 @@ snd_s1810c_switch_get(struct snd_kcontrol *kctl,
|
|||
u32 state = 0;
|
||||
int ret;
|
||||
|
||||
CLASS(snd_usb_lock, pm)(mixer->chip);
|
||||
if (pm.err < 0)
|
||||
return -EIO;
|
||||
|
||||
guard(mutex)(&private->data_mutex);
|
||||
ret = snd_s1810c_get_switch_state(mixer, kctl, &state);
|
||||
if (ret < 0)
|
||||
|
|
@ -504,6 +508,10 @@ snd_s1810c_switch_set(struct snd_kcontrol *kctl,
|
|||
u32 newval = 0;
|
||||
int ret = 0;
|
||||
|
||||
CLASS(snd_usb_lock, pm)(mixer->chip);
|
||||
if (pm.err < 0)
|
||||
return -EIO;
|
||||
|
||||
guard(mutex)(&private->data_mutex);
|
||||
ret = snd_s1810c_get_switch_state(mixer, kctl, &curval);
|
||||
if (ret < 0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user