diff options
Diffstat (limited to 'drivers/gpu/drm/drm_fops.c')
-rw-r--r-- | drivers/gpu/drm/drm_fops.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c index f2285237df49..3a6c439652a5 100644 --- a/drivers/gpu/drm/drm_fops.c +++ b/drivers/gpu/drm/drm_fops.c | |||
@@ -133,11 +133,21 @@ int drm_open(struct inode *inode, struct file *filp) | |||
133 | spin_lock(&dev->count_lock); | 133 | spin_lock(&dev->count_lock); |
134 | if (!dev->open_count++) { | 134 | if (!dev->open_count++) { |
135 | spin_unlock(&dev->count_lock); | 135 | spin_unlock(&dev->count_lock); |
136 | return drm_setup(dev); | 136 | retcode = drm_setup(dev); |
137 | goto out; | ||
137 | } | 138 | } |
138 | spin_unlock(&dev->count_lock); | 139 | spin_unlock(&dev->count_lock); |
139 | } | 140 | } |
140 | 141 | ||
142 | out: | ||
143 | mutex_lock(&dev->struct_mutex); | ||
144 | if (dev->dev_mapping == NULL) | ||
145 | dev->dev_mapping = inode->i_mapping; | ||
146 | else if (dev->dev_mapping != inode->i_mapping) | ||
147 | WARN(1, "dev->dev_mapping not inode mapping (%p expected %p)\n", | ||
148 | dev->dev_mapping, inode->i_mapping); | ||
149 | mutex_unlock(&dev->struct_mutex); | ||
150 | |||
141 | return retcode; | 151 | return retcode; |
142 | } | 152 | } |
143 | EXPORT_SYMBOL(drm_open); | 153 | EXPORT_SYMBOL(drm_open); |