Commit 77d6e139 authored by Akinobu Mita's avatar Akinobu Mita Committed by Linus Torvalds

[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: default avatarDoug Thompson <norsk5@xmission.com>
Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 7011774d
...@@ -230,14 +230,18 @@ static struct kobj_type ktype_memctrl = { ...@@ -230,14 +230,18 @@ 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) {
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) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment