i2c: rely on driver core when sanitizing devices
Commit 0998d06310
(device-core: Ensure drvdata = NULL when no driver
is bound) modified the driver core to always clear .driver and .drvdata
on remove or probe error. No need for the I2C core to do it.
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Reported-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
Родитель
21d0b7c0fa
Коммит
72fa818e8a
|
@ -256,10 +256,9 @@ static int i2c_device_probe(struct device *dev)
|
|||
|
||||
acpi_dev_pm_attach(&client->dev, true);
|
||||
status = driver->probe(client, i2c_match_id(driver->id_table, client));
|
||||
if (status) {
|
||||
i2c_set_clientdata(client, NULL);
|
||||
if (status)
|
||||
acpi_dev_pm_detach(&client->dev, true);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -267,7 +266,7 @@ static int i2c_device_remove(struct device *dev)
|
|||
{
|
||||
struct i2c_client *client = i2c_verify_client(dev);
|
||||
struct i2c_driver *driver;
|
||||
int status;
|
||||
int status = 0;
|
||||
|
||||
if (!client || !dev->driver)
|
||||
return 0;
|
||||
|
@ -276,12 +275,8 @@ static int i2c_device_remove(struct device *dev)
|
|||
if (driver->remove) {
|
||||
dev_dbg(dev, "remove\n");
|
||||
status = driver->remove(client);
|
||||
} else {
|
||||
dev->driver = NULL;
|
||||
status = 0;
|
||||
}
|
||||
if (status == 0)
|
||||
i2c_set_clientdata(client, NULL);
|
||||
|
||||
acpi_dev_pm_detach(&client->dev, true);
|
||||
return status;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче