|
From: <sv...@va...> - 2011-08-15 07:57:16
|
Author: tom
Date: 2011-08-15 08:52:26 +0100 (Mon, 15 Aug 2011)
New Revision: 11977
Log:
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 <bri...@en...> on #280083.
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2011-08-14 06:41:15 UTC (rev 11976)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2011-08-15 07:52:26 UTC (rev 11977)
@@ -1641,7 +1641,7 @@
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 @@
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_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 );
}
/* ---------------------------------------------------------------------
|