diff options
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/drm_fops.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c index 2ca8df8b6102..3a652a65546f 100644 --- a/drivers/gpu/drm/drm_fops.c +++ b/drivers/gpu/drm/drm_fops.c | |||
@@ -135,15 +135,9 @@ int drm_open(struct inode *inode, struct file *filp) | |||
135 | retcode = drm_open_helper(inode, filp, dev); | 135 | retcode = drm_open_helper(inode, filp, dev); |
136 | if (!retcode) { | 136 | if (!retcode) { |
137 | atomic_inc(&dev->counts[_DRM_STAT_OPENS]); | 137 | atomic_inc(&dev->counts[_DRM_STAT_OPENS]); |
138 | spin_lock(&dev->count_lock); | 138 | if (!dev->open_count++) |
139 | if (!dev->open_count++) { | ||
140 | spin_unlock(&dev->count_lock); | ||
141 | retcode = drm_setup(dev); | 139 | retcode = drm_setup(dev); |
142 | goto out; | ||
143 | } | ||
144 | spin_unlock(&dev->count_lock); | ||
145 | } | 140 | } |
146 | out: | ||
147 | if (!retcode) { | 141 | if (!retcode) { |
148 | mutex_lock(&dev->struct_mutex); | 142 | mutex_lock(&dev->struct_mutex); |
149 | if (minor->type == DRM_MINOR_LEGACY) { | 143 | if (minor->type == DRM_MINOR_LEGACY) { |
@@ -570,18 +564,14 @@ int drm_release(struct inode *inode, struct file *filp) | |||
570 | */ | 564 | */ |
571 | 565 | ||
572 | atomic_inc(&dev->counts[_DRM_STAT_CLOSES]); | 566 | atomic_inc(&dev->counts[_DRM_STAT_CLOSES]); |
573 | spin_lock(&dev->count_lock); | ||
574 | if (!--dev->open_count) { | 567 | if (!--dev->open_count) { |
575 | if (atomic_read(&dev->ioctl_count)) { | 568 | if (atomic_read(&dev->ioctl_count)) { |
576 | DRM_ERROR("Device busy: %d\n", | 569 | DRM_ERROR("Device busy: %d\n", |
577 | atomic_read(&dev->ioctl_count)); | 570 | atomic_read(&dev->ioctl_count)); |
578 | retcode = -EBUSY; | 571 | retcode = -EBUSY; |
579 | goto out; | 572 | } else |
580 | } | 573 | retcode = drm_lastclose(dev); |
581 | retcode = drm_lastclose(dev); | ||
582 | } | 574 | } |
583 | out: | ||
584 | spin_unlock(&dev->count_lock); | ||
585 | mutex_unlock(&drm_global_mutex); | 575 | mutex_unlock(&drm_global_mutex); |
586 | 576 | ||
587 | return retcode; | 577 | return retcode; |