]> git.itanic.dy.fi Git - linux-stable/commitdiff
block: Fix a memory leak in bdev_open_by_dev()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 24 Dec 2023 17:36:42 +0000 (18:36 +0100)
committerChristian Brauner <brauner@kernel.org>
Thu, 28 Dec 2023 10:48:17 +0000 (11:48 +0100)
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>
block/bdev.c

index fc8d28d77495f8ca8ee9ea221f2d6d52e47eb16f..de76320ef9dfe34fc33c5821c1c4ec78886ffda7 100644 (file)
@@ -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) {