linux-stable/sound
Takashi Iwai a1d54f97da ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls
commit 3c3201f8c7 upstream.

Like the previous fixes to hw_params and hw_free ioctl races, we need
to paper over the concurrent prepare ioctl calls against hw_params and
hw_free, too.

This patch implements the locking with the existing
runtime->buffer_mutex for prepare ioctls.  Unlike the previous case
for snd_pcm_hw_hw_params() and snd_pcm_hw_free(), snd_pcm_prepare() is
performed to the linked streams, hence the lock can't be applied
simply on the top.  For tracking the lock in each linked substream, we
modify snd_pcm_action_group() slightly and apply the buffer_mutex for
the case stream_lock=false (formerly there was no lock applied)
there.

Cc: <stable@vger.kernel.org>
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Link: https://lore.kernel.org/r/20220322170720.3529-4-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
[OP: backport to 4.14: adjusted context]
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-05-15 19:40:27 +02:00
..
aoa ALSA: aoa: onyx: always initialize register read value 2020-01-27 14:46:41 +01:00
arm License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atmel
core ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls 2022-05-15 19:40:27 +02:00
drivers ALSA: drivers: opl3: Fix incorrect use of vp->state 2021-12-29 12:17:35 +01:00
firewire ALSA: fireworks: fix wrong return count shorter than expected by 4 bytes 2022-05-12 12:17:09 +02:00
hda ALSA: hda: avoid write to STATESTS if controller is in reset 2021-10-27 09:51:41 +02:00
i2c ALSA: i2c/cs8427: Fix int to char conversion 2019-12-01 09:13:39 +01:00
isa ALSA: cs4236: fix an incorrect NULL check on list iterator 2022-04-20 09:08:10 +02:00
mips
oss License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
parisc License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec 2022-03-28 08:22:27 +02:00
pcmcia ALSA: vxpocket: Fix invalid endian conversions 2018-08-22 07:46:10 +02:00
ppc ALSA: ppc: fix error return code in snd_pmac_probe() 2021-07-20 16:17:50 +02:00
sh ALSA: sh: Fix compile warning wrt const 2020-02-28 16:36:02 +01:00
soc ASoC: dmaengine: Restore NULL prepare_slave_config() callback 2022-05-12 12:17:10 +02:00
sparc ALSA: sparc: Fix invalid snd_free_pages() at error path 2018-12-05 19:41:24 +01:00
spi ALSA: spi: Add check for clk_enable() 2022-04-20 09:08:14 +02:00
synth ALSA: synth: missing check for possible NULL after the call to kstrdup 2021-11-26 11:40:21 +01:00
usb ALSA: usb-audio: Fix undefined behavior due to shift overflowing the constant 2022-04-27 13:15:30 +02:00
x86 ALSA: intel_hdmi: Fix reference to PCM buffer address 2022-03-08 19:01:56 +01:00
ac97_bus.c
Kconfig
last.c
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sound_core.c sound: fix a memory leak bug 2019-08-16 10:13:46 +02:00