[hurd,commited] hurd: Fix pwritev*

Message ID 20180107123401.32262-1-samuel.thibault@ens-lyon.org
State Committed, archived
Headers

Commit Message

Samuel Thibault Jan. 7, 2018, 12:34 p.m. UTC
  This follows c45d78aac ('posix: Fix generic p{read,write}v buffer allocation
(BZ#22457)'), which made pwritev to use __mmap instead of __posix_memalign,
but didn't pass PROT_READ to it, while the pwrite() call does need to
read the data we have just copied over.

	* sysdeps/posix/pwritev_common.c: Add PROT_READ to __mmap prot.
---
 ChangeLog                      | 1 +
 sysdeps/posix/pwritev_common.c | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
  

Patch

diff --git a/ChangeLog b/ChangeLog
index 8ddf37ebb8..f0eb187b38 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -36,6 +36,7 @@ 
 	(__glob64): Define GLIBC_2_27 versioned symbol instead of glob64.
 	* sysdeps/gnu/glob-lstat-compat.c: New file.
 	* sysdeps/gnu/glob64-lstat-compat.c: New file.
+	* sysdeps/posix/pwritev_common.c: Add PROT_READ to __mmap prot.
 
 2018-01-05  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
 
diff --git a/sysdeps/posix/pwritev_common.c b/sysdeps/posix/pwritev_common.c
index bd0f5c5257..344ab4d61b 100644
--- a/sysdeps/posix/pwritev_common.c
+++ b/sysdeps/posix/pwritev_common.c
@@ -55,7 +55,7 @@  PWRITEV (int fd, const struct iovec *vector, int count, OFF_T offset)
      but 1. it is system specific (not meant in generic implementation), and
      2. it would make the implementation more complex, and 3. it will require
      another syscall (fcntl).  */
-  void *buffer = __mmap (NULL, bytes, PROT_WRITE,
+  void *buffer = __mmap (NULL, bytes, PROT_READ | PROT_WRITE,
 		         MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
   if (__glibc_unlikely (buffer == MAP_FAILED))
     return -1;