Skip to content

Commit aee41fe

Browse files
author
Al Viro
committed
lseek() and truncate() on sparc really need sign extension
ftruncate() doesn't - it's declared with size as unsigned long, but truncate() and lseek() have that argument as signed long. IOW, these two really need sign extension + branch to native syscall; argument validation in sys_... does *not* suffice. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
1 parent 9e2d59a commit aee41fe

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

arch/sparc/kernel/sys32.S

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,13 @@ SIGN1(sys32_mq_open, compat_sys_mq_open, %o1)
4747
SIGN1(sys32_select, compat_sys_select, %o0)
4848
SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5)
4949
SIGN2(sys32_sendfile, compat_sys_sendfile, %o0, %o1)
50+
SIGN1(sys32_lseek, sys_lseek, %o1)
5051
SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0)
5152
SIGN1(sys32_recvmsg, compat_sys_recvmsg, %o0)
5253
SIGN1(sys32_sendmsg, compat_sys_sendmsg, %o0)
5354
SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5)
5455
SIGN1(sys32_vmsplice, compat_sys_vmsplice, %o0)
56+
SIGN1(sys32_truncate, sys_truncate, %o1)
5557

5658
.globl sys32_mmap2
5759
sys32_mmap2:

arch/sparc/kernel/systbls_64.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ sys_call_table32:
2121
/*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write
2222
/*5*/ .word compat_sys_open, sys_close, compat_sys_wait4, sys_creat, sys_link
2323
/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod
24-
/*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, sys_lseek
24+
/*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, sys32_lseek
2525
/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
2626
/*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, compat_sys_sigaltstack, sys_pause
2727
/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
@@ -43,7 +43,7 @@ sys_call_table32:
4343
/*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall
4444
.word sys_getgroups, compat_sys_gettimeofday, sys32_getrusage, sys_nis_syscall, sys_getcwd
4545
/*120*/ .word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod
46-
.word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, sys_truncate
46+
.word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, sys32_truncate
4747
/*130*/ .word sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall
4848
.word sys_nis_syscall, sys_mkdir, sys_rmdir, compat_sys_utimes, compat_sys_stat64
4949
/*140*/ .word sys_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit

0 commit comments

Comments
 (0)