[PATCH 2/2] linux: use __getrandom_nocancel in getentropy
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Wed Feb 12 12:21:04 GMT 2025
On 08/02/25 14:05, Cristian Rodríguez wrote:
> It must use the VDSO implementation if available instead of a raw
> syscall.
>
> Signed-off-by: Cristian Rodríguez <cristian@rodriguez.im>
I think it make sense now that we have an non-cancellable internal symbol,
and the vDSO should give us same guarantee as the kernel.
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> sysdeps/unix/sysv/linux/getentropy.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sysdeps/unix/sysv/linux/getentropy.c b/sysdeps/unix/sysv/linux/getentropy.c
> index a62c9fb099..2134a32ae4 100644
> --- a/sysdeps/unix/sysv/linux/getentropy.c
> +++ b/sysdeps/unix/sysv/linux/getentropy.c
> @@ -21,7 +21,7 @@
> #include <errno.h>
> #include <unistd.h>
> #include <sysdep.h>
> -
> +#include <not-cancel.h>
> /* Write LENGTH bytes of randomness starting at BUFFER. Return 0 on
> success and -1 on failure. */
> int
> @@ -42,7 +42,7 @@ getentropy (void *buffer, size_t length)
> while (buffer < end)
> {
> /* NB: No cancellation point. */
> - ssize_t bytes = INLINE_SYSCALL_CALL (getrandom, buffer, end - buffer, 0);
> + ssize_t bytes = __getrandom_nocancel (buffer, end - buffer, 0);
> if (bytes < 0)
> {
> if (errno == EINTR)
More information about the Libc-alpha
mailing list