[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Thu, 5 May 2022 07:10:37 +0000
From: Yuanzheng Song <songyuanzheng@...wei.com>
To: <akpm@...ux-foundation.org>
CC: <linux-mm@...ck.org>, <linux-kernel@...r.kernel.org>,
Yuanzheng Song <songyuanzheng@...wei.com>
Subject: [PATCH] mm: usercopy: move the virt_addr_valid() below the is_vmalloc_addr()
The is_kmap_addr() and the is_vmalloc_addr() in the check_heap_object()
will not work, because the virt_addr_valid() will exclude the kmap and
vmalloc regions. So let's move the virt_addr_valid() below
the is_vmalloc_addr().
Signed-off-by: Yuanzheng Song <songyuanzheng@...wei.com>
---
mm/usercopy.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/mm/usercopy.c b/mm/usercopy.c
index ac8a093e90c1..baeacc735b83 100644
--- a/mm/usercopy.c
+++ b/mm/usercopy.c
@@ -163,9 +163,6 @@ static inline void check_heap_object(const void *ptr, unsigned long n,
{
struct folio *folio;
- if (!virt_addr_valid(ptr))
- return;
-
if (is_kmap_addr(ptr)) {
unsigned long page_end = (unsigned long)ptr | (PAGE_SIZE - 1);
@@ -190,6 +187,9 @@ static inline void check_heap_object(const void *ptr, unsigned long n,
return;
}
+ if (!virt_addr_valid(ptr))
+ return;
+
folio = virt_to_folio(ptr);
if (folio_test_slab(folio)) {
--
2.25.1
Powered by blists - more mailing lists