diff options
author | 2022-04-01 16:12:31 +0100 | |
---|---|---|
committer | 2022-04-01 16:12:31 +0100 | |
commit | de4fb176622d54a82ea3ceb7362392aaf5ff0b5a (patch) | |
tree | 8b510763d14d89b97cd719e79834c84e095932d7 /mm/usercopy.c | |
parent | ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in unwind_frame() (diff) | |
parent | ARM: 9189/1: decompressor: fix unneeded rebuilds of library objects (diff) | |
download | wireguard-linux-de4fb176622d54a82ea3ceb7362392aaf5ff0b5a.tar.xz wireguard-linux-de4fb176622d54a82ea3ceb7362392aaf5ff0b5a.zip |
Merge branches 'fixes' and 'misc' into for-linus
Diffstat (limited to 'mm/usercopy.c')
-rw-r--r-- | mm/usercopy.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/mm/usercopy.c b/mm/usercopy.c index b3de3c4eefba..d0d268135d96 100644 --- a/mm/usercopy.c +++ b/mm/usercopy.c @@ -20,6 +20,7 @@ #include <linux/atomic.h> #include <linux/jump_label.h> #include <asm/sections.h> +#include "slab.h" /* * Checks if a given pointer and length is contained by the current @@ -223,7 +224,7 @@ static inline void check_page_span(const void *ptr, unsigned long n, static inline void check_heap_object(const void *ptr, unsigned long n, bool to_user) { - struct page *page; + struct folio *folio; if (!virt_addr_valid(ptr)) return; @@ -231,16 +232,16 @@ static inline void check_heap_object(const void *ptr, unsigned long n, /* * When CONFIG_HIGHMEM=y, kmap_to_page() will give either the * highmem page or fallback to virt_to_page(). The following - * is effectively a highmem-aware virt_to_head_page(). + * is effectively a highmem-aware virt_to_slab(). */ - page = compound_head(kmap_to_page((void *)ptr)); + folio = page_folio(kmap_to_page((void *)ptr)); - if (PageSlab(page)) { + if (folio_test_slab(folio)) { /* Check slab allocator for flags and size. */ - __check_heap_object(ptr, n, page, to_user); + __check_heap_object(ptr, n, folio_slab(folio), to_user); } else { /* Verify object does not incorrectly span multiple pages. */ - check_page_span(ptr, n, page, to_user); + check_page_span(ptr, n, folio_page(folio, 0), to_user); } } |