Merge branch 'x86-rdrand-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 28 Oct 2011 12:29:07 +0000 (05:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 28 Oct 2011 12:29:07 +0000 (05:29 -0700)
* 'x86-rdrand-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86, random: Verify RDRAND functionality and allow it to be disabled
  x86, random: Architectural inlines to get random integers with RDRAND
  random: Add support for architectural random hooks

Fix up trivial conflicts in drivers/char/random.c: the architectural
random hooks touched "get_random_int()" that was simplified to use MD5
and not do the keyptr thing any more (see commit 6e5714eaf77d: "net:
Compute protocol sequence numbers and fragment IDs using MD5").

1  2 
Documentation/kernel-parameters.txt
arch/x86/Kconfig
arch/x86/kernel/cpu/Makefile
arch/x86/kernel/cpu/common.c
drivers/char/random.c
include/linux/random.h

Simple merge
Simple merge
Simple merge
Simple merge
index c35a785005b08e132f23447ac31365853b5acd9c,bb587127fb9de63c0b79dd132589f7a3be4a49ac..63e19ba56bbea5a12ee784f023bd13a758eaf611
@@@ -1315,15 -1645,22 +1329,20 @@@ late_initcall(random_int_secret_init)
   * value is not cryptographically secure but for several uses the cost of
   * depleting entropy is too high
   */
 -DEFINE_PER_CPU(__u32 [4], get_random_int_hash);
 +DEFINE_PER_CPU(__u32 [MD5_DIGEST_WORDS], get_random_int_hash);
  unsigned int get_random_int(void)
  {
-       __u32 *hash = get_cpu_var(get_random_int_hash);
 -      struct keydata *keyptr;
+       __u32 *hash;
        unsigned int ret;
  
 -      keyptr = get_keyptr();
+       if (arch_get_random_int(&ret))
+               return ret;
+       hash = get_cpu_var(get_random_int_hash);
        hash[0] += current->pid + jiffies + get_cycles();
 -
 -      ret = half_md4_transform(hash, keyptr->secret);
 +      md5_transform(hash, random_int_secret);
 +      ret = hash[0];
        put_cpu_var(get_random_int_hash);
  
        return ret;
Simple merge