Commit e5c7fb40 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

block: move the devcgroup_inode_permission call to blkdev_get

devcgroup_inode_permission is never called for the recusive case, so
move it out into blkdev_get.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 46d40cfa
......@@ -1449,22 +1449,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, void *holder,
struct gendisk *disk;
int ret;
int partno;
int perm = 0;
bool first_open = false, unblock_events = true, need_restart;
if (mode & FMODE_READ)
perm |= MAY_READ;
if (mode & FMODE_WRITE)
perm |= MAY_WRITE;
/*
* hooks: /n/, see "layering violations".
*/
if (!for_part) {
ret = devcgroup_inode_permission(bdev->bd_inode, perm);
if (ret != 0)
return ret;
}
restart:
need_restart = false;
ret = -ENXIO;
......@@ -1637,12 +1623,24 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, void *holder,
*/
int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)
{
int res;
int ret, perm = 0;
res =__blkdev_get(bdev, mode, holder, 0);
if (res)
bdput(bdev);
return res;
if (mode & FMODE_READ)
perm |= MAY_READ;
if (mode & FMODE_WRITE)
perm |= MAY_WRITE;
ret = devcgroup_inode_permission(bdev->bd_inode, perm);
if (ret)
goto bdput;
ret =__blkdev_get(bdev, mode, holder, 0);
if (ret)
goto bdput;
return 0;
bdput:
bdput(bdev);
return ret;
}
EXPORT_SYMBOL(blkdev_get);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment