diff options
Diffstat (limited to 'kernel/trace/ftrace.c')
| -rw-r--r-- | kernel/trace/ftrace.c | 42 |
1 files changed, 2 insertions, 40 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index b2de8de77356..93245ae046e1 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
| @@ -1549,22 +1549,6 @@ int ftrace_force_update(void) | |||
| 1549 | return ret; | 1549 | return ret; |
| 1550 | } | 1550 | } |
| 1551 | 1551 | ||
| 1552 | static void ftrace_force_shutdown(void) | ||
| 1553 | { | ||
| 1554 | struct task_struct *task; | ||
| 1555 | int command = FTRACE_DISABLE_CALLS | FTRACE_UPDATE_TRACE_FUNC; | ||
| 1556 | |||
| 1557 | mutex_lock(&ftraced_lock); | ||
| 1558 | task = ftraced_task; | ||
| 1559 | ftraced_task = NULL; | ||
| 1560 | ftraced_suspend = -1; | ||
| 1561 | ftrace_run_update_code(command); | ||
| 1562 | mutex_unlock(&ftraced_lock); | ||
| 1563 | |||
| 1564 | if (task) | ||
| 1565 | kthread_stop(task); | ||
| 1566 | } | ||
| 1567 | |||
| 1568 | static __init int ftrace_init_debugfs(void) | 1552 | static __init int ftrace_init_debugfs(void) |
| 1569 | { | 1553 | { |
| 1570 | struct dentry *d_tracer; | 1554 | struct dentry *d_tracer; |
| @@ -1795,17 +1779,16 @@ core_initcall(ftrace_dynamic_init); | |||
| 1795 | # define ftrace_shutdown() do { } while (0) | 1779 | # define ftrace_shutdown() do { } while (0) |
| 1796 | # define ftrace_startup_sysctl() do { } while (0) | 1780 | # define ftrace_startup_sysctl() do { } while (0) |
| 1797 | # define ftrace_shutdown_sysctl() do { } while (0) | 1781 | # define ftrace_shutdown_sysctl() do { } while (0) |
| 1798 | # define ftrace_force_shutdown() do { } while (0) | ||
| 1799 | #endif /* CONFIG_DYNAMIC_FTRACE */ | 1782 | #endif /* CONFIG_DYNAMIC_FTRACE */ |
| 1800 | 1783 | ||
| 1801 | /** | 1784 | /** |
| 1802 | * ftrace_kill_atomic - kill ftrace from critical sections | 1785 | * ftrace_kill - kill ftrace |
| 1803 | * | 1786 | * |
| 1804 | * This function should be used by panic code. It stops ftrace | 1787 | * This function should be used by panic code. It stops ftrace |
| 1805 | * but in a not so nice way. If you need to simply kill ftrace | 1788 | * but in a not so nice way. If you need to simply kill ftrace |
| 1806 | * from a non-atomic section, use ftrace_kill. | 1789 | * from a non-atomic section, use ftrace_kill. |
| 1807 | */ | 1790 | */ |
| 1808 | void ftrace_kill_atomic(void) | 1791 | void ftrace_kill(void) |
| 1809 | { | 1792 | { |
| 1810 | ftrace_disabled = 1; | 1793 | ftrace_disabled = 1; |
| 1811 | ftrace_enabled = 0; | 1794 | ftrace_enabled = 0; |
| @@ -1816,27 +1799,6 @@ void ftrace_kill_atomic(void) | |||
| 1816 | } | 1799 | } |
| 1817 | 1800 | ||
| 1818 | /** | 1801 | /** |
| 1819 | * ftrace_kill - totally shutdown ftrace | ||
| 1820 | * | ||
| 1821 | * This is a safety measure. If something was detected that seems | ||
| 1822 | * wrong, calling this function will keep ftrace from doing | ||
| 1823 | * any more modifications, and updates. | ||
| 1824 | * used when something went wrong. | ||
| 1825 | */ | ||
| 1826 | void ftrace_kill(void) | ||
| 1827 | { | ||
| 1828 | mutex_lock(&ftrace_sysctl_lock); | ||
| 1829 | ftrace_disabled = 1; | ||
| 1830 | ftrace_enabled = 0; | ||
| 1831 | |||
| 1832 | clear_ftrace_function(); | ||
| 1833 | mutex_unlock(&ftrace_sysctl_lock); | ||
| 1834 | |||
| 1835 | /* Try to totally disable ftrace */ | ||
| 1836 | ftrace_force_shutdown(); | ||
| 1837 | } | ||
| 1838 | |||
| 1839 | /** | ||
| 1840 | * register_ftrace_function - register a function for profiling | 1802 | * register_ftrace_function - register a function for profiling |
| 1841 | * @ops - ops structure that holds the function for profiling. | 1803 | * @ops - ops structure that holds the function for profiling. |
| 1842 | * | 1804 | * |
