mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
sched: hmp: Fix potential task_struct memory leak
We use get_task_struct to increment the ref count on a task_struct so that even if the task dies with a pending migration we are still able to read the memory without causing a fault. In the case of non-running tasks, we forgot to decrement the ref count when we are done with the task. Signed-off-by: Chris Redpath <chris.redpath@arm.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
This commit is contained in:
committed by
Jon Medhurst
parent
5e0791511a
commit
b2fafaba35
@@ -7027,13 +7027,13 @@ static void hmp_migrate_runnable_task(struct rq *rq)
|
||||
* with the source rq.
|
||||
*/
|
||||
if (src_rq->active_balance)
|
||||
return;
|
||||
goto out;
|
||||
|
||||
if (src_rq->nr_running <= 1)
|
||||
return;
|
||||
goto out;
|
||||
|
||||
if (task_rq(p) != src_rq)
|
||||
return;
|
||||
goto out;
|
||||
/*
|
||||
* Not sure if this applies here but one can never
|
||||
* be too cautious
|
||||
@@ -7068,6 +7068,8 @@ static void hmp_migrate_runnable_task(struct rq *rq)
|
||||
|
||||
rcu_read_unlock();
|
||||
double_unlock_balance(src_rq, dst_rq);
|
||||
out:
|
||||
put_task_struct(p);
|
||||
}
|
||||
|
||||
static DEFINE_SPINLOCK(hmp_force_migration);
|
||||
|
||||
Reference in New Issue
Block a user