Prepare syscall_get_arch for PTRACE_GET_SYSCALL_INFO
Subsystems (25)
cover Prepare syscall_get_arch for PTRACE_GET_SYSCALL_INFO
syscall_get_arch() is required to be implemented on all architectures in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request:syscall_get_arch() is going to be called from ptrace_request() along with syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions with a tracee as their argument.
The primary intent is that the triple (audit_arch, syscall_nr, arg1..arg6) should describe what system call is being called and what its arguments are.
This patchset began as a series called "Prepare for PTRACE_GET_SYSCALL_INFO", then I merged it into a series called "ptrace: add PTRACE_GET_SYSCALL_INFO request" that also contains ptrace-specific changes.
The ptrace-specific part, however, needs more attention to workaround problems on niche architectures like alpha, while the syscall_get_arch() part is straightforward, so I decided to split it out into a separate patchset that just prepares syscall_get_arch() for PTRACE_GET_SYSCALL_INFO: it adds syscall_get_arch() to those architectures that haven't implemented it yet, and then adds "struct task_struct *" argument to syscall_get_arch() on all architectures.
All patches from this patchset have been already reviewed, so it's ready to be merged without waiting for the ptrace-specific part. As it's all about syscall_get_arch(), it should probably go via audit tree.
Dmitry V. Levin (14):
Move EM_ARCOMPACT and EM_ARCV2 to uapi/linux/elf-em.h
arc: define syscall_get_arch()
c6x: define syscall_get_arch()
h8300: define syscall_get_arch()
Move EM_HEXAGON to uapi/linux/elf-em.h
hexagon: define syscall_get_arch()
m68k: define syscall_get_arch()
Move EM_NDS32 to uapi/linux/elf-em.h
nds32: define syscall_get_arch()
nios2: define syscall_get_arch()
riscv: define syscall_get_arch()
Move EM_UNICORE to uapi/linux/elf-em.h
unicore32: define syscall_get_arch()
syscall_get_arch: add "struct task_struct *" argument
arch/alpha/include/asm/syscall.h | 2 +- arch/arc/include/asm/elf.h | 6 +----- arch/arc/include/asm/syscall.h | 11 +++++++++++ arch/arm/include/asm/syscall.h | 2 +- arch/arm64/include/asm/syscall.h | 4 ++-- arch/c6x/include/asm/syscall.h | 7 +++++++ arch/csky/include/asm/syscall.h | 2 +- arch/h8300/include/asm/syscall.h | 6 ++++++ arch/hexagon/include/asm/elf.h | 6 +----- arch/hexagon/include/asm/syscall.h | 8 ++++++++ arch/ia64/include/asm/syscall.h | 2 +- arch/m68k/include/asm/syscall.h | 12 ++++++++++++ arch/microblaze/include/asm/syscall.h | 2 +- arch/mips/include/asm/syscall.h | 6 +++--- arch/mips/kernel/ptrace.c | 2 +- arch/nds32/include/asm/elf.h | 3 +-- arch/nds32/include/asm/syscall.h | 9 +++++++++ arch/nios2/include/asm/syscall.h | 6 ++++++ arch/openrisc/include/asm/syscall.h | 2 +- arch/parisc/include/asm/syscall.h | 4 ++-- arch/powerpc/include/asm/syscall.h | 10 ++++++++-- arch/riscv/include/asm/syscall.h | 10 ++++++++++ arch/s390/include/asm/syscall.h | 4 ++-- arch/sh/include/asm/syscall_32.h | 2 +- arch/sh/include/asm/syscall_64.h | 2 +- arch/sparc/include/asm/syscall.h | 5 +++-- arch/unicore32/include/asm/elf.h | 3 +-- arch/unicore32/include/asm/syscall.h | 12 ++++++++++++ arch/x86/include/asm/syscall.h | 8 +++++--- arch/x86/um/asm/syscall.h | 2 +- arch/xtensa/include/asm/syscall.h | 2 +- include/asm-generic/syscall.h | 5 +++-- include/uapi/linux/audit.h | 14 ++++++++++++++ include/uapi/linux/elf-em.h | 6 ++++++ kernel/auditsc.c | 4 ++-- kernel/seccomp.c | 4 ++-- 36 files changed, 148 insertions(+), 47 deletions(-) create mode 100644 arch/m68k/include/asm/syscall.h create mode 100644 arch/unicore32/include/asm/syscall.h
Signature · 1 line
ldv
PATCH 1/14 Move EM_ARCOMPACT and EM_ARCV2 to uapi/linux/elf-em.h
These should never have been defined in the arch tree to begin with, and now uapi/linux/audit.h header is going to use EM_ARCOMPACT and EM_ARCV2 in order to define AUDIT_ARCH_ARCOMPACT and AUDIT_ARCH_ARCV2 which are needed to implement syscall_get_arch() which in turn is required to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/arc/include/asm/elf.h | 6 +----- include/uapi/linux/elf-em.h | 2 ++ 2 files changed, 3 insertions(+), 5 deletions(-)
arch/arc/include/asm/elf.h +1 -5
@@ -10,13 +10,9 @@#define __ASM_ARC_ELF_H#include <linux/types.h> +#include <linux/elf-em.h> #include <uapi/asm/elf.h> -/* These ELF defines belong to uapi but libc elf.h already defines them */ -#define EM_ARCOMPACT 93 - -#define EM_ARCV2 195/* ARCv2 Cores */ -#define EM_ARC_INUSE (IS_ENABLED(CONFIG_ISA_ARCOMPACT) ? \ EM_ARCOMPACT : EM_ARCV2)
include/uapi/linux/elf-em.h +2 -0
@@ -34,6 +34,7 @@#define EM_M32R 88/* Renesas M32R */ #define EM_MN10300 89/* Panasonic/MEI MN10300, AM33 */ #define EM_OPENRISC 92/* OpenRISC 32-bit embedded processor */ +#define EM_ARCOMPACT 93/* ARCompact processor */ #define EM_XTENSA 94/* Tensilica Xtensa Architecture */ #define EM_BLACKFIN 106/* ADI Blackfin Processor */ #define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */
@@ -42,6 +43,7 @@#define EM_TILEPRO 188/* Tilera TILEPro */ #define EM_MICROBLAZE 189/* Xilinx MicroBlaze */ #define EM_TILEGX 191/* Tilera TILE-Gx */ +#define EM_ARCV2 195/* ARCv2 Cores */ #define EM_RISCV 243/* RISC-V */ #define EM_BPF 247/* Linux BPF - in-kernel virtual machine */ #define EM_CSKY 252/* C-SKY */
Signature · 1 line
ldv
PATCH 2/14 arc: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/arc/include/asm/syscall.h | 11 +++++++++++ include/uapi/linux/audit.h | 4 ++++ 2 files changed, 15 insertions(+)
arch/arc/include/asm/syscall.h +11 -0
@@ -9,6 +9,7 @@#ifndef _ASM_ARC_SYSCALL_H#define _ASM_ARC_SYSCALL_H 1 +#include <uapi/linux/audit.h> #include <linux/err.h> #include <linux/sched.h> #include <asm/unistd.h>
@@ -68,4 +69,14 @@ syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, } } +static inline int +syscall_get_arch (void ) +{ +return IS_ENABLED (CONFIG_ISA_ARCOMPACT ) + ? (IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) + ?AUDIT_ARCH_ARCOMPACTBE :AUDIT_ARCH_ARCOMPACT ) + : (IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) + ?AUDIT_ARCH_ARCV2BE :AUDIT_ARCH_ARCV2 ); +} +#endif
include/uapi/linux/audit.h +4 -0
@@ -375,6 +375,10 @@ enum {#define AUDIT_ARCH_AARCH64 (EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_ALPHA (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_ARCOMPACT (EM_ARCOMPACT|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_ARCOMPACTBE (EM_ARCOMPACT) +#define AUDIT_ARCH_ARCV2 (EM_ARCV2|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_ARCV2BE (EM_ARCV2)#define AUDIT_ARCH_ARM (EM_ARM|__AUDIT_ARCH_LE)#define AUDIT_ARCH_ARMEB (EM_ARM)#define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)
Signature · 1 line
ldv
PATCH 3/14 c6x: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/c6x/include/asm/syscall.h | 7 +++++++ include/uapi/linux/audit.h | 2 ++ 2 files changed, 9 insertions(+)
arch/c6x/include/asm/syscall.h +7 -0
@@ -11,6 +11,7 @@#ifndef __ASM_C6X_SYSCALL_H#define __ASM_C6X_SYSCALL_H +#include <uapi/linux/audit.h> #include <linux/err.h> #include <linux/sched.h>
@@ -120,4 +121,10 @@ static inline void syscall_set_arguments(struct task_struct *task, } } +static inline int syscall_get_arch (void ) +{ +return IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) + ?AUDIT_ARCH_C6XBE :AUDIT_ARCH_C6X ; +} +#endif /* __ASM_C6X_SYSCALLS_H */
include/uapi/linux/audit.h +2 -0
@@ -381,6 +381,8 @@ enum {#define AUDIT_ARCH_ARCV2BE (EM_ARCV2)#define AUDIT_ARCH_ARM (EM_ARM|__AUDIT_ARCH_LE)#define AUDIT_ARCH_ARMEB (EM_ARM) +#define AUDIT_ARCH_C6X (EM_TI_C6000|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_C6XBE (EM_TI_C6000)#define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)#define AUDIT_ARCH_CSKY (EM_CSKY|__AUDIT_ARCH_LE)#define AUDIT_ARCH_FRV (EM_FRV)
Signature · 1 line
ldv
PATCH 4/14 h8300: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/h8300/include/asm/syscall.h | 6 ++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 7 insertions(+)
arch/h8300/include/asm/syscall.h +6 -0
@@ -8,6 +8,7 @@#include <linux/linkage.h> #include <linux/types.h> #include <linux/ptrace.h> +#include <uapi/linux/audit.h> static inline int syscall_get_nr (struct task_struct *task,struct pt_regs *regs)
@@ -47,6 +48,11 @@ syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, } } +static inline int +syscall_get_arch (void ) +{ +return AUDIT_ARCH_H8300 ; +}/* Misc syscall related bits */
include/uapi/linux/audit.h +1 -0
@@ -386,6 +386,7 @@ enum {#define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)#define AUDIT_ARCH_CSKY (EM_CSKY|__AUDIT_ARCH_LE)#define AUDIT_ARCH_FRV (EM_FRV) +#define AUDIT_ARCH_H8300 (EM_H8_300)#define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)#define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_M32R (EM_M32R)
Signature · 1 line
ldv
PATCH 4/14 h8300: define syscall_get_arch()
syscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
---
This is just a gentle ping, the patch is unchanged.
arch/h8300/include/asm/syscall.h | 6 ++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 7 insertions(+)
arch/h8300/include/asm/syscall.h +6 -0
@@ -8,6 +8,7 @@#include <linux/linkage.h> #include <linux/types.h> #include <linux/ptrace.h> +#include <uapi/linux/audit.h> static inline int syscall_get_nr (struct task_struct *task,struct pt_regs *regs)
@@ -47,6 +48,11 @@ syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, } } +static inline int +syscall_get_arch (void ) +{ +return AUDIT_ARCH_H8300 ; +}/* Misc syscall related bits */
include/uapi/linux/audit.h +1 -0
@@ -386,6 +386,7 @@ enum {#define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)#define AUDIT_ARCH_CSKY (EM_CSKY|__AUDIT_ARCH_LE)#define AUDIT_ARCH_FRV (EM_FRV) +#define AUDIT_ARCH_H8300 (EM_H8_300)#define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)#define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_M32R (EM_M32R)
Signature · 1 line
ldv
PATCH 5/14 Move EM_HEXAGON to uapi/linux/elf-em.h
In reply to Dmitry V. LevinThis should never have been defined in the arch tree to begin with, and now uapi/linux/audit.h header is going to use EM_HEXAGON in order to define AUDIT_ARCH_HEXAGON which is needed to implement syscall_get_arch() which in turn is required to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/hexagon/include/asm/elf.h | 6 +----- include/uapi/linux/elf-em.h | 1 + 2 files changed, 2 insertions(+), 5 deletions(-)
arch/hexagon/include/asm/elf.h +1 -5
@@ -23,11 +23,7 @@#include <asm/ptrace.h> #include <asm/user.h> - -/* -* This should really be in linux/elf-em.h. -*/ -#define EM_HEXAGON 164/* QUALCOMM Hexagon */ +#include <linux/elf-em.h> struct elf32_hdr ;
include/uapi/linux/elf-em.h +1 -0
@@ -39,6 +39,7 @@#define EM_BLACKFIN 106/* ADI Blackfin Processor */ #define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */ #define EM_TI_C6000 140/* TI C6X DSPs */ +#define EM_HEXAGON 164/* QUALCOMM Hexagon */ #define EM_AARCH64 183/* ARM 64 bit */ #define EM_TILEPRO 188/* Tilera TILEPro */ #define EM_MICROBLAZE 189/* Xilinx MicroBlaze */
Signature · 1 line
ldv
PATCH 5/14 Move EM_HEXAGON to uapi/linux/elf-em.h
This should never have been defined in the arch tree to begin with, and now uapi/linux/audit.h header is going to use EM_HEXAGON in order to define AUDIT_ARCH_HEXAGON which is needed to implement syscall_get_arch() which in turn is required to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
---
This is just a gentle ping, the patch is unchanged.
arch/hexagon/include/asm/elf.h | 6 +----- include/uapi/linux/elf-em.h | 1 + 2 files changed, 2 insertions(+), 5 deletions(-)
arch/hexagon/include/asm/elf.h +1 -5
@@ -23,11 +23,7 @@#include <asm/ptrace.h> #include <asm/user.h> - -/* -* This should really be in linux/elf-em.h. -*/ -#define EM_HEXAGON 164/* QUALCOMM Hexagon */ +#include <linux/elf-em.h> struct elf32_hdr ;
include/uapi/linux/elf-em.h +1 -0
@@ -39,6 +39,7 @@#define EM_BLACKFIN 106/* ADI Blackfin Processor */ #define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */ #define EM_TI_C6000 140/* TI C6X DSPs */ +#define EM_HEXAGON 164/* QUALCOMM Hexagon */ #define EM_AARCH64 183/* ARM 64 bit */ #define EM_TILEPRO 188/* Tilera TILEPro */ #define EM_MICROBLAZE 189/* Xilinx MicroBlaze */
Signature · 1 line
ldv
PATCH 6/14 hexagon: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/hexagon/include/asm/syscall.h | 8 ++++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 9 insertions(+)
arch/hexagon/include/asm/syscall.h +8 -0
@@ -21,6 +21,8 @@#ifndef _ASM_HEXAGON_SYSCALL_H#define _ASM_HEXAGON_SYSCALL_H +#include <uapi/linux/audit.h> +typedef long (*syscall_fn )(unsigned long ,unsigned long ,unsigned long ,unsigned long ,unsigned long ,unsigned long );
@@ -43,4 +45,10 @@ static inline void syscall_get_arguments(struct task_struct *task,BUG_ON (i + n >6 ); memcpy(args, &(®s->r00)[i], n * sizeof(args[0])); } + +static inline int syscall_get_arch (void ) +{ +return AUDIT_ARCH_HEXAGON ; +} +#endif
include/uapi/linux/audit.h +1 -0
@@ -387,6 +387,7 @@ enum {#define AUDIT_ARCH_CSKY (EM_CSKY|__AUDIT_ARCH_LE)#define AUDIT_ARCH_FRV (EM_FRV)#define AUDIT_ARCH_H8300 (EM_H8_300) +#define AUDIT_ARCH_HEXAGON (EM_HEXAGON)#define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)#define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_M32R (EM_M32R)
Signature · 1 line
ldv
PATCH 6/14 hexagon: define syscall_get_arch()
syscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
---
This is just a gentle ping, the patch is unchanged.
arch/hexagon/include/asm/syscall.h | 8 ++++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 9 insertions(+)
arch/hexagon/include/asm/syscall.h +8 -0
@@ -21,6 +21,8 @@#ifndef _ASM_HEXAGON_SYSCALL_H#define _ASM_HEXAGON_SYSCALL_H +#include <uapi/linux/audit.h> +typedef long (*syscall_fn )(unsigned long ,unsigned long ,unsigned long ,unsigned long ,unsigned long ,unsigned long );
@@ -43,4 +45,10 @@ static inline void syscall_get_arguments(struct task_struct *task,BUG_ON (i + n >6 ); memcpy(args, &(®s->r00)[i], n * sizeof(args[0])); } + +static inline int syscall_get_arch (void ) +{ +return AUDIT_ARCH_HEXAGON ; +} +#endif
include/uapi/linux/audit.h +1 -0
@@ -387,6 +387,7 @@ enum {#define AUDIT_ARCH_CSKY (EM_CSKY|__AUDIT_ARCH_LE)#define AUDIT_ARCH_FRV (EM_FRV)#define AUDIT_ARCH_H8300 (EM_H8_300) +#define AUDIT_ARCH_HEXAGON (EM_HEXAGON)#define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)#define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_M32R (EM_M32R)
Signature · 1 line
ldv
PATCH 7/14 m68k: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/m68k/include/asm/syscall.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 arch/m68k/include/asm/syscall.h
arch/m68k/include/asm/syscall.h new file +12 -0
@@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_M68K_SYSCALL_H +#define _ASM_M68K_SYSCALL_H + +#include <uapi/linux/audit.h> + +static inline int syscall_get_arch (void ) +{ +return AUDIT_ARCH_M68K ; +} + +#endif /* _ASM_M68K_SYSCALL_H */
Signature · 1 line
ldv
PATCH 8/14 Move EM_NDS32 to uapi/linux/elf-em.h
In reply to Dmitry V. LevinThis should never have been defined in the arch tree to begin with, and now uapi/linux/audit.h header is going to use EM_NDS32 in order to define AUDIT_ARCH_NDS32 which is needed to implement syscall_get_arch() which in turn is required to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/nds32/include/asm/elf.h | 3 +-- include/uapi/linux/elf-em.h | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-)
arch/nds32/include/asm/elf.h +1 -2
@@ -10,14 +10,13 @@#include <asm/ptrace.h> #include <asm/fpu.h> +#include <linux/elf-em.h> typedef unsigned long elf_greg_t ;typedef unsigned long elf_freg_t [3 ];extern unsigned int elf_hwcap; -#define EM_NDS32 167 -#define R_NDS32_NONE 0#define R_NDS32_16_RELA 19#define R_NDS32_32_RELA 20
include/uapi/linux/elf-em.h +2 -0
@@ -40,6 +40,8 @@#define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */ #define EM_TI_C6000 140/* TI C6X DSPs */ #define EM_HEXAGON 164/* QUALCOMM Hexagon */ +#define EM_NDS32 167/* Andes Technology compact code size +embedded RISC processor family */ #define EM_AARCH64 183/* ARM 64 bit */ #define EM_TILEPRO 188/* Tilera TILEPro */ #define EM_MICROBLAZE 189/* Xilinx MicroBlaze */
Signature · 1 line
ldv
PATCH 8/14 Move EM_NDS32 to uapi/linux/elf-em.h
This should never have been defined in the arch tree to begin with, and now uapi/linux/audit.h header is going to use EM_NDS32 in order to define AUDIT_ARCH_NDS32 which is needed to implement syscall_get_arch() which in turn is required to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
---
This is just a gentle ping, the patch is unchanged.
arch/nds32/include/asm/elf.h | 3 +-- include/uapi/linux/elf-em.h | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-)
arch/nds32/include/asm/elf.h +1 -2
@@ -10,14 +10,13 @@#include <asm/ptrace.h> #include <asm/fpu.h> +#include <linux/elf-em.h> typedef unsigned long elf_greg_t ;typedef unsigned long elf_freg_t [3 ];extern unsigned int elf_hwcap; -#define EM_NDS32 167 -#define R_NDS32_NONE 0#define R_NDS32_16_RELA 19#define R_NDS32_32_RELA 20
include/uapi/linux/elf-em.h +2 -0
@@ -40,6 +40,8 @@#define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */ #define EM_TI_C6000 140/* TI C6X DSPs */ #define EM_HEXAGON 164/* QUALCOMM Hexagon */ +#define EM_NDS32 167/* Andes Technology compact code size +embedded RISC processor family */ #define EM_AARCH64 183/* ARM 64 bit */ #define EM_TILEPRO 188/* Tilera TILEPro */ #define EM_MICROBLAZE 189/* Xilinx MicroBlaze */
Signature · 1 line
ldv
Re: [PATCH 08/14] Move EM_NDS32 to uapi/linux/elf-em.h
Dmitry V. Levin <[email protected]> 於 2019年2月27日 週三 下午11:30寫道:
Quoted 57 lines
This should never have been defined in the arch tree to begin with, and now
uapi/linux/audit.hheader is going to useEM_NDS32in order to defineAUDIT_ARCH_NDS32which is needed to implementsyscall_get_arch()which in turn is required to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest.Acked-by Paul Moore <[email protected]>Cc Greentime Hu <[email protected]>Cc Vincent Chen <[email protected]>Cc Elvira Khabirova <[email protected]>Cc Eugene Syromyatnikov <[email protected]>Cc Oleg Nesterov <[email protected]>Cc Andy Lutomirski <[email protected]>Signed-off-by Dmitry V. Levin <[email protected]>---
This is just a gentle ping, the patch is unchanged.arch/nds32/include/asm/elf.h | 3 +-- include/uapi/linux/elf-em.h | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-)arch/nds32/include/asm/elf.h +1
-2@@ -10,14 +10,13 @@#include <asm/ptrace.h> #include <asm/fpu.h> +#include <linux/elf-em.h> typedef unsigned long elf_greg_t ;typedef unsigned long elf_freg_t [3 ];extern unsigned int elf_hwcap; -#define EM_NDS32 167 -#define R_NDS32_NONE 0#define R_NDS32_16_RELA 19#define R_NDS32_32_RELA 20include/uapi/linux/elf-em.h +2
-1@@ -40,6 +40,8 @@#define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */ #define EM_TI_C6000 140/* TI C6X DSPs */ #define EM_HEXAGON 164/* QUALCOMM Hexagon */ +#define EM_NDS32 167/* Andes Technology compact code size +embedded RISC processor family */ #define EM_AARCH64 183/* ARM 64 bit */ #define EM_TILEPRO 188/* Tilera TILEPro */ #define EM_MICROBLAZE 189/* Xilinx MicroBlaze */ --
Quoted 1 line
ldv
Thanks for fixing this.
Acked-by Vincent Chen
Re: [PATCH 08/14] Move EM_NDS32 to uapi/linux/elf-em.h
Vincent Chen <[email protected]> 於 2019年3月5日 週二 上午8:26寫道:
Quoted 65 lines
Dmitry V. Levin <[email protected]> 於 2019年2月27日 週三 下午11:30寫道:
Quoted 57 lines
This should never have been defined in the arch tree to begin with, and now
uapi/linux/audit.hheader is going to useEM_NDS32in order to defineAUDIT_ARCH_NDS32which is needed to implementsyscall_get_arch()which in turn is required to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest.Acked-by Paul Moore <[email protected]>Cc Greentime Hu <[email protected]>Cc Vincent Chen <[email protected]>Cc Elvira Khabirova <[email protected]>Cc Eugene Syromyatnikov <[email protected]>Cc Oleg Nesterov <[email protected]>Cc Andy Lutomirski <[email protected]>Signed-off-by Dmitry V. Levin <[email protected]>---
This is just a gentle ping, the patch is unchanged.arch/nds32/include/asm/elf.h | 3 +-- include/uapi/linux/elf-em.h | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-)arch/nds32/include/asm/elf.h +1
-2@@ -10,14 +10,13 @@#include <asm/ptrace.h> #include <asm/fpu.h> +#include <linux/elf-em.h> typedef unsigned long elf_greg_t ;typedef unsigned long elf_freg_t [3 ];extern unsigned int elf_hwcap; -#define EM_NDS32 167 -#define R_NDS32_NONE 0#define R_NDS32_16_RELA 19#define R_NDS32_32_RELA 20include/uapi/linux/elf-em.h +2
-1@@ -40,6 +40,8 @@#define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */ #define EM_TI_C6000 140/* TI C6X DSPs */ #define EM_HEXAGON 164/* QUALCOMM Hexagon */ +#define EM_NDS32 167/* Andes Technology compact code size +embedded RISC processor family */ #define EM_AARCH64 183/* ARM 64 bit */ #define EM_TILEPRO 188/* Tilera TILEPro */ #define EM_MICROBLAZE 189/* Xilinx MicroBlaze */ --Quoted 1 line
ldv
Thanks for fixing this.
Quoted 1 line
Acked-by Vincent Chen
Thank you. I add his email address. :P
PATCH 9/14 nds32: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/nds32/include/asm/syscall.h | 9 +++++++++ include/uapi/linux/audit.h | 2 ++ 2 files changed, 11 insertions(+)
arch/nds32/include/asm/syscall.h +9 -0
@@ -5,6 +5,7 @@#ifndef _ASM_NDS32_SYSCALL_H#define _ASM_NDS32_SYSCALL_H 1 +#include <uapi/linux/audit.h> #include <linux/err.h> struct task_struct ;struct pt_regs ;
@@ -185,4 +186,12 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs, memcpy(®s->uregs[0] + i, args, n * sizeof(args[0])); } + +static inline int +syscall_get_arch (void ) +{ +return IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) + ?AUDIT_ARCH_NDS32BE :AUDIT_ARCH_NDS32 ; +} +#endif /* _ASM_NDS32_SYSCALL_H */
include/uapi/linux/audit.h +2 -0
@@ -401,6 +401,8 @@ enum {#define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|\ __AUDIT_ARCH_CONVENTION_MIPS64_N32) +#define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_NDS32BE (EM_NDS32)#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)#define AUDIT_ARCH_PARISC (EM_PARISC)#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
Signature · 1 line
ldv
PATCH 9/14 nds32: define syscall_get_arch()
syscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
---
This is just a gentle ping, the patch is unchanged.
arch/nds32/include/asm/syscall.h | 9 +++++++++ include/uapi/linux/audit.h | 2 ++ 2 files changed, 11 insertions(+)
arch/nds32/include/asm/syscall.h +9 -0
@@ -5,6 +5,7 @@#ifndef _ASM_NDS32_SYSCALL_H#define _ASM_NDS32_SYSCALL_H 1 +#include <uapi/linux/audit.h> #include <linux/err.h> struct task_struct ;struct pt_regs ;
@@ -185,4 +186,12 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs, memcpy(®s->uregs[0] + i, args, n * sizeof(args[0])); } + +static inline int +syscall_get_arch (void ) +{ +return IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) + ?AUDIT_ARCH_NDS32BE :AUDIT_ARCH_NDS32 ; +} +#endif /* _ASM_NDS32_SYSCALL_H */
include/uapi/linux/audit.h +2 -0
@@ -401,6 +401,8 @@ enum {#define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|\ __AUDIT_ARCH_CONVENTION_MIPS64_N32) +#define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_NDS32BE (EM_NDS32)#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)#define AUDIT_ARCH_PARISC (EM_PARISC)#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
Signature · 1 line
ldv
Re: [PATCH 09/14] nds32: define syscall_get_arch()
Dmitry V. Levin <[email protected]> 於 2019年2月27日 週三 下午11:30寫道:
Quoted 62 lines
syscall_get_arch()is required to be implemented on all architectures in addition to already implementedsyscall_get_nr(),syscall_get_arguments(),syscall_get_error(), andsyscall_get_return_value()functions in order to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest.Acked-by Paul Moore <[email protected]>Cc Elvira Khabirova <[email protected]>Cc Eugene Syromyatnikov <[email protected]>Cc Greentime Hu <[email protected]>Cc Vincent Chen <[email protected]>Cc Oleg Nesterov <[email protected]>Cc Andy Lutomirski <[email protected]>Signed-off-by Dmitry V. Levin <[email protected]>---
This is just a gentle ping, the patch is unchanged.arch/nds32/include/asm/syscall.h | 9 +++++++++ include/uapi/linux/audit.h | 2 ++ 2 files changed, 11 insertions(+)arch/nds32/include/asm/syscall.h +9
-0@@ -5,6 +5,7 @@#ifndef _ASM_NDS32_SYSCALL_H#define _ASM_NDS32_SYSCALL_H 1 +#include <uapi/linux/audit.h> #include <linux/err.h> struct task_struct ;struct pt_regs ;@@ -185,4 +186,12 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs, memcpy(®s->uregs[0] + i, args, n * sizeof(args[0])); } + +static inline int +syscall_get_arch (void ) +{ +return IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) + ?AUDIT_ARCH_NDS32BE :AUDIT_ARCH_NDS32 ; +} +#endif /* _ASM_NDS32_SYSCALL_H */ include/uapi/linux/audit.h +2
-1@@ -401,6 +401,8 @@ enum {#define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|\ __AUDIT_ARCH_CONVENTION_MIPS64_N32) +#define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_NDS32BE (EM_NDS32)#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)#define AUDIT_ARCH_PARISC (EM_PARISC)#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT) --
Quoted 1 line
ldv
Thanks for fixing this.
Acked-by Vincent Chen
Re: [PATCH 09/14] nds32: define syscall_get_arch()
Vincent Chen <[email protected]> 於 2019年3月5日 週二 上午7:50寫道:
Quoted 69 lines
Dmitry V. Levin <[email protected]> 於 2019年2月27日 週三 下午11:30寫道:
Quoted 62 lines
syscall_get_arch()is required to be implemented on all architectures in addition to already implementedsyscall_get_nr(),syscall_get_arguments(),syscall_get_error(), andsyscall_get_return_value()functions in order to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest.Acked-by Paul Moore <[email protected]>Cc Elvira Khabirova <[email protected]>Cc Eugene Syromyatnikov <[email protected]>Cc Greentime Hu <[email protected]>Cc Vincent Chen <[email protected]>Cc Oleg Nesterov <[email protected]>Cc Andy Lutomirski <[email protected]>Signed-off-by Dmitry V. Levin <[email protected]>---
This is just a gentle ping, the patch is unchanged.arch/nds32/include/asm/syscall.h | 9 +++++++++ include/uapi/linux/audit.h | 2 ++ 2 files changed, 11 insertions(+)arch/nds32/include/asm/syscall.h +9
-0@@ -5,6 +5,7 @@#ifndef _ASM_NDS32_SYSCALL_H#define _ASM_NDS32_SYSCALL_H 1 +#include <uapi/linux/audit.h> #include <linux/err.h> struct task_struct ;struct pt_regs ;@@ -185,4 +186,12 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs, memcpy(®s->uregs[0] + i, args, n * sizeof(args[0])); } + +static inline int +syscall_get_arch (void ) +{ +return IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) + ?AUDIT_ARCH_NDS32BE :AUDIT_ARCH_NDS32 ; +} +#endif /* _ASM_NDS32_SYSCALL_H */ include/uapi/linux/audit.h +2
-1@@ -401,6 +401,8 @@ enum {#define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|\ __AUDIT_ARCH_CONVENTION_MIPS64_N32) +#define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_NDS32BE (EM_NDS32)#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)#define AUDIT_ARCH_PARISC (EM_PARISC)#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT) --Quoted 1 line
ldv
Thanks for fixing this.
Quoted 1 line
Acked-by Vincent Chen
Thank you. I add his email address. :P
PATCH 10/14 nios2: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/nios2/include/asm/syscall.h | 6 ++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 7 insertions(+)
arch/nios2/include/asm/syscall.h +6 -0
@@ -17,6 +17,7 @@#ifndef __ASM_NIOS2_SYSCALL_H__#define __ASM_NIOS2_SYSCALL_H__ +#include <uapi/linux/audit.h> #include <linux/err.h> #include <linux/sched.h>
@@ -135,4 +136,9 @@ static inline void syscall_set_arguments(struct task_struct *task, } } +static inline int syscall_get_arch (void ) +{ +return AUDIT_ARCH_NIOS2 ; +} +#endif
include/uapi/linux/audit.h +1 -0
@@ -403,6 +403,7 @@ enum { __AUDIT_ARCH_CONVENTION_MIPS64_N32)#define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE)#define AUDIT_ARCH_NDS32BE (EM_NDS32) +#define AUDIT_ARCH_NIOS2 (EM_ALTERA_NIOS2|__AUDIT_ARCH_LE)#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)#define AUDIT_ARCH_PARISC (EM_PARISC)#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
Signature · 1 line
ldv
PATCH 10/14 nios2: define syscall_get_arch()
syscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
---
This is just a gentle ping, the patch is unchanged.
arch/nios2/include/asm/syscall.h | 6 ++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 7 insertions(+)
arch/nios2/include/asm/syscall.h +6 -0
@@ -17,6 +17,7 @@#ifndef __ASM_NIOS2_SYSCALL_H__#define __ASM_NIOS2_SYSCALL_H__ +#include <uapi/linux/audit.h> #include <linux/err.h> #include <linux/sched.h>
@@ -135,4 +136,9 @@ static inline void syscall_set_arguments(struct task_struct *task, } } +static inline int syscall_get_arch (void ) +{ +return AUDIT_ARCH_NIOS2 ; +} +#endif
include/uapi/linux/audit.h +1 -0
@@ -403,6 +403,7 @@ enum { __AUDIT_ARCH_CONVENTION_MIPS64_N32)#define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE)#define AUDIT_ARCH_NDS32BE (EM_NDS32) +#define AUDIT_ARCH_NIOS2 (EM_ALTERA_NIOS2|__AUDIT_ARCH_LE)#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)#define AUDIT_ARCH_PARISC (EM_PARISC)#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
Signature · 1 line
ldv
Re: [PATCH 10/14] nios2: define syscall_get_arch()
Quoted 6 lines · Dmitry V. Levin
syscall_get_arch()is required to be implemented on all architectures in addition to already implementedsyscall_get_nr(),syscall_get_arguments(),syscall_get_error(), andsyscall_get_return_value()functions in order to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest.
Quoted 9 lines
Acked-by Paul Moore <[email protected]>Cc Elvira Khabirova <[email protected]>Cc Eugene Syromyatnikov <[email protected]>Cc Ley Foon Tan <[email protected]>Cc Oleg Nesterov <[email protected]>Cc Andy Lutomirski <[email protected]>Signed-off-by Dmitry V. Levin <[email protected]>
Regards
Ley Foon
Quoted 56 lines
---
This is just a gentle ping, the patch is unchanged.arch/nios2/include/asm/syscall.h | 6 ++++++
include/uapi/linux/audit.h | 1 +2 files changed, 7 insertions(+)arch/nios2/include/asm/syscall.h +6
-0@@ -17,6 +17,7 @@ #ifndef __ASM_NIOS2_SYSCALL_H__ #define __ASM_NIOS2_SYSCALL_H__ +#include <uapi/linux/audit.h> #include <linux/err.h> #include <linux/sched.h>@@ -135,4 +136,9 @@ static inline void syscall_set_arguments(struct task_struct *task, } } +static inline int syscall_get_arch (void ) +{ + return AUDIT_ARCH_NIOS2; +} +#endif
include/uapi/linux/audit.h +1
-1@@ -403,6 +403,7 @@ enum { __AUDIT_ARCH_CONVENTION_MIPS64_N32) #define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE) #define AUDIT_ARCH_NDS32BE (EM_NDS32) +#define AUDIT_ARCH_NIOS2 (EM_ALTERA_NIOS2|__AUDIT_ARCH_LE) #define AUDIT_ARCH_OPENRISC (EM_OPENRISC) #define AUDIT_ARCH_PARISC (EM_PARISC) #define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT) --ldv
________________________________
Confidentiality Notice.
This message may contain information that is confidential or otherwise protected from disclosure. If you are not the intended recipient, you are hereby notified that any use, disclosure, dissemination, distribution, or copying of this message, or any attachments, is strictly prohibited. If you have received this message in error, please advise the sender by reply e-mail, and delete the message and any attachments. Thank you.
PATCH 11/14 riscv: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/riscv/include/asm/syscall.h | 10 ++++++++++ include/uapi/linux/audit.h | 2 ++ 2 files changed, 12 insertions(+)
arch/riscv/include/asm/syscall.h +10 -0
@@ -18,6 +18,7 @@#ifndef _ASM_RISCV_SYSCALL_H#define _ASM_RISCV_SYSCALL_H +#include <uapi/linux/audit.h> #include <linux/sched.h> #include <linux/err.h>
@@ -99,4 +100,13 @@ static inline void syscall_set_arguments(struct task_struct *task, memcpy(®s->a1 + i * sizeof(regs->a1), args, n * sizeof(regs->a0)); } +static inline int syscall_get_arch (void ) +{ +#ifdef CONFIG_64BIT +return AUDIT_ARCH_RISCV64 ; +#else +return AUDIT_ARCH_RISCV32 ; +#endif +} +#endif /* _ASM_RISCV_SYSCALL_H */
include/uapi/linux/audit.h +2 -0
@@ -411,6 +411,8 @@ enum {/* do not define AUDIT_ARCH_PPCLE since it is not supported by audit */ #define AUDIT_ARCH_PPC64 (EM_PPC64|__AUDIT_ARCH_64BIT)#define AUDIT_ARCH_PPC64LE (EM_PPC64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_RISCV32 (EM_RISCV|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_RISCV64 (EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_S390 (EM_S390)#define AUDIT_ARCH_S390X (EM_S390|__AUDIT_ARCH_64BIT)#define AUDIT_ARCH_SH (EM_SH)
Signature · 1 line
ldv
PATCH 12/14 Move EM_UNICORE to uapi/linux/elf-em.h
In reply to Dmitry V. LevinThis should never have been defined in the arch tree to begin with, and now uapi/linux/audit.h header is going to use EM_UNICORE in order to define AUDIT_ARCH_UNICORE which is needed to implement syscall_get_arch() which in turn is required to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/unicore32/include/asm/elf.h | 3 +-- include/uapi/linux/elf-em.h | 1 + 2 files changed, 2 insertions(+), 2 deletions(-)
arch/unicore32/include/asm/elf.h +1 -2
@@ -19,6 +19,7 @@* ELF register definitions.. */ #include <asm/ptrace.h> +#include <linux/elf-em.h> typedef unsigned long elf_greg_t ;typedef unsigned long elf_freg_t [3 ];
@@ -28,8 +29,6 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];typedef struct fp_state elf_fpregset_t ; -#define EM_UNICORE 110 -#define R_UNICORE_NONE 0#define R_UNICORE_PC24 1#define R_UNICORE_ABS32 2
include/uapi/linux/elf-em.h +1 -0
@@ -37,6 +37,7 @@#define EM_ARCOMPACT 93/* ARCompact processor */ #define EM_XTENSA 94/* Tensilica Xtensa Architecture */ #define EM_BLACKFIN 106/* ADI Blackfin Processor */ +#define EM_UNICORE 110/* UniCore-32 */ #define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */ #define EM_TI_C6000 140/* TI C6X DSPs */ #define EM_HEXAGON 164/* QUALCOMM Hexagon */
Signature · 1 line
ldv
PATCH 12/14 Move EM_UNICORE to uapi/linux/elf-em.h
This should never have been defined in the arch tree to begin with, and now uapi/linux/audit.h header is going to use EM_UNICORE in order to define AUDIT_ARCH_UNICORE which is needed to implement syscall_get_arch() which in turn is required to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
---
This is just a gentle ping, the patch is unchanged.
arch/unicore32/include/asm/elf.h | 3 +-- include/uapi/linux/elf-em.h | 1 + 2 files changed, 2 insertions(+), 2 deletions(-)
arch/unicore32/include/asm/elf.h +1 -2
@@ -19,6 +19,7 @@* ELF register definitions.. */ #include <asm/ptrace.h> +#include <linux/elf-em.h> typedef unsigned long elf_greg_t ;typedef unsigned long elf_freg_t [3 ];
@@ -28,8 +29,6 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];typedef struct fp_state elf_fpregset_t ; -#define EM_UNICORE 110 -#define R_UNICORE_NONE 0#define R_UNICORE_PC24 1#define R_UNICORE_ABS32 2
include/uapi/linux/elf-em.h +1 -0
@@ -37,6 +37,7 @@#define EM_ARCOMPACT 93/* ARCompact processor */ #define EM_XTENSA 94/* Tensilica Xtensa Architecture */ #define EM_BLACKFIN 106/* ADI Blackfin Processor */ +#define EM_UNICORE 110/* UniCore-32 */ #define EM_ALTERA_NIOS2 113/* Altera Nios II soft-core processor */ #define EM_TI_C6000 140/* TI C6X DSPs */ #define EM_HEXAGON 164/* QUALCOMM Hexagon */
Signature · 1 line
ldv
PATCH 13/14 unicore32: define syscall_get_arch()
In reply to Dmitry V. Levinsyscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
--- arch/unicore32/include/asm/syscall.h | 12 ++++++++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 13 insertions(+) create mode 100644 arch/unicore32/include/asm/syscall.h
arch/unicore32/include/asm/syscall.h new file +12 -0
@@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_UNICORE_SYSCALL_H +#define _ASM_UNICORE_SYSCALL_H + +#include <uapi/linux/audit.h> + +static inline int syscall_get_arch (void ) +{ +return AUDIT_ARCH_UNICORE ; +} + +#endif /* _ASM_UNICORE_SYSCALL_H */
include/uapi/linux/audit.h +1 -0
@@ -424,6 +424,7 @@ enum {#define AUDIT_ARCH_TILEGX (EM_TILEGX|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_TILEGX32 (EM_TILEGX|__AUDIT_ARCH_LE)#define AUDIT_ARCH_TILEPRO (EM_TILEPRO|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_UNICORE (EM_UNICORE|__AUDIT_ARCH_LE)#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_XTENSA (EM_XTENSA)
Signature · 1 line
ldv
PATCH 13/14 unicore32: define syscall_get_arch()
syscall_get_arch() is required to be implemented on all architectures in addition to already implemented syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions in order to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request.
---
This is just a gentle ping, the patch is unchanged.
arch/unicore32/include/asm/syscall.h | 12 ++++++++++++ include/uapi/linux/audit.h | 1 + 2 files changed, 13 insertions(+) create mode 100644 arch/unicore32/include/asm/syscall.h
arch/unicore32/include/asm/syscall.h new file +12 -0
@@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_UNICORE_SYSCALL_H +#define _ASM_UNICORE_SYSCALL_H + +#include <uapi/linux/audit.h> + +static inline int syscall_get_arch (void ) +{ +return AUDIT_ARCH_UNICORE ; +} + +#endif /* _ASM_UNICORE_SYSCALL_H */
include/uapi/linux/audit.h +1 -0
@@ -424,6 +424,7 @@ enum {#define AUDIT_ARCH_TILEGX (EM_TILEGX|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_TILEGX32 (EM_TILEGX|__AUDIT_ARCH_LE)#define AUDIT_ARCH_TILEPRO (EM_TILEPRO|__AUDIT_ARCH_LE) +#define AUDIT_ARCH_UNICORE (EM_UNICORE|__AUDIT_ARCH_LE)#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_XTENSA (EM_XTENSA)
Signature · 1 line
ldv
PATCH 14/14 syscall_get_arch: add "struct task_struct *" argument
In reply to Dmitry V. LevinThis argument is required to extend the generic ptrace API with PTRACE_GET_SYSCALL_INFO request: syscall_get_arch() is going to be called from ptrace_request() along with syscall_get_nr(), syscall_get_arguments(), syscall_get_error(), and syscall_get_return_value() functions with a tracee as their argument.
The primary intent is that the triple (audit_arch, syscall_nr, arg1..arg6) should describe what system call is being called and what its arguments are.
Reverts: 5e937a9ae913 ("syscall_get_arch: remove useless function arguments")
Reverts: 1002d94d3076 ("syscall.h: fix doc text for syscall_get_arch()")
--- arch/alpha/include/asm/syscall.h | 2 +- arch/arc/include/asm/syscall.h | 2 +- arch/arm/include/asm/syscall.h | 2 +- arch/arm64/include/asm/syscall.h | 4 ++-- arch/c6x/include/asm/syscall.h | 2 +- arch/csky/include/asm/syscall.h | 2 +- arch/h8300/include/asm/syscall.h | 2 +- arch/hexagon/include/asm/syscall.h | 2 +- arch/ia64/include/asm/syscall.h | 2 +- arch/m68k/include/asm/syscall.h | 2 +- arch/microblaze/include/asm/syscall.h | 2 +- arch/mips/include/asm/syscall.h | 6 +++--- arch/mips/kernel/ptrace.c | 2 +- arch/nds32/include/asm/syscall.h | 2 +- arch/nios2/include/asm/syscall.h | 2 +- arch/openrisc/include/asm/syscall.h | 2 +- arch/parisc/include/asm/syscall.h | 4 ++-- arch/powerpc/include/asm/syscall.h | 10 ++++++++-- arch/riscv/include/asm/syscall.h | 2 +- arch/s390/include/asm/syscall.h | 4 ++-- arch/sh/include/asm/syscall_32.h | 2 +- arch/sh/include/asm/syscall_64.h | 2 +- arch/sparc/include/asm/syscall.h | 5 +++-- arch/unicore32/include/asm/syscall.h | 2 +- arch/x86/include/asm/syscall.h | 8 +++++--- arch/x86/um/asm/syscall.h | 2 +- arch/xtensa/include/asm/syscall.h | 2 +- include/asm-generic/syscall.h | 5 +++-- kernel/auditsc.c | 4 ++-- kernel/seccomp.c | 4 ++-- 30 files changed, 52 insertions(+), 42 deletions(-)
arch/alpha/include/asm/syscall.h +1 -1
@@ -4,7 +4,7 @@#include <uapi/linux/audit.h> -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_ALPHA ; }
arch/arc/include/asm/syscall.h +1 -1
@@ -70,7 +70,7 @@ syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, }static inline int -syscall_get_arch (void ) +syscall_get_arch (struct task_struct *task) {return IS_ENABLED (CONFIG_ISA_ARCOMPACT ) ? (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)
arch/arm/include/asm/syscall.h +1 -1
@@ -104,7 +104,7 @@ static inline void syscall_set_arguments(struct task_struct *task,memcpy (®s->ARM_r0 + i, args, n *sizeof (args[0 ])); } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {/* ARM tasks don't change audit architectures on the fly. */ return AUDIT_ARCH_ARM ;
arch/arm64/include/asm/syscall.h +2 -2
@@ -117,9 +117,9 @@ static inline void syscall_set_arguments(struct task_struct *task,* We don't care about endianness (__AUDIT_ARCH_LE bit) here because * AArch64 has the same system calls both on little- and big- endian. */ -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) { -if (is_compat_task ()) +if (is_compat_thread (task_thread_info (task)))return AUDIT_ARCH_ARM ;return AUDIT_ARCH_AARCH64 ;
arch/c6x/include/asm/syscall.h +1 -1
@@ -121,7 +121,7 @@ static inline void syscall_set_arguments(struct task_struct *task, } } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) ?AUDIT_ARCH_C6XBE :AUDIT_ARCH_C6X ;
arch/csky/include/asm/syscall.h +1 -1
@@ -70,7 +70,7 @@ syscall_set_arguments(struct task_struct *task, struct pt_regs *regs, }static inline int -syscall_get_arch (void ) +syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_CSKY ; }
arch/h8300/include/asm/syscall.h +1 -1
@@ -49,7 +49,7 @@ syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, }static inline int -syscall_get_arch (void ) +syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_H8300 ; }
arch/hexagon/include/asm/syscall.h +1 -1
@@ -46,7 +46,7 @@ static inline void syscall_get_arguments(struct task_struct *task,memcpy (args, &(®s->r00)[i], n *sizeof (args[0 ])); } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_HEXAGON ; }
arch/ia64/include/asm/syscall.h +1 -1
@@ -81,7 +81,7 @@ static inline void syscall_set_arguments(struct task_struct *task,ia64_syscall_get_set_arguments (task, regs, i, n, args,1 ); } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_IA64 ; }
arch/m68k/include/asm/syscall.h +1 -1
@@ -4,7 +4,7 @@#include <uapi/linux/audit.h> -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_M68K ; }
arch/microblaze/include/asm/syscall.h +1 -1
@@ -101,7 +101,7 @@ static inline void syscall_set_arguments(struct task_struct *task,asmlinkage unsigned long do_syscall_trace_enter (struct pt_regs *regs); asmlinkage void do_syscall_trace_leave(struct pt_regs *regs); -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_MICROBLAZE ; }
arch/mips/include/asm/syscall.h +3 -3
@@ -140,14 +140,14 @@ extern const unsigned long sys_call_table[];extern const unsigned long sys32_call_table[];extern const unsigned long sysn32_call_table[]; -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {int arch =AUDIT_ARCH_MIPS ;#ifdef CONFIG_64BIT -if (!test_thread_flag (TIF_32BIT_REGS )) { +if (!test_tsk_thread_flag (task,TIF_32BIT_REGS )) { arch |= __AUDIT_ARCH_64BIT;/* N32 sets only TIF_32BIT_ADDR */ -if (test_thread_flag (TIF_32BIT_ADDR )) +if (test_tsk_thread_flag (task,TIF_32BIT_ADDR )) arch |= __AUDIT_ARCH_CONVENTION_MIPS64_N32; }#endif
arch/mips/kernel/ptrace.c +1 -1
@@ -1418,7 +1418,7 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)unsigned long args[6 ]; sd.nr = syscall; - sd.arch =syscall_get_arch (); + sd.arch =syscall_get_arch (current);syscall_get_arguments (current, regs,0 ,6 , args);for (i =0 ; i <6 ; i++) sd.args[i] = args[i];
arch/nds32/include/asm/syscall.h +1 -1
@@ -188,7 +188,7 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs, }static inline int -syscall_get_arch (void ) +syscall_get_arch (struct task_struct *task) {return IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ) ?AUDIT_ARCH_NDS32BE :AUDIT_ARCH_NDS32 ;
arch/nios2/include/asm/syscall.h +1 -1
@@ -136,7 +136,7 @@ static inline void syscall_set_arguments(struct task_struct *task, } } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_NIOS2 ; }
arch/openrisc/include/asm/syscall.h +1 -1
@@ -72,7 +72,7 @@ syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,memcpy (®s->gpr[3 + i], args, n *sizeof (args[0 ])); } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_OPENRISC ; }
arch/parisc/include/asm/syscall.h +2 -2
@@ -62,11 +62,11 @@ static inline void syscall_rollback(struct task_struct *task,/* do nothing */ } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {int arch =AUDIT_ARCH_PARISC ;#ifdef CONFIG_64BIT -if (!is_compat_task ()) +if (!__is_compat_task (task)) arch =AUDIT_ARCH_PARISC64 ;#endif return arch;
arch/powerpc/include/asm/syscall.h +8 -2
@@ -99,9 +99,15 @@ static inline void syscall_set_arguments(struct task_struct *task, regs->orig_gpr3 = args[0 ]; } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) { -int arch =is_32bit_task () ?AUDIT_ARCH_PPC :AUDIT_ARCH_PPC64 ; +int arch; + +if (IS_ENABLED (CONFIG_PPC64 ) && !test_tsk_thread_flag (task,TIF_32BIT )) + arch =AUDIT_ARCH_PPC64 ; +else + arch =AUDIT_ARCH_PPC ; +#ifdef __LITTLE_ENDIAN__ arch |= __AUDIT_ARCH_LE;#endif
arch/riscv/include/asm/syscall.h +1 -1
@@ -100,7 +100,7 @@ static inline void syscall_set_arguments(struct task_struct *task,memcpy (®s->a1 + i *sizeof (regs->a1), args, n *sizeof (regs->a0)); } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {#ifdef CONFIG_64BIT return AUDIT_ARCH_RISCV64 ;
arch/s390/include/asm/syscall.h +2 -2
@@ -92,10 +92,10 @@ static inline void syscall_set_arguments(struct task_struct *task, regs->orig_gpr2 = args[0 ]; } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {#ifdef CONFIG_COMPAT -if (test_tsk_thread_flag (current,TIF_31BIT )) +if (test_tsk_thread_flag (task,TIF_31BIT ))return AUDIT_ARCH_S390 ;#endif return AUDIT_ARCH_S390X ;
arch/sh/include/asm/syscall_32.h +1 -1
@@ -95,7 +95,7 @@ static inline void syscall_set_arguments(struct task_struct *task, } } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {int arch =AUDIT_ARCH_SH ;
arch/sh/include/asm/syscall_64.h +1 -1
@@ -63,7 +63,7 @@ static inline void syscall_set_arguments(struct task_struct *task,memcpy (®s->regs[2 + i], args, n *sizeof (args[0 ])); } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {int arch =AUDIT_ARCH_SH ;
arch/sparc/include/asm/syscall.h +3 -2
@@ -128,10 +128,11 @@ static inline void syscall_set_arguments(struct task_struct *task, regs->u_regs[UREG_I0 + i + j] = args[j]; } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {#if defined(CONFIG_SPARC64 ) && defined(CONFIG_COMPAT ) -return in_compat_syscall () ?AUDIT_ARCH_SPARC :AUDIT_ARCH_SPARC64 ; +return test_tsk_thread_flag (task,TIF_32BIT ) + ?AUDIT_ARCH_SPARC :AUDIT_ARCH_SPARC64 ;#elif defined(CONFIG_SPARC64 )return AUDIT_ARCH_SPARC64 ;#else
arch/unicore32/include/asm/syscall.h +1 -1
@@ -4,7 +4,7 @@#include <uapi/linux/audit.h> -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_UNICORE ; }
arch/x86/include/asm/syscall.h +5 -3
@@ -107,7 +107,7 @@ static inline void syscall_set_arguments(struct task_struct *task,memcpy (®s->bx + i, args, n *sizeof (args[0 ])); } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_I386 ; }
@@ -236,10 +236,12 @@ static inline void syscall_set_arguments(struct task_struct *task, } } -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {/* x32 tasks should be considered AUDIT_ARCH_X86_64. */ -return in_ia32_syscall () ?AUDIT_ARCH_I386 :AUDIT_ARCH_X86_64 ; +return (IS_ENABLED (CONFIG_IA32_EMULATION ) && + task->thread_info.status &TS_COMPAT ) + ?AUDIT_ARCH_I386 :AUDIT_ARCH_X86_64 ; }#endif /* CONFIG_X86_32 */
arch/x86/um/asm/syscall.h +1 -1
@@ -9,7 +9,7 @@ typedef asmlinkage long (*sys_call_ptr_t)(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {#ifdef CONFIG_X86_32 return AUDIT_ARCH_I386 ;
arch/xtensa/include/asm/syscall.h +1 -1
@@ -14,7 +14,7 @@#include <asm/ptrace.h> #include <uapi/linux/audit.h> -static inline int syscall_get_arch (void ) +static inline int syscall_get_arch (struct task_struct *task) {return AUDIT_ARCH_XTENSA ; }
include/asm-generic/syscall.h +3 -2
@@ -144,14 +144,15 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,/** * syscall_get_arch - return the AUDIT_ARCH for the current system call +* @task: task of interest, must be blocked * * Returns the AUDIT_ARCH_* based on the system call convention in use. * -* It's only valid to call this when current is stopped on entry to a system +* It's only valid to call this when @task is stopped on entry to a system * call, due to %TIF_SYSCALL_TRACE, %TIF_SYSCALL_AUDIT, or %TIF_SECCOMP. * * Architectures which permit CONFIG_HAVE_ARCH_SECCOMP_FILTER must * provide an implementation of this. */ -int syscall_get_arch (void ); +int syscall_get_arch (struct task_struct *task);#endif /* _ASM_SYSCALL_H */
kernel/auditsc.c +2 -2
@@ -1505,7 +1505,7 @@ void __audit_syscall_entry(int major, unsigned long a1, unsigned long a2,return ; } - context->arch =syscall_get_arch (); + context->arch =syscall_get_arch (current); context->major = major; context->argv[0 ] = a1; context->argv[1 ] = a2;
@@ -2480,7 +2480,7 @@ void audit_seccomp(unsigned long syscall, long signr, int code)return ;audit_log_task (ab);audit_log_format (ab," sig=%ld arch=%x syscall=%ld compat=%d ip=0x%lx code=0x%x" , - signr,syscall_get_arch (), syscall, + signr,syscall_get_arch (current), syscall,in_compat_syscall (),KSTK_EIP (current), code);audit_log_end (ab); }
kernel/seccomp.c +2 -2
@@ -148,7 +148,7 @@ static void populate_seccomp_data(struct seccomp_data *sd)unsigned long args[6 ]; sd->nr =syscall_get_nr (task, regs); - sd->arch =syscall_get_arch (); + sd->arch =syscall_get_arch (task);syscall_get_arguments (task, regs,0 ,6 , args); sd->args[0 ] = args[0 ]; sd->args[1 ] = args[1 ];
@@ -589,7 +589,7 @@ static void seccomp_init_siginfo(kernel_siginfo_t *info, int syscall, int reason info->si_code =SYS_SECCOMP ; info->si_call_addr = (void __user *)KSTK_EIP (current); info->si_errno = reason; - info->si_arch =syscall_get_arch (); + info->si_arch =syscall_get_arch (current); info->si_syscall = syscall; }
Signature · 1 line
ldv
Quoted 13 lines · Dmitry V. Levin
syscall_get_arch()is required to be implemented on all architectures in order to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest:syscall_get_arch()is going to be called fromptrace_request()along withsyscall_get_nr(),syscall_get_arguments(),syscall_get_error(), andsyscall_get_return_value()functions with a tracee as their argument.The primary intent is that the triple (
audit_arch,syscall_nr, arg1..arg6) should describe what system call is being called and what its arguments are.This patchset began as a series called "Prepare for
PTRACE_GET_SYSCALL_INFO", then I merged it into a series called "ptrace: addPTRACE_GET_SYSCALL_INFOrequest" that also contains ptrace-specific changes.
Quoted 7 lines
The ptrace-specific part, however, needs more attention to workaround problems on niche architectures like alpha, while the
syscall_get_arch()part is straightforward, so I decided to split it out into a separate patchset that just preparessyscall_get_arch()forPTRACE_GET_SYSCALL_INFO: it addssyscall_get_arch()to those architectures that haven't implemented it yet, and then adds "structtask_struct*" argument tosyscall_get_arch()on all architectures.
Glad to see syscall_get_arch() added to the remaining arches. As Paul said, it gets us closer to auditing syscalls on those remaining unsupported arches and getting rid of the extra CONFIG_AUDITSYSCALL. A little ironic that Eric (Paris) and I purged task_struct from syscall_get_arch() 5 years ago since everything could use current.
Quoted 3 lines
All patches from this patchset have been already reviewed, so it's ready to be merged without waiting for the ptrace-specific part. As it's all about
syscall_get_arch(), it should probably go via audit tree.
ACK.
Thanks Dmitry.
Quoted 47 lines
Dmitry V. Levin (14):
MoveEM_ARCOMPACTandEM_ARCV2touapi/linux/elf-em.h
arc: definesyscall_get_arch()
c6x: definesyscall_get_arch()
h8300: definesyscall_get_arch()
MoveEM_HEXAGONtouapi/linux/elf-em.h
hexagon: definesyscall_get_arch()
m68k: definesyscall_get_arch()
MoveEM_NDS32touapi/linux/elf-em.h
nds32: definesyscall_get_arch()
nios2: definesyscall_get_arch()
riscv: definesyscall_get_arch()
MoveEM_UNICOREtouapi/linux/elf-em.h
unicore32: definesyscall_get_arch()
syscall_get_arch: add "structtask_struct*" argumentarch/alpha/include/asm/syscall.h | 2 +- arch/arc/include/asm/elf.h | 6 +----- arch/arc/include/asm/syscall.h | 11 +++++++++++ arch/arm/include/asm/syscall.h | 2 +- arch/arm64/include/asm/syscall.h | 4 ++-- arch/c6x/include/asm/syscall.h | 7 +++++++ arch/csky/include/asm/syscall.h | 2 +- arch/h8300/include/asm/syscall.h | 6 ++++++ arch/hexagon/include/asm/elf.h | 6 +----- arch/hexagon/include/asm/syscall.h | 8 ++++++++ arch/ia64/include/asm/syscall.h | 2 +- arch/m68k/include/asm/syscall.h | 12 ++++++++++++ arch/microblaze/include/asm/syscall.h | 2 +- arch/mips/include/asm/syscall.h | 6 +++--- arch/mips/kernel/ptrace.c | 2 +- arch/nds32/include/asm/elf.h | 3 +-- arch/nds32/include/asm/syscall.h | 9 +++++++++ arch/nios2/include/asm/syscall.h | 6 ++++++ arch/openrisc/include/asm/syscall.h | 2 +- arch/parisc/include/asm/syscall.h | 4 ++-- arch/powerpc/include/asm/syscall.h | 10 ++++++++-- arch/riscv/include/asm/syscall.h | 10 ++++++++++ arch/s390/include/asm/syscall.h | 4 ++-- arch/sh/include/asm/syscall_32.h | 2 +- arch/sh/include/asm/syscall_64.h | 2 +- arch/sparc/include/asm/syscall.h | 5 +++-- arch/unicore32/include/asm/elf.h | 3 +-- arch/unicore32/include/asm/syscall.h | 12 ++++++++++++ arch/x86/include/asm/syscall.h | 8 +++++--- arch/x86/um/asm/syscall.h | 2 +- arch/xtensa/include/asm/syscall.h | 2 +-
Quoted 11 lines
include/asm-generic/syscall.h | 5 +++-- include/uapi/linux/audit.h | 14 ++++++++++++++ include/uapi/linux/elf-em.h | 6 ++++++ kernel/auditsc.c | 4 ++-- kernel/seccomp.c | 4 ++-- 36 files changed, 148 insertions(+), 47 deletions(-) create mode 100644 arch/m68k/include/asm/syscall.h create mode 100644 arch/unicore32/include/asm/syscall.hSignature · 1 line
ldv
- RGB
--
Richard Guy Briggs <[email protected]>
Sr. S/W Engineer, Kernel Security, Base Operating Systems Remote, Ottawa, Red Hat Canada
IRC: rgb, SunRaycer
Voice: +1.647.777.2635, Internal: (81) 32635
Quoted 28 lines · Richard Guy Briggs
Quoted 13 lines · Dmitry V. Levin
syscall_get_arch()is required to be implemented on all architectures in order to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest:syscall_get_arch()is going to be called fromptrace_request()along withsyscall_get_nr(),syscall_get_arguments(),syscall_get_error(), andsyscall_get_return_value()functions with a tracee as their argument.The primary intent is that the triple (
audit_arch,syscall_nr, arg1..arg6) should describe what system call is being called and what its arguments are.This patchset began as a series called "Prepare for
PTRACE_GET_SYSCALL_INFO", then I merged it into a series called "ptrace: addPTRACE_GET_SYSCALL_INFOrequest" that also contains ptrace-specific changes.Quoted 7 lines
The ptrace-specific part, however, needs more attention to workaround problems on niche architectures like alpha, while the
syscall_get_arch()part is straightforward, so I decided to split it out into a separate patchset that just preparessyscall_get_arch()forPTRACE_GET_SYSCALL_INFO: it addssyscall_get_arch()to those architectures that haven't implemented it yet, and then adds "structtask_struct*" argument tosyscall_get_arch()on all architectures.Glad to see
syscall_get_arch()added to the remaining arches. As Paul said, it gets us closer to auditing syscalls on those remaining unsupported arches and getting rid of the extraCONFIG_AUDITSYSCALL. A little ironic that Eric (Paris) and I purgedtask_structfromsyscall_get_arch()5 years ago since everything could use current.
Quoted 7 lines
Quoted 3 lines
All patches from this patchset have been already reviewed, so it's ready to be merged without waiting for the ptrace-specific part. As it's all about
syscall_get_arch(), it should probably go via audit tree.ACK.
Thanks Dmitry.
Thanks.
Please let me know if some action related to this patch series is expected from me.
Quoted 55 lines
Quoted 55 lines
Dmitry V. Levin (14):
MoveEM_ARCOMPACTandEM_ARCV2touapi/linux/elf-em.h
arc: definesyscall_get_arch()
c6x: definesyscall_get_arch()
h8300: definesyscall_get_arch()
MoveEM_HEXAGONtouapi/linux/elf-em.h
hexagon: definesyscall_get_arch()
m68k: definesyscall_get_arch()
MoveEM_NDS32touapi/linux/elf-em.h
nds32: definesyscall_get_arch()
nios2: definesyscall_get_arch()
riscv: definesyscall_get_arch()
MoveEM_UNICOREtouapi/linux/elf-em.h
unicore32: definesyscall_get_arch()
syscall_get_arch: add "structtask_struct*" argumentarch/alpha/include/asm/syscall.h | 2 +- arch/arc/include/asm/elf.h | 6 +----- arch/arc/include/asm/syscall.h | 11 +++++++++++ arch/arm/include/asm/syscall.h | 2 +- arch/arm64/include/asm/syscall.h | 4 ++-- arch/c6x/include/asm/syscall.h | 7 +++++++ arch/csky/include/asm/syscall.h | 2 +- arch/h8300/include/asm/syscall.h | 6 ++++++ arch/hexagon/include/asm/elf.h | 6 +----- arch/hexagon/include/asm/syscall.h | 8 ++++++++ arch/ia64/include/asm/syscall.h | 2 +- arch/m68k/include/asm/syscall.h | 12 ++++++++++++ arch/microblaze/include/asm/syscall.h | 2 +- arch/mips/include/asm/syscall.h | 6 +++--- arch/mips/kernel/ptrace.c | 2 +- arch/nds32/include/asm/elf.h | 3 +-- arch/nds32/include/asm/syscall.h | 9 +++++++++ arch/nios2/include/asm/syscall.h | 6 ++++++ arch/openrisc/include/asm/syscall.h | 2 +- arch/parisc/include/asm/syscall.h | 4 ++-- arch/powerpc/include/asm/syscall.h | 10 ++++++++-- arch/riscv/include/asm/syscall.h | 10 ++++++++++ arch/s390/include/asm/syscall.h | 4 ++-- arch/sh/include/asm/syscall_32.h | 2 +- arch/sh/include/asm/syscall_64.h | 2 +- arch/sparc/include/asm/syscall.h | 5 +++-- arch/unicore32/include/asm/elf.h | 3 +-- arch/unicore32/include/asm/syscall.h | 12 ++++++++++++ arch/x86/include/asm/syscall.h | 8 +++++--- arch/x86/um/asm/syscall.h | 2 +- arch/xtensa/include/asm/syscall.h | 2 +- include/asm-generic/syscall.h | 5 +++-- include/uapi/linux/audit.h | 14 ++++++++++++++ include/uapi/linux/elf-em.h | 6 ++++++ kernel/auditsc.c | 4 ++-- kernel/seccomp.c | 4 ++-- 36 files changed, 148 insertions(+), 47 deletions(-) create mode 100644 arch/m68k/include/asm/syscall.h create mode 100644 arch/unicore32/include/asm/syscall.h
Signature · 1 line
ldv
Quoted 33 lines · Dmitry V. Levin
Quoted 32 lines · Richard Guy Briggs
Quoted 13 lines · Dmitry V. Levin
syscall_get_arch()is required to be implemented on all architectures in order to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest:syscall_get_arch()is going to be called fromptrace_request()along withsyscall_get_nr(),syscall_get_arguments(),syscall_get_error(), andsyscall_get_return_value()functions with a tracee as their argument.The primary intent is that the triple (
audit_arch,syscall_nr, arg1..arg6) should describe what system call is being called and what its arguments are.This patchset began as a series called "Prepare for
PTRACE_GET_SYSCALL_INFO", then I merged it into a series called "ptrace: addPTRACE_GET_SYSCALL_INFOrequest" that also contains ptrace-specific changes.Quoted 7 lines
The ptrace-specific part, however, needs more attention to workaround problems on niche architectures like alpha, while the
syscall_get_arch()part is straightforward, so I decided to split it out into a separate patchset that just preparessyscall_get_arch()forPTRACE_GET_SYSCALL_INFO: it addssyscall_get_arch()to those architectures that haven't implemented it yet, and then adds "structtask_struct*" argument tosyscall_get_arch()on all architectures.Glad to see
syscall_get_arch()added to the remaining arches. As Paul said, it gets us closer to auditing syscalls on those remaining unsupported arches and getting rid of the extraCONFIG_AUDITSYSCALL. A little ironic that Eric (Paris) and I purgedtask_structfromsyscall_get_arch()5 years ago since everything could use current.Quoted 3 lines
All patches from this patchset have been already reviewed, so it's ready to be merged without waiting for the ptrace-specific part. As it's all about
syscall_get_arch(), it should probably go via audit tree.
Quoted 22 lines
Quoted 3 lines
ACK.
Thanks Dmitry.
Thanks.
Please let me know if some action related to this patch series is expected from me.Quoted 15 lines
Quoted 15 lines
Dmitry V. Levin (14):
MoveEM_ARCOMPACTandEM_ARCV2touapi/linux/elf-em.h
arc: definesyscall_get_arch()
c6x: definesyscall_get_arch()
h8300: definesyscall_get_arch()
MoveEM_HEXAGONtouapi/linux/elf-em.h
hexagon: definesyscall_get_arch()
m68k: definesyscall_get_arch()
MoveEM_NDS32touapi/linux/elf-em.h
nds32: definesyscall_get_arch()
nios2: definesyscall_get_arch()
riscv: definesyscall_get_arch()
MoveEM_UNICOREtouapi/linux/elf-em.h
unicore32: definesyscall_get_arch()
syscall_get_arch: add "structtask_struct*" argument
This is just a gentle ping of the series which is still applicable to v5.0-rc8 with one exception: "riscv: define syscall_get_arch()" is no longer needed as riscv already has syscall_get_arch() now.
Signature · 1 line
ldv
Paul Moore
maintainerQuoted 57 lines · Dmitry V. Levin
Quoted 33 lines · Dmitry V. Levin
Quoted 32 lines · Richard Guy Briggs
Quoted 13 lines · Dmitry V. Levin
syscall_get_arch()is required to be implemented on all architectures in order to extend the generic ptrace API withPTRACE_GET_SYSCALL_INFOrequest:syscall_get_arch()is going to be called fromptrace_request()along withsyscall_get_nr(),syscall_get_arguments(),syscall_get_error(), andsyscall_get_return_value()functions with a tracee as their argument.The primary intent is that the triple (
audit_arch,syscall_nr, arg1..arg6) should describe what system call is being called and what its arguments are.This patchset began as a series called "Prepare for
PTRACE_GET_SYSCALL_INFO", then I merged it into a series called "ptrace: addPTRACE_GET_SYSCALL_INFOrequest" that also contains ptrace-specific changes.Quoted 7 lines
The ptrace-specific part, however, needs more attention to workaround problems on niche architectures like alpha, while the
syscall_get_arch()part is straightforward, so I decided to split it out into a separate patchset that just preparessyscall_get_arch()forPTRACE_GET_SYSCALL_INFO: it addssyscall_get_arch()to those architectures that haven't implemented it yet, and then adds "structtask_struct*" argument tosyscall_get_arch()on all architectures.Glad to see
syscall_get_arch()added to the remaining arches. As Paul said, it gets us closer to auditing syscalls on those remaining unsupported arches and getting rid of the extraCONFIG_AUDITSYSCALL. A little ironic that Eric (Paris) and I purgedtask_structfromsyscall_get_arch()5 years ago since everything could use current.Quoted 3 lines
All patches from this patchset have been already reviewed, so it's ready to be merged without waiting for the ptrace-specific part. As it's all about
syscall_get_arch(), it should probably go via audit tree.Quoted 22 lines
Quoted 3 lines
ACK.
Thanks Dmitry.
Thanks.
Please let me know if some action related to this patch series is expected from me.Quoted 15 lines
Quoted 15 lines
Dmitry V. Levin (14):
MoveEM_ARCOMPACTandEM_ARCV2touapi/linux/elf-em.h
arc: definesyscall_get_arch()
c6x: definesyscall_get_arch()
h8300: definesyscall_get_arch()
MoveEM_HEXAGONtouapi/linux/elf-em.h
hexagon: definesyscall_get_arch()
m68k: definesyscall_get_arch()
MoveEM_NDS32touapi/linux/elf-em.h
nds32: definesyscall_get_arch()
nios2: definesyscall_get_arch()
riscv: definesyscall_get_arch()
MoveEM_UNICOREtouapi/linux/elf-em.h
unicore32: definesyscall_get_arch()
syscall_get_arch: add "structtask_struct*" argument
Quoted 3 lines
This is just a gentle ping of the series which is still applicable to v5.0-rc8 with one exception: "riscv: define
syscall_get_arch()" is no longer needed as riscv already hassyscall_get_arch()now.
Hi Dmitry,
I obviously think this patchset is a step in the right direction (I've ACK'd it previously), and I have no problem merging this via the audit tree, but I'm far from an expert on all the various arches listed, so having the associated arch maintainer ACKs is important. Based on the mail I've seen, here is the current status of the maintainer ACKs:
* arc: good ([email protected])
* c6x: good ([email protected])
* h8300: missing
* hexagon: missing
* m68k: good ([email protected])
* nds32: missing
* nios2: missing
* riscv: no longer needed
* unicore32: missing
... as you can see, we are missing a number of ACKs/reviews from some of the smaller arches. Granted, it has been over a month, and these patches are relatively trivial, but if you could try one more time to get the missing ACKs I would appreciate it.
If you still can't get a response from the various maintainers by the time the upcoming merge window closes and -next opens for business, I'll go ahead and merge the pile into audit/next and we'll cross our fingers that nothing explodes.
It shouldn't.
I think :)
Signature · 2 lines
paul moore www.paul-moore.com