|
@@ -140,14 +140,16 @@ int drm_open(struct inode *inode, struct file *filp)
|
|
|
spin_unlock(&dev->count_lock);
|
|
|
}
|
|
|
out:
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- if (minor->type == DRM_MINOR_LEGACY) {
|
|
|
- BUG_ON((dev->dev_mapping != NULL) &&
|
|
|
- (dev->dev_mapping != inode->i_mapping));
|
|
|
- if (dev->dev_mapping == NULL)
|
|
|
- dev->dev_mapping = inode->i_mapping;
|
|
|
+ if (!retcode) {
|
|
|
+ mutex_lock(&dev->struct_mutex);
|
|
|
+ if (minor->type == DRM_MINOR_LEGACY) {
|
|
|
+ if (dev->dev_mapping == NULL)
|
|
|
+ dev->dev_mapping = inode->i_mapping;
|
|
|
+ else if (dev->dev_mapping != inode->i_mapping)
|
|
|
+ retcode = -ENODEV;
|
|
|
+ }
|
|
|
+ mutex_unlock(&dev->struct_mutex);
|
|
|
}
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
|
|
|
return retcode;
|
|
|
}
|