lkml.org 
[lkml]   [2004]   [Jul]   [9]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [LTP] Re: Recent changes in LTP test results
FromDaniel McNeil <>
DateFri, 09 Jul 2004 16:43:04 -0700
On Wed, 2004-07-07 at 23:07, Andrew Morton wrote:
> Bryce Harrington <bryce@osdl.org> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:04    [from the cache]
©2003-2008