From: Tom Hughes Date: Mon, 15 Aug 2011 07:52:26 +0000 (+0000) Subject: Correct the calculation of the size of the node mask given to X-Git-Tag: svn/VALGRIND_3_7_0~260 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a570998478ddbe3608bc16c059536e3bc8401470;p=thirdparty%2Fvalgrind.git Correct the calculation of the size of the node mask given to the mbind, set_mempolicy and get_mempolicy system calls. Patch from Brice Goglin on #280083. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11977 --- diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 5cfa0180d7..e7ffc21d99 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -1641,7 +1641,7 @@ PRE(sys_mbind) unsigned long, maxnode, unsigned, flags); if (ARG1 != 0) PRE_MEM_READ( "mbind(nodemask)", ARG4, - VG_ROUNDUP( ARG5, sizeof(UWord) ) / sizeof(UWord) ); + VG_ROUNDUP( ARG5-1, sizeof(UWord) * 8 ) / 8 ); } PRE(sys_set_mempolicy) @@ -1651,7 +1651,7 @@ PRE(sys_set_mempolicy) int, policy, unsigned long *, nodemask, unsigned long, maxnode); PRE_MEM_READ( "set_mempolicy(nodemask)", ARG2, - VG_ROUNDUP( ARG3, sizeof(UWord) ) / sizeof(UWord) ); + VG_ROUNDUP( ARG3-1, sizeof(UWord) * 8 ) / 8 ); } PRE(sys_get_mempolicy) @@ -1665,14 +1665,14 @@ PRE(sys_get_mempolicy) PRE_MEM_WRITE( "get_mempolicy(policy)", ARG1, sizeof(Int) ); if (ARG2 != 0) PRE_MEM_WRITE( "get_mempolicy(nodemask)", ARG2, - VG_ROUNDUP( ARG3, sizeof(UWord) * 8 ) / sizeof(UWord) ); + VG_ROUNDUP( ARG3-1, sizeof(UWord) * 8 ) / 8 ); } POST(sys_get_mempolicy) { if (ARG1 != 0) POST_MEM_WRITE( ARG1, sizeof(Int) ); if (ARG2 != 0) - POST_MEM_WRITE( ARG2, VG_ROUNDUP( ARG3, sizeof(UWord) * 8 ) / sizeof(UWord) ); + POST_MEM_WRITE( ARG2, VG_ROUNDUP( ARG3-1, sizeof(UWord) * 8 ) / 8 ); } /* ---------------------------------------------------------------------