Skip to content

Commit

Permalink
drm: Fix memory leak in drm_mode_setcrtc()
Browse files Browse the repository at this point in the history
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.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
  • Loading branch information
Ville Syrjälä authored and Dave Airlie committed Mar 15, 2012
1 parent 1dd6c8b commit ee34ab5
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions drivers/gpu/drm/drm_crtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit ee34ab5

Please sign in to comment.