Fix for errno 2 - expected 14 (EFAULT) problems
Marcin Cieslak
saper at SYSTEM.PL
Sat Sep 16 07:37:24 PDT 2006
LTP tests illegal memory by mmaping one-byte area region with PROT_NONE.
Old FreeBSD (before 1.333 version of /sys/vm/vm_map.c) always silently allowed
reada access - see http://www.freebsd.org/cgi/query-pr.cgi?pr=64573.
Linux emulation (initial version of linux_machdep.c) always added PROT_READ
to match FreeBSD behaviour, I think this is no longer necessary.
The fix for i386 is easy:
--- /usr/home/saper/b/src/sys/i386/linux/linux_machdep.c Fri Aug 5
01:25:32 2005
+++ /sys/i386/linux/linux_machdep.c Sat Sep 16 15:13:47 2006
@@ -549,7 +549,7 @@
bsd_args.len = linux_args->len;
}
- bsd_args.prot = linux_args->prot | PROT_READ; /* always required */
+ bsd_args.prot = linux_args->prot;
if (linux_args->flags & LINUX_MAP_ANON)
bsd_args.fd = -1;
else
However comment in the amd64 file indicates that for some Java applications
PROT_EXEC should be added as well. I think we can remove PROT_READ also from
amd64 part anyway.
This fixes access03, chdir04, chmod06, chown04, chroot03 and many others.
--
<< Marcin Cieslak // saper at system.pl >>
More information about the freebsd-emulation
mailing list