mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-08 18:42:53 +00:00
IB/ipath: Correct ipath_verbs_register_sysfs() error handling
ipath_verbs_register_sysfs() never returned the correct error code from device_create_file and never cleaned up from a failure. Additionally, the caller of ipath_verbs_register_sysfs() doesn't return the correct "ret" value. This patch resolves all of these issues. Reported-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Reviewed-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
41ef2d5678
commit
137200a4bb
@ -2187,7 +2187,8 @@ int ipath_register_ib_device(struct ipath_devdata *dd)
|
||||
if (ret)
|
||||
goto err_reg;
|
||||
|
||||
if (ipath_verbs_register_sysfs(dev))
|
||||
ret = ipath_verbs_register_sysfs(dev);
|
||||
if (ret)
|
||||
goto err_class;
|
||||
|
||||
enable_timer(dd);
|
||||
@ -2327,15 +2328,15 @@ static int ipath_verbs_register_sysfs(struct ib_device *dev)
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(ipath_class_attributes); ++i)
|
||||
if (device_create_file(&dev->dev,
|
||||
ipath_class_attributes[i])) {
|
||||
ret = 1;
|
||||
for (i = 0; i < ARRAY_SIZE(ipath_class_attributes); ++i) {
|
||||
ret = device_create_file(&dev->dev,
|
||||
ipath_class_attributes[i]);
|
||||
if (ret)
|
||||
goto bail;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
}
|
||||
return 0;
|
||||
bail:
|
||||
for (i = 0; i < ARRAY_SIZE(ipath_class_attributes); ++i)
|
||||
device_remove_file(&dev->dev, ipath_class_attributes[i]);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user