diff mbox series

[v2,1/1] scsi: lpfc: add null check of kzalloc in lpfc_sli4_cgn_params_read

Message ID 20230228044336.5195-1-justintee8345@gmail.com (mailing list archive)
State Accepted
Commit 312320b0e0ec21249a17645683fe5304d796aec1
Headers show
Series [v2,1/1] scsi: lpfc: add null check of kzalloc in lpfc_sli4_cgn_params_read | expand

Commit Message

Justin Tee Feb. 28, 2023, 4:43 a.m. UTC
If kzalloc fails in lpfc_sli4_cgn_params_read, then we rely on
lpfc_read_object's routine to null check pdata.

Currently, an early return error is thrown from lpfc_read_object to
protect us from null ptr dereference, but the errno code is -ENODEV.

Change the errno code to a more appropriate -ENOMEM.

Reported-by: Kang Chen <void0red@gmail.com>
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
---
 drivers/scsi/lpfc/lpfc_init.c | 2 ++
 drivers/scsi/lpfc/lpfc_sli.c  | 4 ----
 2 files changed, 2 insertions(+), 4 deletions(-)

Comments

Martin K. Petersen March 7, 2023, 2:57 a.m. UTC | #1
On Mon, 27 Feb 2023 20:43:36 -0800, Justin Tee wrote:

> If kzalloc fails in lpfc_sli4_cgn_params_read, then we rely on
> lpfc_read_object's routine to null check pdata.
> 
> Currently, an early return error is thrown from lpfc_read_object to
> protect us from null ptr dereference, but the errno code is -ENODEV.
> 
> Change the errno code to a more appropriate -ENOMEM.
> 
> [...]

Applied to 6.3/scsi-fixes, thanks!

[1/1] scsi: lpfc: add null check of kzalloc in lpfc_sli4_cgn_params_read
      https://git.kernel.org/mkp/scsi/c/312320b0e0ec
diff mbox series

Patch

diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 7573708..def0b9a 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -7290,6 +7290,8 @@  void lpfc_host_attrib_init(struct Scsi_Host *shost)
 	/* Find out if the FW has a new set of congestion parameters. */
 	len = sizeof(struct lpfc_cgn_param);
 	pdata = kzalloc(len, GFP_KERNEL);
+	if (!pdata)
+		return -ENOMEM;
 	ret = lpfc_read_object(phba, (char *)LPFC_PORT_CFG_NAME,
 			       pdata, len);
 
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index c5b69f3..c5ad46f 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -22109,10 +22109,6 @@  struct lpfc_io_buf *lpfc_get_io_buf(struct lpfc_hba *phba,
 	struct lpfc_dmabuf *pcmd;
 	u32 rd_object_name[LPFC_MBX_OBJECT_NAME_LEN_DW] = {0};
 
-	/* sanity check on queue memory */
-	if (!datap)
-		return -ENODEV;
-
 	mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
 	if (!mbox)
 		return -ENOMEM;