mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-18 11:16:42 +07:00
[PATCH] edac_mc: fix error handling
Call sysdev_class_unregister() on failure in edac_sysfs_memctrl_setup() and decrease identation level for clear logic. Acked-by: Doug Thompson <norsk5@xmission.com> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
7011774db8
commit
77d6e1397a
@ -230,34 +230,43 @@ static struct kobj_type ktype_memctrl = {
|
|||||||
*/
|
*/
|
||||||
static int edac_sysfs_memctrl_setup(void)
|
static int edac_sysfs_memctrl_setup(void)
|
||||||
{
|
{
|
||||||
int err=0;
|
int err = 0;
|
||||||
|
|
||||||
debugf1("%s()\n", __func__);
|
debugf1("%s()\n", __func__);
|
||||||
|
|
||||||
/* create the /sys/devices/system/edac directory */
|
/* create the /sys/devices/system/edac directory */
|
||||||
err = sysdev_class_register(&edac_class);
|
err = sysdev_class_register(&edac_class);
|
||||||
|
|
||||||
if (!err) {
|
if (err) {
|
||||||
/* Init the MC's kobject */
|
|
||||||
memset(&edac_memctrl_kobj, 0, sizeof (edac_memctrl_kobj));
|
|
||||||
edac_memctrl_kobj.parent = &edac_class.kset.kobj;
|
|
||||||
edac_memctrl_kobj.ktype = &ktype_memctrl;
|
|
||||||
|
|
||||||
/* generate sysfs "..../edac/mc" */
|
|
||||||
err = kobject_set_name(&edac_memctrl_kobj,"mc");
|
|
||||||
|
|
||||||
if (!err) {
|
|
||||||
/* FIXME: maybe new sysdev_create_subdir() */
|
|
||||||
err = kobject_register(&edac_memctrl_kobj);
|
|
||||||
|
|
||||||
if (err)
|
|
||||||
debugf1("Failed to register '.../edac/mc'\n");
|
|
||||||
else
|
|
||||||
debugf1("Registered '.../edac/mc' kobject\n");
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
debugf1("%s() error=%d\n", __func__, err);
|
debugf1("%s() error=%d\n", __func__, err);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Init the MC's kobject */
|
||||||
|
memset(&edac_memctrl_kobj, 0, sizeof (edac_memctrl_kobj));
|
||||||
|
edac_memctrl_kobj.parent = &edac_class.kset.kobj;
|
||||||
|
edac_memctrl_kobj.ktype = &ktype_memctrl;
|
||||||
|
|
||||||
|
/* generate sysfs "..../edac/mc" */
|
||||||
|
err = kobject_set_name(&edac_memctrl_kobj,"mc");
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
/* FIXME: maybe new sysdev_create_subdir() */
|
||||||
|
err = kobject_register(&edac_memctrl_kobj);
|
||||||
|
|
||||||
|
if (err) {
|
||||||
|
debugf1("Failed to register '.../edac/mc'\n");
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
debugf1("Registered '.../edac/mc' kobject\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
sysdev_class_unregister(&edac_class);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user