diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2011-01-13 12:38:05 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2011-01-13 12:38:05 +1100 |
commit | 635b537c874a78d3debb1173cfcd91c7fb129754 (patch) | |
tree | 9c082250956b38c9ab5d620b16cc48182c4e8c9d /drivers/char | |
parent | 1f3037afb51940eaa358dde6cba4d39aa1764193 (diff) | |
parent | 5fce009772d72cbf425e4894c2def78f06a2ec91 (diff) |
Merge remote branch 'block/for-next'
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/raw.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/char/raw.c b/drivers/char/raw.c index bfe25ea9766b..b4b9d5a47885 100644 --- a/drivers/char/raw.c +++ b/drivers/char/raw.c @@ -65,15 +65,12 @@ static int raw_open(struct inode *inode, struct file *filp) if (!bdev) goto out; igrab(bdev->bd_inode); - err = blkdev_get(bdev, filp->f_mode); + err = blkdev_get(bdev, filp->f_mode | FMODE_EXCL, raw_open); if (err) goto out; - err = bd_claim(bdev, raw_open); - if (err) - goto out1; err = set_blocksize(bdev, bdev_logical_block_size(bdev)); if (err) - goto out2; + goto out1; filp->f_flags |= O_DIRECT; filp->f_mapping = bdev->bd_inode->i_mapping; if (++raw_devices[minor].inuse == 1) @@ -83,10 +80,8 @@ static int raw_open(struct inode *inode, struct file *filp) mutex_unlock(&raw_mutex); return 0; -out2: - bd_release(bdev); out1: - blkdev_put(bdev, filp->f_mode); + blkdev_put(bdev, filp->f_mode | FMODE_EXCL); out: mutex_unlock(&raw_mutex); return err; @@ -110,8 +105,7 @@ static int raw_release(struct inode *inode, struct file *filp) } mutex_unlock(&raw_mutex); - bd_release(bdev); - blkdev_put(bdev, filp->f_mode); + blkdev_put(bdev, filp->f_mode | FMODE_EXCL); return 0; } |