linux/drivers/i2c
Johan Hovold a4365bc41b i2c: core: fix adapter registration race
[ Upstream commit ba14d7cf2f ]

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.

Note that the i2c-dev chardev, which is registered from a bus notifier,
currently uses i2c_get_adapter() so the adapter needs to be added to the
IDR before registration.

Fixes: 6e13e64184 ("i2c: Add i2c_add_numbered_adapter()")
Cc: stable@vger.kernel.org	# 2.6.22
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-07-24 15:51:17 +02:00
..
algos i2c: algo: bit: use new macro to specifiy capabilities 2021-01-22 09:59:21 +01:00
busses i2c: tegra: Fix NOIRQ suspend/resume 2026-06-19 13:33:38 +02:00
muxes i2c: mux: demux-pinctrl: check initial mux selection, too 2025-01-23 17:16:00 +01:00
i2c-boardinfo.c i2c: Remove support for dangling device properties 2021-04-10 21:43:02 +02:00
i2c-core-acpi.c i2c: Force DLL0945 touchpad i2c freq to 100khz 2025-08-28 16:24:24 +02:00
i2c-core-base.c i2c: core: fix adapter registration race 2026-07-24 15:51:17 +02:00
i2c-core-of.c i2c: add fwnode APIs 2024-07-05 09:14:12 +02:00
i2c-core-slave.c i2c: slave: add sanity check when unregistering 2020-07-28 18:37:17 +02:00
i2c-core-smbus.c i2c: smbus: Check for parent device before dereference 2024-10-17 15:12:01 +02:00
i2c-core.h i2c: core: Fix atomic xfer check for non-preempt config 2024-01-15 18:51:22 +01:00
i2c-dev.c i2c: dev: prevent integer overflow in I2C_TIMEOUT ioctl 2026-06-19 13:33:32 +02:00
i2c-mux.c i2c: mux: Avoid potential false error message in i2c_mux_add_adapter 2023-10-25 11:58:59 +02:00
i2c-slave-eeprom.c i2c: busses: Use fallthrough pseudo-keyword 2020-07-23 22:04:08 +02:00
i2c-slave-testunit.c i2c: testunit: avoid re-issued work after read message 2024-07-18 13:07:44 +02:00
i2c-smbus.c i2c: smbus: Use device_*() functions instead of of_*() 2024-10-17 15:11:43 +02:00
i2c-stub.c i2c: stub: Reject I2C block transfers with invalid length 2026-07-04 13:39:37 +02:00
Kconfig i2c: add slave testunit driver 2020-09-21 11:02:17 +02:00
Makefile i2c: add slave testunit driver 2020-09-21 11:02:17 +02:00