OSDN Git Service

freedreno: fix device close issues
authorRob Clark <robclark@freedesktop.org>
Thu, 23 Mar 2017 18:58:38 +0000 (14:58 -0400)
committerRob Clark <robclark@freedesktop.org>
Thu, 23 Mar 2017 19:22:30 +0000 (15:22 -0400)
Move closing the fd to after subclass ->destroy() (since it might want
to delete gem bo's, etc), and actually free() the fd_device object.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
freedreno/freedreno_device.c

index fcbf140..dba7ec4 100644 (file)
@@ -115,9 +115,10 @@ static void fd_device_del_impl(struct fd_device *dev)
        fd_bo_cache_cleanup(&dev->bo_cache, 0);
        drmHashDestroy(dev->handle_table);
        drmHashDestroy(dev->name_table);
+       dev->funcs->destroy(dev);
        if (dev->closefd)
                close(dev->fd);
-       dev->funcs->destroy(dev);
+       free(dev);
 }
 
 drm_private void fd_device_del_locked(struct fd_device *dev)