i2c: Keep client->driver and client->dev.driver in sync
Ensure that client->driver is set to NULL if the probe() returns an error (this keeps client->driver and client->dev.driver in sync). Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Acked-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Jean Delvare <khali@linux-fr.org>
This commit is contained in:
parent
5edc68b853
commit
50c3304a5e
1 changed files with 5 additions and 1 deletions
|
@ -90,12 +90,16 @@ static int i2c_device_probe(struct device *dev)
|
|||
{
|
||||
struct i2c_client *client = to_i2c_client(dev);
|
||||
struct i2c_driver *driver = to_i2c_driver(dev->driver);
|
||||
int status;
|
||||
|
||||
if (!driver->probe)
|
||||
return -ENODEV;
|
||||
client->driver = driver;
|
||||
dev_dbg(dev, "probe\n");
|
||||
return driver->probe(client);
|
||||
status = driver->probe(client);
|
||||
if (status)
|
||||
client->driver = NULL;
|
||||
return status;
|
||||
}
|
||||
|
||||
static int i2c_device_remove(struct device *dev)
|
||||
|
|
Loading…
Reference in a new issue