From: David Gibson The 32->64 bit syscall translation layer on ppc64 incorrectly sign-extends rather than zero-extending the second parameter to shmget(), which should be a size_t. This means that it is impossible to shmget() more 2GB or more from a 32-bit process. --- 25-akpm/arch/ppc64/kernel/sys_ppc32.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN arch/ppc64/kernel/sys_ppc32.c~ppc64-shmget-translation-bugfix arch/ppc64/kernel/sys_ppc32.c --- 25/arch/ppc64/kernel/sys_ppc32.c~ppc64-shmget-translation-bugfix 2004-04-29 23:01:43.803208144 -0700 +++ 25-akpm/arch/ppc64/kernel/sys_ppc32.c 2004-04-29 23:01:43.808207384 -0700 @@ -1666,7 +1666,7 @@ asmlinkage long sys32_ipc(u32 call, u32 err = sys_shmdt((char *)AA(ptr)); break; case SHMGET: - err = sys_shmget(first, second, third); + err = sys_shmget(first, second_parm, third); break; case SHMCTL: err = do_sys32_shmctl(first, second, (void *)AA(ptr)); _