Patch "swap: comments get_swap_device() with usage rule" has been added to the 6.1-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

    swap: comments get_swap_device() with usage rule

to the 6.1-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:
     swap-comments-get_swap_device-with-usage-rule.patch
and it can be found in the queue-6.1 subdirectory.

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



commit 6b3e1bc31762ef05aabd52295eeb0dbc9866a643
Author: Huang Ying <ying.huang@xxxxxxxxx>
Date:   Mon May 29 14:13:55 2023 +0800

    swap: comments get_swap_device() with usage rule
    
    [ Upstream commit a95722a047724ef75567381976a36f0e44230bd9 ]
    
    The general rule to use a swap entry is as follows.
    
    When we get a swap entry, if there aren't some other ways to prevent
    swapoff, such as the folio in swap cache is locked, page table lock is
    held, etc., the swap entry may become invalid because of swapoff.
    Then, we need to enclose all swap related functions with
    get_swap_device() and put_swap_device(), unless the swap functions
    call get/put_swap_device() by themselves.
    
    Add the rule as comments of get_swap_device().
    
    Link: https://lkml.kernel.org/r/20230529061355.125791-6-ying.huang@xxxxxxxxx
    Signed-off-by: "Huang, Ying" <ying.huang@xxxxxxxxx>
    Reviewed-by: David Hildenbrand <david@xxxxxxxxxx>
    Reviewed-by: Yosry Ahmed <yosryahmed@xxxxxxxxxx>
    Reviewed-by: Chris Li (Google) <chrisl@xxxxxxxxxx>
    Cc: Hugh Dickins <hughd@xxxxxxxxxx>
    Cc: Johannes Weiner <hannes@xxxxxxxxxxx>
    Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx>
    Cc: Michal Hocko <mhocko@xxxxxxxx>
    Cc: Minchan Kim <minchan@xxxxxxxxxx>
    Cc: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx>
    Cc: Yang Shi <shy828301@xxxxxxxxx>
    Cc: Yu Zhao <yuzhao@xxxxxxxxxx>
    Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
    Stable-dep-of: 82b1c07a0af6 ("mm: swap: fix race between free_swap_and_cache() and swapoff()")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/mm/swapfile.c b/mm/swapfile.c
index cca9fda9d036f..324844f98d67c 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1222,6 +1222,13 @@ static unsigned char __swap_entry_free_locked(struct swap_info_struct *p,
 }
 
 /*
+ * When we get a swap entry, if there aren't some other ways to
+ * prevent swapoff, such as the folio in swap cache is locked, page
+ * table lock is held, etc., the swap entry may become invalid because
+ * of swapoff.  Then, we need to enclose all swap related functions
+ * with get_swap_device() and put_swap_device(), unless the swap
+ * functions call get/put_swap_device() by themselves.
+ *
  * Check whether swap entry is valid in the swap device.  If so,
  * return pointer to swap_info_struct, and keep the swap entry valid
  * via preventing the swap device from being swapoff, until
@@ -1230,9 +1237,8 @@ static unsigned char __swap_entry_free_locked(struct swap_info_struct *p,
  * Notice that swapoff or swapoff+swapon can still happen before the
  * percpu_ref_tryget_live() in get_swap_device() or after the
  * percpu_ref_put() in put_swap_device() if there isn't any other way
- * to prevent swapoff, such as page lock, page table lock, etc.  The
- * caller must be prepared for that.  For example, the following
- * situation is possible.
+ * to prevent swapoff.  The caller must be prepared for that.  For
+ * example, the following situation is possible.
  *
  *   CPU1				CPU2
  *   do_swap_page()




[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