Simplify output hash folding

Signed-off-by: Matt Mackall <[EMAIL PROTECTED]>

Index: rnd/drivers/char/random.c
===================================================================
--- rnd.orig/drivers/char/random.c      2005-01-18 10:42:17.993300522 -0800
+++ rnd/drivers/char/random.c   2005-01-18 10:42:39.078612373 -0800
@@ -1166,15 +1166,10 @@
         * In case the hash function has some recognizable
         * output pattern, we fold it in half.
         */
-       for (i = 0; i <  HASH_BUFFER_SIZE / 2; i++)
-               buf[i] ^= buf[i + (HASH_BUFFER_SIZE + 1) / 2];
 
-       if (HASH_BUFFER_SIZE & 1) {
-               /* There's a middle word to deal with */
-               x = buf[HASH_BUFFER_SIZE/2];
-               x ^= (x >> 16); /* Fold it in half */
-               ((__u16 *)buf)[HASH_BUFFER_SIZE - 1] = (__u16)x;
-       }
+       buf[0] ^= buf[3];
+       buf[1] ^= buf[4];
+       buf[0] ^= rol32(buf[3], 16);
 }
 
 static ssize_t extract_entropy(struct entropy_store *r, void * buf,
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to