random.c (fill_random_bytes_syscall): use "__NR_" prefix on Linux

glibc still does not define the SYS_getrandom alias for
__NR_getrandom in the Linux kernel.  However, installing
up-to-date Linux kernel headers (linux-libc-dev >= 3.17 package
on Debian) will get the __NR_getrandom syscall number defined
properly without relying on glibc.

This allows users with a modern kernel+headers to use the getrandom
syscall without waiting on glibc support.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2017-01-11 22:38:50 +00:00
Родитель 3e34d8a44f
Коммит 208018fb9d
1 изменённых файлов: 2 добавлений и 2 удалений

Просмотреть файл

@ -505,7 +505,7 @@ fill_random_bytes_syscall(void *seed, size_t size, int unused)
CryptGenRandom(prov, size, seed);
return 0;
}
#elif defined __linux__ && defined SYS_getrandom
#elif defined __linux__ && defined __NR_getrandom
#include <linux/random.h>
# ifndef GRND_NONBLOCK
@ -522,7 +522,7 @@ fill_random_bytes_syscall(void *seed, size_t size, int need_secure)
if (!need_secure)
flags = GRND_NONBLOCK;
errno = 0;
ret = syscall(SYS_getrandom, seed, size, flags);
ret = syscall(__NR_getrandom, seed, size, flags);
if (errno == ENOSYS) {
ATOMIC_SET(try_syscall, 0);
return -1;