bnxt_en: Fix memory leak in bnxt_hwrm_get_rings()
bnxt_hwrm_get_rings() can abort and return error when there are not enough ring resources. It aborts without releasing the HWRM DMA buffer, causing a dma_pool_destroy warning when the driver is unloaded: bnxt_en 0000:99:00.0: dma_pool_destroy bnxt_hwrm, 000000005b089ba8 busy Fixes: f1e50b276d37 ("bnxt_en: Fix trimming of P5 RX and TX rings") Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Link: https://lore.kernel.org/r/20240117234515.226944-3-michael.chan@broadcom.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
3c1069fa42
commit
2ad8e57338
@ -6926,7 +6926,7 @@ static int bnxt_hwrm_get_rings(struct bnxt *bp)
|
||||
if (cp < (rx + tx)) {
|
||||
rc = __bnxt_trim_rings(bp, &rx, &tx, cp, false);
|
||||
if (rc)
|
||||
return rc;
|
||||
goto get_rings_exit;
|
||||
if (bp->flags & BNXT_FLAG_AGG_RINGS)
|
||||
rx <<= 1;
|
||||
hw_resc->resv_rx_rings = rx;
|
||||
@ -6938,8 +6938,9 @@ static int bnxt_hwrm_get_rings(struct bnxt *bp)
|
||||
hw_resc->resv_cp_rings = cp;
|
||||
hw_resc->resv_stat_ctxs = stats;
|
||||
}
|
||||
get_rings_exit:
|
||||
hwrm_req_drop(bp, req);
|
||||
return 0;
|
||||
return rc;
|
||||
}
|
||||
|
||||
int __bnxt_hwrm_get_tx_rings(struct bnxt *bp, u16 fid, int *tx_rings)
|
||||
|
Loading…
x
Reference in New Issue
Block a user