]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
nvmet-loop: fix possible leakage during error flow
authorMax Gurtovoy <maxg@mellanox.com>
Sun, 13 Oct 2019 16:57:37 +0000 (19:57 +0300)
committerKeith Busch <kbusch@kernel.org>
Tue, 15 Oct 2019 13:47:28 +0000 (22:47 +0900)
During nvme_loop_queue_rq error flow, one must call nvme_cleanup_cmd since
it's symmetric to nvme_setup_cmd.

Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/loop.c

index 748a39fca771408717d18dc1c61e4723d62c6078..11f5aea97d1b1f704d30897d6dc3e2f42d86a0a0 100644 (file)
@@ -157,8 +157,10 @@ static blk_status_t nvme_loop_queue_rq(struct blk_mq_hw_ctx *hctx,
                iod->sg_table.sgl = iod->first_sgl;
                if (sg_alloc_table_chained(&iod->sg_table,
                                blk_rq_nr_phys_segments(req),
-                               iod->sg_table.sgl, SG_CHUNK_SIZE))
+                               iod->sg_table.sgl, SG_CHUNK_SIZE)) {
+                       nvme_cleanup_cmd(req);
                        return BLK_STS_RESOURCE;
+               }
 
                iod->req.sg = iod->sg_table.sgl;
                iod->req.sg_cnt = blk_rq_map_sg(req->q, req, iod->sg_table.sgl);