IB/qib: Correct qib_verbs_register_sysfs() error handling
qib_verbs_register_sysfs() never cleans up from a failure. Additionally, the caller of qib_verbs_register_sysfs() doesn't return the correct "ret" value. This patch resolves both of those 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
137200a4bb
commit
c9bdad3c81
|
@ -808,10 +808,14 @@ int qib_verbs_register_sysfs(struct qib_devdata *dd)
|
||||||
for (i = 0; i < ARRAY_SIZE(qib_attributes); ++i) {
|
for (i = 0; i < ARRAY_SIZE(qib_attributes); ++i) {
|
||||||
ret = device_create_file(&dev->dev, qib_attributes[i]);
|
ret = device_create_file(&dev->dev, qib_attributes[i]);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
bail:
|
||||||
|
for (i = 0; i < ARRAY_SIZE(qib_attributes); ++i)
|
||||||
|
device_remove_file(&dev->dev, qib_attributes[i]);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -2234,7 +2234,8 @@ int qib_register_ib_device(struct qib_devdata *dd)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_agents;
|
goto err_agents;
|
||||||
|
|
||||||
if (qib_verbs_register_sysfs(dd))
|
ret = qib_verbs_register_sysfs(dd);
|
||||||
|
if (ret)
|
||||||
goto err_class;
|
goto err_class;
|
||||||
|
|
||||||
goto bail;
|
goto bail;
|
||||||
|
|
Loading…
Reference in New Issue