[PATCH 06/15] drm: Fix memory leak in drm_mode_setcrtc()

2012-03-13 Thread ville.syrj...@linux.intel.com
From: Ville Syrj?l? 

The mode passed to the .set_config() hook was never freed. The drivers
will make a copy of the mode, so simply free it when done.

Signed-off-by: Ville Syrj?l? 
---
 drivers/gpu/drm/drm_crtc.c |9 +
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index d2e09d9..9ccb92f 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -643,6 +643,9 @@ EXPORT_SYMBOL(drm_mode_create);
  */
 void drm_mode_destroy(struct drm_device *dev, struct drm_display_mode *mode)
 {
+   if (!mode)
+   return;
+
drm_mode_object_put(dev, >base);

kfree(mode);
@@ -1812,6 +1815,11 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
}

mode = drm_mode_create(dev);
+   if (!mode) {
+   ret = -ENOMEM;
+   goto out;
+   }
+
drm_crtc_convert_umode(mode, _req->mode);
drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
}
@@ -1881,6 +1889,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,

 out:
kfree(connector_set);
+   drm_mode_destroy(dev, mode);
mutex_unlock(>mode_config.mutex);
return ret;
 }
-- 
1.7.3.4



[PATCH 06/15] drm: Fix memory leak in drm_mode_setcrtc()

2012-03-13 Thread ville . syrjala
From: Ville Syrjälä ville.syrj...@linux.intel.com

The mode passed to the .set_config() hook was never freed. The drivers
will make a copy of the mode, so simply free it when done.

Signed-off-by: Ville Syrjälä ville.syrj...@linux.intel.com
---
 drivers/gpu/drm/drm_crtc.c |9 +
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index d2e09d9..9ccb92f 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -643,6 +643,9 @@ EXPORT_SYMBOL(drm_mode_create);
  */
 void drm_mode_destroy(struct drm_device *dev, struct drm_display_mode *mode)
 {
+   if (!mode)
+   return;
+
drm_mode_object_put(dev, mode-base);
 
kfree(mode);
@@ -1812,6 +1815,11 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
}
 
mode = drm_mode_create(dev);
+   if (!mode) {
+   ret = -ENOMEM;
+   goto out;
+   }
+
drm_crtc_convert_umode(mode, crtc_req-mode);
drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
}
@@ -1881,6 +1889,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
 
 out:
kfree(connector_set);
+   drm_mode_destroy(dev, mode);
mutex_unlock(dev-mode_config.mutex);
return ret;
 }
-- 
1.7.3.4

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel