bnxt_free_ctx_pg_tbls(bp, &ctx->srq_mem);
        bnxt_free_ctx_pg_tbls(bp, &ctx->qp_mem);
        ctx->flags &= ~BNXT_CTX_FLAG_INITED;
+       kfree(ctx);
+       bp->ctx = NULL;
 }
 
 static int bnxt_alloc_ctx_mem(struct bnxt *bp)
                        if (!test_bit(BNXT_STATE_IN_FW_RESET, &bp->state))
                                bnxt_ulp_stop(bp);
                        bnxt_free_ctx_mem(bp);
-                       kfree(bp->ctx);
-                       bp->ctx = NULL;
                        bnxt_dcb_free(bp);
                        rc = bnxt_fw_init_one(bp);
                        if (rc) {
        if (pci_is_enabled(bp->pdev))
                pci_disable_device(bp->pdev);
        bnxt_free_ctx_mem(bp);
-       kfree(bp->ctx);
-       bp->ctx = NULL;
 }
 
 static bool is_bnxt_fw_ok(struct bnxt *bp)
        bp->fw_health = NULL;
        bnxt_cleanup_pci(bp);
        bnxt_free_ctx_mem(bp);
-       kfree(bp->ctx);
-       bp->ctx = NULL;
        kfree(bp->rss_indir_tbl);
        bp->rss_indir_tbl = NULL;
        bnxt_free_port_stats(bp);
        bp->fw_health = NULL;
        bnxt_cleanup_pci(bp);
        bnxt_free_ctx_mem(bp);
-       kfree(bp->ctx);
-       bp->ctx = NULL;
        kfree(bp->rss_indir_tbl);
        bp->rss_indir_tbl = NULL;
 
        bnxt_hwrm_func_drv_unrgtr(bp);
        pci_disable_device(bp->pdev);
        bnxt_free_ctx_mem(bp);
-       kfree(bp->ctx);
-       bp->ctx = NULL;
        rtnl_unlock();
        return rc;
 }
        if (pci_is_enabled(pdev))
                pci_disable_device(pdev);
        bnxt_free_ctx_mem(bp);
-       kfree(bp->ctx);
-       bp->ctx = NULL;
        rtnl_unlock();
 
        /* Request a slot slot reset. */