From: Emil Velikov <emil.veli...@collabora.com>

Will be used to plug an existing memory leak.

Signed-off-by: Emil Velikov <emil.veli...@collabora.com>
---
 drivers/gpu/drm/drm_file.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
index ffa8dc35515f..149506a20bdc 100644
--- a/drivers/gpu/drm/drm_file.c
+++ b/drivers/gpu/drm/drm_file.c
@@ -262,6 +262,18 @@ void drm_file_free(struct drm_file *file)
        kfree(file);
 }
 
+static void drm_close_helper(struct file *filp)
+{
+       struct drm_file *file_priv = filp->private_data;
+       struct drm_device *dev = file_priv->minor->dev;
+
+       mutex_lock(&dev->filelist_mutex);
+       list_del(&file_priv->lhead);
+       mutex_unlock(&dev->filelist_mutex);
+
+       drm_file_free(file_priv);
+}
+
 static int drm_setup(struct drm_device * dev)
 {
        int ret;
@@ -473,11 +485,7 @@ int drm_release(struct inode *inode, struct file *filp)
 
        DRM_DEBUG("open_count = %d\n", dev->open_count);
 
-       mutex_lock(&dev->filelist_mutex);
-       list_del(&file_priv->lhead);
-       mutex_unlock(&dev->filelist_mutex);
-
-       drm_file_free(file_priv);
+       drm_close_helper(filp);
 
        if (!--dev->open_count) {
                drm_lastclose(dev);
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to