OSDN Git Service

[POWERPC] spufs: fix missing error handling in module_init()
authorAkinobu Mita <mita@fixstars.com>
Mon, 23 Apr 2007 19:08:19 +0000 (21:08 +0200)
committerArnd Bergmann <arnd@klappe.arndb.de>
Mon, 23 Apr 2007 19:18:56 +0000 (21:18 +0200)
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>
arch/powerpc/platforms/cell/spufs/inode.c

index 423596a..5d09c2e 100644 (file)
@@ -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: