random-util: assume getrandom(GRND_INSECURE) works

GRND_INSECURE was added in kernel 5.6, and our baseline on kernel is
5.10. Let's assume it always works. Even if it does not work, we have
further fallback logics. So, this should be safe.
This commit is contained in:
Yu Watanabe
2026-01-13 10:21:04 +09:00
parent 1aeba33d8f
commit ec21e5c58e
+2 -10
View File
@@ -68,8 +68,6 @@ static void fallback_random_bytes(void *p, size_t n) {
}
void random_bytes(void *p, size_t n) {
static bool have_grndinsecure = true;
assert(p || n == 0);
if (n == 0)
@@ -78,15 +76,9 @@ void random_bytes(void *p, size_t n) {
for (;;) {
ssize_t l;
l = getrandom(p, n, have_grndinsecure ? GRND_INSECURE : GRND_NONBLOCK);
if (l < 0 && errno == EINVAL && have_grndinsecure) {
/* No GRND_INSECURE; fallback to GRND_NONBLOCK. */
have_grndinsecure = false;
continue;
}
l = getrandom(p, n, GRND_INSECURE);
if (l <= 0)
break; /* Will block (with GRND_NONBLOCK), or unexpected error. Give up and fallback
to /dev/urandom. */
break; /* Unexpected error. Give up and fallback to /dev/urandom. */
if ((size_t) l == n)
return; /* Done reading, success. */