mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
posix: Set p{read,write}v2 to return ENOTSUP (BZ#21780)
Different than other architectures hppa-linux-gnu define different values for ENOTSUP and EOPNOTSUPP, where the later is a Linux specific one. This leads to tst-preadwritev{64}v2 tests failures: $ ./testrun.sh misc/tst-preadvwritev2 error: tst-preadvwritev2-common.c:35: preadv2 failure did not set errno to ENOTSUP (223) error: 1 test failures The straightforward fix is to return the POSIX defined ENOTSUP on all p{read,write}v{64}v2 implementations instead of Linux specific one. Checked on x86_64-linux-gnu and the tst-preadwritev{64}v2 on hppa-linux-gnu (although due the installed kernel on my testing system the pwritev{64}v2 with an invalid flag still fails due a known kernel issue [1]). [BZ #21780] * sysdeps/posix/preadv2.c (preadv2): Use ENOTSUP instead of EOPNOTSUPP. * sysdeps/posix/preadv64v2.c (preadv64v2): Likewise. * sysdeps/posix/pwritev2.c (pwritev2): Likewise. * sysdeps/posix/pwritev64v2.c (pwritev64v2): Likewise. * sysdeps/unix/sysv/linux/preadv2.c (preadv2): Likewise. * sysdeps/unix/sysv/linux/preadv64v2.c (preadv64v2): Likewise. * sysdeps/unix/sysv/linux/pwritev2.c (pwritev2): Likewise. * sysdeps/unix/sysv/linux/pwritev64v2.c (pwritev64v2): Likewise. [1] https://sourceware.org/ml/libc-alpha/2017-06/msg00726.html
This commit is contained in:
parent
cd65836b5f
commit
852d631207
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2017-08-07 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||||
|
|
||||||
|
[BZ #21780]
|
||||||
|
* sysdeps/posix/preadv2.c (preadv2): Use ENOTSUP instead of
|
||||||
|
EOPNOTSUPP.
|
||||||
|
* sysdeps/posix/preadv64v2.c (preadv64v2): Likewise.
|
||||||
|
* sysdeps/posix/pwritev2.c (pwritev2): Likewise.
|
||||||
|
* sysdeps/posix/pwritev64v2.c (pwritev64v2): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/preadv2.c (preadv2): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/preadv64v2.c (preadv64v2): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/pwritev2.c (pwritev2): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/pwritev64v2.c (pwritev64v2): Likewise.
|
||||||
|
|
||||||
2017-08-07 Joseph Myers <joseph@codesourcery.com>
|
2017-08-07 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
[BZ #21899]
|
[BZ #21899]
|
||||||
|
@ -28,7 +28,7 @@ preadv2 (int fd, const struct iovec *vector, int count, OFF_T offset,
|
|||||||
{
|
{
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
{
|
{
|
||||||
__set_errno (EOPNOTSUPP);
|
__set_errno (ENOTSUP);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ preadv64v2 (int fd, const struct iovec *vector, int count, OFF_T offset,
|
|||||||
{
|
{
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
{
|
{
|
||||||
__set_errno (EOPNOTSUPP);
|
__set_errno (ENOTSUP);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ pwritev2 (int fd, const struct iovec *vector, int count, OFF_T offset,
|
|||||||
{
|
{
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
{
|
{
|
||||||
__set_errno (EOPNOTSUPP);
|
__set_errno (ENOTSUP);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ pwritev64v2 (int fd, const struct iovec *vector, int count, OFF_T offset,
|
|||||||
{
|
{
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
{
|
{
|
||||||
__set_errno (EOPNOTSUPP);
|
__set_errno (ENOTSUP);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ preadv2 (int fd, const struct iovec *vector, int count, off_t offset,
|
|||||||
# ifdef __NR_preadv2
|
# ifdef __NR_preadv2
|
||||||
ssize_t result = SYSCALL_CANCEL (preadv2, fd, vector, count,
|
ssize_t result = SYSCALL_CANCEL (preadv2, fd, vector, count,
|
||||||
LO_HI_LONG (offset), flags);
|
LO_HI_LONG (offset), flags);
|
||||||
if (result >= 0 || errno != ENOSYS)
|
if (result >= 0)
|
||||||
return result;
|
return result;
|
||||||
# endif
|
# endif
|
||||||
/* Trying to emulate the preadv2 syscall flags is troublesome:
|
/* Trying to emulate the preadv2 syscall flags is troublesome:
|
||||||
@ -46,7 +46,7 @@ preadv2 (int fd, const struct iovec *vector, int count, off_t offset,
|
|||||||
|
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
{
|
{
|
||||||
__set_errno (EOPNOTSUPP);
|
__set_errno (ENOTSUP);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return preadv (fd, vector, count, offset);
|
return preadv (fd, vector, count, offset);
|
||||||
|
@ -30,7 +30,7 @@ preadv64v2 (int fd, const struct iovec *vector, int count, off64_t offset,
|
|||||||
#ifdef __NR_preadv64v2
|
#ifdef __NR_preadv64v2
|
||||||
ssize_t result = SYSCALL_CANCEL (preadv64v2, fd, vector, count,
|
ssize_t result = SYSCALL_CANCEL (preadv64v2, fd, vector, count,
|
||||||
LO_HI_LONG (offset), flags);
|
LO_HI_LONG (offset), flags);
|
||||||
if (result >= 0 || errno != ENOSYS)
|
if (result >= 0)
|
||||||
return result;
|
return result;
|
||||||
#endif
|
#endif
|
||||||
/* Trying to emulate the preadv2 syscall flags is troublesome:
|
/* Trying to emulate the preadv2 syscall flags is troublesome:
|
||||||
@ -44,7 +44,7 @@ preadv64v2 (int fd, const struct iovec *vector, int count, off64_t offset,
|
|||||||
|
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
{
|
{
|
||||||
__set_errno (EOPNOTSUPP);
|
__set_errno (ENOTSUP);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return preadv64 (fd, vector, count, offset);
|
return preadv64 (fd, vector, count, offset);
|
||||||
|
@ -28,7 +28,7 @@ pwritev2 (int fd, const struct iovec *vector, int count, off_t offset,
|
|||||||
# ifdef __NR_pwritev2
|
# ifdef __NR_pwritev2
|
||||||
ssize_t result = SYSCALL_CANCEL (pwritev2, fd, vector, count,
|
ssize_t result = SYSCALL_CANCEL (pwritev2, fd, vector, count,
|
||||||
LO_HI_LONG (offset), flags);
|
LO_HI_LONG (offset), flags);
|
||||||
if (result >= 0 || errno != ENOSYS)
|
if (result >= 0)
|
||||||
return result;
|
return result;
|
||||||
# endif
|
# endif
|
||||||
/* Trying to emulate the pwritev2 syscall flags is troublesome:
|
/* Trying to emulate the pwritev2 syscall flags is troublesome:
|
||||||
@ -42,7 +42,7 @@ pwritev2 (int fd, const struct iovec *vector, int count, off_t offset,
|
|||||||
|
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
{
|
{
|
||||||
__set_errno (EOPNOTSUPP);
|
__set_errno (ENOTSUP);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return pwritev (fd, vector, count, offset);
|
return pwritev (fd, vector, count, offset);
|
||||||
|
@ -30,7 +30,7 @@ pwritev64v2 (int fd, const struct iovec *vector, int count, off64_t offset,
|
|||||||
#ifdef __NR_pwritev64v2
|
#ifdef __NR_pwritev64v2
|
||||||
ssize_t result = SYSCALL_CANCEL (pwritev64v2, fd, vector, count,
|
ssize_t result = SYSCALL_CANCEL (pwritev64v2, fd, vector, count,
|
||||||
LO_HI_LONG (offset), flags);
|
LO_HI_LONG (offset), flags);
|
||||||
if (result >= 0 || errno != ENOSYS)
|
if (result >= 0)
|
||||||
return result;
|
return result;
|
||||||
#endif
|
#endif
|
||||||
/* Trying to emulate the pwritev2 syscall flags is troublesome:
|
/* Trying to emulate the pwritev2 syscall flags is troublesome:
|
||||||
@ -44,7 +44,7 @@ pwritev64v2 (int fd, const struct iovec *vector, int count, off64_t offset,
|
|||||||
|
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
{
|
{
|
||||||
__set_errno (EOPNOTSUPP);
|
__set_errno (ENOTSUP);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return pwritev64 (fd, vector, count, offset);
|
return pwritev64 (fd, vector, count, offset);
|
||||||
|
Loading…
Reference in New Issue
Block a user