Loading drivers/gpu/drm/msm/msm_drv.c +24 −6 Original line number Diff line number Diff line /* * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark <robdclark@gmail.com> * Loading Loading @@ -97,6 +97,8 @@ static void msm_drm_helper_hotplug_event(struct drm_device *dev) kfree(event_string); } static DEFINE_MUTEX(msm_release_lock); static void msm_fb_output_poll_changed(struct drm_device *dev) { struct msm_drm_private *priv = NULL; Loading Loading @@ -1849,12 +1851,24 @@ static int msm_ioctl_submitqueue_close(struct drm_device *dev, void *data, int msm_release(struct inode *inode, struct file *filp) { struct drm_file *file_priv = filp->private_data; struct drm_minor *minor = file_priv->minor; struct drm_device *dev = minor->dev; struct msm_drm_private *priv = dev->dev_private; struct drm_file *file_priv; struct drm_minor *minor; struct drm_device *dev; struct msm_drm_private *priv; struct msm_drm_event *v, *vt; unsigned long flags; int ret = 0; mutex_lock(&msm_release_lock); file_priv = filp->private_data; if (!file_priv) { ret = -EINVAL; goto end; } minor = file_priv->minor; dev = minor->dev; priv = dev->dev_private; spin_lock_irqsave(&dev->event_lock, flags); list_for_each_entry_safe(v, vt, &priv->client_event_list, base.link) { Loading @@ -1866,7 +1880,11 @@ int msm_release(struct inode *inode, struct file *filp) } spin_unlock_irqrestore(&dev->event_lock, flags); return drm_release(inode, filp); ret = drm_release(inode, filp); filp->private_data = NULL; end: mutex_unlock(&msm_release_lock); return ret; } /** Loading Loading
drivers/gpu/drm/msm/msm_drv.c +24 −6 Original line number Diff line number Diff line /* * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark <robdclark@gmail.com> * Loading Loading @@ -97,6 +97,8 @@ static void msm_drm_helper_hotplug_event(struct drm_device *dev) kfree(event_string); } static DEFINE_MUTEX(msm_release_lock); static void msm_fb_output_poll_changed(struct drm_device *dev) { struct msm_drm_private *priv = NULL; Loading Loading @@ -1849,12 +1851,24 @@ static int msm_ioctl_submitqueue_close(struct drm_device *dev, void *data, int msm_release(struct inode *inode, struct file *filp) { struct drm_file *file_priv = filp->private_data; struct drm_minor *minor = file_priv->minor; struct drm_device *dev = minor->dev; struct msm_drm_private *priv = dev->dev_private; struct drm_file *file_priv; struct drm_minor *minor; struct drm_device *dev; struct msm_drm_private *priv; struct msm_drm_event *v, *vt; unsigned long flags; int ret = 0; mutex_lock(&msm_release_lock); file_priv = filp->private_data; if (!file_priv) { ret = -EINVAL; goto end; } minor = file_priv->minor; dev = minor->dev; priv = dev->dev_private; spin_lock_irqsave(&dev->event_lock, flags); list_for_each_entry_safe(v, vt, &priv->client_event_list, base.link) { Loading @@ -1866,7 +1880,11 @@ int msm_release(struct inode *inode, struct file *filp) } spin_unlock_irqrestore(&dev->event_lock, flags); return drm_release(inode, filp); ret = drm_release(inode, filp); filp->private_data = NULL; end: mutex_unlock(&msm_release_lock); return ret; } /** Loading