Răsfoiți Sursa

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>
David Brownell 17 ani în urmă
părinte
comite
6ea438ec8d
1 a modificat fișierele cu 5 adăugiri și 3 ștergeri
  1. 5 3
      drivers/i2c/i2c-core.c

+ 5 - 3
drivers/i2c/i2c-core.c

@@ -866,8 +866,9 @@ EXPORT_SYMBOL(i2c_detach_client);
  */
  */
 struct i2c_client *i2c_use_client(struct i2c_client *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);
 EXPORT_SYMBOL(i2c_use_client);
 
 
@@ -879,7 +880,8 @@ EXPORT_SYMBOL(i2c_use_client);
  */
  */
 void i2c_release_client(struct i2c_client *client)
 void i2c_release_client(struct i2c_client *client)
 {
 {
-	put_device(&client->dev);
+	if (client)
+		put_device(&client->dev);
 }
 }
 EXPORT_SYMBOL(i2c_release_client);
 EXPORT_SYMBOL(i2c_release_client);