Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea39f835 authored by Kristian Høgsberg's avatar Kristian Høgsberg Committed by Dave Airlie
Browse files

drm: Release user fbs in drm_release



Avoids leaking fbs and associated buffers on release.

Signed-off-by: default avatarKristian Høgsberg <krh@redhat.com>
Tested-by: default avatarTested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
Signed-off-by: default avatarDave Airlie <airlied@linux.ie>
parent b4476f52
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1741,9 +1741,8 @@ out:
 * RETURNS:
 * Zero on success, errno on failure.
 */
void drm_fb_release(struct file *filp)
void drm_fb_release(struct drm_file *priv)
{
	struct drm_file *priv = filp->private_data;
	struct drm_device *dev = priv->minor->dev;
	struct drm_framebuffer *fb, *tfb;

+3 −0
Original line number Diff line number Diff line
@@ -457,6 +457,9 @@ int drm_release(struct inode *inode, struct file *filp)
	if (dev->driver->driver_features & DRIVER_GEM)
		drm_gem_release(dev, file_priv);

	if (dev->driver->driver_features & DRIVER_MODESET)
		drm_fb_release(file_priv);

	mutex_lock(&dev->ctxlist_mutex);
	if (!list_empty(&dev->ctxlist)) {
		struct drm_ctx_list *pos, *n;
+1 −1
Original line number Diff line number Diff line
@@ -609,7 +609,7 @@ extern char *drm_get_dvi_i_subconnector_name(int val);
extern char *drm_get_dvi_i_select_name(int val);
extern char *drm_get_tv_subconnector_name(int val);
extern char *drm_get_tv_select_name(int val);
extern void drm_fb_release(struct file *filp);
extern void drm_fb_release(struct drm_file *file_priv);
extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group);
extern struct edid *drm_get_edid(struct drm_connector *connector,
				 struct i2c_adapter *adapter);