Patch "mm/hugetlb: use nth_page() in place of direct struct page manipulation" has been added to the 6.5-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

    mm/hugetlb: use nth_page() in place of direct struct page manipulation

to the 6.5-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:
     mm-hugetlb-use-nth_page-in-place-of-direct-struct-pa.patch
and it can be found in the queue-6.5 subdirectory.

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



commit 3bae2acb6a241b8001b97a2b1d6f2a47808b7217
Author: Zi Yan <ziy@xxxxxxxxxx>
Date:   Wed Sep 13 16:12:45 2023 -0400

    mm/hugetlb: use nth_page() in place of direct struct page manipulation
    
    [ Upstream commit 426056efe835cf4864ccf4c328fe3af9146fc539 ]
    
    When dealing with hugetlb pages, manipulating struct page pointers
    directly can get to wrong struct page, since struct page is not guaranteed
    to be contiguous on SPARSEMEM without VMEMMAP.  Use nth_page() to handle
    it properly.
    
    A wrong or non-existing page might be tried to be grabbed, either
    leading to a non freeable page or kernel memory access errors.  No bug
    is reported.  It comes from code inspection.
    
    Link: https://lkml.kernel.org/r/20230913201248.452081-3-zi.yan@xxxxxxxx
    Fixes: 57a196a58421 ("hugetlb: simplify hugetlb handling in follow_page_mask")
    Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>
    Reviewed-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
    Cc: David Hildenbrand <david@xxxxxxxxxx>
    Cc: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
    Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
    Cc: Mike Rapoport (IBM) <rppt@xxxxxxxxxx>
    Cc: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>
    Cc: <stable@xxxxxxxxxxxxxxx>
    Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index d231f23088a77..9951fb7412cc7 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -6546,7 +6546,7 @@ struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma,
 			}
 		}
 
-		page += ((address & ~huge_page_mask(h)) >> PAGE_SHIFT);
+		page = nth_page(page, ((address & ~huge_page_mask(h)) >> PAGE_SHIFT));
 
 		/*
 		 * Note that page may be a sub-page, and with vmemmap



[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