Skip to content

Commit 1ad2c5d

Browse files
committed
Use kernel-provided __NR_getrandom syscall number
Replace libc's SYS_getrandom with the kernel-provided __NR_getrandom in configure checks, os.getrandom(), and interpreter entropy handling.
1 parent 46c355f commit 1ad2c5d

4 files changed

Lines changed: 6 additions & 6 deletions

File tree

Modules/posixmodule.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17440,7 +17440,7 @@ os_getrandom_impl(PyObject *module, Py_ssize_t size, unsigned int flags)
1744017440
#ifdef HAVE_GETRANDOM
1744117441
n = getrandom(data, size, flags);
1744217442
#else
17443-
n = syscall(SYS_getrandom, data, size, flags);
17443+
n = syscall(__NR_getrandom, data, size, flags);
1744417444
#endif
1744517445
if (n < 0 && errno == EINTR) {
1744617446
if (PyErr_CheckSignals() < 0) {

Python/bootstrap_hash.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
# include <sys/random.h> // getrandom()
2424
# endif
2525
# if !defined(HAVE_GETRANDOM) && defined(HAVE_GETRANDOM_SYSCALL)
26-
# include <sys/syscall.h> // SYS_getrandom
26+
# include <sys/syscall.h> // __NR_getrandom
2727
# endif
2828
#endif
2929

@@ -128,11 +128,11 @@ py_getrandom(void *buffer, Py_ssize_t size, int blocking, int raise)
128128
#else
129129
if (raise) {
130130
Py_BEGIN_ALLOW_THREADS
131-
n = syscall(SYS_getrandom, dest, n, flags);
131+
n = syscall(__NR_getrandom, dest, n, flags);
132132
Py_END_ALLOW_THREADS
133133
}
134134
else {
135-
n = syscall(SYS_getrandom, dest, n, flags);
135+
n = syscall(__NR_getrandom, dest, n, flags);
136136
}
137137
# ifdef _Py_MEMORY_SANITIZER
138138
if (n > 0) {

configure

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7812,7 +7812,7 @@ AC_LINK_IFELSE(
78127812
const size_t buflen = sizeof(buffer);
78137813
const int flags = GRND_NONBLOCK;
78147814
/* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */
7815-
(void)syscall(SYS_getrandom, buffer, buflen, flags);
7815+
(void)syscall(__NR_getrandom, buffer, buflen, flags);
78167816
return 0;
78177817
}
78187818
]])

0 commit comments

Comments
 (0)