powerpc fixes for 6.1 #4
- Fix an endian thinko in the asm-generic compat_arg_u64() which led to syscall arguments being swapped for some compat syscalls. - Fix syscall wrapper handling of syscalls with 64-bit arguments on 32-bit kernels, which led to syscall arguments being misplaced. - A build fix for amdgpu on Book3E with AltiVec disabled. Thanks to: Andreas Schwab, Christian Zigotzky, Arnd Bergmann. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEJFGtCPCthwEv2Y/bUevqPMjhpYAFAmNjHQYTHG1wZUBlbGxl cm1hbi5pZC5hdQAKCRBR6+o8yOGlgDgXD/4kNIbpypQXPsX/Z+CeeicTEKs/u7KW LP0/4DCAN+bvPly/T7UbitYkRc6G3+m9juewU6mg4gk4ZqAH+kk0QhXzF5zqR4VZ WY3LzIrhA84JT3WRWyfRYLDmFrE3heTGz/I3l1Or3SHjaHowIdko6dg5IAXyRVYi usXwQNna/CT3gFYYEbVglHIeO+Ry0kom9x3kGA8XCk/7vL5M7xwUPpBefRYrCq49 fJLBZTZC0b5DC0zK7dyDnE5T6QAABVbTAIpFh/ckmHx/biTPpIKiAbqSeFXSqVmI mKJhk6MBou1kCm0Zo104xW8MYA0bnqmbkZnLprDNRpDhyRD1/7VxGNhoEtZhOlld bbI7JvBKe4PNqkxefc2yg2Dnd2UxNHZMwRJPDPxUZ200ATlM+rsSIZ4kPcwDlPPW HoiKw6rrFVu2qG2F9G5L3PmEiKdy26Ru1WGT8pHTLf1YYJ8vKXbZeLJG4uu+9o/O JTzhqlQmY/fDNJYrYLsYT63hpyuheVCdHqFgGk3SV7Cxop18pXgBAyYQQc/ihiX5 vS1nn0Q0W73LNbCRphIpKq2qyjsU2rA8njQ/U7zvpTLqSPO0BIIjAcJi04HbaJR2 ADQRRZVj31kr00QQkaVq7n8kbHEjfswJHFgzy6n26rQtmsTYSpEoZkE2VvJ7rdzg c8PvmaTU6kSNEw== =MD6m -----END PGP SIGNATURE----- Merge tag 'powerpc-6.1-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux Pull powerpc fixes from Michael Ellerman: - Fix an endian thinko in the asm-generic compat_arg_u64() which led to syscall arguments being swapped for some compat syscalls. - Fix syscall wrapper handling of syscalls with 64-bit arguments on 32-bit kernels, which led to syscall arguments being misplaced. - A build fix for amdgpu on Book3E with AltiVec disabled. Thanks to Andreas Schwab, Christian Zigotzky, and Arnd Bergmann. * tag 'powerpc-6.1-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: powerpc/32: Select ARCH_SPLIT_ARG64 powerpc/32: fix syscall wrappers with 64-bit arguments asm-generic: compat: fix compat_arg_u64() and compat_arg_u64_dual() powerpc/64e: Fix amdgpu build on Book3E w/o AltiVec
This commit is contained in:
Коммит
4d74039149
|
@ -147,6 +147,7 @@ config PPC
|
|||
select ARCH_MIGHT_HAVE_PC_SERIO
|
||||
select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
|
||||
select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
|
||||
select ARCH_SPLIT_ARG64 if PPC32
|
||||
select ARCH_STACKWALK
|
||||
select ARCH_SUPPORTS_ATOMIC_RMW
|
||||
select ARCH_SUPPORTS_DEBUG_PAGEALLOC if PPC_BOOK3S || PPC_8xx || 40x
|
||||
|
@ -285,7 +286,7 @@ config PPC
|
|||
#
|
||||
|
||||
config PPC_LONG_DOUBLE_128
|
||||
depends on PPC64
|
||||
depends on PPC64 && ALTIVEC
|
||||
def_bool $(success,test "$(shell,echo __LONG_DOUBLE_128__ | $(CC) -E -P -)" = 1)
|
||||
|
||||
config PPC_BARRIER_NOSPEC
|
||||
|
|
|
@ -104,6 +104,13 @@ long sys_ppc_ftruncate64(unsigned int fd, u32 reg4,
|
|||
unsigned long len1, unsigned long len2);
|
||||
long sys_ppc32_fadvise64(int fd, u32 unused, u32 offset1, u32 offset2,
|
||||
size_t len, int advice);
|
||||
long sys_ppc_sync_file_range2(int fd, unsigned int flags,
|
||||
unsigned int offset1,
|
||||
unsigned int offset2,
|
||||
unsigned int nbytes1,
|
||||
unsigned int nbytes2);
|
||||
long sys_ppc_fallocate(int fd, int mode, u32 offset1, u32 offset2,
|
||||
u32 len1, u32 len2);
|
||||
#endif
|
||||
#ifdef CONFIG_COMPAT
|
||||
long compat_sys_mmap2(unsigned long addr, size_t len,
|
||||
|
|
|
@ -112,7 +112,7 @@ PPC32_SYSCALL_DEFINE6(ppc32_fadvise64,
|
|||
advice);
|
||||
}
|
||||
|
||||
COMPAT_SYSCALL_DEFINE6(ppc_sync_file_range2,
|
||||
PPC32_SYSCALL_DEFINE6(ppc_sync_file_range2,
|
||||
int, fd, unsigned int, flags,
|
||||
unsigned int, offset1, unsigned int, offset2,
|
||||
unsigned int, nbytes1, unsigned int, nbytes2)
|
||||
|
@ -122,3 +122,14 @@ COMPAT_SYSCALL_DEFINE6(ppc_sync_file_range2,
|
|||
|
||||
return ksys_sync_file_range(fd, offset, nbytes, flags);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PPC32
|
||||
SYSCALL_DEFINE6(ppc_fallocate,
|
||||
int, fd, int, mode,
|
||||
u32, offset1, u32, offset2, u32, len1, u32, len2)
|
||||
{
|
||||
return ksys_fallocate(fd, mode,
|
||||
merge_64(offset1, offset2),
|
||||
merge_64(len1, len2));
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -394,8 +394,11 @@
|
|||
305 common signalfd sys_signalfd compat_sys_signalfd
|
||||
306 common timerfd_create sys_timerfd_create
|
||||
307 common eventfd sys_eventfd
|
||||
308 common sync_file_range2 sys_sync_file_range2 compat_sys_ppc_sync_file_range2
|
||||
309 nospu fallocate sys_fallocate compat_sys_fallocate
|
||||
308 32 sync_file_range2 sys_ppc_sync_file_range2 compat_sys_ppc_sync_file_range2
|
||||
308 64 sync_file_range2 sys_sync_file_range2
|
||||
308 spu sync_file_range2 sys_sync_file_range2
|
||||
309 32 fallocate sys_ppc_fallocate compat_sys_fallocate
|
||||
309 64 fallocate sys_fallocate
|
||||
310 nospu subpage_prot sys_subpage_prot
|
||||
311 32 timerfd_settime sys_timerfd_settime32
|
||||
311 64 timerfd_settime sys_timerfd_settime
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#endif
|
||||
|
||||
#ifndef compat_arg_u64
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
#ifndef CONFIG_CPU_BIG_ENDIAN
|
||||
#define compat_arg_u64(name) u32 name##_lo, u32 name##_hi
|
||||
#define compat_arg_u64_dual(name) u32, name##_lo, u32, name##_hi
|
||||
#else
|
||||
|
|
Загрузка…
Ссылка в новой задаче