zdtm/maps007: don't use signed values in calculations

maps007 segfaults on i386, because "size" is calculated bigger than allowed.

This occurs when the result of lrand48() * PAGE_SIZE is negative.
In this case the % operation returns a negative value too, what is unexpected.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
Andrey Vagin 2014-12-03 14:29:00 +03:00 committed by Pavel Emelyanov
parent bda033e1e9
commit d64a49fdc6

View file

@ -12,8 +12,8 @@
#include "zdtmtst.h"
#include "lock.h"
#define MAP_SIZE (1 << 20)
#define MEM_SIZE (1 << 29)
#define MAP_SIZE (1UL << 20)
#define MEM_SIZE (1UL << 29)
#define PAGE_SIZE 4096
const char *test_doc = "create random mappings and touch memory";
@ -93,7 +93,8 @@ int main(int argc, char **argv)
count++;
p = start + ((lrand48() * PAGE_SIZE) % MEM_SIZE);
size = (lrand48() * PAGE_SIZE) % (end - p);
size = lrand48() * PAGE_SIZE;
size %= (end - p);
size %= MAP_SIZE;
if (size == 0)
size = PAGE_SIZE;