aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2013-03-28 14:19:11 -0400
committerOleg Nesterov <oleg@redhat.com>2013-04-13 09:32:00 -0400
commit0e3853d202e8b2720bc4c674dc58849b2662c8f8 (patch)
tree1985c7d62717dd07c2e3957acbb66515dc0ce65d
parent456fdbcb8648a20f56977efbc6f13e28936fcf0b (diff)
uprobes/tracing: Kill the pointless local_save_flags/preempt_count calls
uprobe_trace_func() is never called with irqs or preemption disabled, no need to ask preempt_count() or local_save_flags(). Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Tested-by: Anton Arapov <anton@redhat.com>
-rw-r--r--kernel/trace/trace_uprobe.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c
index 8e009016e4ba..43d258db998e 100644
--- a/kernel/trace/trace_uprobe.c
+++ b/kernel/trace/trace_uprobe.c
@@ -492,17 +492,13 @@ static int uprobe_trace_func(struct trace_uprobe *tu, struct pt_regs *regs)
492 struct ring_buffer_event *event; 492 struct ring_buffer_event *event;
493 struct ring_buffer *buffer; 493 struct ring_buffer *buffer;
494 u8 *data; 494 u8 *data;
495 int size, i, pc; 495 int size, i;
496 unsigned long irq_flags;
497 struct ftrace_event_call *call = &tu->call; 496 struct ftrace_event_call *call = &tu->call;
498 497
499 local_save_flags(irq_flags);
500 pc = preempt_count();
501
502 size = sizeof(*entry) + tu->size; 498 size = sizeof(*entry) + tu->size;
503 499
504 event = trace_current_buffer_lock_reserve(&buffer, call->event.type, 500 event = trace_current_buffer_lock_reserve(&buffer, call->event.type,
505 size, irq_flags, pc); 501 size, 0, 0);
506 if (!event) 502 if (!event)
507 return 0; 503 return 0;
508 504
@@ -513,7 +509,7 @@ static int uprobe_trace_func(struct trace_uprobe *tu, struct pt_regs *regs)
513 call_fetch(&tu->args[i].fetch, regs, data + tu->args[i].offset); 509 call_fetch(&tu->args[i].fetch, regs, data + tu->args[i].offset);
514 510
515 if (!filter_current_check_discard(buffer, call, entry, event)) 511 if (!filter_current_check_discard(buffer, call, entry, event))
516 trace_buffer_unlock_commit(buffer, event, irq_flags, pc); 512 trace_buffer_unlock_commit(buffer, event, 0, 0);
517 513
518 return 0; 514 return 0;
519} 515}