hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/lib/siphash.c
....@@ -18,19 +18,13 @@
1818 #include <asm/word-at-a-time.h>
1919 #endif
2020
21
-#define SIPROUND \
22
- do { \
23
- v0 += v1; v1 = rol64(v1, 13); v1 ^= v0; v0 = rol64(v0, 32); \
24
- v2 += v3; v3 = rol64(v3, 16); v3 ^= v2; \
25
- v0 += v3; v3 = rol64(v3, 21); v3 ^= v0; \
26
- v2 += v1; v1 = rol64(v1, 17); v1 ^= v2; v2 = rol64(v2, 32); \
27
- } while (0)
21
+#define SIPROUND SIPHASH_PERMUTATION(v0, v1, v2, v3)
2822
2923 #define PREAMBLE(len) \
30
- u64 v0 = 0x736f6d6570736575ULL; \
31
- u64 v1 = 0x646f72616e646f6dULL; \
32
- u64 v2 = 0x6c7967656e657261ULL; \
33
- u64 v3 = 0x7465646279746573ULL; \
24
+ u64 v0 = SIPHASH_CONST_0; \
25
+ u64 v1 = SIPHASH_CONST_1; \
26
+ u64 v2 = SIPHASH_CONST_2; \
27
+ u64 v3 = SIPHASH_CONST_3; \
3428 u64 b = ((u64)(len)) << 56; \
3529 v3 ^= key->key[1]; \
3630 v2 ^= key->key[0]; \
....@@ -69,11 +63,11 @@
6963 bytemask_from_count(left)));
7064 #else
7165 switch (left) {
72
- case 7: b |= ((u64)end[6]) << 48;
73
- case 6: b |= ((u64)end[5]) << 40;
74
- case 5: b |= ((u64)end[4]) << 32;
66
+ case 7: b |= ((u64)end[6]) << 48; /* fall through */
67
+ case 6: b |= ((u64)end[5]) << 40; /* fall through */
68
+ case 5: b |= ((u64)end[4]) << 32; /* fall through */
7569 case 4: b |= le32_to_cpup(data); break;
76
- case 3: b |= ((u64)end[2]) << 16;
70
+ case 3: b |= ((u64)end[2]) << 16; /* fall through */
7771 case 2: b |= le16_to_cpup(data); break;
7872 case 1: b |= end[0];
7973 }
....@@ -102,11 +96,11 @@
10296 bytemask_from_count(left)));
10397 #else
10498 switch (left) {
105
- case 7: b |= ((u64)end[6]) << 48;
106
- case 6: b |= ((u64)end[5]) << 40;
107
- case 5: b |= ((u64)end[4]) << 32;
99
+ case 7: b |= ((u64)end[6]) << 48; /* fall through */
100
+ case 6: b |= ((u64)end[5]) << 40; /* fall through */
101
+ case 5: b |= ((u64)end[4]) << 32; /* fall through */
108102 case 4: b |= get_unaligned_le32(end); break;
109
- case 3: b |= ((u64)end[2]) << 16;
103
+ case 3: b |= ((u64)end[2]) << 16; /* fall through */
110104 case 2: b |= get_unaligned_le16(end); break;
111105 case 1: b |= end[0];
112106 }
....@@ -269,11 +263,11 @@
269263 bytemask_from_count(left)));
270264 #else
271265 switch (left) {
272
- case 7: b |= ((u64)end[6]) << 48;
273
- case 6: b |= ((u64)end[5]) << 40;
274
- case 5: b |= ((u64)end[4]) << 32;
266
+ case 7: b |= ((u64)end[6]) << 48; /* fall through */
267
+ case 6: b |= ((u64)end[5]) << 40; /* fall through */
268
+ case 5: b |= ((u64)end[4]) << 32; /* fall through */
275269 case 4: b |= le32_to_cpup(data); break;
276
- case 3: b |= ((u64)end[2]) << 16;
270
+ case 3: b |= ((u64)end[2]) << 16; /* fall through */
277271 case 2: b |= le16_to_cpup(data); break;
278272 case 1: b |= end[0];
279273 }
....@@ -302,11 +296,11 @@
302296 bytemask_from_count(left)));
303297 #else
304298 switch (left) {
305
- case 7: b |= ((u64)end[6]) << 48;
306
- case 6: b |= ((u64)end[5]) << 40;
307
- case 5: b |= ((u64)end[4]) << 32;
299
+ case 7: b |= ((u64)end[6]) << 48; /* fall through */
300
+ case 6: b |= ((u64)end[5]) << 40; /* fall through */
301
+ case 5: b |= ((u64)end[4]) << 32; /* fall through */
308302 case 4: b |= get_unaligned_le32(end); break;
309
- case 3: b |= ((u64)end[2]) << 16;
303
+ case 3: b |= ((u64)end[2]) << 16; /* fall through */
310304 case 2: b |= get_unaligned_le16(end); break;
311305 case 1: b |= end[0];
312306 }
....@@ -389,19 +383,13 @@
389383 }
390384 EXPORT_SYMBOL(hsiphash_4u32);
391385 #else
392
-#define HSIPROUND \
393
- do { \
394
- v0 += v1; v1 = rol32(v1, 5); v1 ^= v0; v0 = rol32(v0, 16); \
395
- v2 += v3; v3 = rol32(v3, 8); v3 ^= v2; \
396
- v0 += v3; v3 = rol32(v3, 7); v3 ^= v0; \
397
- v2 += v1; v1 = rol32(v1, 13); v1 ^= v2; v2 = rol32(v2, 16); \
398
- } while (0)
386
+#define HSIPROUND HSIPHASH_PERMUTATION(v0, v1, v2, v3)
399387
400388 #define HPREAMBLE(len) \
401
- u32 v0 = 0; \
402
- u32 v1 = 0; \
403
- u32 v2 = 0x6c796765U; \
404
- u32 v3 = 0x74656462U; \
389
+ u32 v0 = HSIPHASH_CONST_0; \
390
+ u32 v1 = HSIPHASH_CONST_1; \
391
+ u32 v2 = HSIPHASH_CONST_2; \
392
+ u32 v3 = HSIPHASH_CONST_3; \
405393 u32 b = ((u32)(len)) << 24; \
406394 v3 ^= key->key[1]; \
407395 v2 ^= key->key[0]; \
....@@ -432,7 +420,7 @@
432420 v0 ^= m;
433421 }
434422 switch (left) {
435
- case 3: b |= ((u32)end[2]) << 16;
423
+ case 3: b |= ((u32)end[2]) << 16; /* fall through */
436424 case 2: b |= le16_to_cpup(data); break;
437425 case 1: b |= end[0];
438426 }
....@@ -455,7 +443,7 @@
455443 v0 ^= m;
456444 }
457445 switch (left) {
458
- case 3: b |= ((u32)end[2]) << 16;
446
+ case 3: b |= ((u32)end[2]) << 16; /* fall through */
459447 case 2: b |= get_unaligned_le16(end); break;
460448 case 1: b |= end[0];
461449 }