XDP_*, and *_MAGIC constants.
* Bug fixes
+ * Fixed syscall tampering on arc, avr32, csky, ia64, m68k, metag, mips,
+ nios2, or1k, riscv, s390, s390x, sparc, sparc64, and tile architectures
+ when PTRACE_GET_SYSCALL_INFO is in use.
* Fixed tests on alpha with Linux kernel headers 5.1+.
* Portability
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
arc_regs.scratch.r8 = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
avr32_regs.r8 = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
#if defined(__CSKYABIV2__)
csky_regs.regs[3] = scno;
#else
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
ia64_regs.gr[15] = scno;
-
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
m68k_regs.orig_d0 = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
metag_regs.dx[0][1] = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
mips_REG_V0 = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
nios2_regs.regs[2] = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
or1k_regs.gpr[11] = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
riscv_regs.a7 = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
ARCH_REGSET.gprs[2] = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
sparc_regs.u_regs[U_REG_G1] = scno;
return set_regs(tcp->pid);
}
static int
arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
{
+ if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+ return -1;
tile_regs.regs[10] = scno;
return set_regs(tcp->pid);
}