From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 45F79C982D0 for ; Sun, 20 Sep 2026 04:55:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=SAVOL9koiJ+YcQGa1QFT/np1LbpIAAvGvOBmeTVIdhA=; b=d1fwYfABu6+F+Bh3oQeJQ4aTC9 u3AHJIm3/xNNOP6Hp9yypYozXsghXevVn/JtmEbryoMqjxU3c3fLXDbOBPyxlCQ6CVlTdEDgClkK5 YOR1HHm/XlAY7ppEh318SbJnQQxkUBP5mCtjBR6cvW6Xgv7840gtR4goa76RxREI6eTChJt38c1NZ ZXZ5ZGToHMTQxoasyI47z7GDoXeZ0Mg1SuXJ4YYOu1EOXNMWauO3So3epAjmUTymVvXBFFENAiaKX NPqJVs8hFUcnR98qWeGhowWnJIE2C3JzSwW0Vgi/UShh54vvhkp6COm//Q3Bu0HpLSTUFYP+VUUNR 38PrhM7w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x89ag-0000000GsA3-3t0C; Sun, 20 Sep 2026 04:55:50 +0000 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x89ad-0000000Gs73-005w for linux-mediatek@lists.infradead.org; Sun, 20 Sep 2026 04:55:49 +0000 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d93ff61046so19899215ad.3 for ; Sat, 19 Sep 2026 21:55:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789880146; x=1790484946; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=SAVOL9koiJ+YcQGa1QFT/np1LbpIAAvGvOBmeTVIdhA=; b=nzO1uhUhhJfy8vXa8C2+RCgAxgYyVn/751fTWxSIMhFpP734zyC8DLC3hFiJ1LA9Rs jXcZlcv1ZezROhLM+OOZRtEeMS6v75a8NONeqPPHg+LTnz4IdVzbf4EixWDr9TqtwTMB bwEFVfBn/IQGF44FYCgjl/mCORjCBipSKPA5Jh1f+MhtisrreKA8Hr9YUBe1pPPjzzYZ seKUu4ELZjh1QDKdb97ssDO+PaJDehhERNSBtJ1/Mp9P1opZsCYEABMOeGdw5LFROvNp OoGV5EeUIFy2oDvxrFy4ZHPnBNx0vqQ9v148RMiDHbxM4FbeVdz47SZ1FYrBk7ZA4xwL hEng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789880146; x=1790484946; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=SAVOL9koiJ+YcQGa1QFT/np1LbpIAAvGvOBmeTVIdhA=; b=xGPuS3lTmULIAq+qFacWwMCGkD7dh5iRdRD2NJzCmlWkMM0gzcFETBNh4osDUUw9zS ziCQtfo/lTEupw70U6OqlQbf62pRsIR4MoiLhzHQquFHP75p4C1b4T+uaIqPbDFTmhCd V/PQ8sPeMH+Icl9VADCCWZcTRJWRvoYveVM/pyO4k5a3zcF19Tn4icbtwH+0RbgH+uMx Qy0KZJ3EIROMy88OgHz/FYqhgE/MCdKMvkm624lfXMAK/hIXWZAvTHt6pSPhVNHDv0vu UNcMwFhPu2xSJJE1WSRYUTyGXIJKk9cH8F68AwfG9MtyWMEaZFHeR/TZEAeiSLeqdmJ/ D8aQ== X-Forwarded-Encrypted: i=1; AKwUvBxsF6vtQyY7GVJCwpJOu8eyDXrUA29vYuZXE5WoIHjFU70iIpDuPhLem53lkUC2/KybnlJRDe23wlF70kmtAg==@lists.infradead.org X-Gm-Message-State: AFuF++krGszvq6hMCxggdAf9tZ8X8CNjnadEscxdYg2yWbiinA2SyzC8 yvWGtEhXPjatAdZlGUtmdKtlzajCWfQ/sxom22lpoW7Anm+R7VCOgIh/ X-Gm-Gg: AYBFou3ltLnn5TmqtPm8n4r4bR27DahwfnFR3yHMOFfg0l+u1yb3jPFC2vwPy17DZ1s VFKUClzXgxe28BTLlADSKEzJGe/xOQ0mKHLxfoiAj54jNfhQF1ZfelXElgBcXV7zQ1j5CCqUKZ/ 5SEIX2T7dh8s7azZNjPHyiNULgg+Fd6hKvyXjDoyiP/fQQqd5r6ZiztMxc4prJPPNvcMeEEywy9 u1ag0iCz6kQP3FzTnatBuTLlH326TkfPWMASC9K3tjQ1KxsttiY+gKctVrWFpzV2Q+kgyLClwTW ziObIv3MqV6l9HtIod5xDgHQbxF75bfbHMjOyxDWOmQVzQNhXMQt8IMCEdTgOPYtAiyQUex8+ts dxN3eCxiTe9QveWc4yxm3NJLrwCmbVLzluOpnBoIQt1hAqp704R7TbZOD3PMO51aUTRiFtrxxpd q4VDHJh+4zbmnr7WnMX+U+Q/sM6axjAlAbr+sMPVdIkkGZm3tVBmrOgr7kY8WtzYxauKl4uUHFp 8hEdRNRizvSMBGliRrR+DFp/7Qa/57kdq+ZqmStCSqpPgoNFbE8/clZRCS/cmKeVhm9tQW3Uzk3 UAypdU6lLigh91Kl/jkIi6c6rNjA59+Y9rKcdLQF3iHvsyZqfAw95nZTgQ== X-Received: by 2002:a17:902:d4c6:b0:2dd:c100:3130 with SMTP id d9443c01a7336-2ddc100319amr56593615ad.44.1789880146239; Sat, 19 Sep 2026 21:55:46 -0700 (PDT) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ddc17d712dsm16026765ad.64.2026.09.19.21.55.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Sep 2026 21:55:45 -0700 (PDT) From: James Calligeros Date: Sun, 20 Sep 2026 14:53:43 +1000 Subject: [PATCH 04/28] ASoC: apple: mca: Fix PD link double-frees MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260920-macaudio-v1-4-741cc20a74e5@gmail.com> References: <20260920-macaudio-v1-0-741cc20a74e5@gmail.com> In-Reply-To: <20260920-macaudio-v1-0-741cc20a74e5@gmail.com> To: =?utf-8?q?Martin_Povi=C5=A1er?= , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sven Peter , Janne Grunau , Neal Gompa , David Rhodes , Richard Fitzgerald , Jaroslav Kysela , Takashi Iwai , Ulf Hansson , Amit Kucheria , "Rafael J. Wysocki" , Lars-Peter Clausen , Vinod Koul , Matthias Brugger , AngeloGioacchino Del Regno , Shenghao Ding , Kevin Lu , Baojun Xu , Sen Wang , James Calligeros , James Schulman Cc: asahi@lists.linux.dev, linux-sound@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, patches@opensource.cirrus.com, Takashi Iwai , linux-mediatek@lists.infradead.org, Hector Martin X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2173; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=l6ILyllDJHogvaPe0jQmA0G3c3totE6rg0ScLhCeibc=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDFnr0+U5j3Q8K1d7n3zG7LTOxmmXz5Q2XzaeunGxT7HUc 45m1SaHjoksDGJcDJZiiiwbmoQ8Zhux3ewXqdwLM4eVCWSItEgDAxCwMPDlJuaVGukY6ZlqG+oZ GukY6xgxcHEKwFRPesTwT+HVJhMTvqn60VdsGRn0HgazSXQf/Jq76funXvH8tlWL1RgZWk4ftrd /oNc+ddnUN1O2mJZWhlTNltBy1Hz0+n246IQNHAA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260919_215547_197361_1EAC09B2 X-CRM114-Status: GOOD ( 12.62 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org From: Hector Martin Add additional checks to ensure MCA PD links are not double freed. Fixes: 3df5d0d97289 ("ASoC: apple: mca: Start new platform driver") Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/apple/mca.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/sound/soc/apple/mca.c b/sound/soc/apple/mca.c index be702b2942a5..66196c6a9273 100644 --- a/sound/soc/apple/mca.c +++ b/sound/soc/apple/mca.c @@ -303,6 +303,7 @@ static int mca_fe_enable_clocks(struct mca_cluster *cl) * the power state driver would error out on seeing the device * as clock-gated. */ + WARN_ON(cl->pd_link); cl->pd_link = device_link_add(mca->dev, cl->pd_dev, DL_FLAG_STATELESS | DL_FLAG_PM_RUNTIME | DL_FLAG_RPM_ACTIVE); @@ -326,7 +327,11 @@ static void mca_fe_disable_clocks(struct mca_cluster *cl) mca_modify(cl, REG_SYNCGEN_STATUS, SYNCGEN_STATUS_EN, 0); mca_modify(cl, REG_STATUS, STATUS_MCLK_EN, 0); - device_link_del(cl->pd_link); + if (cl->pd_link) { + device_link_del(cl->pd_link); + cl->pd_link = NULL; + } + clk_disable_unprepare(cl->clk_parent); } @@ -392,6 +397,7 @@ static int mca_fe_prepare(struct snd_pcm_substream *substream, if (!cl->syncgen_in_use) { int port = ffs(mca_fe_get_portmask(substream)); + WARN_ON(cl->pd_link); cl->pd_link = device_link_add(mca->dev, cl->pd_dev, DL_FLAG_STATELESS | DL_FLAG_PM_RUNTIME | DL_FLAG_RPM_ACTIVE); @@ -423,8 +429,10 @@ static int mca_fe_hw_free(struct snd_pcm_substream *substream, return 0; mca_modify(cl, REG_SYNCGEN_STATUS, SYNCGEN_STATUS_EN, 0); - if (cl->pd_link) + if (cl->pd_link) { device_link_del(cl->pd_link); + cl->pd_link = NULL; + } return 0; } @@ -1145,8 +1153,10 @@ static void apple_mca_release(struct mca_data *mca) dev_pm_domain_detach(cl->pd_dev, true); } - if (mca->pd_link) + if (mca->pd_link) { device_link_del(mca->pd_link); + mca->pd_link = NULL; + } if (!IS_ERR_OR_NULL(mca->pd_dev)) dev_pm_domain_detach(mca->pd_dev, true); -- 2.55.0