aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/ftrace.h2
-rw-r--r--kernel/trace/ftrace.c21
2 files changed, 15 insertions, 8 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 609948eb2b0a..cd72ace7ade3 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -319,6 +319,8 @@ extern void ftrace_caller(void);
319extern void ftrace_call(void); 319extern void ftrace_call(void);
320extern void mcount_call(void); 320extern void mcount_call(void);
321 321
322void ftrace_modify_all_code(int command);
323
322#ifndef FTRACE_ADDR 324#ifndef FTRACE_ADDR
323#define FTRACE_ADDR ((unsigned long)ftrace_caller) 325#define FTRACE_ADDR ((unsigned long)ftrace_caller)
324#endif 326#endif
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index ef0826204840..3c345825cc23 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -1811,22 +1811,27 @@ int __weak ftrace_arch_code_modify_post_process(void)
1811 return 0; 1811 return 0;
1812} 1812}
1813 1813
1814static int __ftrace_modify_code(void *data) 1814void ftrace_modify_all_code(int command)
1815{ 1815{
1816 int *command = data; 1816 if (command & FTRACE_UPDATE_CALLS)
1817
1818 if (*command & FTRACE_UPDATE_CALLS)
1819 ftrace_replace_code(1); 1817 ftrace_replace_code(1);
1820 else if (*command & FTRACE_DISABLE_CALLS) 1818 else if (command & FTRACE_DISABLE_CALLS)
1821 ftrace_replace_code(0); 1819 ftrace_replace_code(0);
1822 1820
1823 if (*command & FTRACE_UPDATE_TRACE_FUNC) 1821 if (command & FTRACE_UPDATE_TRACE_FUNC)
1824 ftrace_update_ftrace_func(ftrace_trace_function); 1822 ftrace_update_ftrace_func(ftrace_trace_function);
1825 1823
1826 if (*command & FTRACE_START_FUNC_RET) 1824 if (command & FTRACE_START_FUNC_RET)
1827 ftrace_enable_ftrace_graph_caller(); 1825 ftrace_enable_ftrace_graph_caller();
1828 else if (*command & FTRACE_STOP_FUNC_RET) 1826 else if (command & FTRACE_STOP_FUNC_RET)
1829 ftrace_disable_ftrace_graph_caller(); 1827 ftrace_disable_ftrace_graph_caller();
1828}
1829
1830static int __ftrace_modify_code(void *data)
1831{
1832 int *command = data;
1833
1834 ftrace_modify_all_code(*command);
1830 1835
1831 return 0; 1836 return 0;
1832} 1837}