]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Test file mode correctly in vmsplice wrapper.
authorTom Hughes <tom@compton.nu>
Mon, 14 Jan 2013 22:14:21 +0000 (22:14 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 14 Jan 2013 22:14:21 +0000 (22:14 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13229

coregrind/m_syswrap/syswrap-linux.c
include/vki/vki-amd64-linux.h
include/vki/vki-arm-linux.h
include/vki/vki-mips32-linux.h
include/vki/vki-ppc32-linux.h
include/vki/vki-ppc64-linux.h
include/vki/vki-x86-linux.h

index 99f903a816f4bf8696f0935a76c76826b949937f..b2f1f3392389bea04f89bede1de2dade4b100057 100644 (file)
@@ -4494,10 +4494,10 @@ PRE(sys_vmsplice)
       for (iov = (struct vki_iovec *)ARG2;
            iov < (struct vki_iovec *)ARG2 + ARG3; iov++) 
       {
-         if ((fdfl & (VKI_O_WRONLY|VKI_O_RDWR)) != 0)
-            PRE_MEM_READ( "vmsplice(iov[...])", (Addr)iov->iov_base, iov->iov_len );
-         else if ((fdfl & VKI_O_RDONLY) != 0)
+         if ((fdfl & VKI_O_ACCMODE) == VKI_O_RDONLY)
             PRE_MEM_WRITE( "vmsplice(iov[...])", (Addr)iov->iov_base, iov->iov_len );
+         else
+            PRE_MEM_READ( "vmsplice(iov[...])", (Addr)iov->iov_base, iov->iov_len );
       }
    }
 }
@@ -4508,7 +4508,7 @@ POST(sys_vmsplice)
    if (RES > 0) {
       Int fdfl = VG_(fcntl)(ARG1, VKI_F_GETFL, 0);
       vg_assert(fdfl >= 0);
-      if ((fdfl & VKI_O_RDONLY) != 0)
+      if ((fdfl & VKI_O_ACCMODE) == VKI_O_RDONLY)
       {
          const struct vki_iovec *iov;
          for (iov = (struct vki_iovec *)ARG2;
index 479f0de2f1c35b37465b1d21284064d1d552e947..1f2fa604c04aa6744995f2afc6e4c03e523dcf79 100644 (file)
@@ -242,6 +242,7 @@ struct vki_sigcontext {
 // From linux-2.6.9/include/asm-x86_64/fcntl.h
 //----------------------------------------------------------------------
 
+#define VKI_O_ACCMODE       03
 #define VKI_O_RDONLY        00
 #define VKI_O_WRONLY        01
 #define VKI_O_RDWR          02
index ab094b302c6a26a24c5e5af4b3be0da58e526766..afb9bd793e8fcf41239b9ce25cddda5164461043 100644 (file)
@@ -240,6 +240,7 @@ struct vki_sigcontext {
 // From linux-2.6.8.1/include/asm-i386/fcntl.h
 //----------------------------------------------------------------------
 
+#define VKI_O_ACCMODE       03
 #define VKI_O_RDONLY        00
 #define VKI_O_WRONLY        01
 #define VKI_O_RDWR          02
index e5a48ff885de929b8441effa8a16b0b0748bb3d8..de0246cb2f58451ee18b816a8b0daeee7b072aec 100644 (file)
@@ -309,6 +309,7 @@ struct vki_sigcontext {
 // From linux-2.6.35.5/include/asm-mips/fcntl.h
 //----------------------------------------------------------------------
 
+#define VKI_O_ACCMODE             03
 #define VKI_O_RDONLY              00
 #define VKI_O_WRONLY              01
 #define VKI_O_RDWR                02
index 76b6a06fd705ee8bb496e2da9c0f76bd84653225..255f95e2a41a93579480fd0bc1e0df448f29c532 100644 (file)
@@ -307,6 +307,7 @@ struct vki_sigcontext {
 // From linux-2.6.9/include/asm-ppc/fcntl.h
 //----------------------------------------------------------------------
 
+#define VKI_O_ACCMODE             03
 #define VKI_O_RDONLY              00
 #define VKI_O_WRONLY              01
 #define VKI_O_RDWR                02
index 7202a59bcaa317d31214092d0a56524fe4ca9efd..06c8773233cbca17b16ebed4ade114a7c33d662f 100644 (file)
@@ -360,6 +360,7 @@ struct vki_sigcontext {
 // From linux-2.6.13/include/asm-ppc64/fcntl.h
 //----------------------------------------------------------------------
 
+#define VKI_O_ACCMODE           03
 #define VKI_O_RDONLY             00
 #define VKI_O_WRONLY             01
 #define VKI_O_RDWR               02
index fbcdf8e5e03a5b60981786183eb32f399b03993d..7c072d6617484eaa1af18829f7e02415f52e8c17 100644 (file)
@@ -278,6 +278,7 @@ struct vki_sigcontext {
 // From linux-2.6.8.1/include/asm-i386/fcntl.h
 //----------------------------------------------------------------------
 
+#define VKI_O_ACCMODE       03
 #define VKI_O_RDONLY        00
 #define VKI_O_WRONLY        01
 #define VKI_O_RDWR          02