Thread (48 messages) 48 messages, 8 authors, 2019-09-04
STALE2461d REVIEWED: 9 (7M)
Revisions (26)
  1. rfc [diff vs current]
  2. v2 [diff vs current]
  3. v1 [diff vs current]
  4. v1 [diff vs current]
  5. v2 [diff vs current]
  6. v2 [diff vs current]
  7. v3 [diff vs current]
  8. v4 [diff vs current]
  9. v5 [diff vs current]
  10. v6 [diff vs current]
  11. v7 [diff vs current]
  12. v8 [diff vs current]
  13. v9 [diff vs current]
  14. v10 [diff vs current]
  15. v11 [diff vs current]
  16. v11 [diff vs current]
  17. v12 [diff vs current]
  18. v12 [diff vs current]
  19. v13 [diff vs current]
  20. v13 [diff vs current]
  21. v14 [diff vs current]
  22. v15 [diff vs current]
  23. v16 [diff vs current]
  24. v17 [diff vs current]
  25. v18 current
  26. v19 [diff vs current]

[PATCH v18 06/15] mm: untag user pointers in get_vaddr_frames

From: Andrey Konovalov <hidden>
Date: 2019-06-24 14:33:31
Also in: amd-gfx, dri-devel, kvm, linux-kselftest, linux-media, linux-mm, linux-rdma, lkml
Subsystem: memory management, the rest · Maintainers: Andrew Morton, Linus Torvalds

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 <redacted>
Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Kees Cook <redacted>
Signed-off-by: Andrey Konovalov <redacted>
---
 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.410.gd8fdbe21b5-goog


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help