Commit 8c2b418c authored by Linus Torvalds's avatar Linus Torvalds

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
parents bb736a5c 799c8510
...@@ -1135,7 +1135,7 @@ config ARM64_TAGGED_ADDR_ABI ...@@ -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") ...@@ -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) ...@@ -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); ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment