mm/gup: Fix some contiguous memmap assumptions
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 7 Jan 2022 18:25:55 +0000 (13:25 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 21 Mar 2022 16:56:35 +0000 (12:56 -0400)
commitc228afb11ac6938532703ac712992524497aff29
tree2bf4703ab380845339879cd50456e62d8964ed6a
parent28297dbcad7ed3d7bac373eef121339cb0cac326
mm/gup: Fix some contiguous memmap assumptions

Several functions in gup.c assume that a compound page has virtually
contiguous page structs.  This isn't true for SPARSEMEM configs unless
SPARSEMEM_VMEMMAP is also set.  Fix them by using nth_page() instead of
plain pointer arithmetic.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: William Kucharski <william.kucharski@oracle.com>
mm/gup.c