]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
bnxt_en: Fix coredump logic to free allocated buffer
authorShruti Parab <shruti.parab@broadcom.com>
Mon, 28 Apr 2025 22:59:01 +0000 (15:59 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 May 2025 07:39:39 +0000 (09:39 +0200)
[ Upstream commit ea9376cf68230e05492f22ca45d329f16e262c7b ]

When handling HWRM_DBG_COREDUMP_LIST FW command in
bnxt_hwrm_dbg_dma_data(), the allocated buffer info->dest_buf is
not freed in the error path.  In the normal path, info->dest_buf
is assigned to coredump->data and it will eventually be freed after
the coredump is collected.

Free info->dest_buf immediately inside bnxt_hwrm_dbg_dma_data() in
the error path.

Fixes: c74751f4c392 ("bnxt_en: Return error if FW returns more data than dump length")
Reported-by: Michael Chan <michael.chan@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Shruti Parab <shruti.parab@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c

index 156f76bcea7eb22ce4d9a49fa7847010c9557b35..e0e7bfaf860b7ce59f68889d4c63c30b806bda72 100644 (file)
@@ -72,6 +72,11 @@ static int bnxt_hwrm_dbg_dma_data(struct bnxt *bp, void *msg,
                                memcpy(info->dest_buf + off, dma_buf, len);
                        } else {
                                rc = -ENOBUFS;
+                               if (cmn_req->req_type ==
+                                   cpu_to_le16(HWRM_DBG_COREDUMP_LIST)) {
+                                       kfree(info->dest_buf);
+                                       info->dest_buf = NULL;
+                               }
                                break;
                        }
                }