]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
nvme: fix bio leak on mapping failure
authorKeith Busch <kbusch@kernel.org>
Wed, 6 May 2026 13:16:02 +0000 (06:16 -0700)
committerKeith Busch <kbusch@kernel.org>
Mon, 11 May 2026 15:07:39 +0000 (08:07 -0700)
The local bio is always NULL, so we'd leak the bio if the integrity
mapping failed. Just get it directly from the request.

Fixes: d0d1d522316e91f ("blk-map: provide the bdev to bio if one exists")
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/ioctl.c

index e232188ccd0268be8b2807b0358951ef82712cf4..08889b20e5d8c4658432775b874ade12404f2338 100644 (file)
@@ -121,7 +121,6 @@ static int nvme_map_user_request(struct request *req, u64 ubuffer,
        struct block_device *bdev = ns ? ns->disk->part0 : NULL;
        bool supports_metadata = bdev && blk_get_integrity(bdev->bd_disk);
        bool has_metadata = meta_buffer && meta_len;
-       struct bio *bio = NULL;
        int ret;
 
        if (has_metadata && !supports_metadata)
@@ -145,8 +144,8 @@ static int nvme_map_user_request(struct request *req, u64 ubuffer,
        return ret;
 
 out_unmap:
-       if (bio)
-               blk_rq_unmap_user(bio);
+       if (req->bio)
+               blk_rq_unmap_user(req->bio);
        return ret;
 }