• Ben Skeggs's avatar
    drm/ttm: fix the tt_populated check in ttm_tt_destroy() · 182b17c8
    Ben Skeggs authored
    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: default avatarBen Skeggs <bskeggs@redhat.com>
    Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
    Cc: stable@vger.kernel.org
    Cc: Jerome Glisse <jglisse@redhat.com>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    182b17c8
ttm_tt.c 8.94 KB