From: Linus Torvalds Date: Fri, 28 Oct 2011 12:29:07 +0000 (-0700) Subject: Merge branch 'x86-rdrand-for-linus' of git://git.kernel.org/pub/scm/linux/kernel... X-Git-Tag: v3.2-rc1~139 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=commitdiff_plain;h=8e6d539e0fd0c2124a20a207da70f2af7a9ae52c Merge branch 'x86-rdrand-for-linus' of git://git./linux/kernel/git/tip/tip * '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"). --- 8e6d539e0fd0c2124a20a207da70f2af7a9ae52c diff --cc drivers/char/random.c index c35a785005b0,bb587127fb9d..63e19ba56bbe --- a/drivers/char/random.c +++ b/drivers/char/random.c @@@ -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; + if (arch_get_random_int(&ret)) + return ret; + + hash = get_cpu_var(get_random_int_hash); + - keyptr = get_keyptr(); 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;