ALSA: sb: Don't allow changing the DMA mode during operations

[ Upstream commit ed29e073ba93f2d52832804cabdd831d5d357d33 ]

When a PCM stream is already running, one shouldn't change the DMA
mode via kcontrol, which may screw up the hardware.  Return -EBUSY
instead.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=218185
Link: https://patch.msgid.link/20250610064322.26787-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Takashi Iwai
2025-06-10 08:43:19 +02:00
committed by Greg Kroah-Hartman
parent c40ad1c04d
commit c7922052c6

View File

@@ -703,6 +703,9 @@ static int snd_sb16_dma_control_put(struct snd_kcontrol *kcontrol, struct snd_ct
unsigned char nval, oval; unsigned char nval, oval;
int change; int change;
if (chip->mode & (SB_MODE_PLAYBACK | SB_MODE_CAPTURE))
return -EBUSY;
nval = ucontrol->value.enumerated.item[0]; nval = ucontrol->value.enumerated.item[0];
if (nval > 2) if (nval > 2)
return -EINVAL; return -EINVAL;