From: Johan Hovold <johan@kernel.org>
To: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: Andi Shyti <andi.shyti@kernel.org>,
linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
Johan Hovold <johan@kernel.org>,
stable@vger.kernel.org, Jean Delvare <khali@linux-fr.org>
Subject: [PATCH v2 7/9] i2c: core: fix adapter deregistration race
Date: Fri, 8 May 2026 11:03:09 +0200 [thread overview]
Message-ID: <20260508090311.379333-8-johan@kernel.org> (raw)
In-Reply-To: <20260508090311.379333-1-johan@kernel.org>
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 <khali@linux-fr.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
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 4863d660faf6..f72f15a1b067 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -1801,6 +1801,8 @@ void i2c_del_adapter(struct i2c_adapter *adap)
/* First make sure that this adapter was ever added */
mutex_lock(&core_lock);
found = idr_find(&i2c_adapter_idr, adap->nr);
+ if (found == adap)
+ idr_replace(&i2c_adapter_idr, NULL, adap->nr);
mutex_unlock(&core_lock);
if (found != adap) {
pr_debug("attempting to delete unregistered adapter [%s]\n", adap->name);
--
2.53.0
next prev parent reply other threads:[~2026-05-08 9:03 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-08 9:03 [PATCH v2 0/9] i2c: core: adapter registration fixes Johan Hovold
2026-05-08 9:03 ` [PATCH v2 1/9] i2c: core: fix irq domain leak on adapter registration failure Johan Hovold
2026-05-08 9:03 ` [PATCH v2 2/9] i2c: core: fix hang " Johan Hovold
2026-05-08 9:03 ` [PATCH v2 3/9] i2c: core: fix adapter probe deferral loop Johan Hovold
2026-05-08 9:03 ` [PATCH v2 4/9] i2c: core: fix adapter debugfs creation Johan Hovold
2026-05-08 9:03 ` [PATCH v2 5/9] i2c: core: disable runtime PM on adapter registration failure Johan Hovold
2026-05-08 9:03 ` [PATCH v2 6/9] i2c: core: fix adapter registration race Johan Hovold
2026-05-08 9:03 ` Johan Hovold [this message]
2026-05-08 9:03 ` [PATCH v2 8/9] i2c: core: clean up bus id allocation Johan Hovold
2026-05-08 9:03 ` [PATCH v2 9/9] i2c: core: clean up adapter registration error label Johan Hovold
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260508090311.379333-8-johan@kernel.org \
--to=johan@kernel.org \
--cc=andi.shyti@kernel.org \
--cc=khali@linux-fr.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=wsa+renesas@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox