From nobody Sat Jun 13 20:55:21 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A5E6848032A; Tue, 5 May 2026 14:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; cv=none; b=faeIl1k9o56D/5J1s3x1udws6SDF8C1Q9E72jD5sYvc+5msanzjo51ukTv1Xr5svSiHcGfvBgwtZbYCcXwfIzLTraiVpd5orIvus4afugfVJHgDciCVT5jpHE1UuKmyo9IzlqjG75Kus8J3HXx1EW6EZB3oxMYT1N8MKB52mV4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; c=relaxed/simple; bh=RcSelwJi6o5XPQYFAlXWzdU/YR262F/UXpfNjyr1RgE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TDmV5TGYPkhmE/FPcX7BF46WmmQajDi5uIbpohdo9zfdAqKKdvcvNSZFJyErL//QXDUg3/uXDjPd07y5PZ88gTb2dwp2nxvNI6sWArOLm9UAJJLIT4d++WaGCLDdwsZ24qCrYdAfwK1SOMbPkYW1ZzZm3028xpO97C84AM8VFMI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=X027wd3Z; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="X027wd3Z" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 65220C2BCF6; Tue, 5 May 2026 14:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777991314; bh=RcSelwJi6o5XPQYFAlXWzdU/YR262F/UXpfNjyr1RgE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X027wd3Z3lGQRqvxJxidrx3NgvUesuXO4AxqXVRiOTPHXS9kTA9B7q39deT2WflXI 1+0wSCrfCN6cqYhCQ95TL+1oH31J5jjsdyKn7LR6TsqB8yspBPlZeWVz6bqv8mbY+W qs2n7TyWh1P8KbQGLj7cEn4CnJJjAO0tK1guwvqFYWACOJKE7lQFNEOhewANjU9ddR S8T6PReiIpefMOS2Yu9DXF5GbUw6cLiErWWgYoW9NJD6ttbN+gDJSZzeUuaawGFIha GdlB/Tud5oo5mNzD8K5FLtWtscMFXYgOhSSSPMgAueJDn52MYhYqVqHwGqV67/xxbP IqS+q+N2AN+sg== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wKGlE-00000003Kss-0PKb; Tue, 05 May 2026 16:28:32 +0200 From: Johan Hovold To: Wolfram Sang Cc: Andi Shyti , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, Phil Reid Subject: [PATCH 1/8] i2c: core: fix hang on adapter registration failure Date: Tue, 5 May 2026 16:25:40 +0200 Message-ID: <20260505142547.795054-2-johan@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260505142547.795054-1-johan@kernel.org> References: <20260505142547.795054-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Clients may be registered from bus notifier callbacks when the adapter is registered. On a subsequent error during registration, the adapter references taken by such clients prevent the wait for the references to be released from ever completing. Fix this by refactoring client deregistration and deregistering also on late adapter registration failures. Fixes: f8756c67b3de ("i2c: core: call of_i2c_setup_smbus_alert in i2c_regis= ter_adapter") Cc: stable@vger.kernel.org # 4.15 Cc: Phil Reid Signed-off-by: Johan Hovold --- drivers/i2c/i2c-core-base.c | 49 ++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 9c46147e3506..7cec3f276e13 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -63,6 +63,7 @@ static DEFINE_MUTEX(core_lock); static DEFINE_IDR(i2c_adapter_idr); =20 +static void i2c_deregister_clients(struct i2c_adapter *adap); static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driv= er); =20 static DEFINE_STATIC_KEY_FALSE(i2c_trace_msg_key); @@ -1605,6 +1606,7 @@ static int i2c_register_adapter(struct i2c_adapter *a= dap) return 0; =20 out_reg: + i2c_deregister_clients(adap); debugfs_remove_recursive(adap->debugfs); init_completion(&adap->dev_released); device_unregister(&adap->dev); @@ -1744,29 +1746,10 @@ static int __process_removed_adapter(struct device_= driver *d, void *data) return 0; } =20 -/** - * i2c_del_adapter - unregister I2C adapter - * @adap: the adapter being unregistered - * Context: can sleep - * - * This unregisters an I2C adapter which was previously registered - * by @i2c_add_adapter or @i2c_add_numbered_adapter. - */ -void i2c_del_adapter(struct i2c_adapter *adap) +static void i2c_deregister_clients(struct i2c_adapter *adap) { - struct i2c_adapter *found; struct i2c_client *client, *next; =20 - /* First make sure that this adapter was ever added */ - mutex_lock(&core_lock); - found =3D idr_find(&i2c_adapter_idr, adap->nr); - mutex_unlock(&core_lock); - if (found !=3D adap) { - pr_debug("attempting to delete unregistered adapter [%s]\n", adap->name); - return; - } - - i2c_acpi_remove_space_handler(adap); /* Tell drivers about this removal */ mutex_lock(&core_lock); bus_for_each_drv(&i2c_bus_type, NULL, adap, @@ -1792,6 +1775,32 @@ void i2c_del_adapter(struct i2c_adapter *adap) * them up properly, so we give them a chance to do that first. */ device_for_each_child(&adap->dev, NULL, __unregister_client); device_for_each_child(&adap->dev, NULL, __unregister_dummy); +} + +/** + * i2c_del_adapter - unregister I2C adapter + * @adap: the adapter being unregistered + * Context: can sleep + * + * This unregisters an I2C adapter which was previously registered + * by @i2c_add_adapter or @i2c_add_numbered_adapter. + */ +void i2c_del_adapter(struct i2c_adapter *adap) +{ + struct i2c_adapter *found; + + /* First make sure that this adapter was ever added */ + mutex_lock(&core_lock); + found =3D idr_find(&i2c_adapter_idr, adap->nr); + mutex_unlock(&core_lock); + if (found !=3D adap) { + pr_debug("attempting to delete unregistered adapter [%s]\n", adap->name); + return; + } + + i2c_acpi_remove_space_handler(adap); + + i2c_deregister_clients(adap); =20 /* device name is gone after device_unregister */ dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name); --=20 2.53.0 From nobody Sat Jun 13 20:55:21 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ABE01480331; Tue, 5 May 2026 14:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; cv=none; b=TIcyUrb43AKvXXoER5iHji6T7qz5aTmghOb+YHu+AD0JBGxxfmO1tNRnY+2wjpsBuoN+bX9c5qdxRhrr2RKe7+cQEvKObLmh8bkLbH6Wwh00YNktKcZsuGRNFmPjWXdicdOS7Kt+aa8IqNIJlkU3lz0DX+NegEJ41YCPpCatHAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; c=relaxed/simple; bh=JIUw3NRme++76CpTBzA3sK9Ldz5NlkeSMePNeiX4fp0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=R7fl2nt1kO2qfP1nWPcXWFpBCZ6oRZjKXzxFTdNufJsGvJmAQi7wp/fRvN3tI8VKKgeAQlGtn7+d3SHxgPfSyLWNw/5vpMOIW/E9wdXRZMmObXisQOE0qKCvW9d9J79osV4ji1s6yLxhKkQpMdjlXXnGgaWFCTiSFpyd1nmeBVk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=scsN70i/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="scsN70i/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6A07AC2BCFA; Tue, 5 May 2026 14:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777991314; bh=JIUw3NRme++76CpTBzA3sK9Ldz5NlkeSMePNeiX4fp0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=scsN70i/yNeeY8COd38hlOlKRMGgCWqnqo08L3yIp/6JkltOasEKsdP0RZhu9ndkM gyuE3jEps2KOQav2YZRjeY1qYMH1XUOBwrpJzH5QlSFSoPFruapY0/R0L2BZDUpKC9 Lx3rSiNZCQTTMzEqY8++zAqSc3O6AWrnr/dhOqhlOYNXzzZok7Vi64+CRooqmKO+PV NRDjwyWa/TP0Y4zdUhA3pfpikPpC8wFPBUXLp27h+Jz+L7MrsDykC7vvJEklXP5mn7 MshypMnADhPHAUBOYxlkGUVuNAgo67eX6Al+aOWux0jbagG1jpiml8fNro+iarjziY wAqlqhq8RaOOA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wKGlE-00000003Ksu-0SGM; Tue, 05 May 2026 16:28:32 +0200 From: Johan Hovold To: Wolfram Sang Cc: Andi Shyti , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, Codrin Ciubotariu Subject: [PATCH 2/8] i2c: core: fix adapter probe deferral loop Date: Tue, 5 May 2026 16:25:41 +0200 Message-ID: <20260505142547.795054-3-johan@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260505142547.795054-1-johan@kernel.org> References: <20260505142547.795054-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Drivers must not probe defer after having registered devices as that will trigger a probe loop if the devices bind to a driver (cf. commit fbc35b45f9f6 ("Add documentation on meaning of -EPROBE_DEFER")). Move the recovery initialisation, where the GPIO lookup may fail, before registering the adapter to prevent this. Fixes: 75820314de26 ("i2c: core: add generic I2C GPIO recovery") Cc: stable@vger.kernel.org # 5.9 Cc: Codrin Ciubotariu Signed-off-by: Johan Hovold --- drivers/i2c/i2c-core-base.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 7cec3f276e13..2832e1aa0ca3 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -1562,6 +1562,10 @@ static int i2c_register_adapter(struct i2c_adapter *= adap) adap->dev.type =3D &i2c_adapter_type; device_initialize(&adap->dev); =20 + res =3D i2c_init_recovery(adap); + if (res =3D=3D -EPROBE_DEFER) + goto err_put_adap; + /* * This adapter can be used as a parent immediately after device_add(), * setup runtime-pm (especially ignore-children) before hand. @@ -1574,8 +1578,7 @@ static int i2c_register_adapter(struct i2c_adapter *a= dap) res =3D device_add(&adap->dev); if (res) { pr_err("adapter '%s': can't register device (%d)\n", adap->name, res); - put_device(&adap->dev); - goto out_list; + goto err_put_adap; } =20 adap->debugfs =3D debugfs_create_dir(dev_name(&adap->dev), i2c_debugfs_ro= ot); @@ -1584,10 +1587,6 @@ static int i2c_register_adapter(struct i2c_adapter *= adap) if (res) goto out_reg; =20 - res =3D i2c_init_recovery(adap); - if (res =3D=3D -EPROBE_DEFER) - goto out_reg; - dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); =20 /* create pre-declared device nodes */ @@ -1608,8 +1607,10 @@ static int i2c_register_adapter(struct i2c_adapter *= adap) out_reg: i2c_deregister_clients(adap); debugfs_remove_recursive(adap->debugfs); + device_del(&adap->dev); +err_put_adap: init_completion(&adap->dev_released); - device_unregister(&adap->dev); + put_device(&adap->dev); wait_for_completion(&adap->dev_released); out_list: mutex_lock(&core_lock); --=20 2.53.0 From nobody Sat Jun 13 20:55:21 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA08148034A; Tue, 5 May 2026 14:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; cv=none; b=Ps+0Xo3pHDHpR5bUyLMmFWNq/7OGIWHsm3YGbyAgRJ3u5eMmMvgbB+VadZoW0egyOuXGd6dnPlgfTGR+dTZNJCIumxQAKvKO59CNXDsl1zY3fUqxoOY0pP2iOXS/sn+NFDv8sU6PxkmAZ8kuOe14qjip1CtjCe1e/WJovujKO4s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; c=relaxed/simple; bh=K6HCzeH4GdbTOgUpIKqBp7V+qgvqdBS9GyKwFcHGQsk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LzXy1zjR2ZTorONHzvJkn2u+0/JaYUtZdqC+YAn7y+/QF0pyJQae1g+s/Ziz8+eeG7Fq+9lNJSHdpX9PpwcRRjhtJwLD90VOg/g/jimFwWZzUghFdjIf09REVh26S3JQTPCxBedseysoLx9CUVc5qllaX6lS4PAjfGLfQuW+XSU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hWdYCPpl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hWdYCPpl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7C6E5C2BD01; Tue, 5 May 2026 14:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777991314; bh=K6HCzeH4GdbTOgUpIKqBp7V+qgvqdBS9GyKwFcHGQsk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hWdYCPplYbddW/qIjCLcnF3uNNkU4++X5v/0atzNwPppUG58ZKVhmWawSa0dDm8xE 1BZL3stQ1E0XtD5Q4ZPiNSRU1gk3u8zPMOAJF0ytFGpoNNRYYe13PBw23GTknkGlhs JZySX+Smm1gQX1slpKSJWVRZD6NSgpV6evsiIk8AJSCsFyAdp/BU+Bzkpb1TMXhHK/ avHTIPSH8roZKFKXSqGytVPS1mWehkU8YEfkISQKHRWpcMQoe74vum68IOwMBmRYJo oSWFxM/0aQ7g+zoooN1F1mJYeFv3GiyWROoX2qjw929mmPjIrwfLGMes+A9IrJjB97 oY4EINVlA6mOw== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wKGlE-00000003Ksw-0UjK; Tue, 05 May 2026 16:28:32 +0200 From: Johan Hovold To: Wolfram Sang Cc: Andi Shyti , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH 3/8] i2c: core: fix adapter debugfs creation Date: Tue, 5 May 2026 16:25:42 +0200 Message-ID: <20260505142547.795054-4-johan@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260505142547.795054-1-johan@kernel.org> References: <20260505142547.795054-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Clients can be registered from bus notifier callbacks so the debugfs directory needs to be created before registering the adapter as clients use that directory as their debugfs parent. Move debugfs creation before adapter registration to avoid having clients create their debugfs directories in the debugfs root (which is also more likely to fail due to name collisions). Fixes: 73febd775bdb ("i2c: create debugfs entry per adapter") Cc: stable@vger.kernel.org # 6.8 Cc: Wolfram Sang Signed-off-by: Johan Hovold --- drivers/i2c/i2c-core-base.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 2832e1aa0ca3..6f198d1325a6 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -1575,14 +1575,14 @@ static int i2c_register_adapter(struct i2c_adapter = *adap) pm_suspend_ignore_children(&adap->dev, true); pm_runtime_enable(&adap->dev); =20 + adap->debugfs =3D debugfs_create_dir(dev_name(&adap->dev), i2c_debugfs_ro= ot); + res =3D device_add(&adap->dev); if (res) { pr_err("adapter '%s': can't register device (%d)\n", adap->name, res); - goto err_put_adap; + goto err_remove_debugfs; } =20 - adap->debugfs =3D debugfs_create_dir(dev_name(&adap->dev), i2c_debugfs_ro= ot); - res =3D i2c_setup_smbus_alert(adap); if (res) goto out_reg; @@ -1606,8 +1606,9 @@ static int i2c_register_adapter(struct i2c_adapter *a= dap) =20 out_reg: i2c_deregister_clients(adap); - debugfs_remove_recursive(adap->debugfs); device_del(&adap->dev); +err_remove_debugfs: + debugfs_remove_recursive(adap->debugfs); err_put_adap: init_completion(&adap->dev_released); put_device(&adap->dev); --=20 2.53.0 From nobody Sat Jun 13 20:55:21 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A5EFF48032B; Tue, 5 May 2026 14:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; cv=none; b=Y9n/vqBJvm8SaDzbTO7NVjoR/TBXYuO68mNhCDaJRb+HfJ83sgOZG3lu1QeGcBdElanHKyogqeJeOGNVnkJPP94yJ9FqeVOQE7qvNtZMsm7DdBz8HuMJbYJ0enPclEyFaGOPQezJ8xGKuiDhhQlTZDYNPtgtDsi1Q+M6u03DrHY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; c=relaxed/simple; bh=GVNjGWQe5bv+gTghSpE+56z4pksH8B5uOoLXv1jc2DM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O7LdDdpvc5faZ7qTAbWQWDmvoyOqfGAwwPo0FdxJg63P86ODcyluhL7ixsAQpNFMydcokZdlTqCw8TDr3pGxTqCUY9GQYV+HeSWodNHKDdaK19hRBEwKGsxfxo4ai5Ahgstlst8KmnYtySSvmd49SYmxWrkGBvYmuBmo1b4B6k8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=So/GGH5l; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="So/GGH5l" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 677D1C2BCF7; Tue, 5 May 2026 14:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777991314; bh=GVNjGWQe5bv+gTghSpE+56z4pksH8B5uOoLXv1jc2DM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=So/GGH5lw10lbCJOq5uU2s0unc/CkzIJy2jJsbB+Ze5g5VIi1Vw+4RwB/lrtvZ38S ZOsIAXBEEJfJZSzJxvkRkMRDyugKojBl3gYbZiwl958V1qfhu6H0RRREuXXjuuyXH0 Rp088w2dp9r1A+xNl+mYurWgMnQPJwUoK5kNxVfv8Dnh/p6TyulS383wIggkRYt6Su naMqNYup/6x6NqB5bNDM8KO6XL0fPPU9hJKGlQnKQbm81eGgYmDtRU/9Lyl2J8edfP bdiepPcW2EdXpKB+WLSWoawd4cHCXWlbKxSDSaauZeLd0tEWkk/5y+s1noaI33Nd1l 2N6zEfeXT4Cjw== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wKGlE-00000003Ksy-0Wxo; Tue, 05 May 2026 16:28:32 +0200 From: Johan Hovold To: Wolfram Sang Cc: Andi Shyti , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , Codrin Ciubotariu Subject: [PATCH 4/8] i2c: core: disable runtime PM on adapter registration failure Date: Tue, 5 May 2026 16:25:43 +0200 Message-ID: <20260505142547.795054-5-johan@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260505142547.795054-1-johan@kernel.org> References: <20260505142547.795054-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Runtime PM is disabled by driver core when deregistering a device (and on registration failure) but add an explicit disable to balance the enable call when adapter registration fails for symmetry. Fixes: 23a698fe65ec ("i2c: core: treat EPROBE_DEFER when acquiring SCL/SDA = GPIOs") Cc: Codrin Ciubotariu Signed-off-by: Johan Hovold --- drivers/i2c/i2c-core-base.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 6f198d1325a6..31f7d43e4ab5 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -1609,6 +1609,7 @@ static int i2c_register_adapter(struct i2c_adapter *a= dap) device_del(&adap->dev); err_remove_debugfs: debugfs_remove_recursive(adap->debugfs); + pm_runtime_disable(&adap->dev); err_put_adap: init_completion(&adap->dev_released); put_device(&adap->dev); --=20 2.53.0 From nobody Sat Jun 13 20:55:21 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CAFA9480354; Tue, 5 May 2026 14:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; cv=none; b=LE6cur4MAa6R3WSfvLh8gVths/Q0LzTiEJ2m4FaKrllp/F3lJ7FyOsxwC/6kknfMDQl9/y7H7TIDxCONWfC9hyoGD+ocAm1sKH+DLEv6+ao1YIbfqvE2NLCX+pSAlUX86+kZpT0P+qF7T+8nRNCIMokidCoIob77W1RCoawjoro= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; c=relaxed/simple; bh=3CYu/nGSgQGBuqnz2Dwr8lbzgdlgelmyYppWDzvi27M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aWgh6ZYk6UiL8LHlUO/44tc8LiMkBMouVBVEWPAZobYBuQd85CkGrjd9oBmSE6AeicrUcLigJU+Tqyh0BicJrtJUs6zLcsoPZh1N4LAeRgMmoYQh0xEiBew09sUgN8O2wn7D2xZKUGhwBgMXRxgqV5glQURDq0GNAwjeVtOWTAw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Y6GeaPf/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Y6GeaPf/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 72C9EC2BCFC; Tue, 5 May 2026 14:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777991314; bh=3CYu/nGSgQGBuqnz2Dwr8lbzgdlgelmyYppWDzvi27M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Y6GeaPf/2D48V/BEH07sJpA+gXuQuG/EwI8R1FF4MpH6+Tz5H3lYJN/rVhyHwbQuN 6cux5ndo+tIbQ+0zfjq6m/8nU7uZ0wEMoc0mlaf5epx/wB9rHXN9xvrdNL1B4UsU5g uY787lgyhPTYCziEY2TDiJe+VhNpYCdmuVEogJ0S+BZZvfyE4z0IuN+pgvGnUw7X7y dQ/Km0yEri/1muADWoOVeQWTBAqQmhzvfwzNyDcQKDgcflmiAbLFKgd0sZoFABLrJq jD357fUkiGff7gS2YuiR17yt0UmxjJPD+ac3QVsHrv097tDi/H3OswwmGaT+CuiZwr yYXKSeK5eTJIg== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wKGlE-00000003Kt0-0ZGF; Tue, 05 May 2026 16:28:32 +0200 From: Johan Hovold To: Wolfram Sang Cc: Andi Shyti , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH 5/8] i2c: core: fix adapter registration race Date: Tue, 5 May 2026 16:25:44 +0200 Message-ID: <20260505142547.795054-6-johan@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260505142547.795054-1-johan@kernel.org> References: <20260505142547.795054-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Adapters can be looked up based on their id using i2c_get_adapter() which takes a reference to the embedded struct device. Make sure that the adapter (including its struct device) has been initialised before adding it to the IDR to avoid accessing uninitialised data which could, for example, lead to NULL-pointer dereferences or use-after-free. Fixes: 6e13e6418418 ("i2c: Add i2c_add_numbered_adapter()") Cc: stable@vger.kernel.org # 2.6.22 Signed-off-by: Johan Hovold --- drivers/i2c/i2c-core-base.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 31f7d43e4ab5..be909d6bc776 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -1587,6 +1587,10 @@ static int i2c_register_adapter(struct i2c_adapter *= adap) if (res) goto out_reg; =20 + mutex_lock(&core_lock); + idr_replace(&i2c_adapter_idr, adap, adap->nr); + mutex_unlock(&core_lock); + dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); =20 /* create pre-declared device nodes */ @@ -1633,7 +1637,7 @@ static int __i2c_add_numbered_adapter(struct i2c_adap= ter *adap) int id; =20 mutex_lock(&core_lock); - id =3D idr_alloc(&i2c_adapter_idr, adap, adap->nr, adap->nr + 1, GFP_KERN= EL); + id =3D idr_alloc(&i2c_adapter_idr, NULL, adap->nr, adap->nr + 1, GFP_KERN= EL); mutex_unlock(&core_lock); if (WARN(id < 0, "couldn't get idr")) return id =3D=3D -ENOSPC ? -EBUSY : id; @@ -1667,7 +1671,7 @@ int i2c_add_adapter(struct i2c_adapter *adapter) } =20 mutex_lock(&core_lock); - id =3D idr_alloc(&i2c_adapter_idr, adapter, + id =3D idr_alloc(&i2c_adapter_idr, NULL, __i2c_first_dynamic_bus_num, 0, GFP_KERNEL); mutex_unlock(&core_lock); if (WARN(id < 0, "couldn't get idr")) --=20 2.53.0 From nobody Sat Jun 13 20:55:21 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A602248032C; Tue, 5 May 2026 14:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; cv=none; b=ZHqhslCfGelAM7YE7AnN4/y6/WChkBVpSVqDG7aRggXNoj67JGgwxI9ujQ5BFaW+PNvfRY3XhQyLJB/LwV5IgdeHzyZWT/r9ayULgiTS2W75MGvFIAH+IYwDtwoSUWZtm1vghKMe4TJe7PWCHh6gnSxT4ndFvAjpDR+UaiRhUUM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; c=relaxed/simple; bh=tGAqDrEa0NZzzkYgDzVwNuk1zf8s33MQTeXZP9FSPmE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=keWev+0P4VQ2DpONs/2slDERlJE4RByeislp80T358J9hcBxEtx8Rzq7sNh43GoBnwhAnRSCGG9Ik1wJg4pM09scGX6KcvBCZMKUX+lh4PcxIQiWWMikf2Kwr3MTGxNjkxHla3QSEBB0e/dk7v3eWSxQFADuliR+iHFSj3iZRSk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TiGfcIHU; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TiGfcIHU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5DCFEC2BCC7; Tue, 5 May 2026 14:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777991314; bh=tGAqDrEa0NZzzkYgDzVwNuk1zf8s33MQTeXZP9FSPmE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TiGfcIHUWKZtcFnUlrQzOissJbMWXxwQ66jOSOJb8EZpVN5UvyxINGTJniIP16d4v Wp4A07YYWbZfGhOkNUB0JMnvXWMGhBSkX/LXXNKz3zmWiWbZlt0fVrTtjHtVQPi3A2 Dqw67Gq7tz9fX3Y6DwEkx8JhsQ96sbzEr6C5R+ADbkr8zPpcvkVjqey9h97zAPCxWl 5G32Om/KEk5xBtm7Jlic63Zr0Jh0bUpoCYb7Ke8soyj0ZwR21kx3Qws7zXJkMTHTXR 6hF5jGpMzDcDORuFcPpstKbEtLiw9DNguUzNf8JDES2nLeWdfxQ4dM6tmg9rvHt3iE A1+iKJG3wGX/A== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wKGlE-00000003Kt2-0bzp; Tue, 05 May 2026 16:28:32 +0200 From: Johan Hovold To: Wolfram Sang Cc: Andi Shyti , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, Jean Delvare Subject: [PATCH 6/8] i2c: core: fix adapter deregistration race Date: Tue, 5 May 2026 16:25:45 +0200 Message-ID: <20260505142547.795054-7-johan@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260505142547.795054-1-johan@kernel.org> References: <20260505142547.795054-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Adapters can be looked up by their id using i2c_get_adapter() which takes a reference to the embedded struct device. Remove the adapter from the IDR before tearing it down during deregistration to make sure its resources are not accessed after having been freed (e.g. the device name). Fixes: 35fc37f81881 ("i2c: Limit core locking to the necessary sections") Cc: stable@vger.kernel.org # 2.6.31 Cc: Jean Delvare Signed-off-by: Johan Hovold --- drivers/i2c/i2c-core-base.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index be909d6bc776..6209c5587e99 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -1799,6 +1799,8 @@ void i2c_del_adapter(struct i2c_adapter *adap) /* First make sure that this adapter was ever added */ mutex_lock(&core_lock); found =3D idr_find(&i2c_adapter_idr, adap->nr); + if (found =3D=3D adap) + idr_replace(&i2c_adapter_idr, NULL, adap->nr); mutex_unlock(&core_lock); if (found !=3D adap) { pr_debug("attempting to delete unregistered adapter [%s]\n", adap->name); --=20 2.53.0 From nobody Sat Jun 13 20:55:21 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8617147ECDE; Tue, 5 May 2026 14:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; cv=none; b=EnSaYD/72eXS4XaUvBIl64AM3HQ/tyTRr6sCCFXHv0FsYvjBuQPN7g8GixxPoxMVzhNcrS6vPeaeZ+RTr6jxJ0VYg32Xf0GryxKPiEZj0EA01IMLmVt5DmxKxmRVUbDkJLdHmzqs0GpyR+ZQSBQOaP7ao+eQf3v1WWFIJSh/+EM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; c=relaxed/simple; bh=9aXxsI+Rl2pPh1JIk3bkX/A2Wgl7wg0KK8314jzIqU4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Cf8QGxk27WcLYS/p4fqHbFpFHmHbo11AZoxrEe3VHMmVs2daLafruzeUxNF1XLakwhKEiNeTzaIq8JnXKVz8H7hRsv6DEx4Y6NQnLqmlRsKCuZP0dZnXzWqeZzWVs7SOu05IYYFB+LavN9bN4rBGwga/iJ9PeEvThxT20rd/dfM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=popbY3aw; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="popbY3aw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 62C07C2BCF4; Tue, 5 May 2026 14:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777991314; bh=9aXxsI+Rl2pPh1JIk3bkX/A2Wgl7wg0KK8314jzIqU4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=popbY3awU5oosZPRO9B52awnLROk3qx+926UKrFKwe0swX6kuNWBn9x9hV4xOABJY LfPQES7PlumFPuA8myj+TXBts7SgnRWafL7ZWy0IyULwN8JQOajNgJZBiCwPrhSU7y zdfH+7iwr9FIP7cHQO4jDoRtaMGlm27VHnbQPOjnf7YpY3ahKA4fNQZIopK8N1rveu Pr0teqPCX/lDnvVaen96X+Tj1EBUnIqn5jw502N6CqhtFQ7ocRpC4vNaIJDFHd34L3 4TbO6fFN3tqmypr/w5NzREMlMk/uRAzsZbjdidI8LdnZMPle9SBP8G8jlotAQnAkj2 vnLdmc1Rxts/A== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wKGlE-00000003Kt4-0eK8; Tue, 05 May 2026 16:28:32 +0200 From: Johan Hovold To: Wolfram Sang Cc: Andi Shyti , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH 7/8] i2c: core: clean up bus id allocation Date: Tue, 5 May 2026 16:25:46 +0200 Message-ID: <20260505142547.795054-8-johan@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260505142547.795054-1-johan@kernel.org> References: <20260505142547.795054-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Clean up bus id allocation by using a common helper and deferring it until it is needed during adapter registration. Signed-off-by: Johan Hovold --- drivers/i2c/i2c-core-base.c | 86 ++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 44 deletions(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 6209c5587e99..27cd9ca0ae81 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -1517,23 +1517,48 @@ int i2c_handle_smbus_host_notify(struct i2c_adapter= *adap, unsigned short addr) } EXPORT_SYMBOL_GPL(i2c_handle_smbus_host_notify); =20 +static int i2c_allocate_adapter_id(struct i2c_adapter *adap) +{ + int id, start, end; + + if (adap->nr =3D=3D -1) { + start =3D __i2c_first_dynamic_bus_num; + end =3D 0; + } else { + start =3D adap->nr; + end =3D adap->nr + 1; + } + + mutex_lock(&core_lock); + id =3D idr_alloc(&i2c_adapter_idr, NULL, start, end, GFP_KERNEL); + mutex_unlock(&core_lock); + if (id < 0) { + if (adap->nr !=3D -1 && id =3D=3D -ENOSPC) + id =3D -EBUSY; + pr_err("adapter '%s': failed to allocate id: %d\n", adap->name, id); + return id; + } + + adap->nr =3D id; + + return 0; +} + static int i2c_register_adapter(struct i2c_adapter *adap) { - int res =3D -EINVAL; + int res; =20 /* Can't register until after driver model init */ - if (WARN_ON(!is_registered)) { - res =3D -EAGAIN; - goto out_list; - } + if (WARN_ON(!is_registered)) + return -EAGAIN; =20 /* Sanity checks */ if (WARN(!adap->name[0], "i2c adapter has no name")) - goto out_list; + return -EINVAL; =20 if (!adap->algo) { pr_err("adapter '%s': no algo supplied!\n", adap->name); - goto out_list; + return -EINVAL; } =20 if (!adap->lock_ops) @@ -1554,9 +1579,13 @@ static int i2c_register_adapter(struct i2c_adapter *= adap) if (res) { pr_err("adapter '%s': can't create Host Notify IRQs (%d)\n", adap->name, res); - goto out_list; + return res; } =20 + res =3D i2c_allocate_adapter_id(adap); + if (res) + return res; + dev_set_name(&adap->dev, "i2c-%d", adap->nr); adap->dev.bus =3D &i2c_bus_type; adap->dev.type =3D &i2c_adapter_type; @@ -1618,31 +1647,12 @@ static int i2c_register_adapter(struct i2c_adapter = *adap) init_completion(&adap->dev_released); put_device(&adap->dev); wait_for_completion(&adap->dev_released); -out_list: - mutex_lock(&core_lock); - idr_remove(&i2c_adapter_idr, adap->nr); - mutex_unlock(&core_lock); - return res; -} - -/** - * __i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never= -1 - * @adap: the adapter to register (with adap->nr initialized) - * Context: can sleep - * - * See i2c_add_numbered_adapter() for details. - */ -static int __i2c_add_numbered_adapter(struct i2c_adapter *adap) -{ - int id; =20 mutex_lock(&core_lock); - id =3D idr_alloc(&i2c_adapter_idr, NULL, adap->nr, adap->nr + 1, GFP_KERN= EL); + idr_remove(&i2c_adapter_idr, adap->nr); mutex_unlock(&core_lock); - if (WARN(id < 0, "couldn't get idr")) - return id =3D=3D -ENOSPC ? -EBUSY : id; =20 - return i2c_register_adapter(adap); + return res; } =20 /** @@ -1665,17 +1675,8 @@ int i2c_add_adapter(struct i2c_adapter *adapter) int id; =20 id =3D of_alias_get_id(dev->of_node, "i2c"); - if (id >=3D 0) { - adapter->nr =3D id; - return __i2c_add_numbered_adapter(adapter); - } - - mutex_lock(&core_lock); - id =3D idr_alloc(&i2c_adapter_idr, NULL, - __i2c_first_dynamic_bus_num, 0, GFP_KERNEL); - mutex_unlock(&core_lock); - if (WARN(id < 0, "couldn't get idr")) - return id; + if (id < 0) + id =3D -1; =20 adapter->nr =3D id; =20 @@ -1708,10 +1709,7 @@ EXPORT_SYMBOL(i2c_add_adapter); */ int i2c_add_numbered_adapter(struct i2c_adapter *adap) { - if (adap->nr =3D=3D -1) /* -1 means dynamically assign bus id */ - return i2c_add_adapter(adap); - - return __i2c_add_numbered_adapter(adap); + return i2c_register_adapter(adap); } EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter); =20 --=20 2.53.0 From nobody Sat Jun 13 20:55:21 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A5DAD47F2FB; Tue, 5 May 2026 14:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; cv=none; b=g1+VA1Dd92rWq2BQlElDzBBSzYB6GhK/jL7BGb56KgNFKJ5W18RRCfyC4fhn7kXPthMAJeDuy8E+5ITIK6Drd5uhZY7+FkU4BwZQdqXTkFv8u0dwufM9AFcmbXPfFDeQG0PWYWw2frKVTb0XAocyW+pnBJHxxq7bG3/a/hbl9N0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777991314; c=relaxed/simple; bh=duwJXyKH0PhnB0SbKDxmy6a7yaoZ+d5QnVkJv4atU4A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WtLwsfG9L9uuR6eJ1n3rA9Ly/MiWhGOt6fVWQTj5J7eCmKKCmbbWChzG8phaok6rI+I8+dfIUyNFwgk3dTTJEaVp4XHHwdpottUOgNaLq8BeiHxLr+CVR6SxBWPNOPrVoEA1PESU3Avw5wUtfScxsv4AFK97+xePHqY6ltWAdFw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tCRAMxO8; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="tCRAMxO8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 602D2C2BCF5; Tue, 5 May 2026 14:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777991314; bh=duwJXyKH0PhnB0SbKDxmy6a7yaoZ+d5QnVkJv4atU4A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tCRAMxO86xgXuci4Q3D4cxbgCfeW/Yok2gAm2Vmku4W5nXJdbXP5BEyw9hkfadTUN RZj9pxzC6Tf0fDDW/uI6ZNFWy2ZY8WMv9B5N4IYFKbC3gp13v4pp5JKOP4baTKv/fJ 142BuDai8LeRicX54u3OHNIuvBh+IAfgxM8lDN9BHgkBg1MZc4Eq+6GLmgpfLXYqVt 4PhYbYzWtGKU2y8XWRzOTf05FF/AMnbYypSqVHXuuYCQU0C7z7sUzCKpyFGCdGI/PX NUxc+vXz0pNlMaka50kops7GmIC1PO8iVJRhaplkOomAyMSALTNr1ZmA+wG/1//iq7 ldT33ehqQH6XA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wKGlE-00000003Kt6-0gek; Tue, 05 May 2026 16:28:32 +0200 From: Johan Hovold To: Wolfram Sang Cc: Andi Shyti , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH 8/8] i2c: core: clean up adapter registration error label Date: Tue, 5 May 2026 16:25:47 +0200 Message-ID: <20260505142547.795054-9-johan@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260505142547.795054-1-johan@kernel.org> References: <20260505142547.795054-1-johan@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Clean up the adapter registration error labels by making sure that also the last one is named after what it does. Signed-off-by: Johan Hovold --- drivers/i2c/i2c-core-base.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 27cd9ca0ae81..8139e1531734 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -1614,7 +1614,7 @@ static int i2c_register_adapter(struct i2c_adapter *a= dap) =20 res =3D i2c_setup_smbus_alert(adap); if (res) - goto out_reg; + goto err_deregister_clients; =20 mutex_lock(&core_lock); idr_replace(&i2c_adapter_idr, adap, adap->nr); @@ -1637,7 +1637,7 @@ static int i2c_register_adapter(struct i2c_adapter *a= dap) =20 return 0; =20 -out_reg: +err_deregister_clients: i2c_deregister_clients(adap); device_del(&adap->dev); err_remove_debugfs: --=20 2.53.0