diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2021-10-20 22:42:05 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2021-10-22 23:31:16 +0000 |
commit | 362c6d8dec6dfbedc5717e45769042279a1dd3df (patch) | |
tree | 27250845f9ecd04be053f0f220f3d813d831ca8a | |
parent | 5fff2859ec5de6ed4bcf0c4df1ceabcf14ff72dd (diff) | |
download | src-362c6d8dec6dfbedc5717e45769042279a1dd3df.tar.gz src-362c6d8dec6dfbedc5717e45769042279a1dd3df.zip |
nehemiah: manually assemble xstore(-rng)
It seems that clang IAS erronously adds repz prefix which should not be
there. Cpu would try to store around %ecx bytes of random, while we
only expect a word.
PR: 259218
Reported and tested by: Dennis Clarke <dclarke@blastwave.org>
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
-rw-r--r-- | sys/dev/random/nehemiah.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/random/nehemiah.c b/sys/dev/random/nehemiah.c index ba0dfb200ba0..3ad18005c935 100644 --- a/sys/dev/random/nehemiah.c +++ b/sys/dev/random/nehemiah.c @@ -68,7 +68,7 @@ VIA_RNG_store(void *buf) #ifdef __GNUCLIKE_ASM __asm __volatile( "movl $0,%%edx\n\t" - "xstore" + ".byte 0x0f, 0xa7, 0xc0" : "=a" (retval), "+d" (rate), "+D" (buf) : : "memory" |