summaryrefslogtreecommitdiff
path: root/include/linux/mm.h
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-05-10 11:38:01 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-05-10 11:38:01 +0300
commitadeab5bfb81840dc4be7ae20324bbf03b2b53eb2 (patch)
tree2b56c0fad02af5c99e0a741cefc49dad5ba7384c /include/linux/mm.h
parenta2cf936ebef291ef7395172b9e2f624779fb6dc0 (diff)
parentdd5a440a31fae6e459c0d6271dddd62825505361 (diff)
downloadlinux-adeab5bfb81840dc4be7ae20324bbf03b2b53eb2.tar.xz
Merge 6.9-rc7 into usb-next
We want the USB fixes in here as well, and resolve a merge conflict in drivers/usb/dwc3/core.c Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/mm.h')
-rw-r--r--include/linux/mm.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 7b0ee64225de..b6bdaa18b9e9 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1223,14 +1223,16 @@ static inline void page_mapcount_reset(struct page *page)
* a large folio, it includes the number of times this page is mapped
* as part of that folio.
*
- * The result is undefined for pages which cannot be mapped into userspace.
- * For example SLAB or special types of pages. See function page_has_type().
- * They use this field in struct page differently.
+ * Will report 0 for pages which cannot be mapped into userspace, eg
+ * slab, page tables and similar.
*/
static inline int page_mapcount(struct page *page)
{
int mapcount = atomic_read(&page->_mapcount) + 1;
+ /* Handle page_has_type() pages */
+ if (mapcount < 0)
+ mapcount = 0;
if (unlikely(PageCompound(page)))
mapcount += folio_entire_mapcount(page_folio(page));