mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
syscall_user_dispatch: Introduce ARCH_SUPPORTS_SYSCALL_USER_DISPATCH
Currently, only x86 genuinely implements and supports Syscall User Dispatch (SUD). Multiple architectures provide a stub arch_syscall_is_vdso_sigreturn() returning 'false' simply to satisfy GENERIC_ENTRY compilation, which creates a false impression of feature support. Introduce ARCH_SUPPORTS_SYSCALL_USER_DISPATCH to decouple this mechanism from GENERIC_ENTRY. Select it exclusively on x86 and remove the redundant stub functions from other architectures. Suggested-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com> Signed-off-by: Thomas Gleixner <tglx@kernel.org> Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Link: https://patch.msgid.link/20260713035422.582771-1-ruanjinjie@huawei.com
This commit is contained in:
committed by
Thomas Gleixner
parent
4a3591287f
commit
8383e05af7
@@ -114,8 +114,12 @@ config GENERIC_ENTRY
|
||||
select GENERIC_IRQ_ENTRY
|
||||
select GENERIC_SYSCALL
|
||||
|
||||
config ARCH_SUPPORTS_SYSCALL_USER_DISPATCH
|
||||
bool
|
||||
|
||||
config SYSCALL_USER_DISPATCH
|
||||
bool "Syscall User Dispatch"
|
||||
depends on ARCH_SUPPORTS_SYSCALL_USER_DISPATCH
|
||||
depends on GENERIC_ENTRY
|
||||
default y
|
||||
help
|
||||
|
||||
@@ -84,10 +84,4 @@ static inline int syscall_get_arch(struct task_struct *task)
|
||||
return AUDIT_ARCH_LOONGARCH64;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* __ASM_LOONGARCH_SYSCALL_H */
|
||||
|
||||
@@ -139,9 +139,4 @@ static inline int syscall_get_arch(struct task_struct *task)
|
||||
else
|
||||
return AUDIT_ARCH_PPC64;
|
||||
}
|
||||
|
||||
static inline bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif /* _ASM_SYSCALL_H */
|
||||
|
||||
@@ -112,11 +112,6 @@ static inline void syscall_handler(struct pt_regs *regs, ulong syscall)
|
||||
regs->a0 = fn(regs);
|
||||
}
|
||||
|
||||
static inline bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
asmlinkage long sys_riscv_flush_icache(uintptr_t, uintptr_t, uintptr_t);
|
||||
|
||||
asmlinkage long sys_riscv_hwprobe(struct riscv_hwprobe *, size_t, size_t,
|
||||
|
||||
@@ -89,11 +89,6 @@ static inline int syscall_get_arch(struct task_struct *task)
|
||||
return AUDIT_ARCH_S390X;
|
||||
}
|
||||
|
||||
static inline bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#define SYSCALL_FMT_0
|
||||
#define SYSCALL_FMT_1 , "0" (r2)
|
||||
#define SYSCALL_FMT_2 , "d" (r3) SYSCALL_FMT_1
|
||||
|
||||
@@ -335,6 +335,7 @@ config X86
|
||||
select SCHED_SMT if SMP
|
||||
select ARCH_SUPPORTS_SCHED_CLUSTER if SMP
|
||||
select ARCH_SUPPORTS_SCHED_MC if SMP
|
||||
select ARCH_SUPPORTS_SYSCALL_USER_DISPATCH
|
||||
select HAVE_SINGLE_FTRACE_DIRECT_OPS if X86_64 && DYNAMIC_FTRACE_WITH_DIRECT_CALLS
|
||||
|
||||
config INSTRUCTION_DECODER
|
||||
|
||||
Reference in New Issue
Block a user