]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/sparc64/kernel/ldc.c
Merge branch 'core/softirq' of git://git.kernel.org/pub/scm/linux/kernel/git/tip...
[linux-2.6-omap-h63xx.git] / arch / sparc64 / kernel / ldc.c
index 217478a94128783ae6055e689391dfb5d9919ee6..63969f6102847b75ca033f500ff3e277fa9488fd 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);