|
@@ -2033,7 +2033,7 @@ free:
|
|
|
static int start_graph_tracing(void)
|
|
|
{
|
|
|
struct ftrace_ret_stack **ret_stack_list;
|
|
|
- int ret;
|
|
|
+ int ret, cpu;
|
|
|
|
|
|
ret_stack_list = kmalloc(FTRACE_RETSTACK_ALLOC_SIZE *
|
|
|
sizeof(struct ftrace_ret_stack *),
|
|
@@ -2042,6 +2042,10 @@ static int start_graph_tracing(void)
|
|
|
if (!ret_stack_list)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
+ /* The cpu_boot init_task->ret_stack will never be freed */
|
|
|
+ for_each_online_cpu(cpu)
|
|
|
+ ftrace_graph_init_task(idle_task(cpu));
|
|
|
+
|
|
|
do {
|
|
|
ret = alloc_retstack_tasklist(ret_stack_list);
|
|
|
} while (ret == -EAGAIN);
|