diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r-- | sysdeps/unix/sysv/linux/not-cancel.h | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tls-internal.c | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tls-internal.h | 1 |
3 files changed, 7 insertions, 12 deletions
diff --git a/sysdeps/unix/sysv/linux/not-cancel.h b/sysdeps/unix/sysv/linux/not-cancel.h index 2c58d5ae2f..a263d294b1 100644 --- a/sysdeps/unix/sysv/linux/not-cancel.h +++ b/sysdeps/unix/sysv/linux/not-cancel.h @@ -23,6 +23,7 @@ #include <sysdep.h> #include <errno.h> #include <unistd.h> +#include <sys/poll.h> #include <sys/syscall.h> #include <sys/wait.h> #include <time.h> @@ -70,9 +71,14 @@ __writev_nocancel_nostatus (int fd, const struct iovec *iov, int iovcnt) static inline int __getrandom_nocancel (void *buf, size_t buflen, unsigned int flags) { - return INTERNAL_SYSCALL_CALL (getrandom, buf, buflen, flags); + return INLINE_SYSCALL_CALL (getrandom, buf, buflen, flags); } +static inline int +__poll_infinity_nocancel (struct pollfd *fds, nfds_t nfds) +{ + return INLINE_SYSCALL_CALL (ppoll, fds, nfds, NULL, NULL, 0); +} /* Uncancelable fcntl. */ __typeof (__fcntl) __fcntl64_nocancel; diff --git a/sysdeps/unix/sysv/linux/tls-internal.c b/sysdeps/unix/sysv/linux/tls-internal.c index 0326ebb767..c8a9ed2d40 100644 --- a/sysdeps/unix/sysv/linux/tls-internal.c +++ b/sysdeps/unix/sysv/linux/tls-internal.c @@ -16,7 +16,6 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <stdlib/arc4random.h> #include <string.h> #include <tls-internal.h> @@ -26,13 +25,4 @@ __glibc_tls_internal_free (void) struct pthread *self = THREAD_SELF; free (self->tls_state.strsignal_buf); free (self->tls_state.strerror_l_buf); - - if (self->tls_state.rand_state != NULL) - { - /* Clear any lingering random state prior so if the thread stack is - cached it won't leak any data. */ - explicit_bzero (self->tls_state.rand_state, - sizeof (*self->tls_state.rand_state)); - free (self->tls_state.rand_state); - } } diff --git a/sysdeps/unix/sysv/linux/tls-internal.h b/sysdeps/unix/sysv/linux/tls-internal.h index ebc65d896a..2ebe977802 100644 --- a/sysdeps/unix/sysv/linux/tls-internal.h +++ b/sysdeps/unix/sysv/linux/tls-internal.h @@ -28,7 +28,6 @@ __glibc_tls_internal (void) return &THREAD_SELF->tls_state; } -/* Reset the arc4random TCB state on fork. */ extern void __glibc_tls_internal_free (void) attribute_hidden; #endif |