Re: [LTP] Re: Recent changes in LTP test results

From: Daniel McNeil
Date: Fri Jul 09 2004 - 18:07:51 EST


On Wed, 2004-07-07 at 23:07, Andrew Morton wrote:
> Bryce Harrington <bryce@xxxxxxxx> wrote:
> >
> > I have retested with ltp-full-20040603. This version of LTP hangs on
> > our system but fortunately completes most of the tests before doing so.
> > It indicates that it still encounters the same errors, e.g.:
> >
> > access03 1 FAIL : access((char *)-1,R_OK) failed with errno 2 : No such file or directory but expected 14 (EFAULT)
> > access03 2 FAIL : access((char *)-1,W_OK) failed with errno 2 : No such file or directory but expected 14 (EFAULT)
>
> Nope, sorry, still cannot reproduce it - you'll need to debug it at your end.


Andrew,

Mark and I are able to reproduce this with the simple
program below. The mmap() PROT_NONE is not giving a EFAULT
on read. The test was mmap a PROT_NONE address and passing
that into the access() syscall and then looking for a
EFAULT. Instead it was getting ENOENT. We found that
by backing out the nx-update.patch from -mm1 patches
the problem went away.

The /proc/pid/maps looked like this:

without nx-update patch:
40017000-40018000 ---p 40017000 00:00 0
=====
with -mm1:
40017000-40018000 --xp 40017000 00:00 0

So it looks like the page being executable allows read
access.

Not sure why you do not see this on your machine. This
fails on my 2-proc xeon box (and all the STP machines).

I can send more info if you need it.

Daniel (and Mark)

#include <unistd.h>
#include <errno.h>
#include <sys/mman.h>


main()
{
char *p0 = 0;
char *p1 = (char *)-1;
char *p2;
int err;

p2 = mmap(0, 4096, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);

errno = 0;
err = access(p0, R_OK);
printf("access 0 ptr %p return code %d errno %d\n", p0, err, errno);
perror("access result:");
errno = 0;
err = access(p1, R_OK);
printf("access 1 ptr %p return code %d errno %d\n", p1, err, errno);
perror("access result:");
errno = 0;
err = access(p2, R_OK);
printf("access 2 ptr %p return code %d errno %d\n", p2, err, errno);
perror("access result:");
}


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/