winsys/radeon: Do not deinit the pb cache if it was not initialized
authorNiels Ole Salscheider <niels_ole@salscheider-online.de>
Fri, 29 Jan 2016 21:48:57 +0000 (22:48 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 2 Feb 2016 20:11:15 +0000 (21:11 +0100)
This fixes a crash in pb_cache_release_all_buffers.

Signed-off-by: Niels Ole Salscheider <niels_ole@salscheider-online.de>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/winsys/radeon/drm/radeon_drm_winsys.c

index 8a1ed3a..4823bf3 100644 (file)
@@ -742,7 +742,7 @@ radeon_drm_winsys_create(int fd, radeon_screen_create_t screen_create)
     ws->fd = dup(fd);
 
     if (!do_winsys_init(ws))
-        goto fail;
+        goto fail1;
 
     pb_cache_init(&ws->bo_cache, 500000, 2.0f, 0,
                   MIN2(ws->info.vram_size, ws->info.gart_size),
@@ -812,8 +812,9 @@ radeon_drm_winsys_create(int fd, radeon_screen_create_t screen_create)
     return &ws->base;
 
 fail:
-    pipe_mutex_unlock(fd_tab_mutex);
     pb_cache_deinit(&ws->bo_cache);
+fail1:
+    pipe_mutex_unlock(fd_tab_mutex);
     if (ws->surf_man)
         radeon_surface_manager_free(ws->surf_man);
     if (ws->fd >= 0)