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;
|
int r;
|
||||||
if (supports_time64 ())
|
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,
|
r = SYSCALL_CANCEL (pselect6_time64, nfds, readfds, writefds, exceptfds,
|
||||||
timeout,
|
timeout, data);
|
||||||
((__syscall_ulong_t[]){ (uintptr_t) sigmask,
|
|
||||||
__NSIG_BYTES }));
|
|
||||||
if (r == 0 || errno != ENOSYS)
|
if (r == 0 || errno != ENOSYS)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user