]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
basic: make rdrand64 a little bit more MSAn-friendly
authorEvgeny Vereshchagin <evvers@ya.ru>
Sat, 10 Nov 2018 08:10:49 +0000 (09:10 +0100)
committerLennart Poettering <lennart@poettering.net>
Sat, 10 Nov 2018 10:58:09 +0000 (11:58 +0100)
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

index 8eb6acfbbf1d3dcc0f91d777b0e24cc69080f2b8..c17c09765b0093a37af3f91346f396064384a100 100644 (file)
@@ -30,6 +30,9 @@
 #include "random-util.h"
 #include "time-util.h"
 
+#if HAS_FEATURE_MEMORY_SANITIZER
+#include <sanitizer/msan_interface.h>
+#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;