From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9AE513EFFA4 for ; Thu, 11 Jun 2026 12:00:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781179237; cv=none; b=CHyUovAoUnDdiTn0G1jy7f/Bt4CpXKAmH1aD+Qco/fnUHeAoUcQTWz8iRFchP04gwrI906rg9gmRceg+TOv7oSA8aIznIprkbP8YmaS64sDM6mEI/hC0EO7EB7PNwBk3O+BHXlsJOhANiyfwG2zBj3qSp/4prKqr49KTIgpjDIg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781179237; c=relaxed/simple; bh=HQUipu8YwyUjoPV4UZqMrjK6Hm3ZZlcsJZxoV321Efw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W9MYTvJ3ARWFW0oI8gpagwniUUTo7owh/S3ZjHam1nRhcgxSDFtKxUrr+Qz8OxjkVIdZMZ/6XwgEjKllNj5Z8HfgjWrX6UQSrlQ/43Jmb2OeI4zdur87HZc4i5rbSPPBZqaQBzeXmVh/oLaRe0NA5DkRIG0ulzE+ZR7LNb9Rlyc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J5aPlG9r; arc=none smtp.client-ip=209.85.216.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J5aPlG9r" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-36d5b11201aso5075508a91.2 for ; Thu, 11 Jun 2026 05:00:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781179235; x=1781784035; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IZV/PFA3SA2yKdBcESIRB5seROA0TnE5wscoRU0eQuk=; b=J5aPlG9rG8KYQu57pDv9N+b9nUQ0hMG7/FhscyYayo6ETMZMn4AR14Y0RfhMcZ9bkx X6pZgeGYINzcwydbgvCy+NEk/1LW/QmPk5G2kjAl9EN1JQ6KKkTqjEvbb5+nMhV+ZWRM 6BiPa7pxbX7PMofOg81LcWDHbQ9phNtDpImgqtwSPImWZWevLKHFOsoneQ0+H1R0aLwl 21QeZK9QwHP4T0WR1Z3nzNJLdtDBjthVvru+SQJ8LC56C0AQ4htSPKVEOC10nIEL/P5i QlzzaZylXO4AR0JGZfnSvtamgx9nm4WHykt1AWmfc9B9FnGDAhmSUxSX3Gy8PCKNKMTD M+CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781179235; x=1781784035; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IZV/PFA3SA2yKdBcESIRB5seROA0TnE5wscoRU0eQuk=; b=PuXzLzcn8aITx4wRYYd+gJ5cKL6S4ZM04LY5l+FZ2999l0J+KMoAn/+rgNeYhMZqh4 eKLcnXefGVgvH6UOLgu24lna/Jjr5DcivwzmFmTucLvIpOiZXCk8iEcFflGwORNJAqHJ g17CU3CHCwTf2kfYsa4VbnpGvsPw92yLxmWLG50DtrCZUknqsnUVTNsfwk93kCh0oM7r p6IO5aj10q7YS9+eS3jzsrOdDXwzbp94CwnTXCU7lj8zBJ9du3WAgkPV77lZUcqfFPPw yUfPUzdPclGR9bWSm2LHnzuUpvqkIrw4zS19SqTs6wCMvNbG293CO4ruojSm20vYN7KJ 0ccw== X-Forwarded-Encrypted: i=1; AFNElJ/wteJx52SiUiaIritst8FJPgypIfK5e3XHYuh90sMoqLkXcnEPcIf3UUWkf/8etXN6wIegimTMW6YIVo0=@vger.kernel.org X-Gm-Message-State: AOJu0YxSEeQajJW1quYFrjR79U0sMcVbBswYPNbezERcMfJHwI+n3HRa 34zpBClnaKebzX8uoxzKwY+Seu1rQ2GziWWVpA0XbkWBwo3ueznrn/KA X-Gm-Gg: Acq92OGUF3vD+psaywy+RylSVeU78liq87uliFc4akp3DwpSJn3N4xFZ4ztTI9iOVYS u1/RooIoIoW0X+eLETSawxUs7WZ0mSws+AVRI+iBguEt9bs5lFV8G5jOg5N1sHpfHHQBN5FPuRc qK8uXKmobvpLTPvknxEaAEPxmIaENFss3P5cTpxUwV5vOt4S5eQKovRmxmMd5Dxcgdycw6wAQIg ngzq43+M9zFAXxHpudMGmfySnoMbPRSgeHoLjo63MgKa7qQobjgEmohR58X2J0K43nD9NnmBRLg OwXMKjo9swpWPP+IRfkzBexYkczG/vXNPqURdKuaL60cbohLSdhZ6NZp4nsthwFIltVpx12d+Kp r0aVUiQ9ujIOJpWVzUiAJXFhwAPD+Ue94c7ODSDdLt9AiKMH9jQB5w8v6kaoxuDSNCQUlWNIZAR /epoqZntqVTn0HCdFhYnQ+Dt3bx2NOLMgGzLQPto3BKjk9WckmQ/f8xH6a8GBOOch9pnLL X-Received: by 2002:a17:90b:3a05:b0:367:d850:6a5f with SMTP id 98e67ed59e1d1-377ac3612b7mr2700354a91.25.1781179233303; Thu, 11 Jun 2026 05:00:33 -0700 (PDT) Received: from phuc-desktop.. ([183.91.15.56]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37753d02ca4sm2499692a91.12.2026.06.11.05.00.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 05:00:32 -0700 (PDT) From: phucduc.bui@gmail.com To: Mark Brown , Liam Girdwood , Cezary Rojewski Cc: Jaroslav Kysela , Takashi Iwai , Peter Ujfalusi , Bard Liao , Kai Vehmanen , Pierre-Louis Bossart , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, bui duc phuc Subject: [PATCH 18/20] ASoC: Intel: atom: sst-atom-controls: Use guard() for mutex locks Date: Thu, 11 Jun 2026 18:58:59 +0700 Message-ID: <20260611115901.80438-19-phucduc.bui@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260611115901.80438-1-phucduc.bui@gmail.com> References: <20260611115901.80438-1-phucduc.bui@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: bui duc phuc Clean up the code using guard() for mutex locks. In sst_algo_control_set() and sst_gain_put(), the mutex release point moves from immediately before dev_err() to scope exit. However, the affected path only emits a warning and immediately returns -EINVAL, without any further processing, so the change does not affect behavior. This is purely a code refactoring with no intended functional change. Signed-off-by: bui duc phuc --- sound/soc/intel/atom/sst-atom-controls.c | 85 +++++++++++------------- 1 file changed, 37 insertions(+), 48 deletions(-) diff --git a/sound/soc/intel/atom/sst-atom-controls.c b/sound/soc/intel/atom/sst-atom-controls.c index 3629ceaaac17..54defde24397 100644 --- a/sound/soc/intel/atom/sst-atom-controls.c +++ b/sound/soc/intel/atom/sst-atom-controls.c @@ -75,10 +75,9 @@ static int sst_fill_and_send_cmd(struct sst_data *drv, { int ret; - mutex_lock(&drv->lock); + guard(mutex)(&drv->lock); ret = sst_fill_and_send_cmd_unlocked(drv, ipc_msg, block, task_id, pipe_id, cmd_data, len); - mutex_unlock(&drv->lock); return ret; } @@ -167,15 +166,15 @@ static int sst_slot_get(struct snd_kcontrol *kcontrol, unsigned int val, mux; u8 *map = is_tx ? sst_ssp_rx_map : sst_ssp_tx_map; - mutex_lock(&drv->lock); - val = 1 << ctl_no; - /* search which slot/channel has this bit set - there should be only one */ - for (mux = e->max; mux > 0; mux--) - if (map[mux - 1] & val) - break; + scoped_guard(mutex, &drv->lock) { + val = 1 << ctl_no; + /* search which slot/channel has this bit set - there should be only one */ + for (mux = e->max; mux > 0; mux--) + if (map[mux - 1] & val) + break; - ucontrol->value.enumerated.item[0] = mux; - mutex_unlock(&drv->lock); + ucontrol->value.enumerated.item[0] = mux; + } dev_dbg(c->dev, "%s - %s map = %#x\n", is_tx ? "tx channel" : "rx slot", @@ -235,7 +234,7 @@ static int sst_slot_put(struct snd_kcontrol *kcontrol, if (mux > e->max - 1) return -EINVAL; - mutex_lock(&drv->lock); + guard(mutex)(&drv->lock); /* first clear all registers of this bit */ for (i = 0; i < e->max; i++) map[i] &= ~val; @@ -244,7 +243,6 @@ static int sst_slot_put(struct snd_kcontrol *kcontrol, /* kctl set to 'none' and we reset the bits so send IPC */ ret = sst_check_and_send_slot_map(drv, kcontrol); - mutex_unlock(&drv->lock); return ret; } @@ -258,7 +256,6 @@ static int sst_slot_put(struct snd_kcontrol *kcontrol, ret = sst_check_and_send_slot_map(drv, kcontrol); - mutex_unlock(&drv->lock); return ret; } @@ -354,13 +351,12 @@ static int sst_algo_control_set(struct snd_kcontrol *kcontrol, struct sst_algo_control *bc = (void *)kcontrol->private_value; dev_dbg(cmpnt->dev, "control_name=%s\n", kcontrol->id.name); - mutex_lock(&drv->lock); + guard(mutex)(&drv->lock); switch (bc->type) { case SST_ALGO_PARAMS: memcpy(bc->params, ucontrol->value.bytes.data, bc->max); break; default: - mutex_unlock(&drv->lock); dev_err(cmpnt->dev, "Invalid Input- algo type:%d\n", bc->type); return -EINVAL; @@ -368,7 +364,6 @@ static int sst_algo_control_set(struct snd_kcontrol *kcontrol, /*if pipe is enabled, need to send the algo params from here*/ if (bc->w && bc->w->power) ret = sst_send_algo_cmd(drv, bc); - mutex_unlock(&drv->lock); return ret; } @@ -475,7 +470,7 @@ static int sst_gain_put(struct snd_kcontrol *kcontrol, struct sst_gain_mixer_control *mc = (void *)kcontrol->private_value; struct sst_gain_value *gv = mc->gain_val; - mutex_lock(&drv->lock); + guard(mutex)(&drv->lock); switch (mc->type) { case SST_GAIN_TLV: @@ -497,7 +492,6 @@ static int sst_gain_put(struct snd_kcontrol *kcontrol, break; default: - mutex_unlock(&drv->lock); dev_err(cmpnt->dev, "Invalid Input- gain type:%d\n", mc->type); return -EINVAL; @@ -506,7 +500,6 @@ static int sst_gain_put(struct snd_kcontrol *kcontrol, if (mc->w && mc->w->power) ret = sst_send_gain_cmd(drv, gv, mc->task_id, mc->pipe_id | mc->instance_id, mc->module_id, 0); - mutex_unlock(&drv->lock); return ret; } @@ -521,10 +514,9 @@ static int sst_send_pipe_module_params(struct snd_soc_dapm_widget *w, struct sst_data *drv = snd_soc_component_get_drvdata(c); struct sst_ids *ids = w->priv; - mutex_lock(&drv->lock); + guard(mutex)(&drv->lock); sst_find_and_send_pipe_algo(drv, w->name, ids); sst_set_pipe_gain(ids, drv, 0); - mutex_unlock(&drv->lock); return 0; } @@ -761,27 +753,27 @@ int sst_handle_vb_timer(struct snd_soc_dai *dai, bool enable) return ret; } - mutex_lock(&drv->lock); - if (enable) - timer_usage++; - else - timer_usage--; - - /* - * Send the command only if this call is the first enable or last - * disable - */ - if ((enable && (timer_usage == 1)) || - (!enable && (timer_usage == 0))) { - ret = sst_fill_and_send_cmd_unlocked(drv, SST_IPC_IA_CMD, - SST_FLAG_BLOCKED, SST_TASK_SBA, 0, &cmd, - sizeof(cmd.header) + cmd.header.length); - if (ret && enable) { + scoped_guard(mutex, &drv->lock) { + if (enable) + timer_usage++; + else timer_usage--; - enable = false; + + /* + * Send the command only if this call is the first enable or last + * disable + */ + if ((enable && (timer_usage == 1)) || + (!enable && (timer_usage == 0))) { + ret = sst_fill_and_send_cmd_unlocked(drv, SST_IPC_IA_CMD, + SST_FLAG_BLOCKED, SST_TASK_SBA, 0, &cmd, + sizeof(cmd.header) + cmd.header.length); + if (ret && enable) { + timer_usage--; + enable = false; + } } } - mutex_unlock(&drv->lock); if (!enable) sst->ops->power(sst->dev, false); @@ -984,9 +976,8 @@ static int sst_set_be_modules(struct snd_soc_dapm_widget *w, dev_dbg(c->dev, "Enter: widget=%s\n", w->name); if (SND_SOC_DAPM_EVENT_ON(event)) { - mutex_lock(&drv->lock); - ret = sst_send_slot_map(drv); - mutex_unlock(&drv->lock); + scoped_guard(mutex, &drv->lock) + ret = sst_send_slot_map(drv); if (ret) return ret; ret = sst_send_pipe_module_params(w, k); @@ -1344,9 +1335,8 @@ int sst_send_pipe_gains(struct snd_soc_dai *dai, int stream, int mute) dev_dbg(dai->dev, "send gains for widget=%s\n", p->sink->name); - mutex_lock(&drv->lock); - sst_set_pipe_gain(ids, drv, mute); - mutex_unlock(&drv->lock); + scoped_guard(mutex, &drv->lock) + sst_set_pipe_gain(ids, drv, mute); } } } else { @@ -1360,9 +1350,8 @@ int sst_send_pipe_gains(struct snd_soc_dai *dai, int stream, int mute) dev_dbg(dai->dev, "send gain for widget=%s\n", p->source->name); - mutex_lock(&drv->lock); - sst_set_pipe_gain(ids, drv, mute); - mutex_unlock(&drv->lock); + scoped_guard(mutex, &drv->lock) + sst_set_pipe_gain(ids, drv, mute); } } } -- 2.43.0