summaryrefslogtreecommitdiffstats
path: root/arch/s390/include/asm/boot_data.h
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2023-01-23 14:30:46 +0100
committerHeiko Carstens <hca@linux.ibm.com>2023-01-25 20:51:11 +0100
commit2213d44e140f979f4b60c3c0f8dd56d151cc8692 (patch)
treef45b65e2b331aa4ebb37a05355a604957c37b42b /arch/s390/include/asm/boot_data.h
parent0efc5d58bd28260b42d934e95092e26bdf2a4724 (diff)
downloadlinux-stable-2213d44e140f979f4b60c3c0f8dd56d151cc8692.tar.gz
linux-stable-2213d44e140f979f4b60c3c0f8dd56d151cc8692.tar.bz2
linux-stable-2213d44e140f979f4b60c3c0f8dd56d151cc8692.zip
s390/syscalls: get rid of system call alias functions
bpftrace and friends only consider functions present in /sys/kernel/tracing/available_filter_functions. For system calls there is the s390 specific problem that the system call function itself is present via __se_sys##name() while the system call itself is wired up via an __s390x_sys##name() alias. The required DWARF debug information however is only available for the original function, not the alias, but within available_filter_functions only the functions with __s390x_ prefix are available. Which means the required DWARF debug information cannot be found. While this could be solved via tooling, it is easier to change the s390 specific system call wrapper handling. Therefore get rid of this alias handling and implement system call wrappers like most other architectures are doing. In result the implementation generates the following functions: long __s390x_sys##name(struct pt_regs *regs) static inline long __se_sys##name(...) static inline long __do_sys##name(...) __s390x_sys##name() is the visible system call function which is also wired up in the system call table. Its only parameter is a pt_regs variable. This function calls the corresponding __se_sys##name() function, which has as many parameters like the system call definition. This function in turn performs all zero and sign extensions of all system call parameters, taken from the pt_regs structure, and finally calls __do_sys##name(). __do_sys##name() is the actual inlined system call function implementation. For all 64 bit system calls there is a 31/32 bit system call function __s390_sys##name() generated, which handles all system call parameters correctly as required by compat handling. This function may be wired up within the compat system call table, unless there exists an explicit compat system call function, which is then used instead. Reported-by: Ilya Leoshkevich <iii@linux.ibm.com> Tested-by: Ilya Leoshkevich <iii@linux.ibm.com> Reviewed-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/boot_data.h')
0 files changed, 0 insertions, 0 deletions