diff options
| author | Michael Ellerman <[email protected]> | 2015-07-23 20:21:07 +1000 |
|---|---|---|
| committer | Michael Ellerman <[email protected]> | 2015-07-29 11:56:13 +1000 |
| commit | e9fbe6863281b942d7eea44c6ccabc30f46ab44f (patch) | |
| tree | 396596458f5ebfbbd4905117027920a2dfda3ee7 /scripts/gdb/linux/modules.py | |
| parent | 1cb9839b73e7f2b006a1cc9452c30f15ff8b1748 (diff) | |
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 <[email protected]>
Reviewed-by: Kees Cook <[email protected]>
Diffstat (limited to 'scripts/gdb/linux/modules.py')
0 files changed, 0 insertions, 0 deletions