diff options
author | David Brownell <david-b@pacbell.net> | 2008-07-14 16:38:24 -0400 |
---|---|---|
committer | Jean Delvare <khali@mahadeva.delvare> | 2008-07-14 16:38:24 -0400 |
commit | 6ea438ec8da4ec56bf415f5ea360e6b0cb59c6c3 (patch) | |
tree | bfaca562cfa95e71f7e7efe44d67f245d59b32f6 /drivers/i2c | |
parent | a1cdedac634eef81f747078bf1c27ad36ab13553 (diff) |
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>
Diffstat (limited to 'drivers/i2c')
-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 527d51319f3c..b995502400b8 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -866,8 +866,9 @@ EXPORT_SYMBOL(i2c_detach_client); | |||
866 | */ | 866 | */ |
867 | struct i2c_client *i2c_use_client(struct i2c_client *client) | 867 | struct i2c_client *i2c_use_client(struct i2c_client *client) |
868 | { | 868 | { |
869 | get_device(&client->dev); | 869 | if (client && get_device(&client->dev)) |
870 | return client; | 870 | return client; |
871 | return NULL; | ||
871 | } | 872 | } |
872 | EXPORT_SYMBOL(i2c_use_client); | 873 | EXPORT_SYMBOL(i2c_use_client); |
873 | 874 | ||
@@ -879,7 +880,8 @@ EXPORT_SYMBOL(i2c_use_client); | |||
879 | */ | 880 | */ |
880 | void i2c_release_client(struct i2c_client *client) | 881 | void i2c_release_client(struct i2c_client *client) |
881 | { | 882 | { |
882 | put_device(&client->dev); | 883 | if (client) |
884 | put_device(&client->dev); | ||
883 | } | 885 | } |
884 | EXPORT_SYMBOL(i2c_release_client); | 886 | EXPORT_SYMBOL(i2c_release_client); |
885 | 887 | ||