mirror of
https://github.com/torvalds/linux.git
synced 2025-11-01 00:58:39 +02:00
get_task_mm: check PF_KTHREAD lockless
Nowadays PF_KTHREAD is sticky and it was never protected by ->alloc_lock. Move the PF_KTHREAD check outside of task_lock() section to make this code more understandable. Link: https://lkml.kernel.org/r/20240626191017.GA20031@redhat.com Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
d73d003521
commit
8ac5dc6659
1 changed files with 5 additions and 6 deletions
|
|
@ -1536,14 +1536,13 @@ struct mm_struct *get_task_mm(struct task_struct *task)
|
|||
{
|
||||
struct mm_struct *mm;
|
||||
|
||||
if (task->flags & PF_KTHREAD)
|
||||
return NULL;
|
||||
|
||||
task_lock(task);
|
||||
mm = task->mm;
|
||||
if (mm) {
|
||||
if (task->flags & PF_KTHREAD)
|
||||
mm = NULL;
|
||||
else
|
||||
mmget(mm);
|
||||
}
|
||||
if (mm)
|
||||
mmget(mm);
|
||||
task_unlock(task);
|
||||
return mm;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue