diff options
author | Christophe JAILLET <christophe.jaillet@wanadoo.fr> | 2023-12-24 18:36:42 +0100 |
---|---|---|
committer | Christian Brauner <brauner@kernel.org> | 2023-12-28 11:48:17 +0100 |
commit | 8ff363ade395e72dc639810b6f59849c743c363e (patch) | |
tree | 60a1492a25b8d2c8b6cc0a39f2ef08e9b0e35371 /block/bdev.c | |
parent | 63513f8574c5ef481cd6a85b8c71f6f40f7d7957 (diff) | |
download | linux-8ff363ade395e72dc639810b6f59849c743c363e.tar.gz linux-8ff363ade395e72dc639810b6f59849c743c363e.tar.bz2 linux-8ff363ade395e72dc639810b6f59849c743c363e.zip |
block: Fix a memory leak in bdev_open_by_dev()
If we early exit here, 'handle' needs to be freed, or some memory leaks.
Fixes: ed5cc702d311 ("block: Add config option to not allow writing to mounted devices")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/8eaec334781e695810aaa383b55de00ca4ab1352.1703439383.git.christophe.jaillet@wanadoo.fr
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'block/bdev.c')
-rw-r--r-- | block/bdev.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/block/bdev.c b/block/bdev.c index fc8d28d77495..de76320ef9df 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -828,8 +828,10 @@ struct bdev_handle *bdev_open_by_dev(dev_t dev, blk_mode_t mode, void *holder, goto free_handle; /* Blocking writes requires exclusive opener */ - if (mode & BLK_OPEN_RESTRICT_WRITES && !holder) - return ERR_PTR(-EINVAL); + if (mode & BLK_OPEN_RESTRICT_WRITES && !holder) { + ret = -EINVAL; + goto free_handle; + } bdev = blkdev_get_no_open(dev); if (!bdev) { |