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

Reply via email to