From: Subrata M. <su...@li...> - 2009-01-06 05:33:45
|
On Mon, 2009-01-05 at 17:47 +0300, Dmitry Guryanov wrote: > There is a testcase in mmapstress03, which tries > to mmap 2Gb-4Kb at address 0x7ffff000 and checks it > returns error and errno is set to ENOMEM. But such mmap > is possible on x86_64. So lets tune size and address to > more suitable for 64-bit architectures. > --- Thanks. I will request my team to test with this patch as well. I hope it will solve the problem. Regards-- Subrata > testcases/kernel/mem/mmapstress/mmapstress03.c | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/testcases/kernel/mem/mmapstress/mmapstress03.c b/testcases/kernel/mem/mmapstress/mmapstress03.c > index 3b2bf61..43d564a 100644 > --- a/testcases/kernel/mem/mmapstress/mmapstress03.c > +++ b/testcases/kernel/mem/mmapstress/mmapstress03.c > @@ -67,6 +67,7 @@ void ok_exit(); > #define ERROR(M) (void)fprintf(stderr, "%s: errno = %d: " M "\n", progname, \ > errno) > #define NEG1 (char *)-1 > +#define POINTER_SIZE (sizeof(void *) << 3) > > extern long sysconf(int name); > extern void exit(int); > @@ -157,8 +158,8 @@ main(int argc, char *argv[]) > anyfail(); > } > /* Ask for a ridiculously large mmap region at a high address */ > - if (mmap((caddr_t)(INT_MAX - INT_MAX%pagesize), > - (size_t)(INT_MAX - INT_MAX%pagesize), > + if (mmap((caddr_t)(1UL << (POINTER_SIZE - 1)) - pagesize, > + (size_t)((1UL << (POINTER_SIZE - 1)) - pagesize), > PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_FIXED|MAP_SHARED, 0, 0) > != (caddr_t)-1) > { |