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 |
