[PATCH v2025.09.y 49/49] eeprom: at24: unregister devices in error path

Ahmad Fatoum a.fatoum at pengutronix.de
Fri Dec 19 01:21:25 PST 2025


From: Sascha Hauer <s.hauer at pengutronix.de>

The AT24 driver might register some i2c devices using i2c_new_dummy().
These are freed in the error path, but not unregistered which leads to
memory corruptions later.

Link: https://lore.barebox.org/20251217145156.1581678-3-s.hauer@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
(cherry picked from commit ebd2558bf99b3758854ac2b104cff7cfbd2cebb9)
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 drivers/eeprom/at24.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c
index 667d111b349d..feb11b1cbb18 100644
--- a/drivers/eeprom/at24.c
+++ b/drivers/eeprom/at24.c
@@ -492,8 +492,11 @@ static int at24_probe(struct device *dev)
 
 err_devfs_create:
 err_clients:
-	for (i = 1; i < num_addresses; i++)
+	for (i = 1; i < num_addresses; i++) {
+		if (at24->client[i])
+			i2c_unregister_device(at24->client[i]);
 		kfree(at24->client[i]);
+	}
 
 	if (gpio_is_valid(at24->wp_gpio))
 		gpio_free(at24->wp_gpio);
-- 
2.47.3




More information about the barebox mailing list