Revert "staging: r8188eu: remove rtw_buf_free() function"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Aug 2021 14:30:39 +0000 (16:30 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Aug 2021 14:30:39 +0000 (16:30 +0200)
This reverts commit c7e88ecbe328e2bcd892d84c4b26eff86cb776ef as it's
broken because somehow I forgot how pointers work...

Reported-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: "Fabio M. De Francesco" <fmdefrancesco@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/r8188eu/core/rtw_mlme.c
drivers/staging/r8188eu/core/rtw_mlme_ext.c
drivers/staging/r8188eu/include/osdep_service.h
drivers/staging/r8188eu/os_dep/osdep_service.c

index d692f14..a6d6207 100644 (file)
@@ -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)
 {
-       kfree(&pmlmepriv->assoc_req);
-       pmlmepriv->assoc_req = NULL;
-       pmlmepriv->assoc_req_len = 0;
-       kfree(&pmlmepriv->assoc_rsp);
-       pmlmepriv->assoc_rsp = NULL;
-       pmlmepriv->assoc_rsp_len = 0;
+       rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len);
+       rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_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_resp_ie, &pmlmepriv->wps_probe_resp_ie_len);
index 1160b7c..78f6666 100644 (file)
@@ -1522,9 +1522,7 @@ report_assoc_result:
        if (res > 0) {
                rtw_buf_update(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len, pframe, pkt_len);
        } else {
-               kfree(&pmlmepriv->assoc_rsp);
-               pmlmepriv->assoc_rsp = NULL;
-               pmlmepriv->assoc_rsp_len = 0;
+               rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len);
        }
 
        report_join_res(padapter, res);
@@ -5551,11 +5549,8 @@ void issue_assocreq(struct adapter *padapter)
 exit:
        if (ret == _SUCCESS)
                rtw_buf_update(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len, (u8 *)pwlanhdr, pattrib->pktlen);
-       else {
-               kfree(&pmlmepriv->assoc_req);
-               pmlmepriv->assoc_req = NULL;
-               pmlmepriv->assoc_req_len = 0;
-       }
+       else
+               rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len);
 
        return;
 }
index 05cbc9b..ac0bd5c 100644 (file)
@@ -440,6 +440,7 @@ u64 rtw_division64(u64 x, u64 y);
                         (((u64) (a)[3]) << 24) | (((u64) (a)[2]) << 16) | \
                         (((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);
 
 struct rtw_cbuf {
index 99ddc53..71d4fa2 100644 (file)
@@ -388,6 +388,13 @@ u64 rtw_division64(u64 x, u64 y)
        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)
 {
        u32 ori_len = 0, dup_len = 0;