Skip to content

Commit

Permalink
[PATCH] edac_mc: fix error handling
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Akinobu Mita authored and Linus Torvalds committed Nov 3, 2006
1 parent 7011774 commit 77d6e13
Showing 1 changed file with 27 additions and 18 deletions.
45 changes: 27 additions & 18 deletions drivers/edac/edac_mc.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,34 +230,43 @@ static struct kobj_type ktype_memctrl = {
*/
static int edac_sysfs_memctrl_setup(void)
{
int err=0;
int err = 0;

debugf1("%s()\n", __func__);

/* create the /sys/devices/system/edac directory */
err = sysdev_class_register(&edac_class);

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;
if (err) {
debugf1("%s() error=%d\n", __func__, err);
return err;
}

/* generate sysfs "..../edac/mc" */
err = kobject_set_name(&edac_memctrl_kobj,"mc");
/* 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;

if (!err) {
/* FIXME: maybe new sysdev_create_subdir() */
err = kobject_register(&edac_memctrl_kobj);
/* generate sysfs "..../edac/mc" */
err = kobject_set_name(&edac_memctrl_kobj,"mc");

if (err)
debugf1("Failed to register '.../edac/mc'\n");
else
debugf1("Registered '.../edac/mc' kobject\n");
}
} else
debugf1("%s() error=%d\n", __func__, err);
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;
}

Expand Down

0 comments on commit 77d6e13

Please sign in to comment.