nvme-fc: avoid null pointer dereference
authorChaitanya Kulkarni <kch@nvidia.com>
Wed, 30 Nov 2022 21:33:40 +0000 (13:33 -0800)
committerChristoph Hellwig <hch@lst.de>
Tue, 6 Dec 2022 08:27:24 +0000 (09:27 +0100)
Before using dynamically allcoated variable lsop in the
nvme_fc_rcv_ls_req(), add a check for NULL and error out early.

Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/fc.c

index 489f5e7..06bae71 100644 (file)
@@ -1754,9 +1754,18 @@ nvme_fc_rcv_ls_req(struct nvme_fc_remote_port *portptr,
        }
 
        lsop = kzalloc(sizeof(*lsop), GFP_KERNEL);
+       if (!lsop) {
+               dev_info(lport->dev,
+                       "RCV %s LS failed: No memory\n",
+                       (w0->ls_cmd <= NVME_FC_LAST_LS_CMD_VALUE) ?
+                               nvmefc_ls_names[w0->ls_cmd] : "");
+               ret = -ENOMEM;
+               goto out_put;
+       }
+
        lsop->rqstbuf = kzalloc(sizeof(*lsop->rqstbuf), GFP_KERNEL);
        lsop->rspbuf = kzalloc(sizeof(*lsop->rspbuf), GFP_KERNEL);
-       if (!lsop || !lsop->rqstbuf || !lsop->rspbuf) {
+       if (!lsop->rqstbuf || !lsop->rspbuf) {
                dev_info(lport->dev,
                        "RCV %s LS failed: No memory\n",
                        (w0->ls_cmd <= NVME_FC_LAST_LS_CMD_VALUE) ?