Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

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>

+13 -14
+2 -6
drivers/staging/r8188eu/core/rtw_mlme.c
··· 102 102 103 103 void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv) 104 104 { 105 - kfree(&pmlmepriv->assoc_req); 106 - pmlmepriv->assoc_req = NULL; 107 - pmlmepriv->assoc_req_len = 0; 108 - kfree(&pmlmepriv->assoc_rsp); 109 - pmlmepriv->assoc_rsp = NULL; 110 - pmlmepriv->assoc_rsp_len = 0; 105 + rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len); 106 + rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len); 111 107 rtw_free_mlme_ie_data(&pmlmepriv->wps_beacon_ie, &pmlmepriv->wps_beacon_ie_len); 112 108 rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, &pmlmepriv->wps_probe_req_ie_len); 113 109 rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie, &pmlmepriv->wps_probe_resp_ie_len);
+3 -8
drivers/staging/r8188eu/core/rtw_mlme_ext.c
··· 1522 1522 if (res > 0) { 1523 1523 rtw_buf_update(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len, pframe, pkt_len); 1524 1524 } else { 1525 - kfree(&pmlmepriv->assoc_rsp); 1526 - pmlmepriv->assoc_rsp = NULL; 1527 - pmlmepriv->assoc_rsp_len = 0; 1525 + rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len); 1528 1526 } 1529 1527 1530 1528 report_join_res(padapter, res); ··· 5549 5551 exit: 5550 5552 if (ret == _SUCCESS) 5551 5553 rtw_buf_update(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len, (u8 *)pwlanhdr, pattrib->pktlen); 5552 - else { 5553 - kfree(&pmlmepriv->assoc_req); 5554 - pmlmepriv->assoc_req = NULL; 5555 - pmlmepriv->assoc_req_len = 0; 5556 - } 5554 + else 5555 + rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len); 5557 5556 5558 5557 return; 5559 5558 }
+1
drivers/staging/r8188eu/include/osdep_service.h
··· 440 440 (((u64) (a)[3]) << 24) | (((u64) (a)[2]) << 16) | \ 441 441 (((u64) (a)[1]) << 8) | ((u64) (a)[0])) 442 442 443 + void rtw_buf_free(u8 **buf, u32 *buf_len); 443 444 void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len); 444 445 445 446 struct rtw_cbuf {
+7
drivers/staging/r8188eu/os_dep/osdep_service.c
··· 388 388 return x; 389 389 } 390 390 391 + void rtw_buf_free(u8 **buf, u32 *buf_len) 392 + { 393 + *buf_len = 0; 394 + kfree(*buf); 395 + *buf = NULL; 396 + } 397 + 391 398 void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len) 392 399 { 393 400 u32 ori_len = 0, dup_len = 0;