]> www.infradead.org Git - users/willy/xarray.git/commitdiff
rds: Fix endianness annotation of jhash wrappers
authorUjwal Kundur <ujwal.kundur@gmail.com>
Wed, 20 Aug 2025 17:55:48 +0000 (23:25 +0530)
committerJakub Kicinski <kuba@kernel.org>
Fri, 22 Aug 2025 23:44:34 +0000 (16:44 -0700)
__ipv6_addr_jhash (wrapper around jhash2()) and __inet_ehashfn (wrapper
around jhash_3words()) work with u32 (host endian) values but accept big
endian inputs. Declare the local variables as big endian to avoid
unnecessary casts.

Flagged by Sparse.

Signed-off-by: Ujwal Kundur <ujwal.kundur@gmail.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Link: https://patch.msgid.link/20250820175550.498-3-ujwal.kundur@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/rds/connection.c

index d62f486ab29fa40ef4fdad1797663daf25e7ae1d..68bc88cce84ec083cc5367b2990509575120d441 100644 (file)
@@ -57,16 +57,17 @@ static struct hlist_head *rds_conn_bucket(const struct in6_addr *laddr,
        static u32 rds6_hash_secret __read_mostly;
        static u32 rds_hash_secret __read_mostly;
 
-       u32 lhash, fhash, hash;
+       __be32 lhash, fhash;
+       u32 hash;
 
        net_get_random_once(&rds_hash_secret, sizeof(rds_hash_secret));
        net_get_random_once(&rds6_hash_secret, sizeof(rds6_hash_secret));
 
-       lhash = (__force u32)laddr->s6_addr32[3];
+       lhash = laddr->s6_addr32[3];
 #if IS_ENABLED(CONFIG_IPV6)
-       fhash = __ipv6_addr_jhash(faddr, rds6_hash_secret);
+       fhash = (__force __be32)__ipv6_addr_jhash(faddr, rds6_hash_secret);
 #else
-       fhash = (__force u32)faddr->s6_addr32[3];
+       fhash = faddr->s6_addr32[3];
 #endif
        hash = __inet_ehashfn(lhash, 0, fhash, 0, rds_hash_secret);