From: Tom Hughes Date: Mon, 14 Jan 2013 22:14:21 +0000 (+0000) Subject: Test file mode correctly in vmsplice wrapper. X-Git-Tag: svn/VALGRIND_3_9_0~452 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e960453f98d7642e1866a420732f812e7d80a48e;p=thirdparty%2Fvalgrind.git Test file mode correctly in vmsplice wrapper. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13229 --- diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 99f903a816..b2f1f33923 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -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; diff --git a/include/vki/vki-amd64-linux.h b/include/vki/vki-amd64-linux.h index 479f0de2f1..1f2fa604c0 100644 --- a/include/vki/vki-amd64-linux.h +++ b/include/vki/vki-amd64-linux.h @@ -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 diff --git a/include/vki/vki-arm-linux.h b/include/vki/vki-arm-linux.h index ab094b302c..afb9bd793e 100644 --- a/include/vki/vki-arm-linux.h +++ b/include/vki/vki-arm-linux.h @@ -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 diff --git a/include/vki/vki-mips32-linux.h b/include/vki/vki-mips32-linux.h index e5a48ff885..de0246cb2f 100644 --- a/include/vki/vki-mips32-linux.h +++ b/include/vki/vki-mips32-linux.h @@ -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 diff --git a/include/vki/vki-ppc32-linux.h b/include/vki/vki-ppc32-linux.h index 76b6a06fd7..255f95e2a4 100644 --- a/include/vki/vki-ppc32-linux.h +++ b/include/vki/vki-ppc32-linux.h @@ -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 diff --git a/include/vki/vki-ppc64-linux.h b/include/vki/vki-ppc64-linux.h index 7202a59bca..06c8773233 100644 --- a/include/vki/vki-ppc64-linux.h +++ b/include/vki/vki-ppc64-linux.h @@ -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 diff --git a/include/vki/vki-x86-linux.h b/include/vki/vki-x86-linux.h index fbcdf8e5e0..7c072d6617 100644 --- a/include/vki/vki-x86-linux.h +++ b/include/vki/vki-x86-linux.h @@ -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