Re: [PATCH v3 08/11] powerpc/tracing: fix compat syscall handling
On 12.10.2016 11:59, Michael Ellerman wrote: I went to test this and noticed the exit and enter events appear to be reversed in time? (your series on top of 24532f768121) thanks for testing the patch - I've found a bug that has sneaked in while cleaning up the patches before submission ... I'll fix it in the next iteration. Marcin
Re: [PATCH v3 08/11] powerpc/tracing: fix compat syscall handling
Marcin Nowakowskiwrites: > Adapt the code to make use of new syscall handling interface > > Signed-off-by: Marcin Nowakowski > Cc: Steven Rostedt > Cc: Ingo Molnar > Cc: Benjamin Herrenschmidt > Cc: Paul Mackerras > Cc: Michael Ellerman > Cc: linuxppc-dev@lists.ozlabs.org > --- > arch/powerpc/include/asm/ftrace.h | 11 +++ > arch/powerpc/kernel/ftrace.c | 4 I went to test this and noticed the exit and enter events appear to be reversed in time? (your series on top of 24532f768121) ls-4221 [003] 83.766113: compat_sys_rt_sigprocmask -> 0x2 ls-4221 [003] 83.766137: compat_sys_rt_sigprocmask(how: 2, nset: 1010db30, oset: 0, sigsetsize: 8) ls-4221 [003] 83.766175: compat_sys_rt_sigaction -> 0x14 ls-4221 [003] 83.766175: compat_sys_rt_sigaction(sig: 14, act: ffbd33c4, oact: ffbd3338, sigsetsize: 8) ls-4221 [003] 83.766177: compat_sys_rt_sigaction -> 0x15 ls-4221 [003] 83.766177: compat_sys_rt_sigaction(sig: 15, act: ffbd33c4, oact: ffbd3338, sigsetsize: 8) ls-4221 [003] 83.766178: compat_sys_rt_sigaction -> 0x16 ls-4221 [003] 83.766178: compat_sys_rt_sigaction(sig: 16, act: ffbd33d4, oact: ffbd3348, sigsetsize: 8) ls-4221 [003] 83.766179: sys_setpgid -> 0x107d ls-4221 [003] 83.766179: sys_setpgid(pid: 107d, pgid: 107d) ls-4221 [003] 83.766180: compat_sys_rt_sigprocmask -> 0x0 ls-4221 [003] 83.766181: compat_sys_rt_sigprocmask(how: 0, nset: ffbd34b0, oset: ffbd3530, sigsetsize: 8) ls-4221 [003] 83.766186: compat_sys_ioctl -> 0xff ls-4221 [003] 83.766187: compat_sys_ioctl(fd: ff, cmd: 80047476, arg32: ffbd3488) ls-4221 [003] 83.766188: compat_sys_rt_sigprocmask -> 0x2 ls-4221 [003] 83.766189: compat_sys_rt_sigprocmask(how: 2, nset: ffbd3530, oset: 0, sigsetsize: 8) ls-4221 [003] 83.766189: sys_close -> 0x4 ls-4221 [003] 83.766190: sys_close(fd: 4) ls-4221 [003] 83.766191: sys_read -> 0x3 ls-4221 [003] 83.766191: sys_read(fd: 3, buf: ffbd35dc, count: 1) ls-4221 [003] 83.766235: sys_close -> 0x3 ls-4221 [003] 83.766235: sys_close(fd: 3) cheers
[PATCH v3 08/11] powerpc/tracing: fix compat syscall handling
Adapt the code to make use of new syscall handling interface Signed-off-by: Marcin NowakowskiCc: Steven Rostedt Cc: Ingo Molnar Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Michael Ellerman Cc: linuxppc-dev@lists.ozlabs.org --- arch/powerpc/include/asm/ftrace.h | 11 +++ arch/powerpc/kernel/ftrace.c | 4 2 files changed, 15 insertions(+) diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h index 9697a73..d2ea3b6 100644 --- a/arch/powerpc/include/asm/ftrace.h +++ b/arch/powerpc/include/asm/ftrace.h @@ -86,6 +86,17 @@ static inline bool arch_syscall_match_sym_name(const char *sym, const char *name return !strcmp(sym + prefix_len + 1, name + prefix_len); } #endif + +#if defined(CONFIG_COMPAT) +#include +#include + +#define ARCH_COMPAT_SYSCALL_NUMBERS_OVERLAP 1 +static inline bool arch_trace_is_compat_syscall(struct pt_regs *regs) +{ + return in_compat_syscall(); +} +#endif /* CONFIG_COMPAT */ #endif /* CONFIG_FTRACE_SYSCALLS && !__ASSEMBLY__ */ #endif /* _ASM_POWERPC_FTRACE */ diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c index 5bfb35f..12c00f7 100644 --- a/arch/powerpc/kernel/ftrace.c +++ b/arch/powerpc/kernel/ftrace.c @@ -606,6 +606,10 @@ unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip) #if defined(CONFIG_FTRACE_SYSCALLS) && defined(CONFIG_PPC64) unsigned long __init arch_syscall_addr(int nr, bool compat) { +#ifdef CONFIG_COMPAT + if (compat) + return sys_call_table[nr*2+1]; +#endif return sys_call_table[nr*2]; } #endif /* CONFIG_FTRACE_SYSCALLS && CONFIG_PPC64 */ -- 2.7.4