aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm/msm_debugfs.c
diff options
context:
space:
mode:
authorJohan Hovold <[email protected]>2019-10-10 13:13:30 +0000
committerSean Paul <[email protected]>2019-11-13 20:34:15 +0000
commita64fc11b9a520c55ca34d82e5ca32274f49b6b15 (patch)
treed9bd296bb02364f5d1d409ec13ba1fa8209c9ae1 /drivers/gpu/drm/msm/msm_debugfs.c
parentMerge tag 'drm-misc-next-fixes-2019-11-06' of git://anongit.freedesktop.org/d... (diff)
downloadkernel-a64fc11b9a520c55ca34d82e5ca32274f49b6b15.tar.gz
kernel-a64fc11b9a520c55ca34d82e5ca32274f49b6b15.zip
drm/msm: fix memleak on release
If a process is interrupted while accessing the "gpu" debugfs file and the drm device struct_mutex is contended, release() could return early and fail to free related resources. Note that the return value from release() is ignored. Fixes: 4f776f4511c7 ("drm/msm/gpu: Convert the GPU show function to use the GPU state") Cc: stable <[email protected]> # 4.18 Cc: Jordan Crouse <[email protected]> Cc: Rob Clark <[email protected]> Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Johan Hovold <[email protected]> Signed-off-by: Sean Paul <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Diffstat (limited to 'drivers/gpu/drm/msm/msm_debugfs.c')
-rw-r--r--drivers/gpu/drm/msm/msm_debugfs.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_debugfs.c
index 6be879578140..1c74381a4fc9 100644
--- a/drivers/gpu/drm/msm/msm_debugfs.c
+++ b/drivers/gpu/drm/msm/msm_debugfs.c
@@ -47,12 +47,8 @@ static int msm_gpu_release(struct inode *inode, struct file *file)
struct msm_gpu_show_priv *show_priv = m->private;
struct msm_drm_private *priv = show_priv->dev->dev_private;
struct msm_gpu *gpu = priv->gpu;
- int ret;
-
- ret = mutex_lock_interruptible(&show_priv->dev->struct_mutex);
- if (ret)
- return ret;
+ mutex_lock(&show_priv->dev->struct_mutex);
gpu->funcs->gpu_state_put(show_priv->state);
mutex_unlock(&show_priv->dev->struct_mutex);