diff options
author | Takashi Iwai <tiwai@suse.de> | 2023-07-18 17:12:57 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2023-07-20 11:01:27 +0300 |
commit | 192c4cccd015f52c94d0420eb5d7305a1ca28998 (patch) | |
tree | d584cd80383bf38d50312de607389b1113e60c8b /sound/pci/emu10k1 | |
parent | d8b366c40638d5aedad74646707b2b04b7342210 (diff) | |
download | linux-192c4cccd015f52c94d0420eb5d7305a1ca28998.tar.xz |
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>
Diffstat (limited to 'sound/pci/emu10k1')
-rw-r--r-- | sound/pci/emu10k1/emufx.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c index 9904bcfee106..70c8252a92d9 100644 --- a/sound/pci/emu10k1/emufx.c +++ b/sound/pci/emu10k1/emufx.c @@ -977,11 +977,9 @@ static int snd_emu10k1_del_controls(struct snd_emu10k1 *emu, in_kernel); if (err < 0) return err; - down_write(&card->controls_rwsem); ctl = snd_emu10k1_look_for_ctl(emu, &id); if (ctl) snd_ctl_remove(card, ctl->kcontrol); - up_write(&card->controls_rwsem); } return 0; } |