Commit 50c3304a authored by Hans Verkuil's avatar Hans Verkuil Committed by Jean Delvare

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: default avatarHans Verkuil <hverkuil@xs4all.nl>
Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
parent 5edc68b8
...@@ -90,12 +90,16 @@ static int i2c_device_probe(struct device *dev) ...@@ -90,12 +90,16 @@ static int i2c_device_probe(struct device *dev)
{ {
struct i2c_client *client = to_i2c_client(dev); struct i2c_client *client = to_i2c_client(dev);
struct i2c_driver *driver = to_i2c_driver(dev->driver); struct i2c_driver *driver = to_i2c_driver(dev->driver);
int status;
if (!driver->probe) if (!driver->probe)
return -ENODEV; return -ENODEV;
client->driver = driver; client->driver = driver;
dev_dbg(dev, "probe\n"); 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) static int i2c_device_remove(struct device *dev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment