On 08/19/2013 03:19 PM, Jan Stancek wrote: > > ----- 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 Hi.
Thank you, I will look this way. >> --- >> .../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