Loading msm/msm_drv.c +22 −4 Original line number Diff line number Diff line Loading @@ -83,6 +83,8 @@ (ktime_compare_safe(exp_ktime, cur_ktime) > 0));\ } while (0) 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 @@ -1487,13 +1489,25 @@ void msm_mode_object_event_notify(struct drm_mode_object *obj, static 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_minor *minor; struct drm_device *dev; struct msm_drm_private *priv; struct msm_drm_event *node, *temp, *tmp_node; u32 count; unsigned long flags; LIST_HEAD(tmp_head); int ret = 0; mutex_lock(&msm_release_lock); 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(node, temp, &priv->client_event_list, Loading Loading @@ -1531,7 +1545,11 @@ static int msm_release(struct inode *inode, struct file *filp) if (drm_is_current_master(file_priv)) msm_preclose(dev, file_priv); return drm_release(inode, filp); ret = drm_release(inode, filp); filp->private_data = NULL; end: mutex_unlock(&msm_release_lock); return ret; } /** Loading Loading
msm/msm_drv.c +22 −4 Original line number Diff line number Diff line Loading @@ -83,6 +83,8 @@ (ktime_compare_safe(exp_ktime, cur_ktime) > 0));\ } while (0) 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 @@ -1487,13 +1489,25 @@ void msm_mode_object_event_notify(struct drm_mode_object *obj, static 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_minor *minor; struct drm_device *dev; struct msm_drm_private *priv; struct msm_drm_event *node, *temp, *tmp_node; u32 count; unsigned long flags; LIST_HEAD(tmp_head); int ret = 0; mutex_lock(&msm_release_lock); 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(node, temp, &priv->client_event_list, Loading Loading @@ -1531,7 +1545,11 @@ static int msm_release(struct inode *inode, struct file *filp) if (drm_is_current_master(file_priv)) msm_preclose(dev, file_priv); return drm_release(inode, filp); ret = drm_release(inode, filp); filp->private_data = NULL; end: mutex_unlock(&msm_release_lock); return ret; } /** Loading