----- Original Message ----- > From: "Stanislav Kholmanskikh" <stanislav.kholmansk...@oracle.com> > To: ltp-list@lists.sourceforge.net > Cc: "vasily isaenko" <vasily.isae...@oracle.com>, jstan...@redhat.com > Sent: Monday, 19 August, 2013 12:29:24 PM > Subject: [PATCH] syscalls/migrate_pages: fix nodemask memory allocation > > In accordance to man migrate_pages(), mbind() the bit mask size > should be rounded to next multiple of sizeof(unsigned long). > > Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmansk...@oracle.com>
OK, then we should also make same change to lib/numa_helper.c, but I would prefer to do this with some ALIGN macro. I'm not sure if we have some already, my grep turned out empty. #define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a) - 1) #define __ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask)) nodemask_size = ALIGN(max_node / 8, sizeof(long)); Regards, Jan > --- > .../syscalls/migrate_pages/migrate_pages01.c | 5 ++++- > .../syscalls/migrate_pages/migrate_pages02.c | 5 ++++- > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/testcases/kernel/syscalls/migrate_pages/migrate_pages01.c > b/testcases/kernel/syscalls/migrate_pages/migrate_pages01.c > index c23e8b0..9981c0c 100644 > --- a/testcases/kernel/syscalls/migrate_pages/migrate_pages01.c > +++ b/testcases/kernel/syscalls/migrate_pages/migrate_pages01.c > @@ -248,7 +248,10 @@ static void setup(void) > ret); > > sane_max_node = get_max_node(); > - sane_nodemask_size = sane_max_node / 8 + 1; > + sane_nodemask_size = sane_max_node / (sizeof(unsigned long)*8); > + sane_nodemask_size += sane_max_node % (sizeof(unsigned long)*8) == 0 ? > + 0 : 1; > + sane_nodemask_size *= sizeof(unsigned long); > sane_old_nodes = SAFE_MALLOC(NULL, sane_nodemask_size); > sane_new_nodes = SAFE_MALLOC(NULL, sane_nodemask_size); > memset(sane_old_nodes, 0, sane_nodemask_size); > diff --git a/testcases/kernel/syscalls/migrate_pages/migrate_pages02.c > b/testcases/kernel/syscalls/migrate_pages/migrate_pages02.c > index 49129e0..2b30b1f 100644 > --- a/testcases/kernel/syscalls/migrate_pages/migrate_pages02.c > +++ b/testcases/kernel/syscalls/migrate_pages/migrate_pages02.c > @@ -110,7 +110,10 @@ static int migrate_to_node(pid_t pid, int node) > tst_resm(TINFO, "pid(%d) migrate pid %d to node -> %d", > getpid(), pid, node); > max_node = get_max_node(); > - nodemask_size = max_node / 8 + 1; > + nodemask_size = max_node / (sizeof(unsigned long)*8); > + nodemask_size += max_node % (sizeof(unsigned long)*8) == 0 ? > + 0 : 1; > + nodemask_size *= sizeof(unsigned long); > old_nodes = SAFE_MALLOC(NULL, nodemask_size); > new_nodes = SAFE_MALLOC(NULL, nodemask_size); > > -- > 1.7.1 > > ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to code-level detail for bottlenecks, with <2% overhead. Download for free and get started troubleshooting in minutes. http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list