From nobody Tue Dec 2 01:03:04 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 1E2E72741C0; Mon, 24 Nov 2025 10:49:27 +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=1763981368; cv=none; b=HRTHLYwFIYJRST9LuCgU3J2Aubd3TLmMt4DUPYl8pbvacRPoWf5Z2tTALX6tFtI0bVH5SS/TuuE0tC25CPHkr9BG0+LqJhMugLsacflNY6xPJFndksO2uC91Cm1SsFSi+yi2y29+TNvdex5kPFwOROjrQKuf0aCChaju7ajtSLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763981368; c=relaxed/simple; bh=sAu9FWZfPAnQbhOVMjfAidsueJ0bqzfBo/Ls2FozWdY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fAm461j/9/+BlfLvbAmpp34ZYibazzLsheYXK0eRk9O0nb0NtD99SqIdPgRhOu5VBbP1FtEkkxVh0vHSyQHQwduG8a0Qeu/44+bGR/QAXmBj8UL5ccY4RGAHwpQX5QdfmTbLvMybfTe60cW+smLssLzHxrvBL3+i1dusmK/K68M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LL4lxR/V; 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="LL4lxR/V" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6C8EC19421; Mon, 24 Nov 2025 10:49:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763981367; bh=sAu9FWZfPAnQbhOVMjfAidsueJ0bqzfBo/Ls2FozWdY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LL4lxR/ViMDKm7bk5ZufX43qB1/uJsm+XG8Ow1lJVgL/rPr7DsavOUxf21Olcsmu3 7DuxnyG833LbYzPMo02f7XAfBa0jI1qJ/gDqEFqwI7sRft65CnojdLqtRacxFZRaSb kllBb6+oCJq41cAEyeslmxwXki0kW6O5S6OkhmyH1o6usWCYptasGv0voZYnGFPdY3 pM27UitPowGIcIYRh5plcq0b+KRdLb90qzv9capWrbPnYe/vs6qOPSUMqwep0IYfRN VBMUz0H0q4HMn2WcYjQniQpQmXP5tHJxDGvwFqPeKq6c3UGXU0oTyQEaHuFIBckIcY o63+OriqdIcYA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1vNU8N-0000000046f-15JZ; Mon, 24 Nov 2025 11:49:27 +0100 From: Johan Hovold To: Olivier Moysan , Arnaud Pouliquen , Mark Brown Cc: Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Maxime Coquelin , Alexandre Torgue , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, olivier moysan , Wen Yang Subject: [PATCH 1/4] ASoC: stm32: sai: fix device leak on probe Date: Mon, 24 Nov 2025 11:49:05 +0100 Message-ID: <20251124104908.15754-2-johan@kernel.org> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251124104908.15754-1-johan@kernel.org> References: <20251124104908.15754-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" Make sure to drop the reference taken when looking up the sync provider device and its driver data during DAI probe on probe failures and on unbind. Note that holding a reference to a device does not prevent its driver data from going away so there is no point in keeping the reference. Fixes: 7dd0d835582f ("ASoC: stm32: sai: simplify sync modes management") Fixes: 1c3816a19487 ("ASoC: stm32: sai: add missing put_device()") Cc: stable@vger.kernel.org # 4.16: 1c3816a19487 Cc: olivier moysan Cc: Wen Yang Signed-off-by: Johan Hovold Reviewed-by: olivier moysan --- sound/soc/stm/stm32_sai.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/stm/stm32_sai.c b/sound/soc/stm/stm32_sai.c index fa821e3fb427..7065aeb0e524 100644 --- a/sound/soc/stm/stm32_sai.c +++ b/sound/soc/stm/stm32_sai.c @@ -143,6 +143,7 @@ static int stm32_sai_set_sync(struct stm32_sai_data *sa= i_client, } =20 sai_provider =3D platform_get_drvdata(pdev); + put_device(&pdev->dev); if (!sai_provider) { dev_err(&sai_client->pdev->dev, "SAI sync provider data not found\n"); @@ -159,7 +160,6 @@ static int stm32_sai_set_sync(struct stm32_sai_data *sa= i_client, ret =3D stm32_sai_sync_conf_provider(sai_provider, synco); =20 error: - put_device(&pdev->dev); of_node_put(np_provider); return ret; } --=20 2.51.2 From nobody Tue Dec 2 01:03:04 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 1E26B26F47D; Mon, 24 Nov 2025 10:49:27 +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=1763981368; cv=none; b=I9/YCfKD+3+xNeRNvCY1gifs9c8O5WqabN6f+hurj5YXWjaHXVdivMdAj2yWJVfU0DhY0ULiWjl3paajgSZ0vHIzmapLlSB3Oc2YfajgOx3m/EPi5tUqueq2zLjXckXmsp6zVS7gjRKesnWLiFuz/bmGKdh6IKC7YgegOw/7ysA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763981368; c=relaxed/simple; bh=i08hszhUYmm0GoaE3UJ71ASWWP8tOEqI/LV0je9kaJI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B/FzLF0ZGaX5dcOO+Cg/Ksih3I8O/M6xYA1GEm3OGvlWffpOW3vYXCgFY2+/sgHuC7/7xj9tZrMmOJkD7mcgMfVj2BH5Xfzk9jRCRrA2nuIXWb37E3Lo6tfv6XUNBgrwT4P4/Ji5oI7Z9qeWQWxJHd6cAJEeZ8FQtMNVgQgYUEk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IpFy7MdE; 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="IpFy7MdE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C441FC16AAE; Mon, 24 Nov 2025 10:49:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763981367; bh=i08hszhUYmm0GoaE3UJ71ASWWP8tOEqI/LV0je9kaJI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IpFy7MdEEqD3y9OqqGCc7Kry4luv9WQcgpzb5GtqvSNGgpotb8GEw4yhBbhHQrX/7 +/SVn+peiFgdHjmZS2ND5Ow2xcStZxxAhOXiBz6GZvVvMaWvpAxwIRL+r5QCDz+3jA HmY5a5i9jdzkkcgvB36S27L0qKkMJwXOpvcRdENPmbhIet7WY+xNjrDiE/cXGQD+5p XQTDzG3SPVoYGzX3lO2SEoQoIoNi74YpsNTAZmifsq/KdZjNq7ahBco57z//x+B4UA VkH/10kmvzM8dcOv0YXqTBNws0l27I5NZvAApiR/NMNERy+92aiG9bUbWiLLBGpt6g T62/tvKkX4usA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1vNU8N-0000000046h-1THU; Mon, 24 Nov 2025 11:49:27 +0100 From: Johan Hovold To: Olivier Moysan , Arnaud Pouliquen , Mark Brown Cc: Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Maxime Coquelin , Alexandre Torgue , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, Olivier Moysan Subject: [PATCH 2/4] ASoC: stm32: sai: fix clk prepare imbalance on probe failure Date: Mon, 24 Nov 2025 11:49:06 +0100 Message-ID: <20251124104908.15754-3-johan@kernel.org> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251124104908.15754-1-johan@kernel.org> References: <20251124104908.15754-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" Make sure to unprepare the parent clock also on probe failures (e.g. probe deferral). Fixes: a14bf98c045b ("ASoC: stm32: sai: fix possible circular locking") Cc: stable@vger.kernel.org # 5.5 Cc: Olivier Moysan Signed-off-by: Johan Hovold Reviewed-by: olivier moysan --- sound/soc/stm/stm32_sai_sub.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/sound/soc/stm/stm32_sai_sub.c b/sound/soc/stm/stm32_sai_sub.c index 0ae1eae2a59e..7a005b4ad304 100644 --- a/sound/soc/stm/stm32_sai_sub.c +++ b/sound/soc/stm/stm32_sai_sub.c @@ -1634,14 +1634,21 @@ static int stm32_sai_sub_parse_of(struct platform_d= evice *pdev, if (of_property_present(np, "#clock-cells")) { ret =3D stm32_sai_add_mclk_provider(sai); if (ret < 0) - return ret; + goto err_unprepare_pclk; } else { sai->sai_mclk =3D devm_clk_get_optional(&pdev->dev, "MCLK"); - if (IS_ERR(sai->sai_mclk)) - return PTR_ERR(sai->sai_mclk); + if (IS_ERR(sai->sai_mclk)) { + ret =3D PTR_ERR(sai->sai_mclk); + goto err_unprepare_pclk; + } } =20 return 0; + +err_unprepare_pclk: + clk_unprepare(sai->pdata->pclk); + + return ret; } =20 static int stm32_sai_sub_probe(struct platform_device *pdev) @@ -1688,26 +1695,33 @@ static int stm32_sai_sub_probe(struct platform_devi= ce *pdev) IRQF_SHARED, dev_name(&pdev->dev), sai); if (ret) { dev_err(&pdev->dev, "IRQ request returned %d\n", ret); - return ret; + goto err_unprepare_pclk; } =20 if (STM_SAI_PROTOCOL_IS_SPDIF(sai)) conf =3D &stm32_sai_pcm_config_spdif; =20 ret =3D snd_dmaengine_pcm_register(&pdev->dev, conf, 0); - if (ret) - return dev_err_probe(&pdev->dev, ret, "Could not register pcm dma\n"); + if (ret) { + ret =3D dev_err_probe(&pdev->dev, ret, "Could not register pcm dma\n"); + goto err_unprepare_pclk; + } =20 ret =3D snd_soc_register_component(&pdev->dev, &stm32_component, &sai->cpu_dai_drv, 1); if (ret) { snd_dmaengine_pcm_unregister(&pdev->dev); - return ret; + goto err_unprepare_pclk; } =20 pm_runtime_enable(&pdev->dev); =20 return 0; + +err_unprepare_pclk: + clk_unprepare(sai->pdata->pclk); + + return ret; } =20 static void stm32_sai_sub_remove(struct platform_device *pdev) --=20 2.51.2 From nobody Tue Dec 2 01:03:04 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 2145B27702D; Mon, 24 Nov 2025 10:49:28 +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=1763981368; cv=none; b=eR9OFP1z0wMsBFDGHja+5AMDCqZXE8ZTnoV66v0tnuif7neKmzam+R/nmSJyO2Ls1TSA7QUUmIJ56ahGW6udtVO0WIhimYCY9fwHlOiuE5X/ZCXZpAZ4N/XrtR+dW0UfTd3lnAnSU1C4FcrThTXyS+rCAXiX4poqC5V4XHmGYKc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763981368; c=relaxed/simple; bh=5iSe2rv+mleqW+6rQz8jqeld4WFOCbzH4sbioHRhi8w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ApvtugieJUyOl/dSFl7oD50goGSuI1aYeG5FfQ2oT7sV+eRlah2KuUUZHtD4IFC+106FcDrkwDnq8pwb/uDGK7GcMVpGZhkc9N4FvqMwtSRhuYJZ4+isoGCx/MArDZ4+mVwWO8MSELVbF60uYBzNxKx0oKMyp2KpJj2vNkd5Qwc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZK5ATOf4; 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="ZK5ATOf4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE988C19424; Mon, 24 Nov 2025 10:49:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763981368; bh=5iSe2rv+mleqW+6rQz8jqeld4WFOCbzH4sbioHRhi8w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZK5ATOf4yawGCL9nxPY6SfowDcnHOh3/6szfxbC7j/ZUP3i2U0RBiYxmUrhMA+CQd j3UJD4eU+WO0qU26V5yw6Oc4KeFFys+T8CIsQ1ZSJq8G/kz80Uay8jDH8s6kZYQnlM wEAfSqbrf3wqOnX8kSx89Qcb1rjMlYOdgK75Mtrwmel7SJ6uZEbo4/h1rzKY4Mdp4t 65ODLHnLgnyk+4Izoyz/M5lwTz9NfD2Pl2tf36XW2OPDM5RSk2Oup+fMAyZ33c8GUP LPS1ldbel0vSfw8HRfmlhLkhGPgqpz4AopY3zri5bfnL6v+nXPNhXPjsqRXA6fVVGO mx+0+i3vPBOiA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1vNU8N-0000000046j-1tep; Mon, 24 Nov 2025 11:49:27 +0100 From: Johan Hovold To: Olivier Moysan , Arnaud Pouliquen , Mark Brown Cc: Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Maxime Coquelin , Alexandre Torgue , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , Olivier Moysan , stable@vger.kernel.org Subject: [PATCH 3/4] ASoC: stm32: sai: fix OF node leak on probe Date: Mon, 24 Nov 2025 11:49:07 +0100 Message-ID: <20251124104908.15754-4-johan@kernel.org> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251124104908.15754-1-johan@kernel.org> References: <20251124104908.15754-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" The reference taken to the sync provider OF node when probing the platform device is currently only dropped if the set_sync() callback fails during DAI probe. Make sure to drop the reference on platform probe failures (e.g. probe deferral) and on driver unbind. This also avoids a potential use-after-free in case the DAI is ever reprobed without first rebinding the platform driver. Fixes: 5914d285f6b7 ("ASoC: stm32: sai: Add synchronization support") Fixes: d4180b4c02e7 ("ASoC: stm32: sai: fix set_sync service") Cc: Olivier Moysan Cc: stable@vger.kernel.org # 4.16: d4180b4c02e7 Signed-off-by: Johan Hovold Reviewed-by: olivier moysan --- sound/soc/stm/stm32_sai.c | 12 +++--------- sound/soc/stm/stm32_sai_sub.c | 23 ++++++++++++++++------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/sound/soc/stm/stm32_sai.c b/sound/soc/stm/stm32_sai.c index 7065aeb0e524..00cf24ceca2d 100644 --- a/sound/soc/stm/stm32_sai.c +++ b/sound/soc/stm/stm32_sai.c @@ -138,7 +138,6 @@ static int stm32_sai_set_sync(struct stm32_sai_data *sa= i_client, if (!pdev) { dev_err(&sai_client->pdev->dev, "Device not found for node %pOFn\n", np_provider); - of_node_put(np_provider); return -ENODEV; } =20 @@ -147,21 +146,16 @@ static int stm32_sai_set_sync(struct stm32_sai_data *= sai_client, if (!sai_provider) { dev_err(&sai_client->pdev->dev, "SAI sync provider data not found\n"); - ret =3D -EINVAL; - goto error; + return -EINVAL; } =20 /* Configure sync client */ ret =3D stm32_sai_sync_conf_client(sai_client, synci); if (ret < 0) - goto error; + return ret; =20 /* Configure sync provider */ - ret =3D stm32_sai_sync_conf_provider(sai_provider, synco); - -error: - of_node_put(np_provider); - return ret; + return stm32_sai_sync_conf_provider(sai_provider, synco); } =20 static int stm32_sai_get_parent_clk(struct stm32_sai_data *sai) diff --git a/sound/soc/stm/stm32_sai_sub.c b/sound/soc/stm/stm32_sai_sub.c index 7a005b4ad304..5ae4d2577f28 100644 --- a/sound/soc/stm/stm32_sai_sub.c +++ b/sound/soc/stm/stm32_sai_sub.c @@ -1586,7 +1586,8 @@ static int stm32_sai_sub_parse_of(struct platform_dev= ice *pdev, dev_err(&pdev->dev, "External synchro not supported\n"); of_node_put(args.np); - return -EINVAL; + ret =3D -EINVAL; + goto err_put_sync_provider; } sai->sync =3D SAI_SYNC_EXTERNAL; =20 @@ -1595,7 +1596,8 @@ static int stm32_sai_sub_parse_of(struct platform_dev= ice *pdev, (sai->synci > (SAI_GCR_SYNCIN_MAX + 1))) { dev_err(&pdev->dev, "Wrong SAI index\n"); of_node_put(args.np); - return -EINVAL; + ret =3D -EINVAL; + goto err_put_sync_provider; } =20 if (of_property_match_string(args.np, "compatible", @@ -1609,7 +1611,8 @@ static int stm32_sai_sub_parse_of(struct platform_dev= ice *pdev, if (!sai->synco) { dev_err(&pdev->dev, "Unknown SAI sub-block\n"); of_node_put(args.np); - return -EINVAL; + ret =3D -EINVAL; + goto err_put_sync_provider; } } =20 @@ -1619,13 +1622,15 @@ static int stm32_sai_sub_parse_of(struct platform_d= evice *pdev, =20 of_node_put(args.np); sai->sai_ck =3D devm_clk_get(&pdev->dev, "sai_ck"); - if (IS_ERR(sai->sai_ck)) - return dev_err_probe(&pdev->dev, PTR_ERR(sai->sai_ck), - "Missing kernel clock sai_ck\n"); + if (IS_ERR(sai->sai_ck)) { + ret =3D dev_err_probe(&pdev->dev, PTR_ERR(sai->sai_ck), + "Missing kernel clock sai_ck\n"); + goto err_put_sync_provider; + } =20 ret =3D clk_prepare(sai->pdata->pclk); if (ret < 0) - return ret; + goto err_put_sync_provider; =20 if (STM_SAI_IS_F4(sai->pdata)) return 0; @@ -1647,6 +1652,8 @@ static int stm32_sai_sub_parse_of(struct platform_dev= ice *pdev, =20 err_unprepare_pclk: clk_unprepare(sai->pdata->pclk); +err_put_sync_provider: + of_node_put(sai->np_sync_provider); =20 return ret; } @@ -1720,6 +1727,7 @@ static int stm32_sai_sub_probe(struct platform_device= *pdev) =20 err_unprepare_pclk: clk_unprepare(sai->pdata->pclk); + of_node_put(sai->np_sync_provider); =20 return ret; } @@ -1732,6 +1740,7 @@ static void stm32_sai_sub_remove(struct platform_devi= ce *pdev) snd_dmaengine_pcm_unregister(&pdev->dev); snd_soc_unregister_component(&pdev->dev); pm_runtime_disable(&pdev->dev); + of_node_put(sai->np_sync_provider); } =20 static int stm32_sai_sub_suspend(struct device *dev) --=20 2.51.2 From nobody Tue Dec 2 01:03:04 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 3856E2777E0; Mon, 24 Nov 2025 10:49:28 +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=1763981368; cv=none; b=HeUOIPuwKCnF+7efRZJm+DsTWRRHzWl8qZ2xUBsrWlv7xV2uRZSmWPfLe4p4eLCUdmmqrhk7q7uNdXeTVSS+aSdsgitBeks3yynzlZvgMHkr8t3T85eS0IrjT5MXLBgQhJ5hNFnSVWMKp3i+Yq7+QmkK+R4NomQ1t0UUv+JyAf4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763981368; c=relaxed/simple; bh=cbeqF8oFwmZ1Uc+czpeAXW53ICGn96SkCpKe9/prnjM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XeK/HBJjal4Gtg9G+e+2nU5qSSJDmNQ8HxCmhr/+MSGdEJ74EhlbWXWfaNhl4IJEKPFGTtsrEkQYEUzNzPGKpBA6gZ7CBWHjJtL1aSuY8B3bPfSe7nLaiSlJf2fiVoZgv15SHJEES4CdHiDtstKGyKXfd/9RLtb62c5g/JHMO/Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ANHgRORc; 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="ANHgRORc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CFAF6C19423; Mon, 24 Nov 2025 10:49:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763981367; bh=cbeqF8oFwmZ1Uc+czpeAXW53ICGn96SkCpKe9/prnjM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ANHgRORc0znhxAWTUmIdwn7/2Zft1bI1iofn7sFUkK1HQf+Gmm3oSXL8p+r+BsnsH qjH/tKOu5sK+/x7pc2peGPCr+ZU1Q9ODjabLXJmVOaL6hXRPjgfd8tIdhgAeRHFFzS InFTllqptHaQet8gUeIQkj5cBn0Trmymt9n1bIfSvx8cX/qm+vZmsFxUk7/UsXNAnP o5l/RVHATzNF2l5a+75rNUdNXUJrfqxth7sG8x1v0k0TwiJwsjruLGqZujTS8cO8fS kXlqRN51eOR5aibqxiGQk0nnbkQB6VnR5mVZUvaRav6hczNRYj687hQ4wqWABoUPJr doeICxLl8RXAQ== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1vNU8N-0000000046m-2Dos; Mon, 24 Nov 2025 11:49:27 +0100 From: Johan Hovold To: Olivier Moysan , Arnaud Pouliquen , Mark Brown Cc: Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Maxime Coquelin , Alexandre Torgue , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH 4/4] ASoC: stm32: sai: clean up probe error path Date: Mon, 24 Nov 2025 11:49:08 +0100 Message-ID: <20251124104908.15754-5-johan@kernel.org> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251124104908.15754-1-johan@kernel.org> References: <20251124104908.15754-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" Use an error label for deregistering also the PCM DMA for consistency. Signed-off-by: Johan Hovold Reviewed-by: olivier moysan --- sound/soc/stm/stm32_sai_sub.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/stm/stm32_sai_sub.c b/sound/soc/stm/stm32_sai_sub.c index 5ae4d2577f28..450e1585edee 100644 --- a/sound/soc/stm/stm32_sai_sub.c +++ b/sound/soc/stm/stm32_sai_sub.c @@ -1716,15 +1716,15 @@ static int stm32_sai_sub_probe(struct platform_devi= ce *pdev) =20 ret =3D snd_soc_register_component(&pdev->dev, &stm32_component, &sai->cpu_dai_drv, 1); - if (ret) { - snd_dmaengine_pcm_unregister(&pdev->dev); - goto err_unprepare_pclk; - } + if (ret) + goto err_deregister_pcm_dma; =20 pm_runtime_enable(&pdev->dev); =20 return 0; =20 +err_deregister_pcm_dma: + snd_dmaengine_pcm_unregister(&pdev->dev); err_unprepare_pclk: clk_unprepare(sai->pdata->pclk); of_node_put(sai->np_sync_provider); --=20 2.51.2