17ce286e07
POWER8 has hardware transactional memory, which glibc uses to implement locks. In some cases, taking a lock begins a transaction, wrapping arbitrary user code (!) until the lock is released. If the transaction is aborted, everything rewinds and glibc tries again with some other implementation. The kernel will abort the transaction in a variety of cases. Notably, on a syscall, the transaction aborts and the syscall *does not happen*. https://www.kernel.org/doc/Documentation/powerpc/transactional_memory.txt Yet, for some reason, although the relevant change does appear to be in the kernel, the transaction is being rewound with getrandom happening anyway. This does not work very well. Instead, only guard the DRBG access with the lock, not CRYPTO_sysrand. This lock is only used to protect the DRBG from the destructor that zeros everything. Change-Id: Ied8350f1e808a09300651de4200c7b0d07b3a158 Reviewed-on: https://boringssl-review.googlesource.com/16985 Commit-Queue: David Benjamin <davidben@google.com> Commit-Queue: Adam Langley <agl@google.com> Reviewed-by: Adam Langley <agl@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org> |
||
---|---|---|
.. | ||
aes | ||
bn | ||
cipher | ||
des | ||
digest | ||
ec | ||
ecdsa | ||
hmac | ||
md4 | ||
md5 | ||
modes | ||
rand | ||
rsa | ||
sha | ||
bcm.c | ||
CMakeLists.txt | ||
delocate.h | ||
FIPS.md | ||
intcheck1.png | ||
intcheck2.png | ||
intcheck3.png | ||
is_fips.c |