Commit b5e38b10 authored by Vaishali Thakkar's avatar Vaishali Thakkar Committed by Greg Kroah-Hartman

Staging: rtl8723au: Use put_unaligned_le16

Using byte ordering functions and then memcpy() is risky and
prone to hide errors which are hard to track down. So, this
patch introduces the use of function put_unaligned_le16 which
makes the code clear. Here, use of variable tim_bitmap_le
and variable itself is removed. Also, to be compatible with the
changes header file is added too.

Coccinelle is used to do this change and semantic patch used for
this is as follows:

@A@
typedef __le16;
__le16 e16;
identifier tmp;
expression ptr;
expression y,e;
type T;
@@

- tmp = cpu_to_le16(y);

<+... when != tmp
(
- memcpy(ptr, (T)&tmp, \(2\|sizeof(__le16)\|sizeof(e16)\));
+ put_unaligned_le16(y,ptr);
|
- memcpy(ptr, (T)&tmp, ...);
+ put_unaligned_le16(y,ptr);
)
...+>
? tmp = e

@@ type T; identifier a.tmp; @@

- T tmp;
...when != tmp
Signed-off-by: default avatarVaishali Thakkar <vthakkar1994@gmail.com>
Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 24f45523
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <wifi.h> #include <wifi.h>
#include <rtl8723a_cmd.h> #include <rtl8723a_cmd.h>
#include <rtl8723a_hal.h> #include <rtl8723a_hal.h>
#include <asm/unaligned.h>
extern unsigned char WMM_OUI23A[]; extern unsigned char WMM_OUI23A[];
extern unsigned char WPS_OUI23A[]; extern unsigned char WPS_OUI23A[];
...@@ -72,11 +73,8 @@ static void update_BCNTIM(struct rtw_adapter *padapter) ...@@ -72,11 +73,8 @@ static void update_BCNTIM(struct rtw_adapter *padapter)
struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network; struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network;
unsigned char *pie = pnetwork_mlmeext->IEs; unsigned char *pie = pnetwork_mlmeext->IEs;
u8 *p, *dst_ie, *premainder_ie = NULL, *pbackup_remainder_ie = NULL; u8 *p, *dst_ie, *premainder_ie = NULL, *pbackup_remainder_ie = NULL;
__le16 tim_bitmap_le;
uint offset, tmp_len, tim_ielen, tim_ie_offset, remainder_ielen; uint offset, tmp_len, tim_ielen, tim_ie_offset, remainder_ielen;
tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap);
p = rtw_get_ie23a(pie, WLAN_EID_TIM, &tim_ielen, p = rtw_get_ie23a(pie, WLAN_EID_TIM, &tim_ielen,
pnetwork_mlmeext->IELength); pnetwork_mlmeext->IELength);
if (p != NULL && tim_ielen > 0) { if (p != NULL && tim_ielen > 0) {
...@@ -143,9 +141,9 @@ static void update_BCNTIM(struct rtw_adapter *padapter) ...@@ -143,9 +141,9 @@ static void update_BCNTIM(struct rtw_adapter *padapter)
*dst_ie++ = 0; *dst_ie++ = 0;
if (tim_ielen == 4) { if (tim_ielen == 4) {
*dst_ie++ = *(u8 *)&tim_bitmap_le; *dst_ie++ = pstapriv->tim_bitmap & 0xff;
} else if (tim_ielen == 5) { } else if (tim_ielen == 5) {
memcpy(dst_ie, &tim_bitmap_le, 2); put_unaligned_le16(pstapriv->tim_bitmap, dst_ie);
dst_ie += 2; dst_ie += 2;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment