diff options
author | David Brownell <david-b@pacbell.net> | 2008-07-14 20:38:24 (GMT) |
---|---|---|
committer | Jean Delvare <khali@mahadeva.delvare> | 2008-07-14 20:38:24 (GMT) |
commit | 6ea438ec8da4ec56bf415f5ea360e6b0cb59c6c3 (patch) | |
tree | bfaca562cfa95e71f7e7efe44d67f245d59b32f6 | |
parent | a1cdedac634eef81f747078bf1c27ad36ab13553 (diff) | |
download | linux-6ea438ec8da4ec56bf415f5ea360e6b0cb59c6c3.tar.xz |
i2c: i2c_use_client() defends against NULL
Defend the i2c refcount calls against NULL pointers, as is important
(and conventional) for such calls. Note that none of the current
callers of i2c_use_client() use its return value.
[JD: I hate this but apparently all the other subsystems do it so...]
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
-rw-r--r-- | drivers/i2c/i2c-core.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 527d513..b995502 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -866,8 +866,9 @@ EXPORT_SYMBOL(i2c_detach_client); */ struct i2c_client *i2c_use_client(struct i2c_client *client) { - get_device(&client->dev); - return client; + if (client && get_device(&client->dev)) + return client; + return NULL; } EXPORT_SYMBOL(i2c_use_client); @@ -879,7 +880,8 @@ EXPORT_SYMBOL(i2c_use_client); */ void i2c_release_client(struct i2c_client *client) { - put_device(&client->dev); + if (client) + put_device(&client->dev); } EXPORT_SYMBOL(i2c_release_client); |