[PATCH v2] Linux: Also check for 0 return value from vDSO gerandom probe
Jason A. Donenfeld
Jason@zx2c4.com
Mon Dec 16 20:11:33 GMT 2024
On Sun, Dec 15, 2024 at 1:56 PM Florian Weimer <fweimer@redhat.com> wrote:
> As of Linux 6.13, there is no code in the vDSO that declines this
> initialization request with the special ~0UL state size.
Sorry I didn't point this out earlier, but it doesn't really matter
because it's just a commit text thing. But just for your curiosity,
there is error path code in the form of:
ssize_t __kernel_getrandom(void *buffer, size_t len, unsigned int
flags, void *opaque_state, size_t opaque_len)
{
if (alternative_has_cap_likely(ARM64_HAS_FPSIMD))
return __cvdso_getrandom(buffer, len, flags,
opaque_state, opaque_len);
if (unlikely(opaque_len == ~0UL && !buffer && !len && !flags))
return -ENOSYS;
return getrandom_syscall(buffer, len, flags);
}
and
ssize_t __kernel_getrandom(void *buffer, size_t len, unsigned int
flags, void *opaque_state, size_t opaque_len)
{
if (test_facility(129))
return __cvdso_getrandom(buffer, len, flags,
opaque_state, opaque_len);
if (unlikely(opaque_len == ~0UL && !buffer && !len && !flags))
return -ENOSYS;
return getrandom_syscall(buffer, len, flags);
}
on arm64 and s390x, respectively. This is just fallback code for rare hardware.
Jason
More information about the Libc-alpha
mailing list