diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 26f03a14a478..2d377d2e89f1 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -462,6 +462,7 @@ static void i2c_device_shutdown(struct device *dev) static void i2c_client_dev_release(struct device *dev) { + i2c_unregister_device(to_i2c_client(dev)); kfree(to_i2c_client(dev)); } @@ -1527,7 +1528,6 @@ void i2c_del_adapter(struct i2c_adapter *adap) dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name, client->addr); list_del(&client->detected); - i2c_unregister_device(client); } mutex_unlock(&adap->userspace_clients_lock);