From: Greg Kroah-Hartman Date: Mon, 2 Aug 2021 14:30:39 +0000 (+0200) Subject: Revert "staging: r8188eu: remove rtw_buf_free() function" X-Git-Tag: v5.15~425^2~285 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=11e14fc3e49481b6322bbd976bb7dd2f0d7ef3d2;p=platform%2Fkernel%2Flinux-starfive.git 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 Cc: "Fabio M. De Francesco" Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/r8188eu/core/rtw_mlme.c b/drivers/staging/r8188eu/core/rtw_mlme.c index d692f14..a6d6207 100644 --- a/drivers/staging/r8188eu/core/rtw_mlme.c +++ b/drivers/staging/r8188eu/core/rtw_mlme.c @@ -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); diff --git a/drivers/staging/r8188eu/core/rtw_mlme_ext.c b/drivers/staging/r8188eu/core/rtw_mlme_ext.c index 1160b7c..78f6666 100644 --- a/drivers/staging/r8188eu/core/rtw_mlme_ext.c +++ b/drivers/staging/r8188eu/core/rtw_mlme_ext.c @@ -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; } diff --git a/drivers/staging/r8188eu/include/osdep_service.h b/drivers/staging/r8188eu/include/osdep_service.h index 05cbc9b..ac0bd5c 100644 --- a/drivers/staging/r8188eu/include/osdep_service.h +++ b/drivers/staging/r8188eu/include/osdep_service.h @@ -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 { diff --git a/drivers/staging/r8188eu/os_dep/osdep_service.c b/drivers/staging/r8188eu/os_dep/osdep_service.c index 99ddc53..71d4fa2 100644 --- a/drivers/staging/r8188eu/os_dep/osdep_service.c +++ b/drivers/staging/r8188eu/os_dep/osdep_service.c @@ -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;