lkml.org 
[lkml]   [2018]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/6] arm64: untag user pointers passed to the kernel
    Date
    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(-)

    --
    2.17.0.484.g0c8726318c-goog

    \
     
     \ /
      Last update: 2018-04-18 20:54    [W:2.835 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site