staging: wlan-ng: prism2sta: replace memcmp with ether_addr_equal
authorMaciek Borzecki <maciek.borzecki@gmail.com>
Sat, 3 Oct 2015 14:01:36 +0000 (16:01 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 4 Oct 2015 07:27:48 +0000 (08:27 +0100)
Replace memcmp() with ether_addr_equal(). In every location where the
replacement was done, the addresses accessed are
__aligned(2). Structures accessed either stack or heap allocated, no
direct memory casts to possibly unaligned structs are used.

Involved structures:

typedef struct hfa384x_authenticateStation_data {
u8 address[ETH_ALEN];   /* 0 offset */
...
} __packed hfa384x_authenticateStation_data_t;

struct prism2sta_authlist {
unsigned int cnt;
u8 addr[WLAN_AUTH_MAX][ETH_ALEN]; /* 4 bytes offset,
     addresses start
     at u16 boundary */
u8 assoc[WLAN_AUTH_MAX];
};

struct prism2sta_accesslist {
unsigned int modify;
unsigned int cnt;
u8 addr[WLAN_ACCESS_MAX][ETH_ALEN]; /* 8 bytes offset,
       multiple of u16 */
...
u8 addr1[WLAN_ACCESS_MAX][ETH_ALEN]; /* starts at u32 boundary,
struct not packed */
};

typedef struct hfa384x_AssocStatus {
u16 assocstatus;
u8 sta_addr[ETH_ALEN];    /* 2 bytes offset,
     struct is packed */
u8 old_ap_addr[ETH_ALEN]; /* 8 bytes offset */
...
} __packed hfa384x_AssocStatus_t;

The patch resolves the following checkpatch warnings:

  WARNING: Prefer ether_addr_equal() or ether_addr_equal_unaligned()
           over memcmp()

Signed-off-by: Maciek Borzecki <maciek.borzecki@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wlan-ng/prism2sta.c

index bd979863e6a93e5e2877bc27abb0c4b557758dfe..c57f48a1d8df756169116305f5cca6495fad413e 100644 (file)
@@ -1490,7 +1490,7 @@ static void prism2sta_inf_assocstatus(wlandevice_t *wlandev,
         */
 
        for (i = 0; i < hw->authlist.cnt; i++)
-               if (memcmp(rec.sta_addr, hw->authlist.addr[i], ETH_ALEN) == 0)
+               if (ether_addr_equal(rec.sta_addr, hw->authlist.addr[i]))
                        break;
 
        if (i >= hw->authlist.cnt) {
@@ -1572,8 +1572,8 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev,
                 */
 
                for (i = 0; i < hw->authlist.cnt; i++)
-                       if (memcmp(rec.address, hw->authlist.addr[i],
-                                  ETH_ALEN) == 0) {
+                       if (ether_addr_equal(rec.address,
+                                            hw->authlist.addr[i])) {
                                rec.status = P80211ENUM_status_successful;
                                break;
                        }
@@ -1610,7 +1610,7 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev,
                }
 
                for (i = 0; i < cnt; i++, addr += ETH_ALEN)
-                       if (memcmp(rec.address, addr, ETH_ALEN) == 0) {
+                       if (ether_addr_equal(rec.address, addr)) {
                                rec.status = P80211ENUM_status_successful;
                                break;
                        }
@@ -1640,7 +1640,7 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev,
                rec.status = P80211ENUM_status_successful;
 
                for (i = 0; i < cnt; i++, addr += ETH_ALEN)
-                       if (memcmp(rec.address, addr, ETH_ALEN) == 0) {
+                       if (ether_addr_equal(rec.address, addr)) {
                                rec.status = P80211ENUM_status_unspec_failure;
                                break;
                        }
@@ -1661,8 +1661,8 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev,
 
        if (rec.status == P80211ENUM_status_successful) {
                for (i = 0; i < hw->authlist.cnt; i++)
-                       if (memcmp(rec.address, hw->authlist.addr[i], ETH_ALEN)
-                           == 0)
+                       if (ether_addr_equal(rec.address,
+                                            hw->authlist.addr[i]))
                                break;
 
                if (i >= hw->authlist.cnt) {