|
@@ -1737,9 +1737,12 @@ static void clear_ftrace_pid(struct pid *pid)
|
|
{
|
|
{
|
|
struct task_struct *p;
|
|
struct task_struct *p;
|
|
|
|
|
|
|
|
+ rcu_read_lock();
|
|
do_each_pid_task(pid, PIDTYPE_PID, p) {
|
|
do_each_pid_task(pid, PIDTYPE_PID, p) {
|
|
clear_tsk_trace_trace(p);
|
|
clear_tsk_trace_trace(p);
|
|
} while_each_pid_task(pid, PIDTYPE_PID, p);
|
|
} while_each_pid_task(pid, PIDTYPE_PID, p);
|
|
|
|
+ rcu_read_unlock();
|
|
|
|
+
|
|
put_pid(pid);
|
|
put_pid(pid);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1747,9 +1750,11 @@ static void set_ftrace_pid(struct pid *pid)
|
|
{
|
|
{
|
|
struct task_struct *p;
|
|
struct task_struct *p;
|
|
|
|
|
|
|
|
+ rcu_read_lock();
|
|
do_each_pid_task(pid, PIDTYPE_PID, p) {
|
|
do_each_pid_task(pid, PIDTYPE_PID, p) {
|
|
set_tsk_trace_trace(p);
|
|
set_tsk_trace_trace(p);
|
|
} while_each_pid_task(pid, PIDTYPE_PID, p);
|
|
} while_each_pid_task(pid, PIDTYPE_PID, p);
|
|
|
|
+ rcu_read_unlock();
|
|
}
|
|
}
|
|
|
|
|
|
static void clear_ftrace_pid_task(struct pid **pid)
|
|
static void clear_ftrace_pid_task(struct pid **pid)
|