ALSA: control: Take controls_rwsem lock in snd_ctl_remove()
authorTakashi Iwai <tiwai@suse.de>
Tue, 18 Jul 2023 14:12:57 +0000 (16:12 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 20 Jul 2023 08:01:27 +0000 (10:01 +0200)
commit192c4cccd015f52c94d0420eb5d7305a1ca28998
treed584cd80383bf38d50312de607389b1113e60c8b
parentd8b366c40638d5aedad74646707b2b04b7342210
ALSA: control: Take controls_rwsem lock in snd_ctl_remove()

So far, snd_ctl_remove() requires its caller to take
card->controls_rwsem manually before the call for avoiding possible
races.  However, many callers don't care and miss the locking.

Basically it's cumbersome and error-prone to enforce it to each
caller.  Moreover, card->controls_rwsem is a field that should be used
only by internal or proper helpers, and it's not to be touched at
random external places.

This patch is an attempt to make those calls more consistent: now
snd_ctl_remove() takes the card->controls_rwsem internally, just like
other API functions for kctls.  Since a few callers already take the
controls_rwsem locks, the patch removes those locks at the same time,
too.

Link: https://lore.kernel.org/r/20230718141304.1032-5-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/control.c
sound/core/jack.c
sound/core/pcm.c
sound/isa/sb/emu8000.c
sound/isa/sb/sb16_csp.c
sound/pci/emu10k1/emufx.c
sound/pci/hda/hda_codec.c
sound/soc/soc-topology.c