mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-28 16:52:18 +00: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
@ -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 New Issue
Block a user