aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/trace/trace_irqsoff.c9
-rw-r--r--kernel/trace/trace_preemptirq.c5
2 files changed, 12 insertions, 2 deletions
diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c
index d3294721f119..d42a473b8240 100644
--- a/kernel/trace/trace_irqsoff.c
+++ b/kernel/trace/trace_irqsoff.c
@@ -14,6 +14,7 @@
14#include <linux/uaccess.h> 14#include <linux/uaccess.h>
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/ftrace.h> 16#include <linux/ftrace.h>
17#include <linux/kprobes.h>
17 18
18#include "trace.h" 19#include "trace.h"
19 20
@@ -365,7 +366,7 @@ out:
365 __trace_function(tr, CALLER_ADDR0, parent_ip, flags, pc); 366 __trace_function(tr, CALLER_ADDR0, parent_ip, flags, pc);
366} 367}
367 368
368static inline void 369static nokprobe_inline void
369start_critical_timing(unsigned long ip, unsigned long parent_ip, int pc) 370start_critical_timing(unsigned long ip, unsigned long parent_ip, int pc)
370{ 371{
371 int cpu; 372 int cpu;
@@ -401,7 +402,7 @@ start_critical_timing(unsigned long ip, unsigned long parent_ip, int pc)
401 atomic_dec(&data->disabled); 402 atomic_dec(&data->disabled);
402} 403}
403 404
404static inline void 405static nokprobe_inline void
405stop_critical_timing(unsigned long ip, unsigned long parent_ip, int pc) 406stop_critical_timing(unsigned long ip, unsigned long parent_ip, int pc)
406{ 407{
407 int cpu; 408 int cpu;
@@ -443,6 +444,7 @@ void start_critical_timings(void)
443 start_critical_timing(CALLER_ADDR0, CALLER_ADDR1, pc); 444 start_critical_timing(CALLER_ADDR0, CALLER_ADDR1, pc);
444} 445}
445EXPORT_SYMBOL_GPL(start_critical_timings); 446EXPORT_SYMBOL_GPL(start_critical_timings);
447NOKPROBE_SYMBOL(start_critical_timings);
446 448
447void stop_critical_timings(void) 449void stop_critical_timings(void)
448{ 450{
@@ -452,6 +454,7 @@ void stop_critical_timings(void)
452 stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1, pc); 454 stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1, pc);
453} 455}
454EXPORT_SYMBOL_GPL(stop_critical_timings); 456EXPORT_SYMBOL_GPL(stop_critical_timings);
457NOKPROBE_SYMBOL(stop_critical_timings);
455 458
456#ifdef CONFIG_FUNCTION_TRACER 459#ifdef CONFIG_FUNCTION_TRACER
457static bool function_enabled; 460static bool function_enabled;
@@ -611,6 +614,7 @@ void tracer_hardirqs_on(unsigned long a0, unsigned long a1)
611 if (!preempt_trace(pc) && irq_trace()) 614 if (!preempt_trace(pc) && irq_trace())
612 stop_critical_timing(a0, a1, pc); 615 stop_critical_timing(a0, a1, pc);
613} 616}
617NOKPROBE_SYMBOL(tracer_hardirqs_on);
614 618
615void tracer_hardirqs_off(unsigned long a0, unsigned long a1) 619void tracer_hardirqs_off(unsigned long a0, unsigned long a1)
616{ 620{
@@ -619,6 +623,7 @@ void tracer_hardirqs_off(unsigned long a0, unsigned long a1)
619 if (!preempt_trace(pc) && irq_trace()) 623 if (!preempt_trace(pc) && irq_trace())
620 start_critical_timing(a0, a1, pc); 624 start_critical_timing(a0, a1, pc);
621} 625}
626NOKPROBE_SYMBOL(tracer_hardirqs_off);
622 627
623static int irqsoff_tracer_init(struct trace_array *tr) 628static int irqsoff_tracer_init(struct trace_array *tr)
624{ 629{
diff --git a/kernel/trace/trace_preemptirq.c b/kernel/trace/trace_preemptirq.c
index 71f553cceb3c..4d8e99fdbbbe 100644
--- a/kernel/trace/trace_preemptirq.c
+++ b/kernel/trace/trace_preemptirq.c
@@ -9,6 +9,7 @@
9#include <linux/uaccess.h> 9#include <linux/uaccess.h>
10#include <linux/module.h> 10#include <linux/module.h>
11#include <linux/ftrace.h> 11#include <linux/ftrace.h>
12#include <linux/kprobes.h>
12#include "trace.h" 13#include "trace.h"
13 14
14#define CREATE_TRACE_POINTS 15#define CREATE_TRACE_POINTS
@@ -30,6 +31,7 @@ void trace_hardirqs_on(void)
30 lockdep_hardirqs_on(CALLER_ADDR0); 31 lockdep_hardirqs_on(CALLER_ADDR0);
31} 32}
32EXPORT_SYMBOL(trace_hardirqs_on); 33EXPORT_SYMBOL(trace_hardirqs_on);
34NOKPROBE_SYMBOL(trace_hardirqs_on);
33 35
34void trace_hardirqs_off(void) 36void trace_hardirqs_off(void)
35{ 37{
@@ -43,6 +45,7 @@ void trace_hardirqs_off(void)
43 lockdep_hardirqs_off(CALLER_ADDR0); 45 lockdep_hardirqs_off(CALLER_ADDR0);
44} 46}
45EXPORT_SYMBOL(trace_hardirqs_off); 47EXPORT_SYMBOL(trace_hardirqs_off);
48NOKPROBE_SYMBOL(trace_hardirqs_off);
46 49
47__visible void trace_hardirqs_on_caller(unsigned long caller_addr) 50__visible void trace_hardirqs_on_caller(unsigned long caller_addr)
48{ 51{
@@ -56,6 +59,7 @@ __visible void trace_hardirqs_on_caller(unsigned long caller_addr)
56 lockdep_hardirqs_on(CALLER_ADDR0); 59 lockdep_hardirqs_on(CALLER_ADDR0);
57} 60}
58EXPORT_SYMBOL(trace_hardirqs_on_caller); 61EXPORT_SYMBOL(trace_hardirqs_on_caller);
62NOKPROBE_SYMBOL(trace_hardirqs_on_caller);
59 63
60__visible void trace_hardirqs_off_caller(unsigned long caller_addr) 64__visible void trace_hardirqs_off_caller(unsigned long caller_addr)
61{ 65{
@@ -69,6 +73,7 @@ __visible void trace_hardirqs_off_caller(unsigned long caller_addr)
69 lockdep_hardirqs_off(CALLER_ADDR0); 73 lockdep_hardirqs_off(CALLER_ADDR0);
70} 74}
71EXPORT_SYMBOL(trace_hardirqs_off_caller); 75EXPORT_SYMBOL(trace_hardirqs_off_caller);
76NOKPROBE_SYMBOL(trace_hardirqs_off_caller);
72#endif /* CONFIG_TRACE_IRQFLAGS */ 77#endif /* CONFIG_TRACE_IRQFLAGS */
73 78
74#ifdef CONFIG_TRACE_PREEMPT_TOGGLE 79#ifdef CONFIG_TRACE_PREEMPT_TOGGLE