i2c: Warn when device removing fails
The driver core ignores the return value of struct bus_type::remove. So warn if there is an error that went unnoticed before and return 0 unconditionally in i2c_device_remove(). This prepares changing struct bus_type::remove to return void. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [wsa: added a comment and removed unneeded initializtion] Signed-off-by: Wolfram Sang <wsa@kernel.org>
This commit is contained in:
parent
bfbccd70ee
commit
71637c620a
|
@ -551,15 +551,19 @@ static int i2c_device_remove(struct device *dev)
|
|||
{
|
||||
struct i2c_client *client = i2c_verify_client(dev);
|
||||
struct i2c_driver *driver;
|
||||
int status = 0;
|
||||
|
||||
if (!client || !dev->driver)
|
||||
return 0;
|
||||
|
||||
driver = to_i2c_driver(dev->driver);
|
||||
if (driver->remove) {
|
||||
int status;
|
||||
|
||||
dev_dbg(dev, "remove\n");
|
||||
|
||||
status = driver->remove(client);
|
||||
if (status)
|
||||
dev_warn(dev, "remove failed (%pe), will be ignored\n", ERR_PTR(status));
|
||||
}
|
||||
|
||||
dev_pm_domain_detach(&client->dev, true);
|
||||
|
@ -571,7 +575,8 @@ static int i2c_device_remove(struct device *dev)
|
|||
if (client->flags & I2C_CLIENT_HOST_NOTIFY)
|
||||
pm_runtime_put(&client->adapter->dev);
|
||||
|
||||
return status;
|
||||
/* return always 0 because there is WIP to make remove-functions void */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void i2c_device_shutdown(struct device *dev)
|
||||
|
|
Loading…
Reference in New Issue