Staging: rtl8192e: Use put_unaligned_le16
authorVaishali Thakkar <vthakkar1994@gmail.com>
Fri, 31 Oct 2014 03:11:42 +0000 (08:41 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Nov 2014 00:09:27 +0000 (16:09 -0800)
This patch introduces the use of function put_unaligned_le16.

This is done using Coccinelle and semantic patch used is as follows:

@@ identifier tmp; expression ptr; expression y,e; type T; @@

- tmp = cpu_to_le16(y);

  <+... when != tmp
- memcpy(ptr, (T)&tmp, ...);
+ put_unaligned_le16(y,ptr);
  ...+>
? tmp = e

@@ type T; identifier tmp; @@

- T tmp;
...when != tmp

Here, to be compatible with the change header file is added too.

Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8192e/rtl819x_BAProc.c

index 2866c1237ae5988592e461924eb724521419bd05..66ea79198892b21eb544f1db2b024b5e210aa588 100644 (file)
@@ -16,6 +16,7 @@
  * Contact Information:
  * wlanfae <wlanfae@realtek.com>
 ******************************************************************************/
+#include <linux/unaligned/access_ok.h>
 #include "rtllib.h"
 #include "rtl819x_BA.h"
 
@@ -79,7 +80,6 @@ static struct sk_buff *rtllib_ADDBA(struct rtllib_device *ieee, u8 *Dst,
        struct sk_buff *skb = NULL;
         struct rtllib_hdr_3addr *BAReq = NULL;
        u8 *tag = NULL;
-       __le16 tmp = 0;
        u16 len = ieee->tx_headroom + 9;
 
        RTLLIB_DEBUG(RTLLIB_DL_TRACE | RTLLIB_DL_BA, "========>%s(), frame(%d)"
@@ -115,15 +115,15 @@ static struct sk_buff *rtllib_ADDBA(struct rtllib_device *ieee, u8 *Dst,
 
        if (ACT_ADDBARSP == type) {
                RT_TRACE(COMP_DBG, "====>to send ADDBARSP\n");
-               tmp = cpu_to_le16(StatusCode);
-               memcpy(tag, (u8 *)&tmp, 2);
+
+               put_unaligned_le16(StatusCode, tag);
                tag += 2;
        }
-       tmp = cpu_to_le16(pBA->BaParamSet.shortData);
-       memcpy(tag, (u8 *)&tmp, 2);
+
+       put_unaligned_le16(pBA->BaParamSet.shortData, tag);
        tag += 2;
-       tmp = cpu_to_le16(pBA->BaTimeoutValue);
-       memcpy(tag, (u8 *)&tmp, 2);
+
+       put_unaligned_le16(pBA->BaTimeoutValue, tag);
        tag += 2;
 
        if (ACT_ADDBAREQ == type) {
@@ -143,7 +143,6 @@ static struct sk_buff *rtllib_DELBA(struct rtllib_device *ieee, u8 *dst,
        struct sk_buff *skb = NULL;
         struct rtllib_hdr_3addr *Delba = NULL;
        u8 *tag = NULL;
-       __le16 tmp = 0;
        u16 len = 6 + ieee->tx_headroom;
 
        if (net_ratelimit())
@@ -178,11 +177,11 @@ static struct sk_buff *rtllib_DELBA(struct rtllib_device *ieee, u8 *dst,
        *tag++ = ACT_CAT_BA;
        *tag++ = ACT_DELBA;
 
-       tmp = cpu_to_le16(DelbaParamSet.shortData);
-       memcpy(tag, (u8 *)&tmp, 2);
+
+       put_unaligned_le16(DelbaParamSet.shortData, tag);
        tag += 2;
-       tmp = cpu_to_le16(ReasonCode);
-       memcpy(tag, (u8 *)&tmp, 2);
+
+       put_unaligned_le16(ReasonCode, tag);
        tag += 2;
 
        RTLLIB_DEBUG_DATA(RTLLIB_DL_DATA|RTLLIB_DL_BA, skb->data, skb->len);