On Fri, 2013-07-26 at 09:33 +0800, zhangwei(Jovi) wrote: > On 2013/7/24 5:15, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > > > > The patch below does not apply to the 3.4-stable tree. > > If someone wants it applied there, or to any other stable or longterm > > tree, then please email the backport, including the original git commit > > id to <stable@xxxxxxxxxxxxxxx>. > > > > thanks, > > > > greg k-h > > > > ------------------ original commit in Linus's tree ------------------ > > > >>From 11034ae9c20f4057a6127fc965906417978e69b2 Mon Sep 17 00:00:00 2001 > > From: "zhangwei(Jovi)" <jovi.zhangwei@xxxxxxxxxx> > > Date: Wed, 10 Apr 2013 11:26:23 +0800 > > Subject: [PATCH] tracing: Fix irqs-off tag display in syscall tracing > > Hi Greg, > > The patch already backport to linux-3.4.y and linux-3.0.y as below with one patch. > Thanks. > > ----------------------------------------------------------------------- > > From 1f44654cfbb24c7fa7b6339f5fe51a56181506b0 Mon Sep 17 00:00:00 2001 > From: "zhangwei(Jovi)" <jovi.zhangwei@xxxxxxxxxx> > Date: Fri, 26 Jul 2013 08:47:14 +0800 > Subject: [PATCH] tracing: Fix irqs-off tag display in syscall tracing > > All syscall tracing irqs-off tags are wrong, the syscall enter entry doesn't > disable irqs. [...] > --- a/kernel/trace/trace_syscalls.c > +++ b/kernel/trace/trace_syscalls.c [...] > @@ -338,6 +344,8 @@ void ftrace_syscall_exit(void *ignore, struct pt_regs *regs, long ret) > struct ring_buffer_event *event; > struct ring_buffer *buffer; > int syscall_nr; > + unsigned long irq_flags; > + int pc; > > syscall_nr = syscall_get_nr(current, regs); > if (syscall_nr < 0) In this version, irq_flags and pc are not initialised. > @@ -350,7 +358,8 @@ void ftrace_syscall_exit(void *ignore, struct pt_regs *regs, long ret) > return; > > event = trace_current_buffer_lock_reserve(&buffer, > - sys_data->exit_event->event.type, sizeof(*entry), 0, 0); > + sys_data->exit_event->event.type, sizeof(*entry), > + irq_flags, pc); > if (!event) > return; > > @@ -360,7 +369,8 @@ void ftrace_syscall_exit(void *ignore, struct pt_regs *regs, long ret) > > if (!filter_current_check_discard(buffer, sys_data->exit_event, > entry, event)) > - trace_current_buffer_unlock_commit(buffer, event, 0, 0); > + trace_current_buffer_unlock_commit(buffer, event, > + irq_flags, pc); > } > > int reg_event_syscall_enter(struct ftrace_event_call *call) I backported this to 3.2 as commit 11034ae9c20f4057a6127fc965906417978e69b2. Doesn't that work? Ben. -- Ben Hutchings All extremists should be taken out and shot.
Attachment:
signature.asc
Description: This is a digitally signed message part