From: Evgeny Vereshchagin Date: Sat, 10 Nov 2018 08:10:49 +0000 (+0100) Subject: basic: make rdrand64 a little bit more MSAn-friendly X-Git-Tag: v240~369 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=313992dfb58ab0ca2d1ab33a3f450fd772069605;p=thirdparty%2Fsystemd.git basic: make rdrand64 a little bit more MSAn-friendly MSan doesn't instrument inline asm calls so let's help it by marking err as initialized manually. Fixes: https://github.com/systemd/systemd/issues/10714. --- diff --git a/src/basic/random-util.c b/src/basic/random-util.c index 8eb6acfbbf1..c17c09765b0 100644 --- a/src/basic/random-util.c +++ b/src/basic/random-util.c @@ -30,6 +30,9 @@ #include "random-util.h" #include "time-util.h" +#if HAS_FEATURE_MEMORY_SANITIZER +#include +#endif int rdrand64(uint64_t *ret) { @@ -56,6 +59,11 @@ int rdrand64(uint64_t *ret) { "setc %1" : "=r" (*ret), "=qm" (err)); + +#if HAS_FEATURE_MEMORY_SANITIZER + __msan_unpoison(&err, sizeof(err)); +#endif + if (!err) return -EAGAIN;