Patch "include/linux/sched/mm.h: use rcu_dereference in in_vfork()" has been added to the 5.11-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    include/linux/sched/mm.h: use rcu_dereference in in_vfork()

to the 5.11-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     include-linux-sched-mm.h-use-rcu_dereference-in-in_v.patch
and it can be found in the queue-5.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 16dd190ecf3f2a15f875c7ba42540b7d05e5cee6
Author: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
Date:   Fri Mar 12 21:08:03 2021 -0800

    include/linux/sched/mm.h: use rcu_dereference in in_vfork()
    
    [ Upstream commit 149fc787353f65b7e72e05e7b75d34863266c3e2 ]
    
    Fix a sparse warning by using rcu_dereference().  Technically this is a
    bug and a sufficiently aggressive compiler could reload the `real_parent'
    pointer outside the protection of the rcu lock (and access freed memory),
    but I think it's pretty unlikely to happen.
    
    Link: https://lkml.kernel.org/r/20210221194207.1351703-1-willy@xxxxxxxxxxxxx
    Fixes: b18dc5f291c0 ("mm, oom: skip vforked tasks from being selected")
    Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
    Reviewed-by: Miaohe Lin <linmiaohe@xxxxxxxxxx>
    Acked-by: Michal Hocko <mhocko@xxxxxxxx>
    Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h
index 1ae08b8462a4..90b2a0bce11c 100644
--- a/include/linux/sched/mm.h
+++ b/include/linux/sched/mm.h
@@ -140,7 +140,8 @@ static inline bool in_vfork(struct task_struct *tsk)
 	 * another oom-unkillable task does this it should blame itself.
 	 */
 	rcu_read_lock();
-	ret = tsk->vfork_done && tsk->real_parent->mm == tsk->mm;
+	ret = tsk->vfork_done &&
+			rcu_dereference(tsk->real_parent)->mm == tsk->mm;
 	rcu_read_unlock();
 
 	return ret;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux