aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkinobu Mita <mita@fixstars.com>2007-04-23 21:08:19 +0200
committerArnd Bergmann <arnd@klappe.arndb.de>2007-04-23 21:18:56 +0200
commitc99c1994a2bb9493b4ac372b2b6ee2606d291171 (patch)
treefd160994c89dad01c8e6bcb63e5d350768e88945
parent577f8f1021f9ee6ef2a98a142652759ec122d27f (diff)
downloadkernel_samsung_smdk4412-c99c1994a2bb9493b4ac372b2b6ee2606d291171.zip
kernel_samsung_smdk4412-c99c1994a2bb9493b4ac372b2b6ee2606d291171.tar.gz
kernel_samsung_smdk4412-c99c1994a2bb9493b4ac372b2b6ee2606d291171.tar.bz2
[POWERPC] spufs: fix missing error handling in module_init()
spufs module_init forgot to call a few cleanup functions on error path. This patch also includes cosmetic changes in spu_sched_init() (identation fix and return error code). [modified by hch to apply ontop of the latest schedule changes] Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Akinobu Mita <mita@fixstars.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
-rw-r--r--arch/powerpc/platforms/cell/spufs/inode.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index 423596a..5d09c2e 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -661,25 +661,29 @@ static int __init spufs_init(void)
if (!spufs_inode_cache)
goto out;
- if (spu_sched_init() != 0) {
- kmem_cache_destroy(spufs_inode_cache);
- goto out;
- }
- ret = register_filesystem(&spufs_type);
+ ret = spu_sched_init();
if (ret)
goto out_cache;
+ ret = register_filesystem(&spufs_type);
+ if (ret)
+ goto out_sched;
ret = register_spu_syscalls(&spufs_calls);
if (ret)
goto out_fs;
ret = register_arch_coredump_calls(&spufs_coredump_calls);
if (ret)
- goto out_fs;
+ goto out_syscalls;
spufs_init_isolated_loader();
return 0;
+
+out_syscalls:
+ unregister_spu_syscalls(&spufs_calls);
out_fs:
unregister_filesystem(&spufs_type);
+out_sched:
+ spu_sched_exit();
out_cache:
kmem_cache_destroy(spufs_inode_cache);
out: