[S390] prng: prevent access beyond end of stack
authorJan Glauber <jang@linux.vnet.ibm.com>
Wed, 20 Apr 2011 08:15:31 +0000 (10:15 +0200)
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>
Wed, 20 Apr 2011 08:15:43 +0000 (10:15 +0200)
While initializing the state of the prng only the first 8 bytes of
random data where used, the second 8 bytes were read from the memory
after the stack. If only 64 bytes of the kernel stack are used and
CONFIG_DEBUG_PAGEALLOC is enabled a kernel panic may occur because of
the invalid page access. Use the correct multiplicator to stay within
the random data buffer.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/crypto/prng.c

index 975e3ab13cb5477b29ac4ffd504d34e6cacd4325..44bca3f994b0892bed53541e238e1d8bf9aeff58 100644 (file)
@@ -76,7 +76,7 @@ static void prng_seed(int nbytes)
 
        /* Add the entropy */
        while (nbytes >= 8) {
-               *((__u64 *)parm_block) ^= *((__u64 *)buf+i*8);
+               *((__u64 *)parm_block) ^= *((__u64 *)buf+i);
                prng_add_entropy();
                i += 8;
                nbytes -= 8;