mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
net: Fix various endianness glitches
Sparse can help us find endianness bugs, but we need to make some cleanups to be able to more easily spot real bugs. Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
cb903bf4ee
commit
0eae88f31c
17 changed files with 65 additions and 61 deletions
|
|
@ -588,7 +588,8 @@ static u32 ipv6_addr_hash(const struct in6_addr *addr)
|
|||
* We perform the hash function over the last 64 bits of the address
|
||||
* This will include the IEEE address token on links that support it.
|
||||
*/
|
||||
return jhash_2words(addr->s6_addr32[2], addr->s6_addr32[3], 0)
|
||||
return jhash_2words((__force u32)addr->s6_addr32[2],
|
||||
(__force u32)addr->s6_addr32[3], 0)
|
||||
& (IN6_ADDR_HSIZE - 1);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -144,7 +144,8 @@ static __inline__ __be32 addr_bit_set(void *token, int fn_bit)
|
|||
* htonl(1 << ((~fn_bit)&0x1F))
|
||||
* See include/asm-generic/bitops/le.h.
|
||||
*/
|
||||
return (1 << ((~fn_bit ^ BITOP_BE32_SWIZZLE) & 0x1f)) & addr[fn_bit >> 5];
|
||||
return (__force __be32)(1 << ((~fn_bit ^ BITOP_BE32_SWIZZLE) & 0x1f)) &
|
||||
addr[fn_bit >> 5];
|
||||
}
|
||||
|
||||
static __inline__ struct fib6_node * node_alloc(void)
|
||||
|
|
|
|||
|
|
@ -1234,12 +1234,12 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
|
|||
goto drop_and_free;
|
||||
|
||||
/* Secret recipe starts with IP addresses */
|
||||
d = &ipv6_hdr(skb)->daddr.s6_addr32[0];
|
||||
d = (__force u32 *)&ipv6_hdr(skb)->daddr.s6_addr32[0];
|
||||
*mess++ ^= *d++;
|
||||
*mess++ ^= *d++;
|
||||
*mess++ ^= *d++;
|
||||
*mess++ ^= *d++;
|
||||
d = &ipv6_hdr(skb)->saddr.s6_addr32[0];
|
||||
d = (__force u32 *)&ipv6_hdr(skb)->saddr.s6_addr32[0];
|
||||
*mess++ ^= *d++;
|
||||
*mess++ ^= *d++;
|
||||
*mess++ ^= *d++;
|
||||
|
|
|
|||
|
|
@ -91,9 +91,9 @@ static unsigned int udp6_portaddr_hash(struct net *net,
|
|||
if (ipv6_addr_any(addr6))
|
||||
hash = jhash_1word(0, mix);
|
||||
else if (ipv6_addr_v4mapped(addr6))
|
||||
hash = jhash_1word(addr6->s6_addr32[3], mix);
|
||||
hash = jhash_1word((__force u32)addr6->s6_addr32[3], mix);
|
||||
else
|
||||
hash = jhash2(addr6->s6_addr32, 4, mix);
|
||||
hash = jhash2((__force u32 *)addr6->s6_addr32, 4, mix);
|
||||
|
||||
return hash ^ port;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue