From: Michael Ellerman Date: Thu, 23 Jul 2015 10:21:07 +0000 (+1000) Subject: powerpc: Change syscall_get_nr() to return int X-Git-Tag: omap-for-v4.3/fixes-rc1~100^2~78 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e9fbe6863281b942d7eea44c6ccabc30f46ab44f;p=pandora-kernel.git powerpc: Change syscall_get_nr() to return int The documentation for syscall_get_nr() in asm-generic says: Note this returns int even on 64-bit machines. Only 32 bits of system call number can be meaningful. If the actual arch value is 64 bits, this truncates to 32 bits so 0xffffffff means -1. However our implementation was never updated to reflect this. Generally it's not important, but there is once case where it matters. For seccomp filter with SECCOMP_RET_TRACE, the tracer will set regs->gpr[0] to -1 to reject the syscall. When the task is a compat task, this means we end up with 0xffffffff in r0 because ptrace will zero extend the 32-bit value. If syscall_get_nr() returns an unsigned long, then a 64-bit kernel will see a positive value in r0 and will incorrectly allow the syscall through seccomp. Signed-off-by: Michael Ellerman Reviewed-by: Kees Cook --- Reading git-diff-tree failed