Skip to content

arm64: untag user pointers passed to the kernel

Andrey Konovalov linux-arm-kernel linux-doc linux-mm lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest6 patches 14 repliesIn review

Changes in v1 from the cover letter

- Rebased onto 4.17-rc1.

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/6arm64: add type casts to untagged_addr macroarch/arm64/include/asm/uaccess.h+2 -10 replies
1/6arm64: add type casts to untagged_addr macroarch/arm64/include/asm/uaccess.h+2 -10 replies
2/6uaccess: add untagged_addr definition for other archesinclude/linux/uaccess.h+4 -00 replies
2/6uaccess: add untagged_addr definition for other archesinclude/linux/uaccess.h+4 -00 replies
3/6arm64: untag user addresses in copy_from_user and othersarch/arm64/include/asm/uaccess.h+5 -12 replies
3/6arm64: untag user addresses in copy_from_user and othersarch/arm64/include/asm/uaccess.h+5 -10 replies
4/6mm, arm64: untag user addresses in mm/gup.cmm/gup.c+12 -09 replies
4/6mm, arm64: untag user addresses in mm/gup.cmm/gup.c+12 -00 replies
5/6lib, arm64: untag addrs passed to strncpy_from_user and strnlen_userlib/strncpy_from_user.c lib/strnlen_user.c+4 -00 replies
5/6lib, arm64: untag addrs passed to strncpy_from_user and strnlen_userlib/strncpy_from_user.c lib/strnlen_user.c+4 -00 replies
6/6arm64: update Documentation/arm64/tagged-pointers.txtDocumentation/arm64/tagged-pointers.txt+3 -20 replies
6/6arm64: update Documentation/arm64/tagged-pointers.txtDocumentation/arm64/tagged-pointers.txt+3 -20 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/6] arm64: untag user pointers passed to the kernel

Hi!

arm64 has a feature called Top Byte Ignore, which allows to embed pointer tags into the top byte of each pointer. Userspace programs (such as HWASan, a memory debugging tool [1]) might use this feature and pass tagged user pointers to the kernel through syscalls or other interfaces.

This patch makes a few of the kernel interfaces accept tagged user pointers. The kernel is already able to handle user faults with tagged pointers and has the untagged_addr macro, which this patchset reuses.

We're not trying to cover all possible ways the kernel accepts user pointers in one patchset, so this one should be considered as a start.

Thanks!

[1] http://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html

Changes in v1:
- Rebased onto 4.17-rc1.

Changes in RFC v2:
- Added "#ifndef untagged_addr..." fallback in linux/uaccess.h instead of defining it for each arch individually.
- Updated Documentation/arm64/tagged-pointers.txt.
- Dropped ?mm, arm64: untag user addresses in memory syscalls?.
- Rebased onto 3eb2ce82 (4.16-rc7).

Andrey Konovalov (6):
arm64: add type casts to untagged_addr macro
uaccess: add untagged_addr definition for other arches
arm64: untag user addresses in copy_from_user and others mm, arm64: untag user addresses in mm/gup.c
lib, arm64: untag addrs passed to strncpy_from_user and strnlen_user
arm64: update Documentation/arm64/tagged-pointers.txt

 Documentation/arm64/tagged-pointers.txt |  5 +++--
 arch/arm64/include/asm/uaccess.h        |  9 +++++++--
 include/linux/uaccess.h                 |  4 ++++
 lib/strncpy_from_user.c                 |  2 ++
 lib/strnlen_user.c                      |  2 ++
 mm/gup.c                                | 12 ++++++++++++
 6 files changed, 30 insertions(+), 4 deletions(-)
Signature · 1 line
2.17.0.484.g0c8726318c-goog