----- 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

Reply via email to