1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- From 711c0381798c85f3e25ea0ab503b24857850a762 Mon Sep 17 00:00:00 2001
- From: Guillem Jover <guillem@hadrons.org>
- Date: Wed, 14 Aug 2019 04:42:42 +0200
- Subject: [PATCH libaio 26/28] harness: Fix PROT_WRITE mmap check
- This partially reverts commit d7f5065448efb49b2a26e728ff735e12ea05b62e.
- The actual problem in the original code was that read() was being used
- to assert whether the buffer was readable, but the kernel was instead
- reading from the file descriptor and then writing into the buffer, so
- no EFAULT was being generated (on architectures that do so).
- We needed to use a write() so that the kernel would read from the
- buffer.
- Signed-off-by: Guillem Jover <guillem@hadrons.org>
- Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
- ---
- harness/cases/5.t | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
- diff --git a/harness/cases/5.t b/harness/cases/5.t
- index 7d67562..b0a7c56 100644
- --- a/harness/cases/5.t
- +++ b/harness/cases/5.t
- @@ -41,13 +41,12 @@ int test_main(void)
- assert(buf != (char *)-1);
-
- /* Whether PROT_WRITE is readable is arch-dependent. So compare
- - * against read result. */
- - res = read(rwfd, buf, SIZE);
- + * against write() result (to make the kernel read from buf). */
- + res = write(rwfd, buf, SIZE);
- if (res < 0)
- res = -errno;
- - status |= attempt_rw(rwfd, buf, SIZE, 0, READ, res);
- -
- - status |= attempt_rw(rwfd, buf, SIZE, 0, WRITE, SIZE);
- + status |= attempt_rw(rwfd, buf, SIZE, 0, READ, SIZE);
- + status |= attempt_rw(rwfd, buf, SIZE, 0, WRITE, res);
-
- return status;
- }
- --
- 2.26.0.292.g33ef6b2f38
|