lkml.org 
[lkml]   [2016]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.2.y-ckt 74/93] drm/radeon: forbid mapping of userptr bo through radeon device file
    Date
    4.2.8-ckt9 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= <jglisse@redhat.com>

    commit b5dcec693f87cb8475f2291c0075b2422addd3d6 upstream.

    Allowing userptr bo which are basicly a list of page from some vma
    (so either anonymous page or file backed page) would lead to serious
    corruption of kernel structures and counters (because we overwrite
    the page->mapping field when mapping buffer).

    This will already block if the buffer was populated before anyone does
    try to mmap it because then TTM_PAGE_FLAG_SG would be set in in the
    ttm_tt flags. But that flag is check before ttm_tt_populate in the ttm
    vm fault handler.

    So to be safe just add a check to verify_access() callback.

    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/gpu/drm/radeon/radeon_ttm.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
    index fa6f041..07625aa 100644
    --- a/drivers/gpu/drm/radeon/radeon_ttm.c
    +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
    @@ -235,6 +235,8 @@ static int radeon_verify_access(struct ttm_buffer_object *bo, struct file *filp)
    {
    struct radeon_bo *rbo = container_of(bo, struct radeon_bo, tbo);

    + if (radeon_ttm_tt_has_userptr(bo->ttm))
    + return -EPERM;
    return drm_vma_node_verify_access(&rbo->gem_base.vma_node, filp);
    }

    --
    2.7.4
    \
     
     \ /
      Last update: 2016-04-26 20:41    [W:4.334 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site