diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2007-11-06 17:26:42 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-11-08 14:15:33 +1100 |
commit | 7992344fdeb9b3bc0ce6eacaf600eb801f231c30 (patch) | |
tree | 5b33535b26f05f6eff59549f63a4888aee51e7c2 /arch/powerpc | |
parent | aca71ef8827d11de243e30f170cfc126376803b4 (diff) | |
download | linux-7992344fdeb9b3bc0ce6eacaf600eb801f231c30.tar.gz linux-7992344fdeb9b3bc0ce6eacaf600eb801f231c30.tar.bz2 linux-7992344fdeb9b3bc0ce6eacaf600eb801f231c30.zip |
[POWERPC] iSeries: Fix ref counting in vio setup
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/platforms/iseries/vio.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/powerpc/platforms/iseries/vio.c b/arch/powerpc/platforms/iseries/vio.c index d6435b03971f..be06cfd9fa3d 100644 --- a/arch/powerpc/platforms/iseries/vio.c +++ b/arch/powerpc/platforms/iseries/vio.c @@ -523,15 +523,16 @@ static void __init get_viotape_info(struct device_node *vio_root) static int __init iseries_vio_init(void) { struct device_node *vio_root; + int ret = -ENODEV; if (!firmware_has_feature(FW_FEATURE_ISERIES)) - return -ENODEV; + goto out; iommu_vio_init(); vio_root = of_find_node_by_path("/vdevice"); if (!vio_root) - return -ENODEV; + goto out; if (viopath_hostLp == HvLpIndexInvalid) { vio_set_hostlp(); @@ -544,10 +545,11 @@ static int __init iseries_vio_init(void) get_viocd_info(vio_root); get_viotape_info(vio_root); - return 0; + ret = 0; put_node: of_node_put(vio_root); - return -ENODEV; + out: + return ret; } arch_initcall(iseries_vio_init); |