diff options
author | Jajambo Liao <jajambol@nvidia.com> | 2014-04-11 14:07:36 +0800 |
---|---|---|
committer | Seema Khowala <seemaj@nvidia.com> | 2014-04-23 14:05:05 -0700 |
commit | 2a2f17a4f8a7fc89be039364be1f259ec7a6ef39 (patch) | |
tree | 69f057c25797496bb20e5d0cc4a86cd13cd464aa /drivers/input/misc | |
parent | 1e8fba4807107ccc5a23580e632e3ff95f588fdb (diff) |
input: misc: mpu: release resource in nvi_remove
bug 1495086
We shouldn't release resource in nvi_shutdown,
move it into nvi_remove.
Change-Id: I260b90bb7fb60d04c06d08375a8e1624374a1340
Signed-off-by: Jajambo Liao <jajambol@nvidia.com>
Reviewed-on: http://git-master/r/395038
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Robert Collins <rcollins@nvidia.com>
Reviewed-by: Erik Lilliebjerg <elilliebjerg@nvidia.com>
Reviewed-by: Jordan Nien <jnien@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/input/misc')
-rw-r--r-- | drivers/input/misc/mpu/inv_gyro.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/input/misc/mpu/inv_gyro.c b/drivers/input/misc/mpu/inv_gyro.c index af17c15844cc..e86d1e4cfd7d 100644 --- a/drivers/input/misc/mpu/inv_gyro.c +++ b/drivers/input/misc/mpu/inv_gyro.c @@ -4561,14 +4561,8 @@ static void nvi_shutdown(struct i2c_client *client) } } inf->shutdown = true; - if (inf->inv_dev) - remove_sysfs_interfaces(inf); free_irq(client->irq, inf); mutex_unlock(&inf->mutex); - if (inf->idev) - input_unregister_device(inf->idev); - if ((INV_ITG3500 != inf->chip_type) && (inf->idev_dmp)) - input_unregister_device(inf->idev_dmp); } static int nvi_remove(struct i2c_client *client) @@ -4578,6 +4572,14 @@ static int nvi_remove(struct i2c_client *client) nvi_shutdown(client); inf = i2c_get_clientdata(client); if (inf != NULL) { + mutex_lock(&inf->mutex); + if (inf->inv_dev) + remove_sysfs_interfaces(inf); + mutex_unlock(&inf->mutex); + if (inf->idev) + input_unregister_device(inf->idev); + if ((INV_ITG3500 != inf->chip_type) && (inf->idev_dmp)) + input_unregister_device(inf->idev_dmp); nvi_pm_exit(inf); kfifo_free(&inf->trigger.timestamps); kfree(inf); |