Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f7a3122 authored by Yuval Mintz's avatar Yuval Mintz Committed by David S. Miller
Browse files

bnx2x: Fix memory leak



There exists an `allocation race' between the CNIC and bnx2x drivers,
in which both drivers allocate the same t2 memory while disregarding a possible
previous allocation.

Additionally, due to the current order of memory releases, some of the
ILT memory in the driver is not released correctly when unloading the driver.

Signed-off-by: default avatarYuval Mintz <yuvalmin@broadcom.com>
Signed-off-by: default avatarAriel Elior <ariele@broadcom.com>
Signed-off-by: default avatarEilon Greenstein <eilong@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f8f4f61a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2934,9 +2934,9 @@ int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode, bool keep_link)
		bnx2x_free_fp_mem_cnic(bp);

	if (IS_PF(bp)) {
		bnx2x_free_mem(bp);
		if (CNIC_LOADED(bp))
			bnx2x_free_mem_cnic(bp);
		bnx2x_free_mem(bp);
	}
	bp->state = BNX2X_STATE_CLOSED;
	bp->cnic_loaded = false;
+2 −2
Original line number Diff line number Diff line
@@ -7786,7 +7786,7 @@ int bnx2x_alloc_mem_cnic(struct bnx2x *bp)
				sizeof(struct
				       host_hc_status_block_e1x));

	if (CONFIGURE_NIC_MODE(bp))
	if (CONFIGURE_NIC_MODE(bp) && !bp->t2)
		/* allocate searcher T2 table, as it wan't allocated before */
		BNX2X_PCI_ALLOC(bp->t2, &bp->t2_mapping, SRC_T2_SZ);

@@ -7809,7 +7809,7 @@ int bnx2x_alloc_mem(struct bnx2x *bp)
{
	int i, allocated, context_size;

	if (!CONFIGURE_NIC_MODE(bp))
	if (!CONFIGURE_NIC_MODE(bp) && !bp->t2)
		/* allocate searcher T2 table */
		BNX2X_PCI_ALLOC(bp->t2, &bp->t2_mapping, SRC_T2_SZ);