lkml.org 
[lkml]   [2019]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v18 10/15] drm/radeon: untag user pointers in radeon_gem_userptr_ioctl
    On Mon, Jun 24, 2019 at 04:32:55PM +0200, Andrey Konovalov wrote:
    > 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.
    >
    > In radeon_gem_userptr_ioctl() an MMU notifier is set up with a (tagged)
    > userspace pointer. The untagged address should be used so that MMU
    > notifiers for the untagged address get correctly matched up with the right
    > BO. This funcation also calls radeon_ttm_tt_pin_userptr(), which uses
    > provided user pointers for vma lookups, which can only by done with
    > untagged pointers.
    >
    > This patch untags user pointers in radeon_gem_userptr_ioctl().
    >
    > Suggested-by: Felix Kuehling <Felix.Kuehling@amd.com>
    > Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
    > Signed-off-by: Andrey Konovalov <andreyknvl@google.com>

    Reviewed-by: Kees Cook <keescook@chromium.org>

    -Kees

    > ---
    > drivers/gpu/drm/radeon/radeon_gem.c | 2 ++
    > 1 file changed, 2 insertions(+)
    >
    > diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
    > index 44617dec8183..90eb78fb5eb2 100644
    > --- a/drivers/gpu/drm/radeon/radeon_gem.c
    > +++ b/drivers/gpu/drm/radeon/radeon_gem.c
    > @@ -291,6 +291,8 @@ int radeon_gem_userptr_ioctl(struct drm_device *dev, void *data,
    > uint32_t handle;
    > int r;
    >
    > + args->addr = untagged_addr(args->addr);
    > +
    > if (offset_in_page(args->addr | args->size))
    > return -EINVAL;
    >
    > --
    > 2.22.0.410.gd8fdbe21b5-goog
    >

    --
    Kees Cook

    \
     
     \ /
      Last update: 2019-06-24 17:03    [W:2.238 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site