bnxt_en: The caller of bnxt_alloc_ctx_mem() should always free bp->ctx
authorMichael Chan <michael.chan@broadcom.com>
Mon, 20 Nov 2023 23:43:53 +0000 (15:43 -0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 22 Nov 2023 01:32:47 +0000 (17:32 -0800)
bnxt_alloc_ctx_mem() calls bnxt_hwrm_func_backing_store_qcaps() to
allocate the memory for bp->ctx.  Initialize bp->ctx with the allocated
memory and let the caller free it during unwind.  The unwind logic is
already there, we just need to always set bp->ctx to the allocated
memory so the caller will always free it.  This simplifies the logic
and makes it easier to expand on the backing store logic.

Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Link: https://lore.kernel.org/r/20231120234405.194542-2-michael.chan@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index e6ac1bd21bb3eb92ad42bf3f20046eda5693dd85..6b19d5b8d95a8d6c0e7ad8744b624d694aab585e 100644 (file)
@@ -7233,6 +7233,8 @@ static int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp)
                        rc = -ENOMEM;
                        goto ctx_err;
                }
+               bp->ctx = ctx;
+
                ctx->qp_max_entries = le32_to_cpu(resp->qp_max_entries);
                ctx->qp_min_qp1_entries = le16_to_cpu(resp->qp_min_qp1_entries);
                ctx->qp_max_l2_entries = le16_to_cpu(resp->qp_max_l2_entries);
@@ -7276,13 +7278,11 @@ static int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp)
                tqm_rings = ctx->tqm_fp_rings_count + BNXT_MAX_TQM_SP_RINGS;
                ctx_pg = kcalloc(tqm_rings, sizeof(*ctx_pg), GFP_KERNEL);
                if (!ctx_pg) {
-                       kfree(ctx);
                        rc = -ENOMEM;
                        goto ctx_err;
                }
                for (i = 0; i < tqm_rings; i++, ctx_pg++)
                        ctx->tqm_mem[i] = ctx_pg;
-               bp->ctx = ctx;
        } else {
                rc = 0;
        }