nvme-core: fix a memory leak in nvme_ns_info_from_identify()
authorMaurizio Lombardi <mlombard@redhat.com>
Thu, 23 Nov 2023 14:07:41 +0000 (15:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 20 Jan 2024 10:51:38 +0000 (11:51 +0100)
[ Upstream commit e3139cef8257fcab1725441e2fd5fd0ccb5481b1 ]

In case of error, free the nvme_id_ns structure that was allocated
by nvme_identify_ns().

Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/nvme/host/core.c

index b32e3cf..2129913 100644 (file)
@@ -1479,7 +1479,8 @@ static int nvme_ns_info_from_identify(struct nvme_ctrl *ctrl,
        if (id->ncap == 0) {
                /* namespace not allocated or attached */
                info->is_removed = true;
-               return -ENODEV;
+               ret = -ENODEV;
+               goto error;
        }
 
        info->anagrpid = id->anagrpid;
@@ -1497,8 +1498,10 @@ static int nvme_ns_info_from_identify(struct nvme_ctrl *ctrl,
                    !memchr_inv(ids->nguid, 0, sizeof(ids->nguid)))
                        memcpy(ids->nguid, id->nguid, sizeof(ids->nguid));
        }
+
+error:
        kfree(id);
-       return 0;
+       return ret;
 }
 
 static int nvme_ns_info_from_id_cs_indep(struct nvme_ctrl *ctrl,