7 in ~7 needs to be size_t for it to be correct when len > INT_MAX.
/* Load the last 0-7 bytes of `in` and put in len & 255 */
static void siphash_epilogue(u64 *m, const unsigned char *in, size_t len)
{
/* Load the last 0-7 bytes of `in` and put in len & 255 */
static void siphash_epilogue(u64 *m, const unsigned char *in, size_t len)
{
+ in += len & ~(size_t)7;
*m = (u64)(len & 255) << 56;
switch (len & 7) {
case 7: *m |= (u64) in[6] << 48;
*m = (u64)(len & 255) << 56;
switch (len & 7) {
case 7: *m |= (u64) in[6] << 48;