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

Commit 69a6025f authored by Rakesh Pillai's avatar Rakesh Pillai Committed by Gerrit - the friendly Code Review server
Browse files

ath10k: fix memory leak in rx ring buffer allocation



The rx ring buffers are added to a hash table if firmare
support full rx reorder. If the full rx reorder support
flag is not set before allocating the rx ring buffers,
none of the buffers are added to the hash table. When we
unload the module, this hash table is checked for freeing
the allocated rx ring buffers. Since none of the rx ring buffers
were added to the hash table, this memory is leaked.

Set the rx full reorder support flag before we allocate
the rx ring buffer to avoid the memory leak.

CRs-Fixed: 2081334
Change-Id: I6b7cbe05b914cf9aedd8e1ad54ccc4738f8b01e8
Signed-off-by: default avatarRakesh Pillai <pillair@codeaurora.org>
parent a37c10a1
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1886,6 +1886,12 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
		goto err_wmi_detach;
	}

	/* If firmware indicates Full Rx Reorder support it must be used in a
	 * slightly different manner. Let HTT code know.
	 */
	ar->htt.rx_ring.in_ord_rx = !!(test_bit(WMI_SERVICE_RX_FULL_REORDER,
						ar->wmi.svc_map));

	status = ath10k_htt_rx_alloc(&ar->htt);
	if (status) {
		ath10k_err(ar, "failed to alloc htt rx: %d\n", status);
@@ -1997,12 +2003,6 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
		}
	}

	/* If firmware indicates Full Rx Reorder support it must be used in a
	 * slightly different manner. Let HTT code know.
	 */
	ar->htt.rx_ring.in_ord_rx = !!(test_bit(WMI_SERVICE_RX_FULL_REORDER,
						ar->wmi.svc_map));

	status = ath10k_htt_rx_ring_refill(ar);
	if (status) {
		ath10k_err(ar, "failed to refill htt rx ring: %d\n", status);