From aa896b66c88f61d93d6a699042e6a693248f23da Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 18 Mar 2010 11:56:54 +0000 Subject: [PATCH] --- yaml --- r: 189351 b: refs/heads/master c: da58405860b992d2bb21ebae5d685fe3204dd3f0 h: refs/heads/master i: 189349: 7919e1291315c8a88deeacbf64dde3be47262842 189347: 8fe808d16cba5b09d7f60b6e3415b6d22f280146 189343: 176b8025d0da0337724299d5573cd78f3601382e v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/drm_fops.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 9034077381d4..45417c9ed862 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fcbc451ba1948fba967198bd150ecbd10bbb7075 +refs/heads/master: da58405860b992d2bb21ebae5d685fe3204dd3f0 diff --git a/trunk/drivers/gpu/drm/drm_fops.c b/trunk/drivers/gpu/drm/drm_fops.c index 08d14df3bb42..4804872f8b19 100644 --- a/trunk/drivers/gpu/drm/drm_fops.c +++ b/trunk/drivers/gpu/drm/drm_fops.c @@ -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; }