[PATCH v19 06/15] mm: untag user pointers in get_vaddr_frames
Andrey Konovalov
andreyknvl at google.com
Tue Jul 23 17:58:43 UTC 2019
This patch is a part of a series that extends kernel ABI to allow to pass
tagged user pointers (with the top byte set to something else other than
0x00) as syscall arguments.
get_vaddr_frames uses provided user pointers for vma lookups, which can
only by done with untagged pointers. Instead of locating and changing
all callers of this function, perform untagging in it.
Reviewed-by: Khalid Aziz <khalid.aziz at oracle.com>
Reviewed-by: Vincenzo Frascino <vincenzo.frascino at arm.com>
Acked-by: Catalin Marinas <catalin.marinas at arm.com>
Reviewed-by: Kees Cook <keescook at chromium.org>
Signed-off-by: Andrey Konovalov <andreyknvl at google.com>
---
mm/frame_vector.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mm/frame_vector.c b/mm/frame_vector.c
index c64dca6e27c2..c431ca81dad5 100644
--- a/mm/frame_vector.c
+++ b/mm/frame_vector.c
@@ -46,6 +46,8 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames,
if (WARN_ON_ONCE(nr_frames > vec->nr_allocated))
nr_frames = vec->nr_allocated;
+ start = untagged_addr(start);
+
down_read(&mm->mmap_sem);
locked = 1;
vma = find_vma_intersection(mm, start, start + 1);
--
2.22.0.709.g102302147b-goog
More information about the amd-gfx
mailing list