riscv: stacktrace: pin the task's stack in get_wchan
[linux-2.6-microblaze.git] / arch / riscv / kernel / stacktrace.c
index ff467b9..ac75936 100644 (file)
@@ -132,8 +132,12 @@ unsigned long get_wchan(struct task_struct *task)
 {
        unsigned long pc = 0;
 
-       if (likely(task && task != current && !task_is_running(task)))
+       if (likely(task && task != current && !task_is_running(task))) {
+               if (!try_get_task_stack(task))
+                       return 0;
                walk_stackframe(task, NULL, save_wchan, &pc);
+               put_task_stack(task);
+       }
        return pc;
 }