Skip to content

Commit 9ee5994

Browse files
bmarreddykuba-moo
authored andcommitted
bng_en: make bnge_alloc_ring() self-unwind on failure
Ensure bnge_alloc_ring() frees any intermediate allocations when it fails. This enables later patches to rely on this self-unwinding behavior. Signed-off-by: Bhargava Marreddy <[email protected]> Reviewed-by: Vikas Gupta <[email protected]> Reviewed-by: Rajashekar Hudumula <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent c5aaf02 commit 9ee5994

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/net/ethernet/broadcom/bnge/bnge_rmem.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ int bnge_alloc_ring(struct bnge_dev *bd, struct bnge_ring_mem_info *rmem)
9595
&rmem->dma_arr[i],
9696
GFP_KERNEL);
9797
if (!rmem->pg_arr[i])
98-
return -ENOMEM;
98+
goto err_free_ring;
9999

100100
if (rmem->ctx_mem)
101101
bnge_init_ctx_mem(rmem->ctx_mem, rmem->pg_arr[i],
@@ -116,10 +116,13 @@ int bnge_alloc_ring(struct bnge_dev *bd, struct bnge_ring_mem_info *rmem)
116116
if (rmem->vmem_size) {
117117
*rmem->vmem = vzalloc(rmem->vmem_size);
118118
if (!(*rmem->vmem))
119-
return -ENOMEM;
119+
goto err_free_ring;
120120
}
121-
122121
return 0;
122+
123+
err_free_ring:
124+
bnge_free_ring(bd, rmem);
125+
return -ENOMEM;
123126
}
124127

125128
static int bnge_alloc_ctx_one_lvl(struct bnge_dev *bd,

0 commit comments

Comments
 (0)