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

Commit 22743472 authored by Will Huang's avatar Will Huang Committed by nshrivas
Browse files

qcacld-3.0: Allocate memory from heap to wma_set_stakey

This change I29209576622bc2495a7ce3064e82efca2e70d19a was to fix a
memory leak, but ibss creating peer pass a pointer on stack to
wma_set_stakey API, it makes a regression.

Fix it by passing all pointer from heap to wma_set_stakey API.

Change-Id: I178e4b6a15aa24faae78d9846427b3292d11a1a4
CRs-Fixed: 2455529
parent b3d679e1
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -1862,17 +1862,21 @@ QDF_STATUS wma_create_peer(tp_wma_handle wma, struct cdp_pdev *pdev,
	/* for each remote ibss peer, clear its keys */
	if (wma_is_vdev_in_ibss_mode(wma, vdev_id) &&
	    qdf_mem_cmp(peer_addr, mac_addr_raw, IEEE80211_ADDR_LEN)) {
		tSetStaKeyParams key_info;
		tpSetStaKeyParams key_info;

		key_info = qdf_mem_malloc(sizeof(*key_info));
		if (!key_info) {
			return QDF_STATUS_E_NOMEM;
		}
		WMA_LOGD("%s: remote ibss peer %pM key clearing\n", __func__,
			 peer_addr);
		qdf_mem_zero(&key_info, sizeof(key_info));
		key_info.smesessionId = vdev_id;
		qdf_mem_copy(key_info.peer_macaddr.bytes, peer_addr,
		qdf_mem_zero(key_info, sizeof(*key_info));
		key_info->smesessionId = vdev_id;
		qdf_mem_copy(key_info->peer_macaddr.bytes, peer_addr,
			     IEEE80211_ADDR_LEN);
		key_info.sendRsp = false;
		key_info->sendRsp = false;

		wma_set_stakey(wma, &key_info);
		wma_set_stakey(wma, key_info);
	}

	return QDF_STATUS_SUCCESS;