From nobody Fri Dec 19 21:10:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B7D72DE707; Wed, 3 Dec 2025 10:57:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764759446; cv=none; b=h9o8FTFwDue3XX2a9TbMWdOkhlxaEqIwGOmRWrkzHl9C864XCtCS68dRkA7qCY75ZVZQN7XqBKUUQNqGAJPd15/KRIF/8AZmWqh7Dm/0x7H4xgvzUWKesZn/v96Z3ciyIgT3PYYzhNKv1m29uEHrh0qTCiAsLqK1NI3c2ZMcI8E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764759446; c=relaxed/simple; bh=zPeu4HgQNk9WYrgmIq8It0U7Hp9YmciMnoo6Kd1ObVs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AZNVLaPzDU0BW/1IFxyGsBTkhyHvpkMwINIhIHxLfq418e6/0vGHu+HW7KD8ysVITy/lHsRkKsZVeax2jMXou3pcs99nRjJLs789jYzYdgl0QIM/9a/4dOsvz4HZj0Q5DBe1qCMirbm9L4fSQ01YVhLDvwKOzmpZ8vDqF9+1Dw4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Iy5b9a5E; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Iy5b9a5E" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BCE2BC4CEFB; Wed, 3 Dec 2025 10:57:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764759445; bh=zPeu4HgQNk9WYrgmIq8It0U7Hp9YmciMnoo6Kd1ObVs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Iy5b9a5EFiIBiJCxRsz+PFn9agcbAHdCHwI8iMkICwYMEhRUXdVivM3jJHHsuUWhT eI8sI+r277Yp9Pi6C43M+T/WzdMSW/Gb6yB45GFiOuOZz6J3je6GHlnKPK3FvGCLTD xj7fLKR7LF6E4zRvdIScbUpJv8IFy6qcPYKEVlo/GEXv+xp0otRrAtcFkzYCJPQ1lg fuM9H6sD4ugBxspOaU/OAFpPBpOZiGJKPxgmZWmWE9zDuexZnUUTQUpmm8jsu5mXop zaB1kQWfLAp8kAH1v4OIL3qtkUhGA53VnqefA139e985Kzz/Gxg2b3jyupJyGLWMkF Le2efAX9hFitA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1vQkY9-000000006UW-2txW; Wed, 03 Dec 2025 11:57:33 +0100 From: Johan Hovold To: Srinivas Kandagatla , Mark Brown Cc: Liam Girdwood , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , Srinivas Kandagatla Subject: [PATCH 1/2] ASoc: qcom: q6afe: fix bad guard conversion Date: Wed, 3 Dec 2025 11:55:41 +0100 Message-ID: <20251203105542.24765-2-johan@kernel.org> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251203105542.24765-1-johan@kernel.org> References: <20251203105542.24765-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" A recent spinlock guard conversion used the wrong guard so that interrupts are no longer disabled while holding the port list lock. Based on a cursory look this appears to be safe currently, but it could cause a deadlock if one of these helpers are ever called in interrupt context. Fixes: 4b1edbb028fb ("ASoC: qcom: q6afe: Use guard() for spin locks") Cc: Srinivas Kandagatla Signed-off-by: Johan Hovold Reviewed-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6afe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6afe.c b/sound/soc/qcom/qdsp6/q6afe.c index 980851a12976..0b01fc9e13a7 100644 --- a/sound/soc/qcom/qdsp6/q6afe.c +++ b/sound/soc/qcom/qdsp6/q6afe.c @@ -947,7 +947,7 @@ static struct q6afe_port *q6afe_find_port(struct q6afe = *afe, int token) struct q6afe_port *p; struct q6afe_port *ret =3D NULL; =20 - guard(spinlock)(&afe->port_list_lock); + guard(spinlock_irqsave)(&afe->port_list_lock); list_for_each_entry(p, &afe->port_list, node) if (p->token =3D=3D token) { ret =3D p; @@ -1807,7 +1807,7 @@ struct q6afe_port *q6afe_port_get_from_id(struct devi= ce *dev, int id) port->cfg_type =3D cfg_type; kref_init(&port->refcount); =20 - guard(spinlock)(&afe->port_list_lock); + guard(spinlock_irqsave)(&afe->port_list_lock); list_add_tail(&port->node, &afe->port_list); =20 return port; --=20 2.51.2 From nobody Fri Dec 19 21:10:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B85C2DE70E; Wed, 3 Dec 2025 10:57:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764759446; cv=none; b=aFvaujg17R1/lUW+BxZxiEcjqw/x2xcToE65oOShicYyNqGgf5D1J0AE/jROIOZ/YdtrtHWmTUeTMwyLybzG3kPM/t0N5mJquNnIIU67bgbuVBLYE3ynLxOGNpa3Rz7RKCAeWZAj1klsSVh0O2yazMppULg3p2HtwO+eDfIpUNI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764759446; c=relaxed/simple; bh=y7vUqJ3Q6UliL9svHbGaSwMBso9GRCeYl2zuGfN9TW8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YfhkfOo3UACJ0YUyDrjyKAT2V7RU4bIssjY6FkHp7TzGasPw+mtKPnYoRkCXu2TSzuJqweZwskujWs6mmxZrJINVVyigvmlJELbmnznN5urGg/6rCkEjlPO2UNrcONIqzs0pezXZpW1VLO0VH5qxakDU5KQ4dUgGq6w60VDyGTY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ihHZsxJN; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ihHZsxJN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4A1EC19421; Wed, 3 Dec 2025 10:57:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764759445; bh=y7vUqJ3Q6UliL9svHbGaSwMBso9GRCeYl2zuGfN9TW8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ihHZsxJN0V7O1ayV5tIrZCg0uxlqQEl61DzzplSO8zGBK9imRsU+wPX84AhJQfsKV udUvgqBwvFtzNQKgAziEYJmx+Q7H7RTWANrgjiCZQtZjzr2XRR1DkuAV71DzgrF8x/ Linn/Pn1RQ0fW76n/C3IAAaQZfjhwolPK+WaUp3/1GvRvGDT06RKAylIY2Gm7e8Lnl F1LnzeVppoolx8PPtmBiJy35FdRGwFb+z8ul/d2NOWrUklQ5JrKwpN61LrinGawuAV i+iFWq9A4lW1jvK0jlNTE3tjY+xB+pMyrXSOeohc+koJAveyGVtNGOuQUQ7Cf4sm3X Ie4tkGvKCrFOQ== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1vQkY9-000000006UY-3EI1; Wed, 03 Dec 2025 11:57:33 +0100 From: Johan Hovold To: Srinivas Kandagatla , Mark Brown Cc: Liam Girdwood , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH 2/2] ASoc: qcom: q6afe: use guards consistently Date: Wed, 3 Dec 2025 11:55:42 +0100 Message-ID: <20251203105542.24765-3-johan@kernel.org> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251203105542.24765-1-johan@kernel.org> References: <20251203105542.24765-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" A recent change switched to using guards for the port list lock but only modified two out of three functions where the lock is held. Convert also the third function for consistency while switching to a scoped guard in q6afe_port_get_from_id() for clarity. Signed-off-by: Johan Hovold --- sound/soc/qcom/qdsp6/q6afe.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6afe.c b/sound/soc/qcom/qdsp6/q6afe.c index 0b01fc9e13a7..d8173cd9e60a 100644 --- a/sound/soc/qcom/qdsp6/q6afe.c +++ b/sound/soc/qcom/qdsp6/q6afe.c @@ -931,13 +931,11 @@ static void q6afe_port_free(struct kref *ref) { struct q6afe_port *port; struct q6afe *afe; - unsigned long flags; =20 port =3D container_of(ref, struct q6afe_port, refcount); afe =3D port->afe; - spin_lock_irqsave(&afe->port_list_lock, flags); - list_del(&port->node); - spin_unlock_irqrestore(&afe->port_list_lock, flags); + scoped_guard(spinlock_irqsave, &afe->port_list_lock) + list_del(&port->node); kfree(port->scfg); kfree(port); } @@ -1807,8 +1805,8 @@ struct q6afe_port *q6afe_port_get_from_id(struct devi= ce *dev, int id) port->cfg_type =3D cfg_type; kref_init(&port->refcount); =20 - guard(spinlock_irqsave)(&afe->port_list_lock); - list_add_tail(&port->node, &afe->port_list); + scoped_guard(spinlock_irqsave, &afe->port_list_lock) + list_add_tail(&port->node, &afe->port_list); =20 return port; =20 --=20 2.51.2