From c8cfdec4852037e69c11acefa422113648a24944 Mon Sep 17 00:00:00 2001 From: Sultan Alsawaf Date: Tue, 10 Mar 2020 21:19:28 -0700 Subject: [PATCH] sys_ni: Fix cond_syscall() alias for LTO When using LTO, the conditional syscall aliases aren't weak, and instead override implemented syscalls rather than serve as a fallback for missing syscalls. Fix the cond_syscall() alias using an attribute so that it gets properly evaluated at link time. Signed-off-by: Sultan Alsawaf Signed-off-by: Yousef Algadri Change-Id: I3c13715855843178ae7590814bb785037ae041c0 Signed-off-by: Panchajanya Sarkar Signed-off-by: UtsavBalar1231 --- include/linux/linkage.h | 6 ++---- kernel/Makefile | 3 --- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/include/linux/linkage.h b/include/linux/linkage.h index f68db9e450eb..553b17662930 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h @@ -23,10 +23,8 @@ #endif #ifndef cond_syscall -#define cond_syscall(x) asm( \ - ".weak " VMLINUX_SYMBOL_STR(x) "\n\t" \ - ".set " VMLINUX_SYMBOL_STR(x) "," \ - VMLINUX_SYMBOL_STR(sys_ni_syscall)) +#define cond_syscall(x) \ + long __attribute__((weak, alias("sys_ni_syscall"))) x(void); #endif #ifndef SYSCALL_ALIAS diff --git a/kernel/Makefile b/kernel/Makefile index 197cf9cc6e1f..2b8114692721 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -32,9 +32,6 @@ KCOV_INSTRUMENT_kcov.o := n KASAN_SANITIZE_kcov.o := n CFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -# cond_syscall is currently not LTO compatible -CFLAGS_sys_ni.o = $(DISABLE_LTO) - # Don't instrument error handlers CFLAGS_cfi.o = $(DISABLE_CFI_CLANG)