- Fix clang build breakage with CONFIG_OPTIMIZE_INLINING=y
 
 - Fix compilation of pointer tagging selftest
 
 - Fix COND_SYSCALL definitions to work with CFI checks
 
 - Fix stale documentation reference in our Kconfig
 -----BEGIN PGP SIGNATURE-----
 
 iQFEBAABCgAuFiEEPxTL6PPUbjXGY88ct6xw3ITBYzQFAl2DO5cQHHdpbGxAa2Vy
 bmVsLm9yZwAKCRC3rHDchMFjNBHhCADEoSOk8WSijBvC4WNCPXBvukuk2KEwal2s
 By+iEo3byr9uRskduddumEnTA3F5otfV7VR3HG34P8K3dzP541Zw8sPs5Q1MU/Zo
 7SzU6J14q+Q3V/+F0RDpajP60bBbmjYQi23xmO8hnnHbZlIV7dteD+JvMWrNh31M
 nTvPHpS+jm/SNFUSL1EMnbr2Au5UhN8j+9Qk1NyPgmTV9DkS4drDs4lBqp8VhvCD
 v6kC3vdW5DiXvMHoa5RXO+3B57HYVmlhylEO0ZOmKxyZEhph1jiuR2ng4CDYtxo3
 qngynXxa7u79a6TdDhnzresaku4xM22UO9bf1WkVq9yv6JQ7/ArV
 =wZPH
 -----END PGP SIGNATURE-----

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 fixes from Will Deacon:
 "We've had a few arm64 fixes trickle in this week. Nothing catastophic,
  but all things that should be addressed:

   - Fix clang build breakage with CONFIG_OPTIMIZE_INLINING=y

   - Fix compilation of pointer tagging selftest

   - Fix COND_SYSCALL definitions to work with CFI checks

   - Fix stale documentation reference in our Kconfig"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: Fix reference to docs for ARM64_TAGGED_ADDR_ABI
  arm64: fix function types in COND_SYSCALL
  selftests, arm64: add kernel headers path for tags_test
  arm64: fix unreachable code issue with cmpxchg
This commit is contained in:
Linus Torvalds 2019-09-20 11:42:07 -07:00
Родитель bb736a5c0e 799c851052
Коммит 8c2b418c3f
4 изменённых файлов: 17 добавлений и 7 удалений

Просмотреть файл

@ -1135,7 +1135,7 @@ config ARM64_TAGGED_ADDR_ABI
When this option is enabled, user applications can opt in to a When this option is enabled, user applications can opt in to a
relaxed ABI via prctl() allowing tagged addresses to be passed relaxed ABI via prctl() allowing tagged addresses to be passed
to system calls as pointer arguments. For details, see to system calls as pointer arguments. For details, see
Documentation/arm64/tagged-address-abi.txt. Documentation/arm64/tagged-address-abi.rst.
menuconfig COMPAT menuconfig COMPAT
bool "Kernel support for 32-bit EL0" bool "Kernel support for 32-bit EL0"

Просмотреть файл

@ -62,7 +62,7 @@ __XCHG_CASE( , , mb_, 64, dmb ish, nop, , a, l, "memory")
#undef __XCHG_CASE #undef __XCHG_CASE
#define __XCHG_GEN(sfx) \ #define __XCHG_GEN(sfx) \
static inline unsigned long __xchg##sfx(unsigned long x, \ static __always_inline unsigned long __xchg##sfx(unsigned long x, \
volatile void *ptr, \ volatile void *ptr, \
int size) \ int size) \
{ \ { \
@ -148,7 +148,7 @@ __CMPXCHG_DBL(_mb)
#undef __CMPXCHG_DBL #undef __CMPXCHG_DBL
#define __CMPXCHG_GEN(sfx) \ #define __CMPXCHG_GEN(sfx) \
static inline unsigned long __cmpxchg##sfx(volatile void *ptr, \ static __always_inline unsigned long __cmpxchg##sfx(volatile void *ptr, \
unsigned long old, \ unsigned long old, \
unsigned long new, \ unsigned long new, \
int size) \ int size) \
@ -255,7 +255,7 @@ __CMPWAIT_CASE( , , 64);
#undef __CMPWAIT_CASE #undef __CMPWAIT_CASE
#define __CMPWAIT_GEN(sfx) \ #define __CMPWAIT_GEN(sfx) \
static inline void __cmpwait##sfx(volatile void *ptr, \ static __always_inline void __cmpwait##sfx(volatile void *ptr, \
unsigned long val, \ unsigned long val, \
int size) \ int size) \
{ \ { \

Просмотреть файл

@ -8,6 +8,8 @@
#ifndef __ASM_SYSCALL_WRAPPER_H #ifndef __ASM_SYSCALL_WRAPPER_H
#define __ASM_SYSCALL_WRAPPER_H #define __ASM_SYSCALL_WRAPPER_H
struct pt_regs;
#define SC_ARM64_REGS_TO_ARGS(x, ...) \ #define SC_ARM64_REGS_TO_ARGS(x, ...) \
__MAP(x,__SC_ARGS \ __MAP(x,__SC_ARGS \
,,regs->regs[0],,regs->regs[1],,regs->regs[2] \ ,,regs->regs[0],,regs->regs[1],,regs->regs[2] \
@ -35,8 +37,11 @@
ALLOW_ERROR_INJECTION(__arm64_compat_sys_##sname, ERRNO); \ ALLOW_ERROR_INJECTION(__arm64_compat_sys_##sname, ERRNO); \
asmlinkage long __arm64_compat_sys_##sname(const struct pt_regs *__unused) asmlinkage long __arm64_compat_sys_##sname(const struct pt_regs *__unused)
#define COND_SYSCALL_COMPAT(name) \ #define COND_SYSCALL_COMPAT(name) \
cond_syscall(__arm64_compat_sys_##name); asmlinkage long __weak __arm64_compat_sys_##name(const struct pt_regs *regs) \
{ \
return sys_ni_syscall(); \
}
#define COMPAT_SYS_NI(name) \ #define COMPAT_SYS_NI(name) \
SYSCALL_ALIAS(__arm64_compat_sys_##name, sys_ni_posix_timers); SYSCALL_ALIAS(__arm64_compat_sys_##name, sys_ni_posix_timers);
@ -70,7 +75,11 @@
#endif #endif
#ifndef COND_SYSCALL #ifndef COND_SYSCALL
#define COND_SYSCALL(name) cond_syscall(__arm64_sys_##name) #define COND_SYSCALL(name) \
asmlinkage long __weak __arm64_sys_##name(const struct pt_regs *regs) \
{ \
return sys_ni_syscall(); \
}
#endif #endif
#ifndef SYS_NI #ifndef SYS_NI

Просмотреть файл

@ -4,6 +4,7 @@
ARCH ?= $(shell uname -m 2>/dev/null || echo not) ARCH ?= $(shell uname -m 2>/dev/null || echo not)
ifneq (,$(filter $(ARCH),aarch64 arm64)) ifneq (,$(filter $(ARCH),aarch64 arm64))
CFLAGS += -I../../../../usr/include/
TEST_GEN_PROGS := tags_test TEST_GEN_PROGS := tags_test
TEST_PROGS := run_tags_test.sh TEST_PROGS := run_tags_test.sh
endif endif