Commit 11e14fc3 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Revert "staging: r8188eu: remove rtw_buf_free() function"



This reverts commit c7e88ecb as it's
broken because somehow I forgot how pointers work...

Reported-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Cc: "Fabio M. De Francesco" <fmdefrancesco@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c66cd19e
Loading
Loading
Loading
Loading
+2 −6
Original line number Original line Diff line number Diff line
@@ -102,12 +102,8 @@ static void rtw_free_mlme_ie_data(u8 **ppie, u32 *plen)


void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
{
{
	kfree(&pmlmepriv->assoc_req);
	rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len);
	pmlmepriv->assoc_req = NULL;
	rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len);
	pmlmepriv->assoc_req_len = 0;
	kfree(&pmlmepriv->assoc_rsp);
	pmlmepriv->assoc_rsp = NULL;
	pmlmepriv->assoc_rsp_len = 0;
	rtw_free_mlme_ie_data(&pmlmepriv->wps_beacon_ie, &pmlmepriv->wps_beacon_ie_len);
	rtw_free_mlme_ie_data(&pmlmepriv->wps_beacon_ie, &pmlmepriv->wps_beacon_ie_len);
	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, &pmlmepriv->wps_probe_req_ie_len);
	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, &pmlmepriv->wps_probe_req_ie_len);
	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie, &pmlmepriv->wps_probe_resp_ie_len);
	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie, &pmlmepriv->wps_probe_resp_ie_len);
+3 −8
Original line number Original line Diff line number Diff line
@@ -1522,9 +1522,7 @@ unsigned int OnAssocRsp(struct adapter *padapter, struct recv_frame *precv_frame
	if (res > 0) {
	if (res > 0) {
		rtw_buf_update(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len, pframe, pkt_len);
		rtw_buf_update(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len, pframe, pkt_len);
	} else {
	} else {
		kfree(&pmlmepriv->assoc_rsp);
		rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len);
		pmlmepriv->assoc_rsp = NULL;
		pmlmepriv->assoc_rsp_len = 0;
	}
	}


	report_join_res(padapter, res);
	report_join_res(padapter, res);
@@ -5551,11 +5549,8 @@ void issue_assocreq(struct adapter *padapter)
exit:
exit:
	if (ret == _SUCCESS)
	if (ret == _SUCCESS)
		rtw_buf_update(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len, (u8 *)pwlanhdr, pattrib->pktlen);
		rtw_buf_update(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len, (u8 *)pwlanhdr, pattrib->pktlen);
	else {
	else
		kfree(&pmlmepriv->assoc_req);
		rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len);
		pmlmepriv->assoc_req = NULL;
		pmlmepriv->assoc_req_len = 0;
	}


	return;
	return;
}
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -440,6 +440,7 @@ u64 rtw_division64(u64 x, u64 y);
			 (((u64) (a)[3]) << 24) | (((u64) (a)[2]) << 16) | \
			 (((u64) (a)[3]) << 24) | (((u64) (a)[2]) << 16) | \
			 (((u64) (a)[1]) << 8) | ((u64) (a)[0]))
			 (((u64) (a)[1]) << 8) | ((u64) (a)[0]))


void rtw_buf_free(u8 **buf, u32 *buf_len);
void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len);
void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len);


struct rtw_cbuf {
struct rtw_cbuf {
+7 −0
Original line number Original line Diff line number Diff line
@@ -388,6 +388,13 @@ u64 rtw_division64(u64 x, u64 y)
	return x;
	return x;
}
}


void rtw_buf_free(u8 **buf, u32 *buf_len)
{
	*buf_len = 0;
	kfree(*buf);
	*buf = NULL;
}

void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len)
void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len)
{
{
	u32 ori_len = 0, dup_len = 0;
	u32 ori_len = 0, dup_len = 0;