[PATCH] EDAC: edac_mc_add_mc fix [2/2]
authorDave Peterson <dsp@llnl.gov>
Sun, 26 Mar 2006 09:38:47 +0000 (01:38 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 26 Mar 2006 16:57:07 +0000 (08:57 -0800)
This is part 2 of a 2-part patch set.

Fix edac_mc_add_mc() so it cleans up properly if call to
edac_create_sysfs_mci_device() fails.

Signed-off-by: David S. Peterson <dsp@llnl.gov>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/edac/edac_mc.c

index 226d4fdb15fd62832feb592a08d3fc780cf4ce69..d37a4c4a3125976a5c8a14968e899d9192d887ad 100644 (file)
@@ -1484,8 +1484,6 @@ EXPORT_SYMBOL(edac_mc_add_mc);
 /* FIXME - should a warning be printed if no error detection? correction? */
 int edac_mc_add_mc(struct mem_ctl_info *mci)
 {
-       int rc = 1;
-
        debugf0("%s()\n", __func__);
 #ifdef CONFIG_EDAC_DEBUG
        if (edac_debug_level >= 3)
@@ -1505,7 +1503,7 @@ int edac_mc_add_mc(struct mem_ctl_info *mci)
        down(&mem_ctls_mutex);
 
        if (add_mc_to_global_list(mci))
-               goto finish;
+               goto fail0;
 
        /* set load time so that error rate can be tracked */
        mci->start_time = jiffies;
@@ -1513,19 +1511,22 @@ int edac_mc_add_mc(struct mem_ctl_info *mci)
         if (edac_create_sysfs_mci_device(mci)) {
                 edac_mc_printk(mci, KERN_WARNING,
                        "failed to create sysfs device\n");
-               /* FIXME - should there be an error code and unwind? */
-                goto finish;
+                goto fail1;
         }
 
        /* Report action taken */
        edac_mc_printk(mci, KERN_INFO, "Giving out device to %s %s: PCI %s\n",
                mci->mod_name, mci->ctl_name, pci_name(mci->pdev));
 
-       rc = 0;
+       up(&mem_ctls_mutex);
+       return 0;
 
-finish:
+fail1:
+       del_mc_from_global_list(mci);
+
+fail0:
        up(&mem_ctls_mutex);
-       return rc;
+       return 1;
 }