From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 877C337F326 for ; Tue, 25 Aug 2026 14:10:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787667052; cv=none; b=kQHPa9/wFGDtxdl9F/BV3xNX3EmjC8VzPrX8b1/l3v7IEDfTPZKE/3HR+uhafg0M66nJm56FpGZ+XyfRCHm62RDatc5ur5OPJK44BQ0aoYhpNXcr6zYz/xLvWHvgOOW+z7+mv1/SBsdVkxZVlKpj+XHf9tZ7n0T2xHjZUxufECU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787667052; c=relaxed/simple; bh=1A8fABCFuifqVIEGjwCpU3ptFnX5HKfPD+BMzGnAtrw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Lo9lt7RS5BFi1hIk1ufYhyGI45h32A7U4eDnO4tlFhjN75blk71jGp3TGF6F31Uf7loUAK9jWPkKXQH1LE253uEWTueSqPvamv6nmUUJDM3QY97oNZiCz9J9Kx22FgfAhr3lJfgF0GyEguu5Rdx/GEtzUHHXwHlo9eWbNlyHegw= 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=gc7qDy/y; arc=none smtp.client-ip=209.85.216.52 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="gc7qDy/y" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-3966791a6eeso69087a91.3 for ; Tue, 25 Aug 2026 07:10:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787667051; x=1788271851; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=9ZIjmuEHE9Rlk5riwplSnnGgEFCzgmjA3IFA8anx86U=; b=gc7qDy/yH1/XluX+4qB44SIwjBNaqi6swCV0RB248vElNV1mteZ8xXXrFkHH/Jm+Ig PrsEvgZbCIrHejlWmvHzr3BdLTbFCSjL5FEpIpwZMjt3xVL2SKpIz9b7dBT2Y5OkOebI 0yXgxWdVIiuiOC+tg1ob2ExsMpLRdNtBXm65u5CcVr1EzBk3T1Tjx+gO20lfWmjjV6ij 324WnR/ajyNmR1rG3/nj/bGiDEmTkWuezP0tbEzOSkH6mqgqQ4GXBLVSDE85ctoeseAZ u4G/aTsEgoK7qdK7GaIXxwUhJ5j5QX1gSPotKC+03G0odpLsTg8XT2/sninthWa46ub8 kwcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787667051; x=1788271851; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=9ZIjmuEHE9Rlk5riwplSnnGgEFCzgmjA3IFA8anx86U=; b=RW0LYr65GF+591YZoYXn4rzWI2uBt8zvhHIfDUWKkDqnw793iUOvPRiKc4y6uA+VMs E4ifzkzFlaoOMU7ngddkoGTGSm4oX/SE+yc84s0ulj/Nttn5lVvYmc1uKJ8Wx3e4NYmf 8FCDDhjJp1i5yz+/QiXkWbP+02Qw3vK6aykLxdYE9mVEKlTN4DkTIJhV7wh/bxelRimd P7aCth4WuVWB2NPuThFc1cEPSniAonwrbvW/GKVRcqUvEY3KeVvmuMTeQy0xOQQ32pE1 5FWvZ8XeFByo2vFWgEys+zwyKOmwXlJ1UsYI2bI7lp9rKk7FmerkR/U8HaBcir6vqH/g LVSA== X-Forwarded-Encrypted: i=1; AHgh+RrOxX25DnKOwdo79xMbrk38cjm8OYtuUpRr5OkuM3sxyBCNnPoQliR72MefT4C3hVVcWwePZmzftm8tp7M=@vger.kernel.org X-Gm-Message-State: AFuF++lq/FJBAni+qoponKNvO0niaVfuiKn2MDTDJDTKA/RkXfUkAyUQ PdaJTJWuGN+kPc9xDiNLNCf2lgvWJzfMrkt/50ncawv/A9d90uRrQya9l0IcPrnp X-Gm-Gg: AR+sD13rykalI9OtCtqplNElIEMfLvU12r6Pg7ExDmolYYsMMdfR7Pm2x0ABxN2y4Nh I+y7FplKzjDOvCvJBMlXTvzkq6pJ56yiy3Hta8xj1KgKf/ez0Q/AcLtMPc5GjmYz7bWadOM7yTl AHX0b8dYAGs2nZ6xJgOi9CDaDIw+kdkDtQd3Yu5DLtGEeOEbVSaSPByHXfiLr77kYlpciF2opID JZePV1V88ynxPBXstj9Sedfx0dlVAaHDM9Z4Yz/+HfVQnIoiAjUS1/v2jpoithKOsJpjzFN9U07 pmTTo9GcoWwZ19tLAfMwK3XDeYNjmsD8hzim3RGPBN1tn32f473Zog0cFV704gBCKXB6oOqXzWr 0w3cbNvPxEznZhn6m7RZBKoN+Z94zCpJfc7CZBP9eK+B6sjyFYe9da6j1pcrj8O6tpdjLYIN5qZ eDpSdNedeGAER5KRboeKfSmbswlM1pUFyDc5i3clKxKsiXz3/ZrWb9F5nAiTEAhsIWZ9X4z8uHn eXcRPqZ/9Ruqjs= X-Received: by 2002:a17:90b:5844:b0:393:1d92:db5 with SMTP id 98e67ed59e1d1-395c35e1199mr72431253a91.10.1787667050000; Tue, 25 Aug 2026 07:10:50 -0700 (PDT) Received: from DESKTOP-E2NGI2F ([103.155.185.60]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327f909a51fsm34020361eec.4.2026.08.25.07.10.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 07:10:49 -0700 (PDT) From: Sushanto To: Liam Girdwood , Mark Brown Cc: Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , alsa-devel@alsa-project.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Sushanto Subject: [PATCH] ASoC: sun4i-codec: Fix OF node reference leaks for analog controls Date: Tue, 25 Aug 2026 20:10:35 +0600 Message-ID: <20260825141035.784-1-seditorofficial@gmail.com> X-Mailer: git-send-email 2.55.0.windows.4 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The device node obtained from of_parse_phandle() for "allwinner,codec-analog-controls" in sun8i_a23_codec_create_card(), sun8i_h3_codec_create_card(), and sun8i_v3s_codec_create_card() has its reference count incremented by of_parse_phandle(). However, the driver fails to drop this reference count when sun4i_codec_create_link() fails, when snd_soc_register_card() fails in sun4i_codec_probe(), or when the driver is removed in sun4i_codec_remove(). Fix this by adding the missing of_node_put(aux_dev.dlc.of_node) calls in these error paths and in sun4i_codec_remove(). Fixes: 08289086b0ab ("ASoC: sun4i-codec: Add support for A23 codec") Signed-off-by: Sushanto --- sound/soc/sunxi/sun4i-codec.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c index 835dc3404..b10c2beac 100644 --- a/sound/soc/sunxi/sun4i-codec.c +++ b/sound/soc/sunxi/sun4i-codec.c @@ -1429,8 +1429,11 @@ static struct snd_soc_card *sun8i_a23_codec_create_card(struct device *dev) } card->dai_link = sun4i_codec_create_link(dev, &card->num_links); - if (!card->dai_link) + if (!card->dai_link) { + of_node_put(aux_dev.dlc.of_node); + aux_dev.dlc.of_node = NULL; return ERR_PTR(-ENOMEM); + } card->dev = dev; card->owner = THIS_MODULE; @@ -1468,8 +1471,11 @@ static struct snd_soc_card *sun8i_h3_codec_create_card(struct device *dev) } card->dai_link = sun4i_codec_create_link(dev, &card->num_links); - if (!card->dai_link) + if (!card->dai_link) { + of_node_put(aux_dev.dlc.of_node); + aux_dev.dlc.of_node = NULL; return ERR_PTR(-ENOMEM); + } card->dev = dev; card->owner = THIS_MODULE; @@ -1507,8 +1513,11 @@ static struct snd_soc_card *sun8i_v3s_codec_create_card(struct device *dev) } card->dai_link = sun4i_codec_create_link(dev, &card->num_links); - if (!card->dai_link) + if (!card->dai_link) { + of_node_put(aux_dev.dlc.of_node); + aux_dev.dlc.of_node = NULL; return ERR_PTR(-ENOMEM); + } card->dev = dev; card->owner = THIS_MODULE; @@ -1808,6 +1817,8 @@ static int sun4i_codec_probe(struct platform_device *pdev) ret = snd_soc_register_card(card); if (ret) { dev_err_probe(&pdev->dev, ret, "Failed to register our card\n"); + of_node_put(aux_dev.dlc.of_node); + aux_dev.dlc.of_node = NULL; goto err_assert_reset; } @@ -1830,6 +1841,8 @@ static int sun4i_codec_remove(struct platform_device *pdev) if (scodec->rst) reset_control_assert(scodec->rst); clk_disable_unprepare(scodec->clk_apb); + of_node_put(aux_dev.dlc.of_node); + aux_dev.dlc.of_node = NULL; return 0; } -- 2.55.0.windows.4