mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
pselect.c: Pass a pointer to SYSCALL_CANCEL [BZ #26606]
commit a92f4e6299
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Mon Jul 6 13:27:12 2020 -0300
linux: Add time64 pselect support
changed pselect.c to
r = SYSCALL_CANCEL (pselect6_time64, nfds, readfds, writefds, exceptfds,
timeout,
((__syscall_ulong_t[]){ (uintptr_t) sigmask,
__NSIG_BYTES }));
which doesn't work with x32's ARGIFY and data passed to syscall isn't
initialized with sigmask and __NSIG_BYTES. Change to
__syscall_ulong_t data[2] =
{
(uintptr_t) sigmask, __NSIG_BYTES
};
r = SYSCALL_CANCEL (pselect6_time64, nfds, readfds, writefds, exceptfds,
timeout, data);
fixes [BZ #26606].
This commit is contained in:
@ -44,10 +44,13 @@ __pselect64 (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
|
||||
int r;
|
||||
if (supports_time64 ())
|
||||
{
|
||||
/* NB: This is required by ARGIFY used in x32 internal_syscallN. */
|
||||
__syscall_ulong_t data[2] =
|
||||
{
|
||||
(uintptr_t) sigmask, __NSIG_BYTES
|
||||
};
|
||||
r = SYSCALL_CANCEL (pselect6_time64, nfds, readfds, writefds, exceptfds,
|
||||
timeout,
|
||||
((__syscall_ulong_t[]){ (uintptr_t) sigmask,
|
||||
__NSIG_BYTES }));
|
||||
timeout, data);
|
||||
if (r == 0 || errno != ENOSYS)
|
||||
return r;
|
||||
|
||||
|
Reference in New Issue
Block a user