diff options
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r-- | kernel/trace/trace.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 4d79485b3237..1a41023a1f88 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -843,7 +843,15 @@ __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu) | |||
843 | 843 | ||
844 | memcpy(max_data->comm, tsk->comm, TASK_COMM_LEN); | 844 | memcpy(max_data->comm, tsk->comm, TASK_COMM_LEN); |
845 | max_data->pid = tsk->pid; | 845 | max_data->pid = tsk->pid; |
846 | max_data->uid = task_uid(tsk); | 846 | /* |
847 | * If tsk == current, then use current_uid(), as that does not use | ||
848 | * RCU. The irq tracer can be called out of RCU scope. | ||
849 | */ | ||
850 | if (tsk == current) | ||
851 | max_data->uid = current_uid(); | ||
852 | else | ||
853 | max_data->uid = task_uid(tsk); | ||
854 | |||
847 | max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO; | 855 | max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO; |
848 | max_data->policy = tsk->policy; | 856 | max_data->policy = tsk->policy; |
849 | max_data->rt_priority = tsk->rt_priority; | 857 | max_data->rt_priority = tsk->rt_priority; |