x86_64: Fix readahead/sync_file_range/fadvise64 compat calls
Correctly convert the u64 arguments from 32bit to 64bit. Pointed out by Heiko Carstens. I guess this proves Linus' theory that nobody uses the more exotic Linux specific syscalls. It wasn't discovered by a user. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
7c8545e984
commit
e412ac4971
|
@ -620,7 +620,7 @@ ia32_sys_call_table:
|
|||
.quad quiet_ni_syscall /* tux */
|
||||
.quad quiet_ni_syscall /* security */
|
||||
.quad sys_gettid
|
||||
.quad sys_readahead /* 225 */
|
||||
.quad sys32_readahead /* 225 */
|
||||
.quad sys_setxattr
|
||||
.quad sys_lsetxattr
|
||||
.quad sys_fsetxattr
|
||||
|
@ -645,7 +645,7 @@ ia32_sys_call_table:
|
|||
.quad compat_sys_io_getevents
|
||||
.quad compat_sys_io_submit
|
||||
.quad sys_io_cancel
|
||||
.quad sys_fadvise64 /* 250 */
|
||||
.quad sys32_fadvise64 /* 250 */
|
||||
.quad quiet_ni_syscall /* free_huge_pages */
|
||||
.quad sys_exit_group
|
||||
.quad sys32_lookup_dcookie
|
||||
|
@ -709,7 +709,7 @@ ia32_sys_call_table:
|
|||
.quad compat_sys_set_robust_list
|
||||
.quad compat_sys_get_robust_list
|
||||
.quad sys_splice
|
||||
.quad sys_sync_file_range
|
||||
.quad sys32_sync_file_range
|
||||
.quad sys_tee /* 315 */
|
||||
.quad compat_sys_vmsplice
|
||||
.quad compat_sys_move_pages
|
||||
|
|
|
@ -860,3 +860,22 @@ long sys32_lookup_dcookie(u32 addr_low, u32 addr_high,
|
|||
return sys_lookup_dcookie(((u64)addr_high << 32) | addr_low, buf, len);
|
||||
}
|
||||
|
||||
asmlinkage ssize_t sys32_readahead(int fd, unsigned off_lo, unsigned off_hi, size_t count)
|
||||
{
|
||||
return sys_readahead(fd, ((u64)off_hi << 32) | off_lo, count);
|
||||
}
|
||||
|
||||
asmlinkage long sys32_sync_file_range(int fd, unsigned off_low, unsigned off_hi,
|
||||
unsigned n_low, unsigned n_hi, int flags)
|
||||
{
|
||||
return sys_sync_file_range(fd,
|
||||
((u64)off_hi << 32) | off_low,
|
||||
((u64)n_hi << 32) | n_low, flags);
|
||||
}
|
||||
|
||||
asmlinkage long sys32_fadvise64(int fd, unsigned offset_lo, unsigned offset_hi, size_t len,
|
||||
int advice)
|
||||
{
|
||||
return sys_fadvise64_64(fd, ((u64)offset_hi << 32) | offset_lo,
|
||||
len, advice);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue