On vendredi 22 novembre 2024 13:26:18 heure normale d’Europe centrale Tomi Valkeinen wrote: > From: Tomi Valkeinen <tomi.valkeinen+renesas@xxxxxxxxxxxxxxxx> > > i2c-atr catches the BUS_NOTIFY_DEL_DEVICE event on the bus and removes > the translation by calling i2c_atr_detach_client(). > > However, BUS_NOTIFY_DEL_DEVICE happens when the device is about to be > removed from this bus, i.e. before removal, and thus before calling > .remove() on the driver. If the driver happens to do any i2c > transactions in its remove(), they will fail. > > Fix this by catching BUS_NOTIFY_REMOVED_DEVICE instead, thus removing > the translation only after the device is actually removed. > > Fixes: a076a860acae ("media: i2c: add I2C Address Translator (ATR) support") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas@xxxxxxxxxxxxxxxx> > --- > drivers/i2c/i2c-atr.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c > index f21475ae5921..0d54d0b5e327 100644 > --- a/drivers/i2c/i2c-atr.c > +++ b/drivers/i2c/i2c-atr.c > @@ -412,7 +412,7 @@ static int i2c_atr_bus_notifier_call(struct > notifier_block *nb, dev_name(dev), ret); > break; > > - case BUS_NOTIFY_DEL_DEVICE: > + case BUS_NOTIFY_REMOVED_DEVICE: > i2c_atr_detach_client(client->adapter, client); > break; LGTM, tested on a TI FPC202 ATR. Reviewed-by: Romain Gantois <romain.gantois@xxxxxxxxxxx> Tested-by: Romain Gantois <romain.gantois@xxxxxxxxxxx> -- Romain Gantois, Bootlin Embedded Linux and Kernel engineering https://bootlin.com