[PATCH v3 2/2] malloc: Do not clobber errno on __getrandom_nocancel (BZ #29624)

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Fri Sep 30 16:37:18 GMT 2022



On 30/09/22 13:29, Yann Droneaud wrote:
> Hi,
> 
> Le 30/09/2022 à 17:09, Wilco Dijkstra via Libc-alpha a écrit :
>> Hi Adhemerval,
>>
>> This looks good to me assuming Hurd is 32-bit only.
>>
>> Reviewed-by: Wilco Dijkstra<Wilco.Dijkstra@arm.com>
>>
>> Cheers,
>> Wilco
>>
>>
>> From: Adhemerval Zanella<adhemerval.zanella@linaro.org>
>>   Use INTERNAL_SYSCALL_CALL instead of INLINE_SYSCALL_CALL.  This
>> requires emulate the semantic for hurd call (so __arc4random_buf
>> uses the fallback).
>>
>> Checked on x86_64-linux-gnu.
>> ---
>> diff --git a/sysdeps/mach/hurd/not-cancel.h b/sysdeps/mach/hurd/not-cancel.h
>> index ae58b734e3..5d2d2b4b8a 100644
>> --- a/sysdeps/mach/hurd/not-cancel.h
>> +++ b/sysdeps/mach/hurd/not-cancel.h
>> @@ -25,6 +25,7 @@
>>   #include <sys/wait.h>
>>   #include <time.h>
>>   #include <sys/uio.h>
>> +#include <sys/random.h>
>>   #include <hurd.h>
>>   #include <hurd/fd.h>
>>   @@ -75,8 +76,15 @@ __typeof (__fcntl) __fcntl_nocancel;
>>   #define __fcntl64_nocancel(...) \
>>     __fcntl_nocancel (__VA_ARGS__)
>>   -#define __getrandom_nocancel(buf, size, flags) \
>> -  __getrandom (buf, size, flags)
>> +static inline int
> 
> 
> ssize_t
> 
> 
>> +__getrandom_nocancel (void *buf, size_t buflen, unsigned int flags)
>> +{
>> +  int save_errno = errno;
>> +  int r = __getrandom (buf, buflen, flags);
> 
> ssize_t r

Ack.


More information about the Libc-alpha mailing list