diff options
-rw-r--r-- | drivers/i2c/i2c-dev.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c index 909428af2b7e..ac5bd2a7ca99 100644 --- a/drivers/i2c/i2c-dev.c +++ b/drivers/i2c/i2c-dev.c | |||
@@ -90,6 +90,7 @@ static void return_i2c_dev(struct i2c_dev *i2c_dev) | |||
90 | spin_lock(&i2c_dev_list_lock); | 90 | spin_lock(&i2c_dev_list_lock); |
91 | list_del(&i2c_dev->list); | 91 | list_del(&i2c_dev->list); |
92 | spin_unlock(&i2c_dev_list_lock); | 92 | spin_unlock(&i2c_dev_list_lock); |
93 | kfree(i2c_dev); | ||
93 | } | 94 | } |
94 | 95 | ||
95 | static ssize_t show_adapter_name(struct device *dev, | 96 | static ssize_t show_adapter_name(struct device *dev, |
@@ -431,7 +432,6 @@ error_destroy: | |||
431 | device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr)); | 432 | device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr)); |
432 | error: | 433 | error: |
433 | return_i2c_dev(i2c_dev); | 434 | return_i2c_dev(i2c_dev); |
434 | kfree(i2c_dev); | ||
435 | return res; | 435 | return res; |
436 | } | 436 | } |
437 | 437 | ||
@@ -446,7 +446,6 @@ static int i2cdev_detach_adapter(struct i2c_adapter *adap) | |||
446 | device_remove_file(i2c_dev->dev, &dev_attr_name); | 446 | device_remove_file(i2c_dev->dev, &dev_attr_name); |
447 | return_i2c_dev(i2c_dev); | 447 | return_i2c_dev(i2c_dev); |
448 | device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr)); | 448 | device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr)); |
449 | kfree(i2c_dev); | ||
450 | 449 | ||
451 | pr_debug("i2c-dev: adapter [%s] unregistered\n", adap->name); | 450 | pr_debug("i2c-dev: adapter [%s] unregistered\n", adap->name); |
452 | return 0; | 451 | return 0; |