summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>2023-12-24 18:36:42 +0100
committerChristian Brauner <brauner@kernel.org>2023-12-28 11:48:17 +0100
commit8ff363ade395e72dc639810b6f59849c743c363e (patch)
tree60a1492a25b8d2c8b6cc0a39f2ef08e9b0e35371
parentsuper: don't bother with WARN_ON_ONCE() (diff)
downloadlinux-8ff363ade395e72dc639810b6f59849c743c363e.tar.xz
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>
-rw-r--r--block/bdev.c6
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) {