diff options
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r-- | fs/block_dev.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 10d8a0aa871a..aff54219e049 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -271,7 +271,7 @@ static void bdev_destroy_inode(struct inode *inode) | |||
271 | kmem_cache_free(bdev_cachep, bdi); | 271 | kmem_cache_free(bdev_cachep, bdi); |
272 | } | 272 | } |
273 | 273 | ||
274 | static void init_once(struct kmem_cache * cachep, void *foo) | 274 | static void init_once(void *foo) |
275 | { | 275 | { |
276 | struct bdev_inode *ei = (struct bdev_inode *) foo; | 276 | struct bdev_inode *ei = (struct bdev_inode *) foo; |
277 | struct block_device *bdev = &ei->bdev; | 277 | struct block_device *bdev = &ei->bdev; |
@@ -941,8 +941,10 @@ static int do_open(struct block_device *bdev, struct file *file, int for_part) | |||
941 | * hooks: /n/, see "layering violations". | 941 | * hooks: /n/, see "layering violations". |
942 | */ | 942 | */ |
943 | ret = devcgroup_inode_permission(bdev->bd_inode, perm); | 943 | ret = devcgroup_inode_permission(bdev->bd_inode, perm); |
944 | if (ret != 0) | 944 | if (ret != 0) { |
945 | bdput(bdev); | ||
945 | return ret; | 946 | return ret; |
947 | } | ||
946 | 948 | ||
947 | ret = -ENXIO; | 949 | ret = -ENXIO; |
948 | file->f_mapping = bdev->bd_inode->i_mapping; | 950 | file->f_mapping = bdev->bd_inode->i_mapping; |
@@ -1234,6 +1236,7 @@ fail: | |||
1234 | bdev = ERR_PTR(error); | 1236 | bdev = ERR_PTR(error); |
1235 | goto out; | 1237 | goto out; |
1236 | } | 1238 | } |
1239 | EXPORT_SYMBOL(lookup_bdev); | ||
1237 | 1240 | ||
1238 | /** | 1241 | /** |
1239 | * open_bdev_excl - open a block device by name and set it up for use | 1242 | * open_bdev_excl - open a block device by name and set it up for use |