diff options
Diffstat (limited to 'kernel/trace/ftrace.c')
| -rw-r--r-- | kernel/trace/ftrace.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 9a236ffe2aa4..fdf913dfc7e8 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -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);  |