From 313992dfb58ab0ca2d1ab33a3f450fd772069605 Mon Sep 17 00:00:00 2001 From: Evgeny Vereshchagin Date: Sat, 10 Nov 2018 09:10:49 +0100 Subject: [PATCH] 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. --- src/basic/random-util.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/basic/random-util.c b/src/basic/random-util.c index 8eb6acfbbf..c17c09765b 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;