IB/hfi1: Fix module use count flaw due to leftover module put calls
commit822fbd3741
upstream. When the try_module_get calls were removed from opening and closing of the i2c debugfs file, the corresponding module_put calls were missed. This results in an inaccurate module use count that requires a power cycle to fix. Fixes:09fbca8e62
("IB/hfi1: No need to use try_module_get for debugfs") Link: https://lore.kernel.org/r/20200623203230.106975.76240.stgit@awfm-01.aw.intel.com Cc: <stable@vger.kernel.org> Reviewed-by: Kaike Wan <kaike.wan@intel.com> Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2a4c0bf5c7
commit
21d511c6c9
|
@ -985,15 +985,10 @@ static ssize_t qsfp2_debugfs_read(struct file *file, char __user *buf,
|
|||
static int __i2c_debugfs_open(struct inode *in, struct file *fp, u32 target)
|
||||
{
|
||||
struct hfi1_pportdata *ppd;
|
||||
int ret;
|
||||
|
||||
ppd = private2ppd(fp);
|
||||
|
||||
ret = acquire_chip_resource(ppd->dd, i2c_target(target), 0);
|
||||
if (ret) /* failed - release the module */
|
||||
module_put(THIS_MODULE);
|
||||
|
||||
return ret;
|
||||
return acquire_chip_resource(ppd->dd, i2c_target(target), 0);
|
||||
}
|
||||
|
||||
static int i2c1_debugfs_open(struct inode *in, struct file *fp)
|
||||
|
@ -1013,7 +1008,6 @@ static int __i2c_debugfs_release(struct inode *in, struct file *fp, u32 target)
|
|||
ppd = private2ppd(fp);
|
||||
|
||||
release_chip_resource(ppd->dd, i2c_target(target));
|
||||
module_put(THIS_MODULE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1031,18 +1025,10 @@ static int i2c2_debugfs_release(struct inode *in, struct file *fp)
|
|||
static int __qsfp_debugfs_open(struct inode *in, struct file *fp, u32 target)
|
||||
{
|
||||
struct hfi1_pportdata *ppd;
|
||||
int ret;
|
||||
|
||||
if (!try_module_get(THIS_MODULE))
|
||||
return -ENODEV;
|
||||
|
||||
ppd = private2ppd(fp);
|
||||
|
||||
ret = acquire_chip_resource(ppd->dd, i2c_target(target), 0);
|
||||
if (ret) /* failed - release the module */
|
||||
module_put(THIS_MODULE);
|
||||
|
||||
return ret;
|
||||
return acquire_chip_resource(ppd->dd, i2c_target(target), 0);
|
||||
}
|
||||
|
||||
static int qsfp1_debugfs_open(struct inode *in, struct file *fp)
|
||||
|
@ -1062,7 +1048,6 @@ static int __qsfp_debugfs_release(struct inode *in, struct file *fp, u32 target)
|
|||
ppd = private2ppd(fp);
|
||||
|
||||
release_chip_resource(ppd->dd, i2c_target(target));
|
||||
module_put(THIS_MODULE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue