Fix for errno 2 - expected 14 (EFAULT) problems

Alexander Leidinger Alexander at Leidinger.net
Sat Sep 16 08:18:25 PDT 2006


Quoting Marcin Cieslak <saper at SYSTEM.PL> (Sat, 16 Sep 2006 16:37:02 +0200):

I CCed sobomax@, he committed the code in question.

Maxim, do you remember why it is always required as the comment suggests?

> 
> 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:

Maxim, Marcin noticed it isn't... some other ones (mmap and writev related)
fail now. But at least we have an idea now where to look for the error.

> --- /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.

Anyone with an amd64 system out there and willing to test this (with
the LTP testsuite as described on
http://wiki.freebsd.org/linux-kernel)? Because this doesn't seems to be
the final fix, it isn't necessary to test this particular patch, but it
would be nice to know if there are some differences between the results
on i386 (as can be seen in the wiki) and amd64.

> This fixes access03, chdir04, chmod06, chown04, chroot03 and many others.

Bye,
Alexander.

-- 
Over quota?  "du -s * | sort -n " will give you a sorted list of your
directory sizes.
		-- David Scheidt <dscheidt at tumbolia.com>
http://www.Leidinger.net  Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org     netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-emulation mailing list