|
@@ -5737,7 +5737,6 @@ static int alloc_retstack_tasklist(struct ftrace_ret_stack **ret_stack_list)
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
int ret = 0;
|
|
int ret = 0;
|
|
- unsigned long flags;
|
|
|
|
int start = 0, end = FTRACE_RETSTACK_ALLOC_SIZE;
|
|
int start = 0, end = FTRACE_RETSTACK_ALLOC_SIZE;
|
|
struct task_struct *g, *t;
|
|
struct task_struct *g, *t;
|
|
|
|
|
|
@@ -5753,7 +5752,7 @@ static int alloc_retstack_tasklist(struct ftrace_ret_stack **ret_stack_list)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- read_lock_irqsave(&tasklist_lock, flags);
|
|
|
|
|
|
+ read_lock(&tasklist_lock);
|
|
do_each_thread(g, t) {
|
|
do_each_thread(g, t) {
|
|
if (start == end) {
|
|
if (start == end) {
|
|
ret = -EAGAIN;
|
|
ret = -EAGAIN;
|
|
@@ -5771,7 +5770,7 @@ static int alloc_retstack_tasklist(struct ftrace_ret_stack **ret_stack_list)
|
|
} while_each_thread(g, t);
|
|
} while_each_thread(g, t);
|
|
|
|
|
|
unlock:
|
|
unlock:
|
|
- read_unlock_irqrestore(&tasklist_lock, flags);
|
|
|
|
|
|
+ read_unlock(&tasklist_lock);
|
|
free:
|
|
free:
|
|
for (i = start; i < end; i++)
|
|
for (i = start; i < end; i++)
|
|
kfree(ret_stack_list[i]);
|
|
kfree(ret_stack_list[i]);
|