diff --git a/kernel/sched/core.c b/kernel/sched/core.c index cdde2922e564..f85b5afebe38 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -8041,10 +8041,15 @@ do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param) rcu_read_lock(); retval = -ESRCH; p = find_process_by_pid(pid); - if (p != NULL) - retval = sched_setscheduler(p, policy, &lparam); + if (likely(p)) + get_task_struct(p); rcu_read_unlock(); + if (likely(p)) { + retval = sched_setscheduler(p, policy, &lparam); + put_task_struct(p); + } + return retval; }