OSDN Git Service

cxgb4: fix all-mask IP address comparison
authorRahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Wed, 8 Jul 2020 21:44:27 +0000 (03:14 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Jul 2020 22:43:00 +0000 (15:43 -0700)
Convert all-mask IP address to Big Endian, instead, for comparison.

Fixes: f286dd8eaad5 ("cxgb4: use correct type for all-mask IP address comparison")
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c

index 7a7f61a..d02d346 100644 (file)
@@ -1112,16 +1112,16 @@ static bool is_addr_all_mask(u8 *ipmask, int family)
                struct in_addr *addr;
 
                addr = (struct in_addr *)ipmask;
-               if (ntohl(addr->s_addr) == 0xffffffff)
+               if (addr->s_addr == htonl(0xffffffff))
                        return true;
        } else if (family == AF_INET6) {
                struct in6_addr *addr6;
 
                addr6 = (struct in6_addr *)ipmask;
-               if (ntohl(addr6->s6_addr32[0]) == 0xffffffff &&
-                   ntohl(addr6->s6_addr32[1]) == 0xffffffff &&
-                   ntohl(addr6->s6_addr32[2]) == 0xffffffff &&
-                   ntohl(addr6->s6_addr32[3]) == 0xffffffff)
+               if (addr6->s6_addr32[0] == htonl(0xffffffff) &&
+                   addr6->s6_addr32[1] == htonl(0xffffffff) &&
+                   addr6->s6_addr32[2] == htonl(0xffffffff) &&
+                   addr6->s6_addr32[3] == htonl(0xffffffff))
                        return true;
        }
        return false;