[SPARC64]: Missing mdesc_release() in ldc_init().
authorDavid S. Miller <davem@sunset.davemloft.net>
Thu, 15 Nov 2007 04:17:24 +0000 (20:17 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 5 Dec 2007 13:37:55 +0000 (05:37 -0800)
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc64/kernel/ldc.c

index 217478a..63969f6 100644 (file)
@@ -2338,6 +2338,7 @@ static int __init ldc_init(void)
        unsigned long major, minor;
        struct mdesc_handle *hp;
        const u64 *v;
+       int err;
        u64 mp;
 
        hp = mdesc_grab();
@@ -2345,29 +2346,33 @@ static int __init ldc_init(void)
                return -ENODEV;
 
        mp = mdesc_node_by_name(hp, MDESC_NODE_NULL, "platform");
+       err = -ENODEV;
        if (mp == MDESC_NODE_NULL)
-               return -ENODEV;
+               goto out;
 
        v = mdesc_get_property(hp, mp, "domaining-enabled", NULL);
        if (!v)
-               return -ENODEV;
+               goto out;
 
        major = 1;
        minor = 0;
        if (sun4v_hvapi_register(HV_GRP_LDOM, major, &minor)) {
                printk(KERN_INFO PFX "Could not register LDOM hvapi.\n");
-               return -ENODEV;
+               goto out;
        }
 
        printk(KERN_INFO "%s", version);
 
        if (!*v) {
                printk(KERN_INFO PFX "Domaining disabled.\n");
-               return -ENODEV;
+               goto out;
        }
        ldom_domaining_enabled = 1;
+       err = 0;
 
-       return 0;
+out:
+       mdesc_release(hp);
+       return err;
 }
 
 core_initcall(ldc_init);