siphash: use one source of truth for siphash permutations
authorJason A. Donenfeld <Jason@zx2c4.com>
Sat, 7 May 2022 12:03:46 +0000 (14:03 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 Jun 2022 09:46:39 +0000 (11:46 +0200)
commit66b2dde034bdc7bdb2de1b868deb0b3d5aa51a69
tree9526015b4c6b7b030bbee65470c0033643359f24
parenteb2fb9672be8334f828e732fe4b98e06f4ba03c5
siphash: use one source of truth for siphash permutations

commit e73aaae2fa9024832e1f42e30c787c7baf61d014 upstream.

The SipHash family of permutations is currently used in three places:

- siphash.c itself, used in the ordinary way it was intended.
- random32.c, in a construction from an anonymous contributor.
- random.c, as part of its fast_mix function.

Each one of these places reinvents the wheel with the same C code, same
rotation constants, and same symmetry-breaking constants.

This commit tidies things up a bit by placing macros for the
permutations and constants into siphash.h, where each of the three .c
users can access them. It also leaves a note dissuading more users of
them from emerging.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/random.c
include/linux/prandom.h
include/linux/siphash.h
lib/siphash.c