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>
[swatsrid@codeaurora.org: Fix trivial merge conflicts]
Signed-off-by: Swathi Sridhar <swatsrid@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
This commit is contained in:
Vinayak Menon 2019-01-03 12:56:52 +05:30 committed by Isaac J. Manjarres
parent 915d2b2efe
commit dd282b2588

View File

@ -164,6 +164,8 @@ static inline void 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
@ -188,6 +190,10 @@ static inline void check_page_span(const void *ptr, unsigned long n,
end <= (const void *)__bss_stop)
return;
/* Allow stack region to span multiple pages */
if (ptr >= stack && end <= stackend)
return;
/* Is the object wholly within one base page? */
if (likely(((unsigned long)ptr & (unsigned long)PAGE_MASK) ==
((unsigned long)end & (unsigned long)PAGE_MASK)))