[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:
Akinobu Mita 2006-11-02 22:07:10 -08:00 committed by Linus Torvalds
parent 7011774db8
commit 77d6e1397a

View File

@ -237,7 +237,11 @@ static int edac_sysfs_memctrl_setup(void)
/* 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) {
debugf1("%s() error=%d\n", __func__, err);
return err;
}
/* Init the MC's kobject */ /* Init the MC's kobject */
memset(&edac_memctrl_kobj, 0, sizeof (edac_memctrl_kobj)); memset(&edac_memctrl_kobj, 0, sizeof (edac_memctrl_kobj));
edac_memctrl_kobj.parent = &edac_class.kset.kobj; edac_memctrl_kobj.parent = &edac_class.kset.kobj;
@ -246,18 +250,23 @@ static int edac_sysfs_memctrl_setup(void)
/* generate sysfs "..../edac/mc" */ /* generate sysfs "..../edac/mc" */
err = kobject_set_name(&edac_memctrl_kobj,"mc"); err = kobject_set_name(&edac_memctrl_kobj,"mc");
if (!err) { if (err)
goto fail;
/* FIXME: maybe new sysdev_create_subdir() */ /* FIXME: maybe new sysdev_create_subdir() */
err = kobject_register(&edac_memctrl_kobj); err = kobject_register(&edac_memctrl_kobj);
if (err) if (err) {
debugf1("Failed to register '.../edac/mc'\n"); debugf1("Failed to register '.../edac/mc'\n");
else goto fail;
debugf1("Registered '.../edac/mc' kobject\n");
} }
} else
debugf1("%s() error=%d\n", __func__, err);
debugf1("Registered '.../edac/mc' kobject\n");
return 0;
fail:
sysdev_class_unregister(&edac_class);
return err; return err;
} }