mm: usercopy: skip stack page span check

Kernel stack pages can span multiple pages and GFP_COMP is not
set for stack pages. Fix the false "spans multiple pages" error.

Change-Id: I2ba414be466b7c90fb4a3542237da809175e0590
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
This commit is contained in:
Vinayak Menon 2019-01-03 12:56:52 +05:30
parent 2913cfe33e
commit ad39042382

View File

@ -139,6 +139,8 @@ static inline const char *check_page_span(const void *ptr, unsigned long n,
const void *end = ptr + n - 1;
struct page *endpage;
bool is_reserved, is_cma;
const void * const stack = task_stack_page(current);
const void * const stackend = stack + THREAD_SIZE;
/*
* Sometimes the kernel data regions are not marked Reserved (see
@ -163,6 +165,10 @@ static inline const char *check_page_span(const void *ptr, unsigned long n,
end <= (const void *)__bss_stop)
return NULL;
/* Allow stack region to span multiple pages */
if (ptr >= stack && end <= stackend)
return NULL;
/* Is the object wholly within one base page? */
if (likely(((unsigned long)ptr & (unsigned long)PAGE_MASK) ==
((unsigned long)end & (unsigned long)PAGE_MASK)))