try_module_get returns true when NULL arguments, so we first need to check if there is a module loaded before getting the reference count. Signed-off-by: Arnd Bergmann Index: linux-cg/arch/ppc64/kernel/spu_syscalls.c =================================================================== --- linux-cg.orig/arch/powerpc/platforms/cell/spu_syscalls.c +++ linux-cg/arch/powerpc/platforms/cell/spu_syscalls.c @@ -37,11 +37,12 @@ asmlinkage long sys_spu_create_thread(co unsigned int flags, mode_t mode) { long ret; + struct module *owner = spufs_calls.owner; ret = -ENOSYS; - if (try_module_get(spufs_calls.owner)) { + if (owner && try_module_get(spufs_calls.owner)) { ret = spufs_calls.create_thread(name, flags, mode); - module_put(spufs_calls.owner); + module_put(owner); } return ret; } @@ -51,16 +52,17 @@ asmlinkage long sys_spu_run(int fd, __u3 long ret; struct file *filp; int fput_needed; + struct module *owner = spufs_calls.owner; ret = -ENOSYS; - if (try_module_get(spufs_calls.owner)) { + if (owner && try_module_get(owner)) { ret = -EBADF; filp = fget_light(fd, &fput_needed); if (filp) { ret = spufs_calls.spu_run(filp, unpc, ustatus); fput_light(filp, fput_needed); } - module_put(spufs_calls.owner); + module_put(owner); } return ret; } --