From nobody Fri Sep 25 12:03:20 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013048.outbound.protection.outlook.com [52.101.83.48]) (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 2485F356754; Sun, 13 Sep 2026 10:15:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294551; cv=fail; b=FXtEtVTdyGjdMCC8VY2NQJJnUOMlEQA/1kwiA9HaFgrGlRlt4Xhs7xOyneHb/QPh2xHEuRm20spEMsFEfDx/KW/fAnVb81rI+gg+iZuuNyHT5fcsM+nIWGLT+z7i5/FCIldvf/O4ujLY9Iw/qgQ51qwLVkgB/7ogU0TFm5/XBoI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294551; c=relaxed/simple; bh=F5H5iYx9jaVOlSU41oTOixe2JeK7BTo43tr1l6r1ON0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YI64xKW9zxmxWSO3uialbxCGmUnTsE/bOggkaOx59UtALn+2a9OSwWZuG3LuKiQOHxVBaPvaqdrSWIgWZRTJ1aYtnKXnYAI71pRBJcg+cy68sod0rnBYDfbpYTP5pAA18Ijui99ByiW2Xt3vbpj+U6QgCTJkfTb3gg0RVFimYFk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=dTUIOd9l; arc=fail smtp.client-ip=52.101.83.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="dTUIOd9l" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=crNXNCm1VYFDAHMkp4IqczNGLb3hJtS6qc1Xv9Vn4WOBGcVbHPsFd4M9Jc+4BtvrAdNtVc4Qy3sSu1LMZEawCh8/F+keit2yGUaTRjNoDYdWz46fjjpkaXKtmMjHyWWpcZIXvcAd1WepqnknBfzHrvfgIe9p8PR4aioSDVSxWCqGPqm2sdcbcpeHo+0V3pwMZLZ4nQLqMZaNIm5P9nhU+FvthDJqLxEddbyoyCkc5Z0h5pR3GZLqKuejexS8pl53Ly9Q1C25A7Qrzq0wIQKHCZNAQy/IBWpuu7XJxLANmrf3ayvmoR9v4yS6V+06AO8ZzON/n6+KbvIXdWmEw9KhtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CoDOE9A1a9FNt1uOlxcaEsQpwuoDVt0ZLJjIC/Om+GQ=; b=AVQohQbTvjaJ2fC7oDHqX38wmJMpmZf4iSYtSItNotBxO7FILMpdpE1Wlo1Ycz7TFv85chKNFQl5o2yGQc/5DxBWcj5/xLpyuQ6jtUsJkyitV7xMjZa6kSrTP9TJ9+73Q9q1ipQpy+H+FRqEnI8MP4JeQ+40lVRUPlVKjuCOhC+7Ep7pYv8JxJc91vSiBgfZ5DqSFXzLpfFOr62NFa+Ajwdwb7lIahCiFBIsWMQSOZWZNMF9iMcnD7XOwkkEO6t4TPSHZttCz8TxStBVhRyrnWcVXarHKZOIyRHoGOaKwFyI+VqbGreFCGwLIdPbPi+PFGjac5OeW0bUTQq2X8ESbQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CoDOE9A1a9FNt1uOlxcaEsQpwuoDVt0ZLJjIC/Om+GQ=; b=dTUIOd9lPBIpXBGtHz08a9SVOu3FLbWlFipY9KattJ1Ns5T1+t5WF+uZTaAChWOo32sU4lpMmwIC8RHuk5uYL/G8Q/H6wk5R/gnTAsOThThg69t5qR/9m5kVjI+9OnLvxh3wucF3vHbpOPASugR7KeFlXdSgRPd6Yu7U70xh8Plea37dL8Fnro1dYaK6Kwi9yPnBzwHCNAoBDnF0FQtAUsc/zSCU01OCWtkbdcurVjcx+nDZZxoSwi/3JLSjr+u/Q0VwgfsEYuItLizOizTTf8SQ9PSEu/KtTG0dBtVwriUf0gHRAb+RPJTNZ4chq0mWFA50BoLCmacwpNkVS0g5LA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8602.eurprd04.prod.outlook.com (2603:10a6:20b:439::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 10:15:46 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0406.007; Sun, 13 Sep 2026 10:15:46 +0000 From: Chancel Liu To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Sen Wang , David Rhodes , Richard Fitzgerald Cc: Charles Keepax , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/6] ASoC: wm8962: Fix regulator notifier and beep leaks on card re-bind Date: Sun, 13 Sep 2026 19:15:26 +0900 Message-ID: <20260913101531.2787654-2-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> References: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0030.KORP216.PROD.OUTLOOK.COM (2603:1096:101:114::7) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8602:EE_ X-MS-Office365-Filtering-Correlation-Id: 0203d002-a991-42db-cb22-08df117ffa24 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|6133799003|22082099003|18002099003|921020|11063799006|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: wImUviErGEKXWDuEcAg06bs7BUo7gUa2zQy2clK8l9YgxpEG6XTeZNfw+4natIFcxWKq8EbDp0MdLdlRvOG+OSBMT6ZSr+R5BR1pgLohmz5JeUtS9N9WLU4CgNFmeEJ4P/fAfweEInsDOrCMmS7vw8FKisFp6aKHPB3Qecrn4UsFaLvrR+rizxhIMAmqJd31zOwQqELyTz/oJZ9H2eNLBeILrG4kwstnbcHJFbeQXMOMiMXkT25qqD6twqVf8lEFJA8A2eAScWO1cKDYPYGl7AzAYDqipW/5H4iXr6zD8A+QrfG2k90wDGKOdoxhqV7ibOXgos8V4DS4T2uJRgcUup60cEBj98kwWHoyAtfUZWH/hKH32H6EeqsUJHWIE1Yj7Canzr/LXVj2r8FBkLlshGtnc06Nd4h5WWs01maaauIYT34hlQE13HyELTTHyqF1JBzxgd4YxIhVU6WSrhJAx6bC4E09UsxtP9UfGyILA7WiI5lO1LaSqUwW5b93maA4OHpIu+kChe7778DbczxsCKM6VW1qfxB/X/8v6fv8o/3SXfuEvUkb1E/12U+wGV7/SOyOQ3ri2BHRb5SYpUAPx1vf8aUjb8JW9QvcToJ9QV75EFvEv2ANPYVJIQHY/Gxeu3R+KZiUs8HdsJYowGWIcwYDuETREAbpnxiOo+AD9evTLnR6xN22WX5vWGcv1BscdfrsJAQj03ToilK6M6ycAw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(6133799003)(22082099003)(18002099003)(921020)(11063799006)(10067099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Nob/ka+l7RTV0uEdlBYtMmZHYK6LmbnB+AeYM9FvNcEEVmTq2uB8QnHjaol5?= =?us-ascii?Q?zsgL1uUszcdNelx1f04ZNi1gE1xUWjMiP02iW0/X2ePZ2pfRRiGc8cJX+zvE?= =?us-ascii?Q?100F5DN5E6I9TExCiVFEuUodT3m4dKEzB6JY5MdfPAh4zs9FFkPJ/rxCCAzx?= =?us-ascii?Q?I3Vr4y7XHtt8/VByJ6y/u+7epcZTNzaTicHzNtUGaOnF0SCFlceRL3OOoDVA?= =?us-ascii?Q?pEgX6ICPCOL7n2JOHb5UJfgoS2odoUihoZMWynJDHushLCQaSbqHrkBTk0c4?= =?us-ascii?Q?MWAG53e9AT1z6nxtnDN3fz+M55CLYm0zvnYPhVd9VvXwoB345GLVAI5hOeVq?= =?us-ascii?Q?lJ4ArqgCVhuUHwL1GjkTuQ+aJBFCXyaCeP2Re1SXt4KEApINeTYdUB06cO88?= =?us-ascii?Q?rKSUpZaf+qfEgXS8jD9/2uqqGysOELyWFp842WSCVwkhFPzEXHrR9Wvy0JXc?= =?us-ascii?Q?moeST8btiLPBoEGq/k7OZsgHZxaRTL2azJnZO7mcQG/4zO9jJnOcYctea7iA?= =?us-ascii?Q?vqSg3DrviJR9Xmph17p6TEpMBhAU+Beuz90aTVfAvy0AbyEVoQY8VDRSo+vM?= =?us-ascii?Q?JP4enyrP5L+EF5VpYVDgd9ddb+zbLCqQ7EegXsOM576tqMGzJ8b+goR0M6rQ?= =?us-ascii?Q?o9RifO1gqBjMu2gYNO2tdbQVX3jpNCi0W+jB9q+s2hiiq3BoqjLTP4GqtN/9?= =?us-ascii?Q?xPw2qiWiTd7PsKiq05JQhbcl98diuoX6RVlcTedG2jGgH/vpzVmilAR02+A8?= =?us-ascii?Q?0Vwt1LWx/O8YpuS9Cl+w0aqriREz8hyYc1MnsH+1Cg358Zx2BvE9WJJ/YnMq?= =?us-ascii?Q?CfFswSThdB+oB32lNZkWElNQY18ZTUa1Jb/UQ9L4dEeiQZfWUx00L8Z2oKfd?= =?us-ascii?Q?z3GIj+W7S9m2/rUYfEjG5EpQvJm6GG8jbDB9CYAu+wLvdRz6I3tESHiU+Tbn?= =?us-ascii?Q?7oiSnAFyYwPoACVVrLWrQXkpHL1964exDiVUA0krVTgv/bJT95LNoiGLj4Of?= =?us-ascii?Q?pFZBgb7iVMOrBOta2pOETheMAUiM/T7u7QpC0PLRxhoX/mpI40GGQbXwpZcb?= =?us-ascii?Q?cBK5a9VEd4VO/IlU0HSO8CUwgcF9gejjOyA1+KxP50G7vcBHFITNKYJ749u8?= =?us-ascii?Q?c73SVeJ0JxnS4q/DAvZrvjWuSP/zRqsWxsWdprlsUB0wHPMS9YtAq8NcBZDL?= =?us-ascii?Q?RVrAjDiHqMpD7sqcTj584ENcwk3jNdD/ypspyY6/GojWhRvNUKKtio1EbFYJ?= =?us-ascii?Q?t0CKDekG6swzg8fhb+KUsBrOSugN/9sIdBZ1fM/dDNtJJOvTtYBylDc8gK8B?= =?us-ascii?Q?0fQIA1yEkNeZ874eRMabjRVngccu2s83cdU9mHM64b/OKeXLq8fqbJnx5IzW?= =?us-ascii?Q?3Il28ZUAoA21TTYcxzOycSiu4thzvfKrl15FaLMeR+jnFQ/oAf6zlL1J3uMx?= =?us-ascii?Q?i3FIgQFNBvOr7h8DJwaX4tyK4iQ73jO5PA6a9AikAUxjBaqtuU1x+XpXGNoB?= =?us-ascii?Q?t7RU6OrSIaEK/HK2ATsSaXDF4IwY/B9z2OiuE+PQryB0cu2p8MU4Vm9lj6LC?= =?us-ascii?Q?L0KOSsKISNFihAxuT7Te0XOvKaFXgQhFQU2WzrogiBxGygvsc8zvGIQwVS8H?= =?us-ascii?Q?o6ITlHbvgb7BNG6kqY+h84rnBptqDhWIa9IG5NiJri+t8nle3wBjaXFsMIOZ?= =?us-ascii?Q?XsgCXlgkVAF9QCrTk3IRyR5ZY3hxMCraqSJ8hwFhaRozQtizErRgdZUcCJai?= =?us-ascii?Q?CmkD9YI+Bi/DBrrHW1F0eNj6Sf44Y/BDrq8SqB/KXjcHzRx7RlUu?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0203d002-a991-42db-cb22-08df117ffa24 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 10:15:46.6936 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IoB8qdpqV27HguvbdpXdlXjfn7BOEtVgRoj7aXHi0lfFwxEUmUVx55fyY03Al7cLZacESx8ICShi/VJ7XkN1Z7yOa5x9fnaRJp6Mb7VKUsJ/CgqzLU85RBXheFoZxsyZ X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8602 Content-Type: text/plain; charset="utf-8" From: Chancel Liu wm8962 registers its regulator disable notifiers and allocates its beep input device from the ASoC component probe, but the associated devres cleanup is tied to the underlying I2C device. These resources are only leaked when the sound card is unregistered and re-registered while the I2C device stays bound. On that path the component probe runs again and: - re-registers the same notifier_block on the still-registered regulator notifier chain, which triggers notifier callback wm8962_regulator_event_N already registered WARNING: ... at kernel/notifier.c:23 notifier_chain_register and corrupts the chain. - allocates and registers a new beep input device every time while wm8962_free_beep() only clears the pointer, leaking the previous input device and its sysfs/input node. Fix both: - Move the regulator notifier registration to wm8962_i2c_probe() so it runs once per I2C device bind. - Allocate the beep device with input_allocate_device() and pair it with the component lifecycle: input_free_device() on registration failure and input_unregister_device() in wm8962_free_beep(). Signed-off-by: Chancel Liu Reviewed-by: Charles Keepax --- sound/soc/codecs/wm8962.c | 52 +++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c index af4716051220..ae6cc9c72439 100644 --- a/sound/soc/codecs/wm8962.c +++ b/sound/soc/codecs/wm8962.c @@ -3355,7 +3355,7 @@ static void wm8962_init_beep(struct snd_soc_component= *component) struct wm8962_priv *wm8962 =3D snd_soc_component_get_drvdata(component); int ret; =20 - wm8962->beep =3D devm_input_allocate_device(component->dev); + wm8962->beep =3D input_allocate_device(); if (!wm8962->beep) { dev_err(component->dev, "Failed to allocate beep device\n"); return; @@ -3376,8 +3376,10 @@ static void wm8962_init_beep(struct snd_soc_componen= t *component) =20 ret =3D input_register_device(wm8962->beep); if (ret !=3D 0) { + input_free_device(wm8962->beep); wm8962->beep =3D NULL; dev_err(component->dev, "Failed to register beep device\n"); + return; } =20 ret =3D device_create_file(component->dev, &dev_attr_beep); @@ -3393,7 +3395,10 @@ static void wm8962_free_beep(struct snd_soc_componen= t *component) =20 device_remove_file(component->dev, &dev_attr_beep); cancel_work_sync(&wm8962->beep_work); - wm8962->beep =3D NULL; + if (wm8962->beep) { + input_unregister_device(wm8962->beep); + wm8962->beep =3D NULL; + } =20 snd_soc_component_update_bits(component, WM8962_BEEP_GENERATOR_1, WM8962_= BEEP_ENA,0); } @@ -3525,34 +3530,12 @@ static void wm8962_free_gpio(struct snd_soc_compone= nt *component) static int wm8962_probe(struct snd_soc_component *component) { struct snd_soc_dapm_context *dapm =3D snd_soc_component_to_dapm(component= ); - int ret; struct wm8962_priv *wm8962 =3D snd_soc_component_get_drvdata(component); int i; bool dmicclk, dmicdat; =20 wm8962->component =3D component; =20 - wm8962->disable_nb[0].notifier_call =3D wm8962_regulator_event_0; - wm8962->disable_nb[1].notifier_call =3D wm8962_regulator_event_1; - wm8962->disable_nb[2].notifier_call =3D wm8962_regulator_event_2; - wm8962->disable_nb[3].notifier_call =3D wm8962_regulator_event_3; - wm8962->disable_nb[4].notifier_call =3D wm8962_regulator_event_4; - wm8962->disable_nb[5].notifier_call =3D wm8962_regulator_event_5; - wm8962->disable_nb[6].notifier_call =3D wm8962_regulator_event_6; - wm8962->disable_nb[7].notifier_call =3D wm8962_regulator_event_7; - - /* This should really be moved into the regulator core */ - for (i =3D 0; i < ARRAY_SIZE(wm8962->supplies); i++) { - ret =3D devm_regulator_register_notifier( - wm8962->supplies[i].consumer, - &wm8962->disable_nb[i]); - if (ret !=3D 0) { - dev_err(component->dev, - "Failed to register regulator notifier: %d\n", - ret); - } - } - wm8962_add_widgets(component); =20 /* Save boards having to disable DMIC when not in use */ @@ -3742,6 +3725,27 @@ static int wm8962_i2c_probe(struct i2c_client *i2c) =20 regcache_cache_bypass(wm8962->regmap, false); =20 + wm8962->disable_nb[0].notifier_call =3D wm8962_regulator_event_0; + wm8962->disable_nb[1].notifier_call =3D wm8962_regulator_event_1; + wm8962->disable_nb[2].notifier_call =3D wm8962_regulator_event_2; + wm8962->disable_nb[3].notifier_call =3D wm8962_regulator_event_3; + wm8962->disable_nb[4].notifier_call =3D wm8962_regulator_event_4; + wm8962->disable_nb[5].notifier_call =3D wm8962_regulator_event_5; + wm8962->disable_nb[6].notifier_call =3D wm8962_regulator_event_6; + wm8962->disable_nb[7].notifier_call =3D wm8962_regulator_event_7; + + /* This should really be moved into the regulator core */ + for (i =3D 0; i < ARRAY_SIZE(wm8962->supplies); i++) { + ret =3D devm_regulator_register_notifier(wm8962->supplies[i].consumer, + &wm8962->disable_nb[i]); + if (ret !=3D 0) { + dev_err(&i2c->dev, + "Failed to register regulator notifier: %d\n", + ret); + goto err_enable; + } + } + ret =3D wm8962_reset(wm8962); if (ret < 0) { dev_err(&i2c->dev, "Failed to issue reset\n"); --=20 2.50.1 From nobody Fri Sep 25 12:03:20 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013031.outbound.protection.outlook.com [52.101.83.31]) (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 BEDEC390CA2; Sun, 13 Sep 2026 10:15:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.31 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294558; cv=fail; b=VLyT+fwBtrFPz+XUfVDKjrRRTHSJFxi90U0Pw+nT0ahteop17w9i4OY4ie7quoncLTCnkWwZahJ+jVSekrVVCUiTGHFe1ncIh8HEEZLXLLC9jnVkdCSt2YXT0bhLpQNFe9xAHA2H2yizjNCiRTcL3jJuXsusVY9JBw9UJ3a7H1A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294558; c=relaxed/simple; bh=G6opOaakQxgdOPuMUB1d8Pt62FPuOLCsaB6UfsjVbXs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=HMGpW+0GK0lEwPrzTa6iBTC8dTePf7O9BSM34BTHGidqGjHNRp/sVvjzEJ7mXtw8wMuEzy5NBEeA/v+/LvCIymZwMnvfup/IPQlzACzB9wYjBMP4QFxWEz0xB3+P0QSumO2UQW1i6mOIrcQBjLTvoVJxurj5tB9qa8c2oM9H1Kc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=jqEY3C3t; arc=fail smtp.client-ip=52.101.83.31 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="jqEY3C3t" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=keo8a74q6M/bebSihtW/TKCrh2k0fnZz/QgZCstm2lLj5ilQWlLdAV52IuJE0rpT5brV2mI3vViZfIi319/CvFnbuoGpq1NeEzMZW7R7CBrBYIWDAvHLljztluahx3wj9fSsKnp1+/fZTbT2Kd2TJlRTgpHmE+JQrwlVASqzlkG8gzLM39DHMPLBLuZXcoVEggH5C7zcIEP6JRqmY0kZyjjpHaj1ZQnq5buNtzBlHzFpdoLF9Miw8nKVe+Q8i1fO8+1UIP5LxxWtS60F6Pp+I6MoZ6K2cFeiqgJ4jBDyVUcsCRmjMkdB0ENKiO45qxVYi3mmKaCjlTD9DoT1LDNvXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MsmUy3lRONu0jdSerhnMkYynqjgKM0DSgb4hDlowHxE=; b=U7VMCqq5hB9T/wZXV3FvQlGYORdH0XtrH9DlO4dUnfwh1f6yLXNv/mizXjaOsfQmLhjfMVoFvU3nvSEMoQaMZUuLiLVVHQeAfPs8++hYbcWpxuIlqobbyBYWJtKUR6QuVDoglO8lG7OZAgarb8QkI5hMH/RZ1/CD8MUHFAtoEM5JGF49xrbH2bOiCqZFfNX1DU+P1Aychk06+OSfOG8h1uGpMoVnO9Ftp3JPWSCigqSu5jhd1JGgz16tOovN+RtuhGUmuCNVuLcuiVm2g8CKe44Nt1L6Oo/r4c/1fcrZF/Op6VOuSCA3xqIiPCZKDpPMyJULPaD6+dALEq6FtYmbnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MsmUy3lRONu0jdSerhnMkYynqjgKM0DSgb4hDlowHxE=; b=jqEY3C3tMukOc8V66PYvBCtjbfdzdCzTA7y6tEcmbGOczTkHjoe0Lq6WwL6aXeCTDn5zYZZ5wq+59ujSqEAjIxJWmNn1+oHT6HlL6OcJ3GzXFIZx5e55oBrzgJq2MkwxcB/pv/B1KDLzJk5FS6bfaxIucGHAELyUK4OaiYZD6QMQoMvS1Ana5irUY4w9Odio/1GTsm3gUxMwpvN4C2IYeRLlSxov8BPwaXjuOh1zcUeVCa9/5QjlBV/0pYYa48ktVNfHjbMMajl+TJLBCmG+Y6XK9jVOsRr+7mYIFIQl7c6V4mWMU1K3qRw+IMeNfk/v7vIo1z6+MF3uevlp0/SL1Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8602.eurprd04.prod.outlook.com (2603:10a6:20b:439::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 10:15:51 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0406.007; Sun, 13 Sep 2026 10:15:51 +0000 From: Chancel Liu To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Sen Wang , David Rhodes , Richard Fitzgerald Cc: Charles Keepax , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/6] ASoC: wm8995: Register regulator notifiers from the bus probe Date: Sun, 13 Sep 2026 19:15:27 +0900 Message-ID: <20260913101531.2787654-3-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> References: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0030.KORP216.PROD.OUTLOOK.COM (2603:1096:101:114::7) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8602:EE_ X-MS-Office365-Filtering-Correlation-Id: 501bf435-6680-484a-7e79-08df117ffd35 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|22082099003|18002099003|921020|11063799006|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: AI6POrSjk9dyyXmtmN/XMkCzOyxn2bcRuF4Mh0rNSTDe7U+uSwqBWnAd0SsI5CAp/3REz0KaOxnd/IdxRm2vLPhrznU0MMia37LfuSNNasixn6bvcrdhb3QuNzlAW+IHHXLPz9cpVpiJUKBLeCgmAisK9gfEghkwKWK2edZCvnEynxpaVCnNGB5iYkrz3ZafLUDP9yPctSpJ4IpJtONQ1CZL3qTyWAYq8U74w2sUCiusCHIu6hxMaWEqi3xRq80cWK5a2U4SPJFW37zirhkDf9tIU2JLV8YviJPZ0UWv1wUbfHxPoZQUvEpSsiCcILKvAnvkNehVxD6niHfu0TL2e7FBIwjepkV3W+d7KxWiKS6VcocsrPXWRmAKL8T+qe6adFr7G4iZFVLIZ+Z2itx9PxBPNaaoaROAUeX4A9Nf0i8E1t+tHbG7/M7EMehEt+5V6KtoIC/pEjVTjUwAjwly63I7FuE2SuTjKEduwp6301PzQpIcEBT2P3A1NPp56ikWcPHTng/o3BBQKqi0iqaiB83DAvh2zY5sEnTw0biwjp2H+pz1I9uLt1IjHQNZohM/wvcJArYW9wi5MMsXeVpWAUTirW2U48+7TLMZL5+/NdxZG3WGSRI1BYeEcBgsDkPJYnUdhHh+XPVkg/CP1aVYASM6zE3X6DhkrE/Cnh9naxpAINKCAHQjbN3XkNtxjH5fBInNNLuySIYxziGjAWB35A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(22082099003)(18002099003)(921020)(11063799006)(10067099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ojHAVg8Azv0fS3yZZMe8fZKg+OqLvTdvhm8z6XaUVpCKrCygegWujLXRwHi/?= =?us-ascii?Q?VdaYelWhGH1ReieLh0f9gNZJKb+4a6GF3ArBtPhcxFHissbZeaPYd6gJw9uu?= =?us-ascii?Q?8AyuAfpvXOXt0LiNbUTAxNMvpWuYmRbMU8dBANktAUcftoS0vBkSjCWhWIco?= =?us-ascii?Q?kXpyTDkyR6LrypF++9xWfeAnV4t6P/b6lEqQLrmzRKXNh/U3yDQSEUvGIP0r?= =?us-ascii?Q?pOVJHdjLSxGbafFXBk49HDxdXi+p7ep8Fj4YiSZL864S/chdkA8J15OlhYun?= =?us-ascii?Q?f46elBI4zUVp2VUjMCbwnSAmlWfz1lBPBuIhi5wunsF8YWf17to8ZzwwYhUw?= =?us-ascii?Q?pDnqjbWeQ6Bvuj05f+PY8mhJBInaPdxATB+Zz+Pb8HRSzsxWNMFEBUvvYLCt?= =?us-ascii?Q?3riuOStnFRXACcwFh+NOdlEbqvLg2wK5RiMc/fRZh6bW5RuhhQA7//Qsmw5Q?= =?us-ascii?Q?PVFkwo77U7S3EHZglD9TejiYJ3UxcQ2hHy9bTLPER6rOG3iqR8LH6bcVT4/r?= =?us-ascii?Q?QIeI8Kb97MSIhTc8hj50Qj12kgIH2SlC7h64hzoHeg+V9+KY5uyAKosNUqDm?= =?us-ascii?Q?WHxQuAfHzgvsl/L1LP15YupXyMSjja2QKQggK7+aOtDWyHo7O+AwWyrSku++?= =?us-ascii?Q?kkUphePsknD+Qy5eXWiRwiLh3fnQHS+GLgkAPkd5TOaIZI1OoQbRbUdzbRrz?= =?us-ascii?Q?g64EYAwntnzXr4Bzu3VHE1ZeYp/YVCRS28tLh65+1OtFMHA1ohJlqjcEiRUz?= =?us-ascii?Q?/yc543d9b5+TG26WQZ45GElXk/e9+v986T5kBzPn6Q2y4eh1s3H0rjnj4YDG?= =?us-ascii?Q?MKh1h/1BUj+F+ID9+TSKHJFV3ziZVZoJ2V/46zdkIniMQ/2GrfynvB7thfKE?= =?us-ascii?Q?aev9Ie51t9/8xbpcZj7+iJ5ilXuYt8qkr8L2qAHQAKqVtoa/IEsykRQSouG+?= =?us-ascii?Q?Tpoy3GvAqUZji2l8+ClKiWkuaWMFMmr8XdU9mxeeBB2Etd0d0eJb7AfO0zeU?= =?us-ascii?Q?sWNm6bUF1qfxAFGUSL62QuFVdasw4vl6SThAiSU1LcmUQwhkL6C+3pW+a80o?= =?us-ascii?Q?cG7nQ+9Iz4Rzw2jMxyNsoXK0ZDMJDkvawf4hEwLm+klS0iuzxcK6hQEZn9FU?= =?us-ascii?Q?0iciSBN1fh/jzBSDpw+fOxT/eBLKFKMgnzyJ6y5XNoVQeEdAeKMl90/Vs6PJ?= =?us-ascii?Q?9qFZqAyeFPh7kZQubl0WzThYTJAxkbL698JH5/EgxEaC6QWcPz9/I2Km3zpJ?= =?us-ascii?Q?fatVVpNMixgmG2phEGE14VB6QgE09AqJKQFi8r+HVRrSvCsC/cNYgmZzxod/?= =?us-ascii?Q?VeQv37MgvA/QWQXJhW4neQ8lDtq7xCPNoKl+wyAm92vyAuq/+bdZhWcsHZPd?= =?us-ascii?Q?C8gFnnm0HcUbBt1IhT/aKFW4ldXi1vUqtIlWby+EvG+iqDTFS37l6ApEyJnR?= =?us-ascii?Q?ZFkCBpCkyUqyN2yfIR+bSRcy7TUJ1m1dYdmO/UF3kVpGkIHsjwT5bsB5+mtx?= =?us-ascii?Q?gQtpi87tKzP4sunP+XqFY5CF+TUa2lRZ9tWC1Ej5kuRBqlyJHSA5fLbue8JT?= =?us-ascii?Q?Kzsqcmnpw3ZHMgW+kh0UGMOY3ETf8kGKPMfo1lgsRPPEbXBXP89FSvFjLI8U?= =?us-ascii?Q?DOYhvHWLyFiGVcD9bPp4HQMp0OlwWpyFxNZwBSF64b4vhnNeopGFgajazwNR?= =?us-ascii?Q?RHRChwpdQmyreLwle8y3j0qvZ0Kr5PpAexzl+obx3xoTWlxnv5P4Oy4gMHMm?= =?us-ascii?Q?DXrfKUkFS254WlsyHOQ7A/OyeFyi0ew5M19/T4synDvPlx2JSk9c?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 501bf435-6680-484a-7e79-08df117ffd35 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 10:15:51.8587 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Iy7a2JLgkrU80QFTvVnQy4fmNI4iRqzdJn+2RRfZhOlaPIwqeVmRUDIAZVeMf+ilnbcNd8MoFNn2Olfi6wjPHDqw0kRsNXVGV+pwwiFKkfvH1WlzVYJyHJ3kA0m6Omjp X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8602 Content-Type: text/plain; charset="utf-8" From: Chancel Liu wm8995 requests its regulator supplies and registers the regulator disable notifiers from the ASoC component probe, but the associated devres cleanup is tied to the underlying I2C/SPI device. These resources are only mishandled when the sound card is unregistered and re-registered while the bus device stays bound. On that path the component probe runs again and re-registers the same notifier_block on the still-registered regulator notifier chain and corrupts the chain. Move the supply request and notifier registration into a helper, wm8995_hw_init(), and call it from wm8995_i2c_probe() and wm8995_spi_probe() so they run once per bus device bind. The regulator enable and the register accesses that need the component stay in wm8995_probe(). Signed-off-by: Chancel Liu Reviewed-by: Charles Keepax --- sound/soc/codecs/wm8995.c | 41 ++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/sound/soc/codecs/wm8995.c b/sound/soc/codecs/wm8995.c index 799989a5bf0f..35cbd0fb7f1a 100644 --- a/sound/soc/codecs/wm8995.c +++ b/sound/soc/codecs/wm8995.c @@ -1993,23 +1993,17 @@ static int wm8995_set_bias_level(struct snd_soc_com= ponent *component, return 0; } =20 -static int wm8995_probe(struct snd_soc_component *component) +static int wm8995_hw_init(struct device *dev, struct wm8995_priv *wm8995) { - struct wm8995_priv *wm8995; - int i; - int ret; - - wm8995 =3D snd_soc_component_get_drvdata(component); - wm8995->component =3D component; + int i, ret; =20 for (i =3D 0; i < ARRAY_SIZE(wm8995->supplies); i++) wm8995->supplies[i].supply =3D wm8995_supply_names[i]; =20 - ret =3D devm_regulator_bulk_get(component->dev, - ARRAY_SIZE(wm8995->supplies), + ret =3D devm_regulator_bulk_get(dev, ARRAY_SIZE(wm8995->supplies), wm8995->supplies); if (ret) { - dev_err(component->dev, "Failed to request supplies: %d\n", ret); + dev_err(dev, "Failed to request supplies: %d\n", ret); return ret; } =20 @@ -2024,16 +2018,27 @@ static int wm8995_probe(struct snd_soc_component *c= omponent) =20 /* This should really be moved into the regulator core */ for (i =3D 0; i < ARRAY_SIZE(wm8995->supplies); i++) { - ret =3D devm_regulator_register_notifier( - wm8995->supplies[i].consumer, - &wm8995->disable_nb[i]); + ret =3D devm_regulator_register_notifier(wm8995->supplies[i].consumer, + &wm8995->disable_nb[i]); if (ret) { - dev_err(component->dev, + dev_err(dev, "Failed to register regulator notifier: %d\n", ret); + return ret; } } =20 + return 0; +} + +static int wm8995_probe(struct snd_soc_component *component) +{ + struct wm8995_priv *wm8995; + int ret; + + wm8995 =3D snd_soc_component_get_drvdata(component); + wm8995->component =3D component; + ret =3D regulator_bulk_enable(ARRAY_SIZE(wm8995->supplies), wm8995->supplies); if (ret) { @@ -2216,6 +2221,10 @@ static int wm8995_spi_probe(struct spi_device *spi) return ret; } =20 + ret =3D wm8995_hw_init(&spi->dev, wm8995); + if (ret) + return ret; + ret =3D devm_snd_soc_register_component(&spi->dev, &soc_component_dev_wm8995, wm8995_dai, ARRAY_SIZE(wm8995_dai)); @@ -2249,6 +2258,10 @@ static int wm8995_i2c_probe(struct i2c_client *i2c) return ret; } =20 + ret =3D wm8995_hw_init(&i2c->dev, wm8995); + if (ret) + return ret; + ret =3D devm_snd_soc_register_component(&i2c->dev, &soc_component_dev_wm8995, wm8995_dai, ARRAY_SIZE(wm8995_dai)); --=20 2.50.1 From nobody Fri Sep 25 12:03:20 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011065.outbound.protection.outlook.com [40.107.130.65]) (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 B43D4232395; Sun, 13 Sep 2026 10:16:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294563; cv=fail; b=s6qU/p5fZm32b7sVqEbmY1nhBCnQiTUFf2QeYie50rdzTi9WuULhHtHZrzDR+RdbWSQRcU8C9txzgiesRoz7LifnNv1GBb8z8A4HsOxvaF0LZ8op/gdioGHlI4TOa6KycU1Sp5fXokKTEWOphWdOHi9x9SkfoCD04QAqBG9kLK8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294563; c=relaxed/simple; bh=SQmhS0zP4C6/CSHvydIE44EVHIZFlXt0Dyh2IUpmN10=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Vs0w4cavyUJJUCPcuIPiCZaUi/Lg+SsFVxhc4ohlnYpxhJEWEquNl43fxjSytdJ11/skY/PoNa3yNDy619Y36czj/Ecf+zTZpKH39Zd3iBWVUkvifBbJZG3mgNh+UmIGr0+N2whb19f3qbMVX/HlJhKptfhzJwLc14Pvk2vjt6I= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=LAxl7GYk; arc=fail smtp.client-ip=40.107.130.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="LAxl7GYk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cn9aIXVXmVId9MTSI4zFaCYlAGgXGhqfJapVA5+N3PXgiRkn3efV8/zFFDh7wRe31CwDUGwpmC5nicF0lq2tTrkz/Eud6U+aWij2rImQMOK99vYg62seuaN3Ke6Q9G3XH3QjEC0ciuNkKQjkysaLKbXYROOine9eLMMwYwFKDF8PGL2TIxXdM+GkZoozbHEvMElWZ/5cKI6Q70xgBrtb4Vaw+sECvJd8G2OPSEPk6Yb68WHBJADy39RdGVDRm2Kj+B8v/LGK9xaNcusDSgm/iC/44lkRFQ+uFr1QGEViIT3/Nixz374FPOjXTlWtD7rrv/iADJBroEHHmojDTVufPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=cq7FDgyoeulVoI6YcV4M2PsJ7Ev0kciD0n2Uw4aDiXs=; b=WhtH/KX4TPNLKY+dGVmtOv5IjDzp3Uey2NbgNgjrv6AyVYoGK9t9bYa+oVjpWwpkqscLnkTxD/9slqycxSJaF3kwSBp1dqa7Wm3enu0PSFolMK8unPxZ9en+4fumdscbddd5msONFp8QyxgsCsEQ2gJOxcMRFwayGpu3tb0hWyPucAc2Beu+6VKUs4OBlOZDMUpKlWuXLfVUP4rAn1/JW6duSknBwdGYWoiA7Hdq98Pevp1hVpq70iRaGeBYGfGLh0nk3YrRHfvO5nJtzZYeoeRL5QNbRBu4WQeGLKJF8n02AzyQo24IhLEWJxOYyYc1JWDd2n7sFNu/4kPAhurj4A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cq7FDgyoeulVoI6YcV4M2PsJ7Ev0kciD0n2Uw4aDiXs=; b=LAxl7GYk4q+AOagcCm1Xvz/wuCCfdjN+ZxyZ962s6xEKRFIes/3NZYSDgFQ6AtXiWmYJrDT6viLDVnZhKnhjKlxJAnAev60nrTgzoyqBCTY4gxMY3jv3dcVjED/EXsQXgEn7Dt25kvQV/WV1eiLeY/7U0l1vIRqw0ABTAA7SbQmUHUbFSmwJx4F1hp47FNkbTBCeMnRCxK/AxTSmxLKQrYDFAWhoIGRsbF6z77SxwuzTIjH6gMpuWcngnEwNIwBdASSwrMnoZGtiODG5t1c6fMVQFYGQ7gckbRXpeKcirtyBeVfqBsmXDtxjDuljghLRZx8T+1N+u9a9RPpoXmGfYQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8602.eurprd04.prod.outlook.com (2603:10a6:20b:439::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 10:15:58 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0406.007; Sun, 13 Sep 2026 10:15:58 +0000 From: Chancel Liu To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Sen Wang , David Rhodes , Richard Fitzgerald Cc: Charles Keepax , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/6] ASoC: tlv320aic31xx: Register regulator notifier from the I2C probe Date: Sun, 13 Sep 2026 19:15:28 +0900 Message-ID: <20260913101531.2787654-4-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> References: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0002.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b4::7) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8602:EE_ X-MS-Office365-Filtering-Correlation-Id: 23e0a703-d4ff-436e-e7b4-08df11800125 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|22082099003|18002099003|921020|11063799006|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: dG2KotGBOKQ81mQbMVhYjGF/mzLJ8xT0t/T6yXDAe5llXIZ1y0TCQh3o3stou9CD3iI5wFndSoq286OEyrexvPQUV85FlHuoajtMaUewBLn9fcOyIQA1Qid+0oNxZjfXm7eC8AU7oHy8hK/LY8UGy0sHqCDuGtKu1O1h6qBGmXEsL9nmLk+8vyhZ78/z2agNeNQc38c0YjdAS7hIunLzF5eqZhsTuwYB109AsA4haGYm8a3cHvWRYk/6KuxYoCqDn1puknxYBbP86hyj0fsvW5392KDWr6r+2wTkKH9yI1Xu2oOFFrBh1xbUGdtMIypv0PIaQC4yOch0k4FDYVjWS4KMWkRewjWooQ5S9B8afXQBEdHNvVbiG6qlIAV7rwfgjjGeq6QBblrO75xlseIAmLQPL2VXpwPFUvxl7AE5cvCB8WCmoVUKX++tTVjK+QDe2BIwIsW9qO/IOP5ri23nWgSV/6+0m6m6qZ7P14oUGOvInmYtDN+6CJh/wd7ektE83sIQ54qKFQRmUSOdvcCxYMtEAEfxYUITT09ykXqqF+bU9HN1vkPh488PF7Pwt9cX6gUwXuzKiWzWdK/hLJuUHirg/qQV8AhBF/n/FIel2+XvrhpU10NePeBaTTh3AIFJJJZ++TXUsPhoU3nnOHNkNdfSmjEIC6blxA1A4lT9LW02qUkPbLyrs4foAYIr+EqxjeoFA0VOgk7Zv6aCYlz+yA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(22082099003)(18002099003)(921020)(11063799006)(10067099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?aKSH1VTtYfbKeEFwAQky0B0fNG43p0QbRiK1tslu8UXiZ9eBrE+Bc6PeRkVH?= =?us-ascii?Q?a+Wz9tv7/jyK57PaOr0cGzfEoqExGyC/aht4gfzZlh6H5PIt5oPDrvXu0OSz?= =?us-ascii?Q?Jv/HaN4gMaFhM5oIbFLQFR2JpLkxIR7trkiQ692FIIU6GC2JTeHkR27d2CbO?= =?us-ascii?Q?dtZt1kjwa96D/5zhYzLhrO92kN/q3gEi3ylgOCtHDIm6FcUAASGTqGCZPfFn?= =?us-ascii?Q?qUlQss6zzRkukACUKjb33t0379K7iLorIIGu71s0i8Sr2JRrNCt3h8jkBbYk?= =?us-ascii?Q?k8mh1S/W270vbu2NQ7bSjdqf6UKOH01DZjqGcCQD/dSdlbgAm8JqNY8WOois?= =?us-ascii?Q?Y5Z+8pLNzL66/AXcmX5VgfTWrS2otivvbCwlNLsx23K2tfPbyiJbfyb6oy87?= =?us-ascii?Q?5pFypKt0545pv5XA+drsvGrQT7kSzkTaU6fcxK6oXzQbSk9g8WqpUxPyMUvL?= =?us-ascii?Q?/q1c3lR0i2JQAblTMOLzPpiaOclOgXSS0c1hMP4Ayxmb+v3r3nzzEfGrayLo?= =?us-ascii?Q?nkX5lzfyOXulSwl9hEXiqjYmQzM0mOtM2c+juv21rS1dOtEPFFRneaUyYgaK?= =?us-ascii?Q?W+xH4MO1ahBPkVpAlEmZ8GoQNOYgrYVH00wXulWPLfMxqjfwr0sm0cZyUaO9?= =?us-ascii?Q?t/2tWZS8MTs+RG5HqhR8i3iNRZghqRe8L0ztpZOizNHazxziuftOpMggmE6C?= =?us-ascii?Q?dGyFdywC5CkZO1kcQV5/jJlPggsX8hbjM8k4JUN9J545XBe7zhXR43Vh7Uo6?= =?us-ascii?Q?SxMdAHbvPyJxLu6+CsLox//NhtGStbLx9va42tvdKdX3q20F6PMUqMDWolTQ?= =?us-ascii?Q?L6a5hhkDau5eKacB1RQk8hqbKbtdTLCsYEcLpflQyLKhAuPWFhLO2iO4yxD1?= =?us-ascii?Q?xj0OOuYqaAGdg9QjgADBA+qbyPQUySpcL8nkz69h032I00e0mDVs1EaBQcpX?= =?us-ascii?Q?sb8Dbe7g4oA4ziOjUmywWCzPRESdt9H9IY8HHzltcFDdjCnDcslrED9FPCyT?= =?us-ascii?Q?EdYeeISqlaXwXvlotCdplSR2fD1MudAjaUnVfv66sbEcFJrjTNELMr1+BQ1a?= =?us-ascii?Q?tonElm2tj8CzoiPSwnBouHhgXqkCe8us1tI7pase1vNJfVruSRF/GNosbr5W?= =?us-ascii?Q?Wa18dmePJEeGzTjBaI77hrlSLWlZCmRcBZpXQTKIDuGtd5thg6sAPNO6g/gr?= =?us-ascii?Q?0bUiLRHum0CzvqLn7Cd4sFRAzTU7ME//WIZ5OClc8QfduGo8cOwqyg1NOf5p?= =?us-ascii?Q?qyzrMFVqDH/BIFCC1i4ZpxXgy8mjAGBpq7zH+Qrb3bRxLHThMoyPcJHyEt9d?= =?us-ascii?Q?9/sx0A9/mon6LLNe5iSPdaoIZVqmQMM1yrXAYYgtsgn8S65GGq3ZCfXIe21C?= =?us-ascii?Q?jWulsCvtcgh61vvwnZBOgyWMGE6tqemy4sZH0/zStgpFfZimIrh391Es/KpD?= =?us-ascii?Q?yQF0Qn9MFEBFRcqaAx6D+7WmIh60/xODilNsEEdQYO1MpNgQkjIpAPYpjIhw?= =?us-ascii?Q?T1lyNEAIWSz146eRVlqUjTNGUdOE9N80DAGxj4eANjjzzX41xKmB+CD7YOlZ?= =?us-ascii?Q?obsAYMiIABUpgcevbzIqbkRhyZa8X6FT3BXzAfvGPbgHaEFsUw7228ef3o2x?= =?us-ascii?Q?adk/giEzr4ufLDYyvOtY1B/xPkGdmCJTEMQrOm+omYMhagJLZJ5o7SXr2aGu?= =?us-ascii?Q?aItRLrAm8C/Cv+lmLcNfOZkV3a/bYCaHN9iCubEce7AO2txRw0zmafLuW6xX?= =?us-ascii?Q?ATDESboEykR+iTfnPA5yPN8TfPmjlo3ZcasoV6/iWYr6qUcJXaZq?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23e0a703-d4ff-436e-e7b4-08df11800125 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 10:15:58.4322 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BykVH2EzYIjMV9B+rOuWU8umNhmap0/gcxODU0GXbruD4E/Rw3Vc4gz7IkbWiayDrwiF8BPUNDLXHrV+VOvO9+dVmhQYs9f2cB/ojRLk+Y6obgOsnq+9GYZGHkQB9Upy X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8602 Content-Type: text/plain; charset="utf-8" From: Chancel Liu aic31xx registers its regulator disable notifiers from the ASoC component probe, but the associated devres cleanup is tied to the underlying I2C device. The notifiers are only mishandled when the sound card is unregistered and re-registered while the I2C device stays bound. On that path the component probe runs again and re-registers the same notifier_block on the still-registered regulator notifier chain and corrupts the chain. Move the notifier registration to aic31xx_i2c_probe() so it runs once per I2C device bind, right after the supplies are requested there. Signed-off-by: Chancel Liu --- sound/soc/codecs/tlv320aic31xx.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/sound/soc/codecs/tlv320aic31xx.c b/sound/soc/codecs/tlv320aic3= 1xx.c index 43bcbc5449e1..b0df6e6435e7 100644 --- a/sound/soc/codecs/tlv320aic31xx.c +++ b/sound/soc/codecs/tlv320aic31xx.c @@ -1366,27 +1366,12 @@ static int aic31xx_set_jack(struct snd_soc_componen= t *component, static int aic31xx_codec_probe(struct snd_soc_component *component) { struct aic31xx_priv *aic31xx =3D snd_soc_component_get_drvdata(component); - int i, ret; + int ret; =20 dev_dbg(aic31xx->dev, "## %s\n", __func__); =20 aic31xx->component =3D component; =20 - for (i =3D 0; i < ARRAY_SIZE(aic31xx->supplies); i++) { - aic31xx->disable_nb[i].nb.notifier_call =3D - aic31xx_regulator_event; - aic31xx->disable_nb[i].aic31xx =3D aic31xx; - ret =3D devm_regulator_register_notifier( - aic31xx->supplies[i].consumer, - &aic31xx->disable_nb[i].nb); - if (ret) { - dev_err(component->dev, - "Failed to request regulator notifier: %d\n", - ret); - return ret; - } - } - regcache_cache_only(aic31xx->regmap, true); regcache_mark_dirty(aic31xx->regmap); =20 @@ -1791,6 +1776,19 @@ static int aic31xx_i2c_probe(struct i2c_client *i2c) if (ret) return dev_err_probe(aic31xx->dev, ret, "Failed to request supplies\n"); =20 + for (i =3D 0; i < ARRAY_SIZE(aic31xx->supplies); i++) { + aic31xx->disable_nb[i].nb.notifier_call =3D aic31xx_regulator_event; + aic31xx->disable_nb[i].aic31xx =3D aic31xx; + ret =3D devm_regulator_register_notifier(aic31xx->supplies[i].consumer, + &aic31xx->disable_nb[i].nb); + if (ret) { + dev_err(aic31xx->dev, + "Failed to request regulator notifier: %d\n", + ret); + return ret; + } + } + aic31xx_configure_ocmv(aic31xx); =20 if (aic31xx->irq > 0) { --=20 2.50.1 From nobody Fri Sep 25 12:03:20 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013032.outbound.protection.outlook.com [52.101.83.32]) (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 1F8863CE4BE; Sun, 13 Sep 2026 10:16:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294570; cv=fail; b=WEY1T6r5pyc/hQjLAPyxY4R4cbYigg7v5a5qsjOtICJZ6ujF17b+ewZBYDp7kJpOu4EfX+FmOPKv2Nc2tJj26h4Armbr/i2TM1reFVfIGDOobbFdF4iNhAmL+Pk4EPKkW3iMi3bZRNEUle4E27ntBpISeZjPTRXs1Wf5Dmv0QNg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294570; c=relaxed/simple; bh=3oo432SC+Gn102kL+ddsOoY3bNL0SW1YuGZR3tCV6Q8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=uYk5Xk3T8pi7lV2CEzHg0NkkUchz5pCrQZElN5MUpi3dBZhjnuIn18/zV2MsQTPgzNRhaUPjUyGk6DRxvS05urTMnqs6+LCuOFQlt4zvhb9oJi0PtnxiO7bznfd+Cepljo54lbZqdP+UWFnJMTnfRuXtjzAsChyXWT/a0GSbBXU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=cUC2xkuU; arc=fail smtp.client-ip=52.101.83.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="cUC2xkuU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h9cQwkLtWsEU45ueXz0ty0QdWVRGHV13/IMvjvtdo1Ov3c2MK+riReMyN95uCGl3lEdrfAqSJd7YE7z3cTqvKn2Dg+GiW4EyaKh/x1x67M3ziR3lYFPyUV+EBVrgYbYJifdUiemf/7hA7qE0ROhsMND5lUzW5bCxbvycFdBamd704SSKdaBQHqVwBHXE0rwZLc6l6YfGpYWrgdro1307usnc3kGBbxta6tbUkoWxqOwvFmgWEybfkbOzWEyAzEwybgm6gh0BGSEgIY+0mnTIM+ZGGVzaDHghldtOk5s6n79OHGrLlg0+O9QdaXLsRUgmjJBUH15mvr3FR34LFx1gVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=txOiz7Hhw/ZJtymEQPCzwN0oEvexMpQYZOhuTTUDVkE=; b=gZghrohIAitdFwL5iwDLZHChr3qhFZUDbHOUpm/ksHsVxTQMaoeTGgQaFdyynBkecKkIn4dhb+x/Z31iS5hSqNHzGpSZODJgZ816trQJY28ZmXDL6gD9FzRKIRTY42kp101AcNFuR/PTsmkzJ7OXJ2DzVPc9BUmRcrj/5ICP2EcHfDZe1NpcBdZ31iEPKFuXhywwTZRGxkLQmhkUt7C7TXZ08buT3AYWRzNQYDkKaCK2aLIirP+XWeH6eKH0S3Ra0rSK6wAfmzMoReZLJFkdKHrFY8qspItN7ifLu1bCWdFMiYjJJhsxuVyH9n+y3A9RabrcXi6GihwV+0Qvv3R5eQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=txOiz7Hhw/ZJtymEQPCzwN0oEvexMpQYZOhuTTUDVkE=; b=cUC2xkuUNMbwfc8E2zak/+M0kx7P//Tl13JhTfhH/cIgIcOvyrktZzycVuRWN4tTRkSGG1hgRs10I9S5PerHr7QndzQvtQZ18gRziZzHcXwR5X5yI3PVM9nb2aSgYZ8/IxGnkkZ4HzXgCnLxODewoO6+/qs5rOTluHaBktx3kMlcBc+JCAAuVXA601O++RpO/fyHkGYLaAouIL6WJd0LjodZ8YpHSmtorbOua0L9q7eOF3DlFL56Z4wDLm/LU4T+YNVDuLbiX6IApZZl5hHRMRhN2NU9CWO7+QdD19m1Sh/hstzzMYWvQJfQRnfh2DaAM0Xh+7t2dLZxCumpQarRdw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8602.eurprd04.prod.outlook.com (2603:10a6:20b:439::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 10:16:05 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0406.007; Sun, 13 Sep 2026 10:16:05 +0000 From: Chancel Liu To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Sen Wang , David Rhodes , Richard Fitzgerald Cc: Charles Keepax , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/6] ASoC: tlv320aic3x: Register regulator notifier from the bus probe Date: Sun, 13 Sep 2026 19:15:29 +0900 Message-ID: <20260913101531.2787654-5-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> References: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0004.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b4::17) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8602:EE_ X-MS-Office365-Filtering-Correlation-Id: d6d889c7-47d1-4866-9d49-08df1180051c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|22082099003|18002099003|921020|11063799006|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: IT4AIUFAn+iDDcmuusqbb29ePfNw27xnbnUsrfSJnFWLhMmfDMEBpKbhATji5kGitP9/D+M/e2Ep//JpKhRPKqqPCL7uRvAmTRlVcR6nBUckPySmZvaTzhN6XIsMfwUJGtq9m5kBJq6D2PpD80vagDzqtEwc5uYbOomgOcmU9sak5stGsKOyqwM+OykoRnwIq3F/+2WPFwOKMopH2OT2no3taU2xKo3b0OBSQoHk+hyOFFrvf19Tgs58C1DJsOXIgBBsi9w+1b2/X+aOA/RiJ6JDNuH6pVuxVkjDZzjajlJxLCQpO1ZSrVDqHXlmOrngVfjTJPVLecSnakPcBA7VWLQHMxhcQH627kNMjFFpIru+Q9f/xm3yZfYEBQBviVmIguWD1xOKVNcvNNNNBXIYSrkiz39Sr4fB5tf2TOjXJRBy5xbugBiA9ydJkaC1y2cDhNNAH7s3ZwrpsQIt2GfI00wejZDEJbZ7QLUgB9jxW3HNyKzRcEeVI5p3swNnsixOlKcqZviOqa2GH6SrxQl9HZjfXwLjPG46ANau2iS+KoR3OzR0DywWHkAgUeFxZojKm/vHkB6xsivdNF9FraGg0ZlyjC7itWWao82OMCcl4jqBo6hSaLPvV6NBIgxtq5Cs0SwrwQr1iH1cAKOvtl4AJGx8WoY36YMgbLOc008YM1m/rHYHxuua5PwCZW1lTtcjd8TpI3tGWLTW4dIjQAwQdg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(22082099003)(18002099003)(921020)(11063799006)(10067099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NS0q5el/NhBMS23lq6dxt9Kb0992B6jvozKo1JEH2fjHmvVGK78qKpHm3fTv?= =?us-ascii?Q?KrZ4iWIbxEtu4ZS8zKhAhXyzg8sKgCGOjSRQf0uz/WBUpDwh8oV6XZEukgM/?= =?us-ascii?Q?Ebs5EhaOOzjmpyRHhF9fLuau9G7dQ620jWTG4DF6G0PEluOn5eNxvCAdCuLI?= =?us-ascii?Q?fZIE3Z5sFa/152FU/aouFvpL0Kuj/rUbSKuKdq/UsrsDou9tP+ULRZ+8AOfd?= =?us-ascii?Q?U3vob3THBOqPXElzenDg+pVcJbM+8tZJE4VRU/WxGVkflw2tye4gCO4+vpbo?= =?us-ascii?Q?vI0ZZ3AKGYiOxfq2d7da8PICL/EbG2Hi01taFi2rRtxixeEtKp9t1NnfbUbf?= =?us-ascii?Q?haMmV3ftIiRCE7VBW4dR1FnhPk9bSlkJxpr1KHDO6mHRfpmDdeS8KyIbqhFu?= =?us-ascii?Q?vVuRdWCn3Hu2C5fx/6/nEoE7GvqInpQPplEfBoahJzsshnkJfpdfeJmFYY99?= =?us-ascii?Q?0kmC9hZAruP2WdfC8gKfQFAtfa99+/0hd7o2d+JMal7tp6tQdIEMx8lHPthK?= =?us-ascii?Q?s+uZxF3lq0FkRLUZyqOy1+w7LUKAX+VTQqXAv/KGAvYFN13XLcjPSpbVsVj2?= =?us-ascii?Q?QNz+ntRR8aL1S05hREldyhd0vex3fthYy3ous8z/AujXE2yoffrOT7rMizxk?= =?us-ascii?Q?EsP9rviLIB2JcxBBfvxF4x2KgUCgNG80JltrUQDvS6N7tWKg8D598rQcfOQu?= =?us-ascii?Q?GcIE0Ea74UXBIKjqCGZDYctcdJrRqi6n30CBToze50sFgsvpzaDqoasqti28?= =?us-ascii?Q?TqPnTQjHLWhksvLVJIgKxWDB1LPIjY+6KiWkb8+5aLTMJiar+pjp+TIyO2ZI?= =?us-ascii?Q?HKyWuPFJacuTGHtZTErsQ3xvB+2J4tYZbw9lye9kCUBJMHa2vhdTC1uX0yd/?= =?us-ascii?Q?3klD74pt95DaNKaMyl1UFJQSe5uZrKbSKdNiLM7sQ7vIG4th9+0pQK2Kz3+5?= =?us-ascii?Q?k2lgglpC6kSnbuJWNIwOMQHQm34iOOmIJiXS9aj4DWi0ZC/LGBr5h2K/7oXe?= =?us-ascii?Q?9ViDA4ISoiqCTNvC5SeffJsAuVDeje/mVHrVHM7W2y7Gu/9Mos2Mgo95kV5H?= =?us-ascii?Q?HuGqRwmxJAJ7L6l/NiFqgeKTqlDynAt17FQqS5mQY90TIm8zKzSXPfvM0aTr?= =?us-ascii?Q?LD4f+R/krXi+SbiTg0G+3qHftv97dR70sDQiUA3EdH0lnhX0bIw7VdOxfybi?= =?us-ascii?Q?/gjvhbKplvQvSLcHHr757Tqka8Jf1FD1s52MkZRiMufTtxSjhB7vINc1GSbV?= =?us-ascii?Q?dMl5K1VES99q+w01nJWw1/zzGVh3Z3s28O5MSt057BnRwknqKhhAL/9uI15n?= =?us-ascii?Q?mWJFeiWB40XC5vT7TWO+fYuW457uQGiyVqVwwhYast9haKJnotAPGpOM1Ohz?= =?us-ascii?Q?3uL0JyC9z6nDl/b4Zby/lMyrJGNjYQwpNbxqSPkyaGYb4RavXBOsLalNdlv6?= =?us-ascii?Q?bnKkFAxopKMay/Fz282D7zo0xaBcDy+Ym6GdB9A+ebgCLpTOnlQeWdw7bhqE?= =?us-ascii?Q?ZS1bpcY98WcqMsA1V+K+XXf5jFJQgoSzyuGLO3iiZVna+lNivWawe2fMOUOZ?= =?us-ascii?Q?/+3JB3B88G1Q3y1/7xWbytYCF+TQnkjv6VfI5EJqVlrbvd9N4lGEaXYVVstV?= =?us-ascii?Q?09CooavtzAydKYK8j9OOWGo/af/4cKwZvQSYDlhLMYX1FzyFAuuATphwWbov?= =?us-ascii?Q?lz1gwyfnTIJTcliSyLWCyz32xYJgxr4A+xp0kumv0FjfHA3KzsH3ZLhhfYav?= =?us-ascii?Q?47JMiZB7F+IFy+RDT6RSBDUxVG8AnkJ0Pi04GKmp/ef9x4UIHi7O?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6d889c7-47d1-4866-9d49-08df1180051c X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 10:16:05.0673 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lAUbSjS4Ks9AP2lH3GvnbnYOwg1QwcLpdXibAAacH/MInFtTAHoERcXN3GlQg8tSRtbLiZmjZZbtYifxnd3oHH74lKfnqAK5rIFJ1Fo0lOOic/l+oZLbAEP7wHeaF0ln X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8602 Content-Type: text/plain; charset="utf-8" From: Chancel Liu aic3x registers its regulator disable notifiers from the ASoC component probe, but the associated devres cleanup is tied to the underlying bus device. The notifiers are only mishandled when the sound card is unregistered and re-registered while the bus device stays bound. On that path the component probe runs again and re-registers the same notifier_block on the still-registered regulator notifier chain and corrupts the chain. Move the notifier registration to aic3x_probe(), the shared bus probe helper called from the I2C and SPI probes, so it runs once per bus device bind, right after the supplies are requested there. Signed-off-by: Chancel Liu --- sound/soc/codecs/tlv320aic3x.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index b38393a8130f..405c60ec1448 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c @@ -1627,24 +1627,9 @@ static int aic3x_init(struct snd_soc_component *comp= onent) static int aic3x_component_probe(struct snd_soc_component *component) { struct aic3x_priv *aic3x =3D snd_soc_component_get_drvdata(component); - int ret, i; =20 aic3x->component =3D component; =20 - for (i =3D 0; i < ARRAY_SIZE(aic3x->supplies); i++) { - aic3x->disable_nb[i].nb.notifier_call =3D aic3x_regulator_event; - aic3x->disable_nb[i].aic3x =3D aic3x; - ret =3D devm_regulator_register_notifier( - aic3x->supplies[i].consumer, - &aic3x->disable_nb[i].nb); - if (ret) { - dev_err(component->dev, - "Failed to request regulator notifier: %d\n", - ret); - return ret; - } - } - regcache_mark_dirty(aic3x->regmap); aic3x_init(component); =20 @@ -1845,6 +1830,19 @@ int aic3x_probe(struct device *dev, struct regmap *r= egmap, kernel_ulong_t driver if (ret) return dev_err_probe(dev, ret, "Failed to request supplies\n"); =20 + for (i =3D 0; i < ARRAY_SIZE(aic3x->supplies); i++) { + aic3x->disable_nb[i].nb.notifier_call =3D aic3x_regulator_event; + aic3x->disable_nb[i].aic3x =3D aic3x; + ret =3D devm_regulator_register_notifier(aic3x->supplies[i].consumer, + &aic3x->disable_nb[i].nb); + if (ret) { + dev_err(dev, + "Failed to request regulator notifier: %d\n", + ret); + return ret; + } + } + aic3x_configure_ocmv(dev, aic3x); =20 ret =3D devm_snd_soc_register_component(dev, &soc_component_dev_aic3x, &a= ic3x_dai, 1); --=20 2.50.1 From nobody Fri Sep 25 12:03:20 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012002.outbound.protection.outlook.com [52.101.66.2]) (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 B8F1939F168; Sun, 13 Sep 2026 10:16:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.2 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294578; cv=fail; b=PqmDVOQd3wZZPq63CmuQFQhn2CNUhQzj3FIgj0TZUfU8v8nPEgmx19OTAXaZjK0n3srcRboOAyY0Dp4a3zvQhDPQyj3hkV/LTcRbBKCsk1rvrsdxufQnEjO6C9qcV26sg+hlZVJpDFoSd8aNDrh63VQ7NotFJxG4oz89krEY7c4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294578; c=relaxed/simple; bh=GnCo1yw3uVDKSbSedrtm3tiD4xzspQdiDRq4kpX9ELo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CncBm7A1IrAca27e9DPg9/9RfrgrxIXlxMB4Nq4UpOSrx2/ctu61HWCRw7ulvK1UBplmD2Kw9oMk0OcJ1mOTIWKHdmTmPgjZZPboeu2XvYAud3gB/b/DHT//iTVKHky6w+rk4CxHEE7IVLBricp8ViGLgXYFnSAYFSUOiY7VTZA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=V9USobh4; arc=fail smtp.client-ip=52.101.66.2 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="V9USobh4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LR/XafgQUg5K1a5awWcM4NwDEc/Oh9xfEnmsT4yK7LYDVPC91Ec45tNNhec4tbKqgVoC+rpQ52C/rNUQ13PaAhfZx9ijDWBDNMWWWbAyjSgFo3tmOLRTy7WXz/+eYK9X5qf2MGTEqw6BkvOPDkiuPvez0o8t43ov+1TXQOa49HWNDd03ep5gS9Hw1yUQhTd30WRniGmMlX8uIrWON/HtQprOgDLUGrpCREDe7H2zKvHkpig/ZSPvFJ4ZfBnTTIPXR++Bb6wYDjHA7E1bET6tn8uDVN4KWCiMxXLwi42FcxIdfRqhiMiZPqDpICF08MnJ/c3hjmutVXcIwlUPxK+Xag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lNH//LWI6WQ4zj7cNQ6Fsw2aFbeOkFy6e7LKkyVLfAY=; b=S32dTjnHFlR36BYh3LMpPqhX/oHotD5TumMMJuonmJ2fayPrUrUflKYXCVxTe2qh2SgbgJufRAUmRsU0k+SqYDqeedGzW6vimLLcYdvyWsDWdPWHR9ziHFnchMiRC/cXWz/2skjGPfyHyfWxFYRvLZXd3B8XQFjpQU+t+xTMsq0VVVdw2na5O7i5ZNyEtOkQJ2OtVLWHa8ZavDKqsB0S3PrYekwyoLZT/kvMH/WZiKDFOncbO20ov/GCmDJ6ZykeZDl1sv1BbHX0EvJzJz70/p+eiZAO/k4W1M0DspJMcrBeohpVXFl0+suA34fR3uivwd8KIWzzaaFhao/fySRSyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lNH//LWI6WQ4zj7cNQ6Fsw2aFbeOkFy6e7LKkyVLfAY=; b=V9USobh4VjXelIAmbCb43vJToxRXraXVZ4LHTO5v8Pi/dl+JyD3HTAALnTwje5BSRe+NJCexZY0+/b5wlBp4R1tMkIdR8C4Rk5Ecz4uvFi74IaVcgfjfH0b4hPlJv1Ru+EiLX3FBO5M66dMDONYjVaai+YndIL1u3SW/tGP2GSvnLawLWgrmvOUa8KzShahYpcesRgDoyaexmmStDhRutMJpHsj9VPJqElBGSaIugSftdGH2eWP+48RSmjP9mrZNp52BXdIQALWBEV/qWqQIgocJmbFY6jjna3ifkNh5Akk+HDg4crIwWIO2oklm7wlLwRZ5neVUYwBxtpsapirTlw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8602.eurprd04.prod.outlook.com (2603:10a6:20b:439::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 10:16:12 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0406.007; Sun, 13 Sep 2026 10:16:12 +0000 From: Chancel Liu To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Sen Wang , David Rhodes , Richard Fitzgerald Cc: Charles Keepax , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/6] ASoC: cs42l52: Fix beep input device leak on card re-bind Date: Sun, 13 Sep 2026 19:15:30 +0900 Message-ID: <20260913101531.2787654-6-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> References: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0013.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b4::14) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8602:EE_ X-MS-Office365-Filtering-Correlation-Id: 5339fa2b-7323-4631-e9db-08df1180095f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|22082099003|18002099003|921020|11063799006|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: djIwmS9m4oRXz/g6RtahUL7WtxlKb4fe4B5Kye9x0KsCRU3ouvDeUybpGFuwhsJLxRaSbyCTaLzMMCrHank78Frv+GklVHKfC95zkHp7dQZUwA/7iFdxVCm0ksUCumbZkComQWU730qcl1Yn+EVfZv1XelGJCf4x0zkWX7COYt6XmjnD4H5RRwVQsMwARh72cnOhkNb2+6/Ogi3OESKm4fltDdRy54MeCwJ/2D57sJExIkujK/Yo/c0yvGOzBP+IHS/+ym1k2xdF6cHHTXR+H0Ap3inXv1Ox05pI2OlpvhiFdN/j96QewkjvXB+euJJEgGz+s44EOeJcCjVl0QioANUk+sJfT1i2uwixpWfOz6lNpRun6TU6yyFCPjTNfc+J//TUP0q/SR8ImI/DL0Gj5H10Uq0qXn4m6ZYJjyxFFQHBeBBGdWKuWeYsD5CYoKg1VeMw+BkcVzTgITkYjxDqXuW9D9vdhuhphTxewko9ybiLu2IrR5TafyeowJIrSPzdjV1AZMPHGkyhwIouxaX7BjCzSOm1wluOlEHFo2G6X4FtB6dyNBYdc2ru1K08eTwyZQAk10N2wZhf+8ltjmPRZe97ShXsTvQ5Q/WIwONA+YN8zXGjQnnjmVPiSjJWgoPqqCbY/WJ9ZnKzPmupY0kYNPg+B5Pf9i2TvB+UabfOwFGwTDsOTZNJuBJNxzo2dfhCW/K4QqwpdlHs+rziXJQEsw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(22082099003)(18002099003)(921020)(11063799006)(10067099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yHN7JnyZt0VhzJkDdPE8t/35bPhsXeFh3yHbBBZaCPaxOBZmKxis03sLAS16?= =?us-ascii?Q?ZUdk/lk0gSc696c5B9Ps0NUFj4S316sva8Ywn/EMx78bnRgxsTQnUj/fS/LT?= =?us-ascii?Q?+JEmz+ITyYXKnT650PCMe3FQD/CDxLXBPYgdtjsUJBFb+Q8m2guWulBk0f5N?= =?us-ascii?Q?BhROiM01cBc3/Ik1D4W2+gQpfCHNCQxFmGscUd2uctBxkoBQpr3mTrFTogYu?= =?us-ascii?Q?HQ9Kyz6+oGmjiW24AiBG9W0p2Q03eVSgEjUXz4LD67OjVF9e2u+HBuiz7TG/?= =?us-ascii?Q?E7UUU5dBFWi0QrjT6ama6SYqbeLBNdy8AF4QG7XGPZkMmA1QJ43bqjKkasLC?= =?us-ascii?Q?rbAs+p33VyxA25MGw4i1sxkRHIEaMrLu+PQBwa+iftJY+ji2tOcTJ36/t4uV?= =?us-ascii?Q?wHU4wyDi0ouTjpLEfdur/RDw9aQNoWAtbn/7OgAI+8LR8/r4+IWAaYcMzNQl?= =?us-ascii?Q?MubiSN6ytG41QgdLci0iyA0X+Qicpxcpq27CcATsEmF4TdJOkD84TNRedytF?= =?us-ascii?Q?D1ZfmWt8z2qEQBKm8bphL3OZn4J3Bc0IUCdLBRQ+KGiXzs/r6MCqbm0j9fnR?= =?us-ascii?Q?6ScbkNwOVk1vsQFFnjsrFgVKHuX/0IOYLJvqNe128Bvo0t8UU58AqQge47L/?= =?us-ascii?Q?m22mSQDyLNTYah9wo0/BgVlnxFhBtM91cIyKK20Tygy/KXH15psgqbHyMkbG?= =?us-ascii?Q?0dqCEUFZCbw68QLEJFjgeeBY25nEV/6oU+k7aVEFngFyk9PTLaBEh2sBkNTa?= =?us-ascii?Q?/hm2zL/wXBU9h2JDB2Xam5JP5UJAD74V6TLYfM6j6HK7LBoMYnttYuUpuPP0?= =?us-ascii?Q?D0TKrQkIaaDrS3MQypA+3dTj5rzH6GiZjrU6MVMhKctC3q5glg3zfDLGrYAW?= =?us-ascii?Q?zER8QUdjBDk1QpQxeyuIbupfY2gt8Z2KqK07LNsqDLSH4rZINdTAXB/cJ5QS?= =?us-ascii?Q?W4hZcAxnkE/HF007T3zIjVTTXUo/DSX9KYa3GsHju7OXpt59T2Yy+xfMkUVX?= =?us-ascii?Q?1r610pknskw9oCWrMUC6tBh5XW/ck18RMIOcBDQtLX9Ig386NFuuW15l2z3g?= =?us-ascii?Q?iHfBhAlDF6qgXNuNUXxWC4RpPBerUKvqUlHawi9+O56PuBkA/9wbOHDS854L?= =?us-ascii?Q?OZCuOH2aCc4cAKcf5CAUlJLNlpVcnTBxSRqlKETBg2mdcgvxmF7z1n5nfick?= =?us-ascii?Q?TDo6U0Zpq9gP9sgw0OY82Few5CV/7kxXuQpdWL4nTd8rGTze6XnvYcycXgO5?= =?us-ascii?Q?3l3/0XUQegipbmHOYYHo3TdpQqYlMancRemvjCREH1FZQICdr7sRUA7RTF8H?= =?us-ascii?Q?2pu6NDn99LZV70LN0c4NB7XkEscA7e6mBknPiZ0aS9x6/scfmfSAJEVHkgV9?= =?us-ascii?Q?i1NvMn0oBI1QwTWCxLQS34nypvbLPXANswkPE9+RqjbFGFCYM/Bsq6PuTW+7?= =?us-ascii?Q?sG+Hr72fVe6baKeXJQhLLFl026FS6+DN2Q1CAaOSTG0Ne5xvVAWkNft9manm?= =?us-ascii?Q?oj3UMAtY4PrTopo+JhLWs9ezbncoNfAOKMOznT79+B7s5FfaykywQYA/hmM8?= =?us-ascii?Q?ygDvEj43pAN4W3zc2OLmRGudbC8gS9FAhP0C0ke51ezLnuKnre5MO7NA583W?= =?us-ascii?Q?nthyMbdXtf4xfm0Ersf5sKT+7GrLoFrELswipZzfBK+0BFRJfK3cY4MTOg31?= =?us-ascii?Q?46xdbJ6ii21j9WCTJxmaXiaapAJ5KI+Y3r2tu7FcYBcZiw0HRH+va5Fbwt2m?= =?us-ascii?Q?HM0zFdN2ZWJTik+c7LbdjW494xMuEg7+BnZL2iGX/iCkHi4rph0Y?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5339fa2b-7323-4631-e9db-08df1180095f X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 10:16:12.4741 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rgJeXF0xGN1JfHdMa2HDOG0kebWrTn1keJSw0QNFJ+spfXgy3v2R05mQUGknNAteNTF1ytSXY0JiR5llQkamnYwpcgqsdH5i44KU4ENofjXpXH1dC0E4SUkl8p73wcqh X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8602 Content-Type: text/plain; charset="utf-8" From: Chancel Liu cs42l52 allocates its beep input device with devm_input_allocate_device() from the ASoC component probe, but the associated devres cleanup is tied to the underlying I2C device, while cs42l52_free_beep() on the component remove path only clears the cs42l52->beep pointer. The input device is only leaked when the sound card is unregistered and re-registered while the I2C device stays bound. On that path the component probe runs again and allocates and registers a new input device every time, leaking the previous one and its sysfs/input node. Allocate the beep device with input_allocate_device() and pair it with the component lifecycle: input_free_device() on registration failure and input_unregister_device() in cs42l52_free_beep(). Signed-off-by: Chancel Liu Reviewed-by: Charles Keepax --- sound/soc/codecs/cs42l52.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/cs42l52.c b/sound/soc/codecs/cs42l52.c index 9d6bcfbbf0b2..0cced269f300 100644 --- a/sound/soc/codecs/cs42l52.c +++ b/sound/soc/codecs/cs42l52.c @@ -1000,7 +1000,7 @@ static void cs42l52_init_beep(struct snd_soc_componen= t *component) struct cs42l52_private *cs42l52 =3D snd_soc_component_get_drvdata(compone= nt); int ret; =20 - cs42l52->beep =3D devm_input_allocate_device(component->dev); + cs42l52->beep =3D input_allocate_device(); if (!cs42l52->beep) { dev_err(component->dev, "Failed to allocate beep device\n"); return; @@ -1021,8 +1021,10 @@ static void cs42l52_init_beep(struct snd_soc_compone= nt *component) =20 ret =3D input_register_device(cs42l52->beep); if (ret !=3D 0) { + input_free_device(cs42l52->beep); cs42l52->beep =3D NULL; dev_err(component->dev, "Failed to register beep device\n"); + return; } =20 ret =3D device_create_file(component->dev, &dev_attr_beep); @@ -1038,7 +1040,10 @@ static void cs42l52_free_beep(struct snd_soc_compone= nt *component) =20 device_remove_file(component->dev, &dev_attr_beep); cancel_work_sync(&cs42l52->beep_work); - cs42l52->beep =3D NULL; + if (cs42l52->beep) { + input_unregister_device(cs42l52->beep); + cs42l52->beep =3D NULL; + } =20 snd_soc_component_update_bits(component, CS42L52_BEEP_TONE_CTL, CS42L52_BEEP_EN_MASK, 0); --=20 2.50.1 From nobody Fri Sep 25 12:03:20 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013018.outbound.protection.outlook.com [40.107.162.18]) (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 618C23C3789; Sun, 13 Sep 2026 10:16:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294587; cv=fail; b=SkOVKjyCAAxJdgGnqO7ajUFFe2wea41VpGkZro8VhyvllRjej8LwoBx7y4qyfmAN1b5MEody5yvTf8YfkoatEyOWbbgenFzjQSWjgBCPq4fW+GK4aqx//2kC7rvcqXQ0QzdR5v1q1iAuT0q74gfiD6gjPugK/ny83TpkUxSkaJk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294587; c=relaxed/simple; bh=ZRlo1gB5Oy41iU/5rOYITjqtmNStMef8qGqCjfMbhNw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=POaKGJXuQSVt6VNod/vcFVtcP9xmIGvNP98lnjvvcy3KxScKlWIBYW58gR9HPJ7a5fW9bQL7m1aGX02Y+yyQldKhkMfFUlZg1IDyUQ0PEl3GtL/Op55decNlKX+IKTkvuXzzXod5/kxxpxiiMFDC+h+6PVAhpDKjYnusF6n6X0g= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=SC8007GX; arc=fail smtp.client-ip=40.107.162.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="SC8007GX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TY1SHzI/w5Lxx8Mw2Vq4cymxlACGH4ABkbZzbMjRkAsQKIP0bA2gtI3AYfEhZZfvDU+CkZoVFqyUickRO0eaAV/oNG5LHY+mYTNBH4DNKwIYFZ0jKlA2swlhjcF5EpZSwZLQR6FF9SC2pUwBAbb2rlphvVhswt+WMiG2hTnfyg46ia/B8FZ3pl1sJsr0Ktne0e78Bn6eRZnLj0su+1lUyxKd7bO7WzC7XIXU2JIhDJ7Q6MfQLrl6+2NQYbw/TqNfoSESATVHEL2k29IaWq2mV0HnkP1kwZTFWq/auW/PXUUzNBsriMmDCnbN/Etbq5iok6iwwJAR02Y/bPKkSuLgPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SUsApcezmqeSyqFYfRqV1hSBjfubs0MytQyJysasRoo=; b=GY8A3Qw4ADXUxYLHN3g2oOxZwmbrY9lJ5sevI8zL8JFtjMw+bbBMzKr9vYBu0DtAd87yx2yV+vKiljTYks+dRcrQUAt8K1rdRMMq8OIZHCRIqT6BBpqMXD9Jo6OiJb297O/aQ4EQ+qeNcotXaXbjWHFga9H1oy3j0qSoLBA9lOGoqwaWXIuZ8k+WA+gA3zp8zmt+NBWg2FQZM4xsbnpDuSZQCDRnjWy9IvteYWiiuqaxYdca6ox+wgDOO/i799RYM9vL5b7rR3xpPuRZ4sV6Gftpgk7ZvgxoHzJs2PJzGMepP2ezVGx6wEqC6bjB5Z7JxBREtXKBE/PH3B/0nHQ43w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SUsApcezmqeSyqFYfRqV1hSBjfubs0MytQyJysasRoo=; b=SC8007GXmLOFq3CzSgf7GaQGvkwWp85MHDCyazk+sD1LIBJCaKoZf7kfj9eMWwjde9jd9UjjBekR+ZB5V1KzrrxE0BaEaUItTMNqcpdZpPTtaNTqD/RTOPwzSl7csw+5DqZP9dZiUGq3LdWE/Gl6QBDaoL6RlTjo9Z0+J2mBe42Kdeu+bv7fLxzcP5k+JJHxXr/lAZQqiVqX9UTHNqHyrnPMN/rMZK9ddIEIV/jJ8UQDuUd1vFKuvsvLqP+2u05ncJXPPL16idDU2qA47z0dvjQAsmEFEYirMtUw9ifCWlfLi9TEwiU6F1xNlJFQd6i4mBFfveMr3zMMoFGwWQMy5w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8602.eurprd04.prod.outlook.com (2603:10a6:20b:439::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Sun, 13 Sep 2026 10:16:19 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0406.007; Sun, 13 Sep 2026 10:16:19 +0000 From: Chancel Liu To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Sen Wang , David Rhodes , Richard Fitzgerald Cc: Charles Keepax , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/6] ASoC: cs42l56: Fix beep input device leak on card re-bind Date: Sun, 13 Sep 2026 19:15:31 +0900 Message-ID: <20260913101531.2787654-7-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> References: <20260913101531.2787654-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0101.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::15) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8602:EE_ X-MS-Office365-Filtering-Correlation-Id: cdaab7b0-0461-42a8-dbaa-08df11800dae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|22082099003|18002099003|921020|11063799006|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: rir5R57oyiXRa4SX2FF+oLGzLn58jEJvq8wTJ+OFtiRbSkXEDGZHr1d1YFvJr8xKwwKcEDgKxu9M/Iv5oFqEvrOFA6d+vV77LpCfNXHb+pCkWknHXd48geadIQ3ra5ARwXXgRwciI7iWBQx7LlzUWfezico4lbcN1mC5uL9s8DsMcpfUQZCAoyFN43b/Iz8ld7xz2hQD0Dft4LDik97HOMuAhG5poKS0D37t7z1dJjzmH+AfNZMR2fRcbSjWOrwAZzy1y/6psE85lUQ5HYSdTJcl0q1e/4wtl5DZ7XQKBLxvIRvWQgRycGGzumQbDJXmAf8MnBCl5jHmyd24czioeg8PEXs4wbeCtNIFNHCvrnPbPZM9S0GO4x9StCTtGoHhpZ23NDsKrlPId1x9+dVxYcbUxrnPzIWO9xbdNpBZnEBuW+ZyFqdiODn2iAM2C75btNuuLSLH6u5hjXOo7SUMN64EAhuI7EA5gharL2+nkCsVl1bB/AfGW9fN3PEgKd/scTLDGyJqayt8O+WsyDPAcqhlK6xsi0nbzG2NmWFjtU06WAVvMKueFTJMyiC1J35aUrpfyGDJqG0OBXw8Waj9QmorWxurC9ohtKtPE12j7qNr+i3JR3eYQkISLkACedwnIgdGIg6x6yIp5itdoCLXFiWZkN1CfqvPhNvorCbdEQ4iDjN8YxDnvt/UpeDn33HZuCh3x+af2jVALkQ8HxF6mw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(22082099003)(18002099003)(921020)(11063799006)(10067099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WUNreIHNlULmAo4vBzIDNIt4xVY2IzMyF72cHteOt0qRc1NLJ4cwz0wbxySi?= =?us-ascii?Q?Of/LiIUd3Rwqnisn6TQX0GJtEtW8j9QKC9Z4y77brah8EzWT89/m3RWHomjQ?= =?us-ascii?Q?p5IT69Xeqa4VVs+KlFwB/pxCSSkRcvRtpoH0/pQN6hYhyUDcZeFnRlBDVphJ?= =?us-ascii?Q?dHz5Y8EGdFSaUXYh+B1KtMM1icrDHPf7sJRdT7qX+0GMTPO/jsSrPDnZ4qVu?= =?us-ascii?Q?8ipvK35+B3YfBfUwPEB3IVS3ubGQayD5ZY1ADdoxD9JDhC9sQq7RWRbkEbmI?= =?us-ascii?Q?dhhLCfztN9mTDoju1QdAQcX7ndt7qilw+8a1Z1WNE5IEWSDNlsM59bo/H2Vn?= =?us-ascii?Q?7otl6aI6mMu9I4XWt0/pnTZs/9kutM3Ehe5U5jaoPH3wXxFhSKV7R8QlV5E5?= =?us-ascii?Q?i2e9PHY6eZB9Ok4uvALy1KetnUcTo3cJB9bmpq99nVKUKy/+cI5ca1+D7Bbe?= =?us-ascii?Q?BsuRbL8ap/0wdFiz7+gVC6BeF23bBda20Cx2eMm2bjK5GIBCR63T+MrmazVd?= =?us-ascii?Q?QdCDJF2eiw6uUGvycF6SIKSRDuQuNKMDeBwFx5Nh27PgEdx0Kax/1usDhJjG?= =?us-ascii?Q?8OU+InHhKmzzraFsJee+Ic6/cawj48GESWhzo142CMCyrrQ+cs6n6nphHiD5?= =?us-ascii?Q?GNA5y3mJiK+RH0RZVCe9KD000C99OMX5aWPEPLpczjicuWgEJ9X6xTyls0gJ?= =?us-ascii?Q?IUdfnYz0hGJthS9VglwMDImc/Jcr0GwK6tTwUd1tiE/Bvf9c3VrfjL0CgWz0?= =?us-ascii?Q?wOWEp6rMXtnJPNXwVcBi7JoUWm+rStEljvA2yCOFGQHdJ+TEHAPAYL2daO1K?= =?us-ascii?Q?KIrUf1OzEp2r75d3g07GKN52ZEG+r49vZ/gtSw6sO/ytKXyRjuETX2mJIh+A?= =?us-ascii?Q?6brAFS1pEKu/LwTJPNRCjRjj/PHACR/XaDCpYGpWt675Nlt/gw2Zkv6hprEQ?= =?us-ascii?Q?DCPGLN5Zju2Ndvlvx0VfOaDp4H2IhFapsGV5az/XfLgBSO81SuHFsW/5hnHf?= =?us-ascii?Q?kpy/3SrUo/B/YaSV6t6BxcXJneA+YCr3w5WLoyQn4nCLhgFPjlDV+m6wgct8?= =?us-ascii?Q?KaL874DhfAm/eOPfMyqhq9eIxhhJaUc5OeHCpAwMfH26/3czRAQt0vgjZivt?= =?us-ascii?Q?CHiMgbx1Yv5e2arhN7r9U8esKuHp7saidb/ctGNWoR0NnBeBU8cE9Af5yxGb?= =?us-ascii?Q?Ru0zCfeeooIOWUZO+4bH8XN+iEGZePxl7Tesueff7SEEYnFDhAtpkosaFHiF?= =?us-ascii?Q?FfVz+ALk+7NAjTjFdVkXihIqL5qUMTSuWZgRopbq/htPRAvt6x+T/7FIh0um?= =?us-ascii?Q?11Yve+lNtWRRDs0jl53PgOSWI57Y2DNuSK1hgnu6GGEkzq8VaMsJvfnd2qbi?= =?us-ascii?Q?FKrGEwDvUSH+GnGZgvBOUngEeEVf2BZofqW9jWXN3IcJ7ApGLIYreoc0YCnM?= =?us-ascii?Q?IehpwEw8DRiyQ9fQe+tuIcNZioZswiiNk7jSJ6vkA0HKsGgAQb7b8ue6PCnh?= =?us-ascii?Q?kngWVuUX6Dn9w6Kbi5U1DAcAk4WnSN+rzfCgoKW6DAGlyz5qZIvpAvbglVEY?= =?us-ascii?Q?lztzBjKXSp0G/RDea4nE2t3EoEDLlmXD9qLGNBSdLZz/294Zktd7KhgGgD0X?= =?us-ascii?Q?R5nUMFYBIf9A3QUS3SiewsQjP1raEo4TpbfLWYHB/1F7+wr6NEJLRciN91/n?= =?us-ascii?Q?tqGsujkc8ivoIrL5j17u5RdRUpC+BIyVk+5BBDoM17Qpq6S1UJCp6le8raXT?= =?us-ascii?Q?GtxOpwJVnrmXVmYxm4AX/N0KuxDsREco0jBPKlSpEn9mxLhbmycu?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cdaab7b0-0461-42a8-dbaa-08df11800dae X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2026 10:16:19.4306 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ECOuSbTE47CUbSYLLVLfAZDY2q8v6XL2bX4cBb4O2Jzlv5oEy0tVEJaSJqTToXnykHSeUa5qUi7xxwgndv6NPnInZLVIDhYoCnvGgEzStRk5e+iCY/NYA4KRyMfMs3Ve X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8602 Content-Type: text/plain; charset="utf-8" From: Chancel Liu cs42l56 allocates its beep input device with devm_input_allocate_device() from the ASoC component probe, but the associated devres cleanup is tied to the underlying I2C device, while cs42l56_free_beep() on the component remove path only clears the cs42l56->beep pointer. The input device is only leaked when the sound card is unregistered and re-registered while the I2C device stays bound. On that path the component probe runs again and allocates and registers a new input device every time, leaking the previous one and its sysfs/input node. Allocate the beep device with input_allocate_device() and pair it with the component lifecycle: input_free_device() on registration failure and input_unregister_device() in cs42l56_free_beep(). Signed-off-by: Chancel Liu Reviewed-by: Charles Keepax --- sound/soc/codecs/cs42l56.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/cs42l56.c b/sound/soc/codecs/cs42l56.c index 4d9a22a1029c..37df94fbc887 100644 --- a/sound/soc/codecs/cs42l56.c +++ b/sound/soc/codecs/cs42l56.c @@ -1077,7 +1077,7 @@ static void cs42l56_init_beep(struct snd_soc_componen= t *component) struct cs42l56_private *cs42l56 =3D snd_soc_component_get_drvdata(compone= nt); int ret; =20 - cs42l56->beep =3D devm_input_allocate_device(component->dev); + cs42l56->beep =3D input_allocate_device(); if (!cs42l56->beep) { dev_err(component->dev, "Failed to allocate beep device\n"); return; @@ -1098,8 +1098,10 @@ static void cs42l56_init_beep(struct snd_soc_compone= nt *component) =20 ret =3D input_register_device(cs42l56->beep); if (ret !=3D 0) { + input_free_device(cs42l56->beep); cs42l56->beep =3D NULL; dev_err(component->dev, "Failed to register beep device\n"); + return; } =20 ret =3D device_create_file(component->dev, &dev_attr_beep); @@ -1115,7 +1117,10 @@ static void cs42l56_free_beep(struct snd_soc_compone= nt *component) =20 device_remove_file(component->dev, &dev_attr_beep); cancel_work_sync(&cs42l56->beep_work); - cs42l56->beep =3D NULL; + if (cs42l56->beep) { + input_unregister_device(cs42l56->beep); + cs42l56->beep =3D NULL; + } =20 snd_soc_component_update_bits(component, CS42L56_BEEP_TONE_CFG, CS42L56_BEEP_EN_MASK, 0); --=20 2.50.1