lkml.org 
[lkml]   [2019]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v11 07/14] fs, arm64: untag user pointers in fs/userfaultfd.c
    From
    This patch is a part of a series that extends arm64 kernel ABI to allow to
    pass tagged user pointers (with the top byte set to something else other
    than 0x00) as syscall arguments.

    userfaultfd_register() and userfaultfd_unregister() use provided user
    pointers for vma lookups, which can only by done with untagged pointers.

    Untag user pointers in these functions.

    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    ---
    fs/userfaultfd.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
    index 89800fc7dc9d..a3b70e0d9756 100644
    --- a/fs/userfaultfd.c
    +++ b/fs/userfaultfd.c
    @@ -1320,6 +1320,9 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx,
    goto out;
    }

    + uffdio_register.range.start =
    + untagged_addr(uffdio_register.range.start);
    +
    ret = validate_range(mm, uffdio_register.range.start,
    uffdio_register.range.len);
    if (ret)
    @@ -1507,6 +1510,8 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx,
    if (copy_from_user(&uffdio_unregister, buf, sizeof(uffdio_unregister)))
    goto out;

    + uffdio_unregister.start = untagged_addr(uffdio_unregister.start);
    +
    ret = validate_range(mm, uffdio_unregister.start,
    uffdio_unregister.len);
    if (ret)
    --
    2.21.0.360.g471c308f928-goog
    \
     
     \ /
      Last update: 2019-03-15 20:54    [W:8.806 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site