x86/syscalls: Add compat_sys_preadv64v2/compat_sys_pwritev64v2
Don't use the same syscall numbers for 2 different syscalls: 534 x32 preadv compat_sys_preadv64 535 x32 pwritev compat_sys_pwritev64 534 x32 preadv2 compat_sys_preadv2 535 x32 pwritev2 compat_sys_pwritev2 Add compat_sys_preadv64v2() and compat_sys_pwritev64v2() so that 64-bit offset is passed in one 64-bit register on x32, similar to compat_sys_preadv64() and compat_sys_pwritev64(). Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/CAMe9rOovCMf-RQfx_n1U_Tu_DX1BYkjtFr%3DQ4-_PFVSj9BCzUA@mail.gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
Родитель
eb43e8f85f
Коммит
3ebfd81f7f
|
@ -374,5 +374,5 @@
|
|||
543 x32 io_setup compat_sys_io_setup
|
||||
544 x32 io_submit compat_sys_io_submit
|
||||
545 x32 execveat compat_sys_execveat/ptregs
|
||||
534 x32 preadv2 compat_sys_preadv2
|
||||
535 x32 pwritev2 compat_sys_pwritev2
|
||||
546 x32 preadv2 compat_sys_preadv64v2
|
||||
547 x32 pwritev2 compat_sys_pwritev64v2
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
# define __ARCH_WANT_COMPAT_SYS_GETDENTS64
|
||||
# define __ARCH_WANT_COMPAT_SYS_PREADV64
|
||||
# define __ARCH_WANT_COMPAT_SYS_PWRITEV64
|
||||
# define __ARCH_WANT_COMPAT_SYS_PREADV64V2
|
||||
# define __ARCH_WANT_COMPAT_SYS_PWRITEV64V2
|
||||
|
||||
# endif
|
||||
|
||||
|
|
|
@ -1168,6 +1168,15 @@ COMPAT_SYSCALL_DEFINE5(preadv, compat_ulong_t, fd,
|
|||
return do_compat_preadv64(fd, vec, vlen, pos, 0);
|
||||
}
|
||||
|
||||
#ifdef __ARCH_WANT_COMPAT_SYS_PREADV64V2
|
||||
COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd,
|
||||
const struct compat_iovec __user *,vec,
|
||||
unsigned long, vlen, loff_t, pos, int, flags)
|
||||
{
|
||||
return do_compat_preadv64(fd, vec, vlen, pos, flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd,
|
||||
const struct compat_iovec __user *,vec,
|
||||
compat_ulong_t, vlen, u32, pos_low, u32, pos_high,
|
||||
|
@ -1265,6 +1274,15 @@ COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd,
|
|||
return do_compat_pwritev64(fd, vec, vlen, pos, 0);
|
||||
}
|
||||
|
||||
#ifdef __ARCH_WANT_COMPAT_SYS_PWRITEV64V2
|
||||
COMPAT_SYSCALL_DEFINE5(pwritev64v2, unsigned long, fd,
|
||||
const struct compat_iovec __user *,vec,
|
||||
unsigned long, vlen, loff_t, pos, int, flags)
|
||||
{
|
||||
return do_compat_pwritev64(fd, vec, vlen, pos, flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd,
|
||||
const struct compat_iovec __user *,vec,
|
||||
compat_ulong_t, vlen, u32, pos_low, u32, pos_high, int, flags)
|
||||
|
|
Загрузка…
Ссылка в новой задаче