From nobody Mon May 25 02:57:45 2026 Received: from mail-dy1-f174.google.com (mail-dy1-f174.google.com [74.125.82.174]) (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 020E04EA367 for ; Tue, 19 May 2026 16:51:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779209518; cv=none; b=GffahniA1//K8g4LJRSfv2ZIDAlrywyZqhghNesg9I3O06amNj18nI/aQLdIHJmAPI4Ge+gbqQUOEcy4PIwX9Hg7Wdvbbg2BzJY9rFAjpjs4lcDW8g86aGzLNjv1JHILNcu0wGRBn93zUuDFUYoYqQiZmHemkf0AkaUh1/Ogjh0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779209518; c=relaxed/simple; bh=xs6LB5hFZ20MJjoK7zKOeih3SSoTrt0ZWFA5mHOlqPA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=Mu1Dzz0HnpqXxbB89MhOgPXUlXuFiaqx0FRFaCFcJE0iS6MV3/q4KDRohE0E78619zClS1cDfJZGpt/MHbDqfxV1laqUVmwkHSZPtPzeOQlrOZQXRrGg8X6i/UCDDElAqA4HXBXJuwK6rn+N7EpbaQ3ZplDDJLaDmnVq09TAGQc= 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=SYFrJupk; arc=none smtp.client-ip=74.125.82.174 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="SYFrJupk" Received: by mail-dy1-f174.google.com with SMTP id 5a478bee46e88-2f30a4601bbso3558526eec.1 for ; Tue, 19 May 2026 09:51:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779209515; x=1779814315; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=5Jo+gSsn+SZYVigoskmViLe50pMEYHpvZm8JroYRhQA=; b=SYFrJupkI71WGfLY1p9RFOEKLq4OstexAx5uLz9xb/k4OWKn3bahX2xQuMrGl2kmKB k3McBOJRJ2dSIws+4yipcpZfmPchmzNlfrtCaoQrQJWilsZ4F62qau6urIB4zhUji9rH G1jUJS0cFHq618C0PvuofZVzRIg0esTJqmMtAQc50baiTWHTqD1uorAknxe7Fls2MI0j fdYG0daw1oiKpoEismMK0gQQJiuYq0Jc6qJLlE8oOsEt3uP3VzL3vOikHz4sX1NBLVS7 wKpddId4GFNau8cJGx3Uba/QRNOSagJ54+AFDdFX8nVpqP2BBrxwKHMOm7rpXHHpamDJ oe2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779209515; x=1779814315; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5Jo+gSsn+SZYVigoskmViLe50pMEYHpvZm8JroYRhQA=; b=OurCAZNYFZciWP8XFzgj/aPREKGzmnb6VC+upn2m39+CbryW9WnNfBhloIYA17PGic 9c5Lo4V2VL6O0jLzbZoHnGOhqS6QIZTUjnH96+Xu13rnb/vv+82dCSbNcQHeWD9nfChe +S1vxJB+eNBwlrK5gmtf4rXPjQwg9erpriqEjaj57nbhdDRdY8fSuw59SZdflVhPz9aj gMb+6QX2pq6S1JTqsnaM6diN+SrhY3AAyluCmIzFF1kAnCdR6ZVL+mJzg+DkqbX8qEIf 58PgllwXmo8uv8pqq0f75VoEOtAEclrgV7Xq7dzC0SMb7DQFQ4zw8izWBYDbNeRo5dZQ KJgg== X-Forwarded-Encrypted: i=1; AFNElJ+qeGfl+QSY0kT9kWcngWQBVjcjm6fJys+B8jJWnLS0Nzbj07saiutHeyUpfmWxF6CJrHYFt0r61pLulyA=@vger.kernel.org X-Gm-Message-State: AOJu0YysTU0yoBSMAGq2OYwxmAEYK0fNvLCsyufzQ4iFRbRs+sC9sWGA 6crSHGKeF2uQw0cBiSM17edfp6maPqRKnl46CTVd8DQFaOde46a7b9Bn X-Gm-Gg: Acq92OFY5QRINFWoJnPgUwBJaGjMS1GbeSPAkGOnxW9fstGQfrGp0DzN4/3CMviTOWL RFu2wN2chofFk8Ws5l3bgBa4SjABxIqK84EdZQ1fe/F14Yy8g/3TPPGWbfmhr2qafesGiMWUuMu 02DWDeAZLQruRGsTESW2XRO2hxJ8M1/f+yx0mv1N3ic/roTGUe/N3yLNgi4Ko7/+fAnk1obbkyC qFZkmWnCFfXohnuQ6OAEYdQOVptWQxScjM1PULCnsPeXnErNJ3QYyBESHrSPAv1Kw77FD+1VmLt +u/OGreUA8NFEdcnceSm3HdcePOyAacTCuQPvguhQ7+90AdqDSnlihTdTHpeQ3SDBSdbh9erIrA DRot9EHL0pZh7NgXxqibsm5yslHMJpQxy5QkVvLo0WKwSFdVCoppcod0hH7BhqF7pw/XQc/FNVn vXEn5L9GSaGpZh8aVbXzXdpY3DzaVhz+eONQvgoRvPoKpr/ufEmUDmuCTao6Ia/Fz1tBX5wZ8kq Q== X-Received: by 2002:a05:7300:fd16:b0:2f2:6dde:df66 with SMTP id 5a478bee46e88-3039868c86cmr10136905eec.22.1779209514761; Tue, 19 May 2026 09:51:54 -0700 (PDT) Received: from [192.168.1.18] (177-4-162-74.user3p.v-tal.net.br. [177.4.162.74]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-302973bbd50sm16378452eec.20.2026.05.19.09.51.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2026 09:51:54 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Tue, 19 May 2026 13:51:47 -0300 Subject: [PATCH] ASoC: Intel: bytcht_es8316: Fix MCLK leak on init errors Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260519-asoc-bytcht-es8316-mclk-leak-v1-1-b4a11cdc2afd@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/yXMwQ6CMAwA0F8hPduElYDTXzEeRqlSQSDrNBrCv zv1+C5vBZOoYnAsVojyVNN5ynC7ArgP01VQu2ygkpqydoTBZsb2nbhPKOYr1+CdxwFHCQNSV7P f+3CoiCAXS5SLvn796fy3PdqbcPqesG0f6wLQm4AAAAA= X-Change-ID: 20260512-asoc-bytcht-es8316-mclk-leak-2d5c878a9322 To: Cezary Rojewski , Liam Girdwood , Peter Ujfalusi , Bard Liao , Ranjani Sridharan , Kai Vehmanen , Pierre-Louis Bossart , Mark Brown , Takashi Iwai , Jaroslav Kysela , David Yang , Daniel Drake Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?C=C3=A1ssio_Gabriel?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3431; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=xs6LB5hFZ20MJjoK7zKOeih3SSoTrt0ZWFA5mHOlqPA=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDFk8U9WY9G8cWZ+w9ikbY1jQuaDH12wqTSujjZNMkiquG PDVKZV2lLIwiHExyIopsqxOWmS5p+vB1fq4FR4wc1iZQIYwcHEKwESi3Bn+e7vsuNiQnxeVJcCq 3ygwI3qD++kXH58fcrr59vk+y/MchxkZ1ooneJryiLQlrbL/I+/iaxjqlnq777PH3dvaBY+r+LP 5AA== X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 byt_cht_es8316_init() enables MCLK before configuring the codec sysclk and creating the headset jack. If either of those later steps fails, the function returns without disabling MCLK, leaving the clock enabled after card registration fails. Track whether this driver enabled MCLK and disable it on the init error paths. Add the matching DAI link exit callback so the same clock enable is also balanced when ASoC cleans up a successfully initialized link. Fixes: a03bdaa565cb ("ASoC: Intel: add machine driver for BYT/CHT + ES8316") Signed-off-by: C=C3=A1ssio Gabriel --- sound/soc/intel/boards/bytcht_es8316.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/sound/soc/intel/boards/bytcht_es8316.c b/sound/soc/intel/board= s/bytcht_es8316.c index 192e2a394ff3..ea387dc74273 100644 --- a/sound/soc/intel/boards/bytcht_es8316.c +++ b/sound/soc/intel/boards/bytcht_es8316.c @@ -40,6 +40,7 @@ struct byt_cht_es8316_private { struct gpio_desc *speaker_en_gpio; struct device *codec_dev; bool speaker_en; + bool mclk_enabled; }; =20 enum { @@ -170,6 +171,15 @@ static struct snd_soc_jack_pin byt_cht_es8316_jack_pin= s[] =3D { }, }; =20 +static void byt_cht_es8316_disable_mclk(struct byt_cht_es8316_private *pri= v) +{ + if (!priv->mclk_enabled) + return; + + clk_disable_unprepare(priv->mclk); + priv->mclk_enabled =3D false; +} + static int byt_cht_es8316_init(struct snd_soc_pcm_runtime *runtime) { struct snd_soc_component *codec =3D snd_soc_rtd_to_codec(runtime, 0)->com= ponent; @@ -227,12 +237,14 @@ static int byt_cht_es8316_init(struct snd_soc_pcm_run= time *runtime) ret =3D clk_prepare_enable(priv->mclk); if (ret) dev_err(card->dev, "unable to enable MCLK\n"); + else + priv->mclk_enabled =3D true; =20 ret =3D snd_soc_dai_set_sysclk(snd_soc_rtd_to_codec(runtime, 0), 0, 19200= 000, SND_SOC_CLOCK_IN); if (ret < 0) { dev_err(card->dev, "can't set codec clock %d\n", ret); - return ret; + goto err_disable_mclk; } =20 ret =3D snd_soc_card_jack_new_pins(card, "Headset", @@ -241,13 +253,25 @@ static int byt_cht_es8316_init(struct snd_soc_pcm_run= time *runtime) ARRAY_SIZE(byt_cht_es8316_jack_pins)); if (ret) { dev_err(card->dev, "jack creation failed %d\n", ret); - return ret; + goto err_disable_mclk; } =20 snd_jack_set_key(priv->jack.jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); snd_soc_component_set_jack(codec, &priv->jack, NULL); =20 return 0; + +err_disable_mclk: + byt_cht_es8316_disable_mclk(priv); + return ret; +} + +static void byt_cht_es8316_exit(struct snd_soc_pcm_runtime *runtime) +{ + struct snd_soc_card *card =3D runtime->card; + struct byt_cht_es8316_private *priv =3D snd_soc_card_get_drvdata(card); + + byt_cht_es8316_disable_mclk(priv); } =20 static int byt_cht_es8316_codec_fixup(struct snd_soc_pcm_runtime *rtd, @@ -353,6 +377,7 @@ static struct snd_soc_dai_link byt_cht_es8316_dais[] = =3D { | SND_SOC_DAIFMT_CBC_CFC, .be_hw_params_fixup =3D byt_cht_es8316_codec_fixup, .init =3D byt_cht_es8316_init, + .exit =3D byt_cht_es8316_exit, SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform), }, }; --- base-commit: 4ad5b674ca5f0f0bb7db547acc2491fadcf8c51a change-id: 20260512-asoc-bytcht-es8316-mclk-leak-2d5c878a9322 Best regards, -- =20 C=C3=A1ssio Gabriel