From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Geoffrey D. Bennett" <g@b4.vu>, Takashi Iwai <tiwai@suse.de>,
Sasha Levin <sashal@kernel.org>,
alsa-devel@alsa-project.org
Subject: [PATCH AUTOSEL 5.4 50/63] ALSA: usb-audio: scarlett2: Fix data_mutex lock
Date: Fri, 9 Jul 2021 22:26:56 -0400 [thread overview]
Message-ID: <20210710022709.3170675-50-sashal@kernel.org> (raw)
In-Reply-To: <20210710022709.3170675-1-sashal@kernel.org>
From: "Geoffrey D. Bennett" <g@b4.vu>
[ Upstream commit 9b5ddea9ce5a68d7d2bedcb69901ac2a86c96c7b ]
The private->vol_updated flag was being checked outside of the
mutex_lock/unlock() of private->data_mutex leading to the volume data
being fetched twice from the device unnecessarily or old volume data
being returned.
Update scarlett2_*_ctl_get() and include the private->vol_updated flag
check inside the critical region.
Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
Link: https://lore.kernel.org/r/20210620164643.GA9216@m.b4.vu
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/usb/mixer_scarlett_gen2.c | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/sound/usb/mixer_scarlett_gen2.c b/sound/usb/mixer_scarlett_gen2.c
index a1f1ff72be4f..60545eeef28f 100644
--- a/sound/usb/mixer_scarlett_gen2.c
+++ b/sound/usb/mixer_scarlett_gen2.c
@@ -1028,11 +1028,10 @@ static int scarlett2_master_volume_ctl_get(struct snd_kcontrol *kctl,
struct usb_mixer_interface *mixer = elem->head.mixer;
struct scarlett2_mixer_data *private = mixer->private_data;
- if (private->vol_updated) {
- mutex_lock(&private->data_mutex);
+ mutex_lock(&private->data_mutex);
+ if (private->vol_updated)
scarlett2_update_volumes(mixer);
- mutex_unlock(&private->data_mutex);
- }
+ mutex_unlock(&private->data_mutex);
ucontrol->value.integer.value[0] = private->master_vol;
return 0;
@@ -1046,11 +1045,10 @@ static int scarlett2_volume_ctl_get(struct snd_kcontrol *kctl,
struct scarlett2_mixer_data *private = mixer->private_data;
int index = elem->control;
- if (private->vol_updated) {
- mutex_lock(&private->data_mutex);
+ mutex_lock(&private->data_mutex);
+ if (private->vol_updated)
scarlett2_update_volumes(mixer);
- mutex_unlock(&private->data_mutex);
- }
+ mutex_unlock(&private->data_mutex);
ucontrol->value.integer.value[0] = private->vol[index];
return 0;
@@ -1314,11 +1312,10 @@ static int scarlett2_button_ctl_get(struct snd_kcontrol *kctl,
struct usb_mixer_interface *mixer = elem->head.mixer;
struct scarlett2_mixer_data *private = mixer->private_data;
- if (private->vol_updated) {
- mutex_lock(&private->data_mutex);
+ mutex_lock(&private->data_mutex);
+ if (private->vol_updated)
scarlett2_update_volumes(mixer);
- mutex_unlock(&private->data_mutex);
- }
+ mutex_unlock(&private->data_mutex);
ucontrol->value.enumerated.item[0] = private->buttons[elem->control];
return 0;
--
2.30.2
next prev parent reply other threads:[~2021-07-10 2:32 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-10 2:26 [PATCH AUTOSEL 5.4 01/63] dmaengine: fsl-qdma: check dma_set_mask return value Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 02/63] srcu: Fix broken node geometry after early ssp init Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 03/63] tty: serial: fsl_lpuart: fix the potential risk of division or modulo by zero Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 04/63] serial: 8250: of: Check for CONFIG_SERIAL_8250_BCM7271 Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 05/63] misc/libmasm/module: Fix two use after free in ibmasm_init_one Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 06/63] misc: alcor_pci: fix null-ptr-deref when there is no PCI bridge Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 07/63] iio: gyro: fxa21002c: Balance runtime pm + use pm_runtime_resume_and_get() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 08/63] iio: magn: bmc150: " Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 09/63] ALSA: usx2y: Don't call free_pages_exact() with NULL address Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 10/63] Revert "ALSA: bebob/oxfw: fix Kconfig entry for Mackie d.2 Pro" Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 11/63] w1: ds2438: fixing bug that would always get page0 Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 12/63] scsi: hisi_sas: Propagate errors in interrupt_init_v1_hw() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 13/63] scsi: lpfc: Fix "Unexpected timeout" error in direct attach topology Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 14/63] scsi: lpfc: Fix crash when lpfc_sli4_hba_setup() fails to initialize the SGLs Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 15/63] scsi: core: Cap scsi_host cmd_per_lun at can_queue Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 16/63] ALSA: ac97: fix PM reference leak in ac97_bus_remove() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 17/63] tty: serial: 8250: serial_cs: Fix a memory leak in error handling path Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 18/63] scsi: scsi_dh_alua: Check for negative result value Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 19/63] fs/jfs: Fix missing error code in lmLogInit() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 20/63] scsi: megaraid_sas: Fix resource leak in case of probe failure Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 21/63] scsi: megaraid_sas: Early detection of VD deletion through RaidMap update Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 22/63] scsi: megaraid_sas: Handle missing interrupts while re-enabling IRQs Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 23/63] scsi: iscsi: Add iscsi_cls_conn refcount helpers Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 24/63] scsi: iscsi: Fix conn use after free during resets Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 25/63] scsi: iscsi: Fix shost->max_id use Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 26/63] scsi: qedi: Fix null ref during abort handling Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 27/63] mfd: da9052/stmpe: Add and modify MODULE_DEVICE_TABLE Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 28/63] mfd: cpcap: Fix cpcap dmamask not set warnings Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 29/63] ASoC: img: Fix PM reference leak in img_i2s_in_probe() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 30/63] serial: tty: uartlite: fix console setup Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 31/63] s390/sclp_vt220: fix console name to match device Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 32/63] selftests: timers: rtcpie: skip test if default RTC device does not exist Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 33/63] USB: core: Avoid WARNings for 0-length descriptor requests Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 34/63] ALSA: sb: Fix potential double-free of CSP mixer elements Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 35/63] powerpc/ps3: Add dma_mask to ps3_dma_region Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 36/63] iommu/arm-smmu: Fix arm_smmu_device refcount leak when arm_smmu_rpm_get fails Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 37/63] iommu/arm-smmu: Fix arm_smmu_device refcount leak in address translation Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 38/63] gpio: zynq: Check return value of pm_runtime_get_sync Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 39/63] ALSA: ppc: fix error return code in snd_pmac_probe() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 40/63] selftests/powerpc: Fix "no_handler" EBB selftest Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 41/63] gpio: pca953x: Add support for the On Semi pca9655 Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 42/63] ASoC: soc-core: Fix the error return code in snd_soc_of_parse_audio_routing() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 43/63] s390/processor: always inline stap() and __load_psw_mask() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 44/63] s390/ipl_parm: fix program check new psw handling Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 45/63] s390/mem_detect: fix diag260() " Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 46/63] s390/mem_detect: fix tprot() " Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 47/63] Input: hideep - fix the uninitialized use in hideep_nvm_unlock() Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 48/63] ALSA: bebob: add support for ToneWeal FW66 Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 49/63] ALSA: usb-audio: scarlett2: Fix 18i8 Gen 2 PCM Input count Sasha Levin
2021-07-10 2:26 ` Sasha Levin [this message]
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 51/63] ALSA: usb-audio: scarlett2: Fix scarlett2_*_ctl_put() return values Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 52/63] usb: gadget: f_hid: fix endianness issue with descriptors Sasha Levin
2021-07-10 2:26 ` [PATCH AUTOSEL 5.4 53/63] usb: gadget: hid: fix error return code in hid_bind() Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 54/63] powerpc/boot: Fixup device-tree on little endian Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 55/63] ASoC: Intel: kbl_da7219_max98357a: shrink platform_id below 20 characters Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 56/63] backlight: lm3630a: Fix return code of .update_status() callback Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 57/63] ALSA: hda: Add IRQ check for platform_get_irq() Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 58/63] ALSA: usb-audio: scarlett2: Fix 6i6 Gen 2 line out descriptions Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 59/63] jfs: fix GPF in diFree Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 60/63] staging: rtl8723bs: fix macro value for 2.4Ghz only device Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 61/63] intel_th: Wait until port is in reset before programming it Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 62/63] i2c: core: Disable client irq on reboot/shutdown Sasha Levin
2021-07-10 2:27 ` [PATCH AUTOSEL 5.4 63/63] lib/decompress_unlz4.c: correctly handle zero-padding around initrds Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210710022709.3170675-50-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=alsa-devel@alsa-project.org \
--cc=g@b4.vu \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox