diff options
Diffstat (limited to 'kernel/trace/ftrace.c')
-rw-r--r-- | kernel/trace/ftrace.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 7e9a20b69939..68610031780b 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
@@ -1729,9 +1729,12 @@ static void clear_ftrace_pid(struct pid *pid) | |||
1729 | { | 1729 | { |
1730 | struct task_struct *p; | 1730 | struct task_struct *p; |
1731 | 1731 | ||
1732 | rcu_read_lock(); | ||
1732 | do_each_pid_task(pid, PIDTYPE_PID, p) { | 1733 | do_each_pid_task(pid, PIDTYPE_PID, p) { |
1733 | clear_tsk_trace_trace(p); | 1734 | clear_tsk_trace_trace(p); |
1734 | } while_each_pid_task(pid, PIDTYPE_PID, p); | 1735 | } while_each_pid_task(pid, PIDTYPE_PID, p); |
1736 | rcu_read_unlock(); | ||
1737 | |||
1735 | put_pid(pid); | 1738 | put_pid(pid); |
1736 | } | 1739 | } |
1737 | 1740 | ||
@@ -1739,9 +1742,11 @@ static void set_ftrace_pid(struct pid *pid) | |||
1739 | { | 1742 | { |
1740 | struct task_struct *p; | 1743 | struct task_struct *p; |
1741 | 1744 | ||
1745 | rcu_read_lock(); | ||
1742 | do_each_pid_task(pid, PIDTYPE_PID, p) { | 1746 | do_each_pid_task(pid, PIDTYPE_PID, p) { |
1743 | set_tsk_trace_trace(p); | 1747 | set_tsk_trace_trace(p); |
1744 | } while_each_pid_task(pid, PIDTYPE_PID, p); | 1748 | } while_each_pid_task(pid, PIDTYPE_PID, p); |
1749 | rcu_read_unlock(); | ||
1745 | } | 1750 | } |
1746 | 1751 | ||
1747 | static void clear_ftrace_pid_task(struct pid **pid) | 1752 | static void clear_ftrace_pid_task(struct pid **pid) |