lkml.org 
[lkml]   [2013]   [Oct]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 014/100] drm/ttm: fix the tt_populated check in ttm_tt_destroy()
    Date
    3.5.7.23 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Ben Skeggs <bskeggs@redhat.com>

    commit 182b17c8dc4e83aab000ce86587b6810e515da87 upstream.

    After a vmalloc failure in ttm_dma_tt_alloc_page_directory(),
    ttm_dma_tt_init() will call ttm_tt_destroy() to cleanup, and end up
    inside the driver's unpopulate() hook when populate() has never yet
    been called.

    On nouveau, the first issue to be hit because of this is that
    dma_address[] may be a NULL pointer. After working around this,
    ttm_pool_unpopulate() may potentially hit the same issue with
    the pages[] array.

    It seems to make more sense to avoid calling unpopulate on already
    unpopulated TTMs than to add checks to all the implementations.

    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    drivers/gpu/drm/ttm/ttm_tt.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c
    index fa09daf..ea10bbe 100644
    --- a/drivers/gpu/drm/ttm/ttm_tt.c
    +++ b/drivers/gpu/drm/ttm/ttm_tt.c
    @@ -170,7 +170,7 @@ void ttm_tt_destroy(struct ttm_tt *ttm)
    ttm_tt_unbind(ttm);
    }

    - if (likely(ttm->pages != NULL)) {
    + if (ttm->state == tt_unbound) {
    ttm->bdev->driver->ttm_tt_unpopulate(ttm);
    }

    --
    1.8.3.2


    \
     
     \ /
      Last update: 2013-10-11 13:41    [W:2.064 / U:0.764 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site