Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Jul 2009 23:07:27 -0800
From:      Mel Flynn <mel.flynn+fbsd.hackers@mailing.thruhere.net>
To:        John Baldwin <jhb@freebsd.org>
Cc:        ahze@freebsd.org, Alan Cox <alc@freebsd.org>, freebsd-hackers@freebsd.org, ports@freebsd.org, Alexander Best <alexbestms@math.uni-muenster.de>, Nate Eldredge <neldredge@math.ucsd.edu>
Subject:   Re: mmap/munmap with zero length
Message-ID:  <55daf4085f8ce3b4e383e36ba502bdec@sbmail.office-on-the.net>
In-Reply-To: <d3ab62ffe922ca48ca81955ae44e71fb@sbmail.office-on-the.net>
References:  <permail-200907050732251e86ffa8000022a8-a_best01@message-id.uni-muenster.de> <200907131428.08923.jhb@freebsd.org> <200907132133.52217.tijl@ulyssis.org> <200907131639.10346.jhb@freebsd.org> <d3ab62ffe922ca48ca81955ae44e71fb@sbmail.office-on-the.net>

next in thread | previous in thread | raw e-mail | index | archive | help
--=_c8a6da3ff5ed2d176ffac65707f6706f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sun, 19 Jul 2009 22:13:48 -0800, Mel Flynn
<mel.flynn+fbsd.hackers@mailing.thruhere.net> wrote:
> On Mon, 13 Jul 2009 16:39:09 -0400, John Baldwin <jhb@freebsd.org> wrot=
e:
>> On Monday 13 July 2009 3:33:51 pm Tijl Coosemans wrote:
>>> On Monday 13 July 2009 20:28:08 John Baldwin wrote:
>>> > On Sunday 05 July 2009 3:32:25 am Alexander Best wrote:
>>> >> so mmap differs from the POSIX recommendation right. the malloc.co=
nf
>>> >> option seems more like a workaround/hack. imo it's confusing to ha=
ve
>>> >> mmap und munmap deal differently with len=3D0. being able to
>>> >> succesfully alocate memory which cannot be removed doesn't seem
>>> >> logical to me.
>>> >=20
>>> > This should fix it:
>>> >=20
>>> > --- //depot/user/jhb/acpipci/vm/vm_mmap.c
>>> > +++ /home/jhb/work/p4/acpipci/vm/vm_mmap.c
>>> > @@ -229,7 +229,7 @@
>>> >=20
>>> >         fp =3D NULL;
>>> >         /* make sure mapping fits into numeric range etc */
>>> > -       if ((ssize_t) uap->len < 0 ||
>>> > +       if ((ssize_t) uap->len <=3D 0 ||
>>> >             ((flags & MAP_ANON) && uap->fd !=3D -1))
>>> >                 return (EINVAL);
>>>=20
>>> Why not "uap->len =3D=3D 0"? Sizes of 2GiB and more (32bit) shouldn't=
 cause
>>> an error.
>>=20
>> I don't actually disagree and know of locally modified versions of
> FreeBSD=20
>> that remove this check for precisely that reason.
>=20
> If this has hit the tree recently, I think it broke ccache.
>=20
> Since I've also done make delete-old-libs and was about to rebuild all =
my
> ports on my laptop, I'll investigate, as I'm not looking forward to doi=
ng
> this twice for all dependants of libtool :(.
>=20
> Failed to mmap
> /var/db/ccache/mel/tmp.cpp_stderr.smoochies.rachie.is-a-geek.net.27934
>=20
> kdump:
>  27934 ccache   CALL  open(0x28201280,O_RDONLY,<unused>0x1)
>  27934 ccache   NAMI=20
> "/var/db/ccache/mel/tmp.cpp_stderr.smoochies.rachie.is-a-geek.net.27934=
"
>  27934 ccache   RET   open 4
>  27934 ccache   CALL  fstat(0x4,0xbfbfe7fc)
>  27934 ccache   STRU  struct stat {dev=3D105, ino=3D895320, mode=3D-rw-=
r--r-- ,
> nlink=3D1, uid=3D1003, gid=3D0, rdev=3D0, atime=3D1248069251, stime=3D1=
248069251,
> ctime=3D1248069251, birthtime=3D1248069251, size=3D0, blksize=3D4096, b=
locks=3D0,
> flags=3D0x0 }
>  27934 ccache   RET   fstat 0
>  27934 ccache   CALL  mmap(0,0,PROT_READ,MAP_PRIVATE,0x4,0,0)
>  27934 ccache   RET   mmap -1 errno 22 Invalid argument

Confirmed, attached patch fixes ccache. Probably should be patched in
patch-md4.

--=20
Mel
--=_c8a6da3ff5ed2d176ffac65707f6706f
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream; charset="UTF-8";
 name="patch-mmap"; 
Content-Disposition: attachment;
 filename="patch-mmap"; 

LS0tIGhhc2guYy5vcmlnCTIwMDktMDctMTkgMjI6NDY6MTguMDAwMDAwMDAwIC0wODAwCisrKyBo
YXNoLmMJMjAwOS0wNy0xOSAyMjo0NjoxMy4wMDAwMDAwMDAgLTA4MDAKQEAgLTY3LDEyICs2Nywx
NiBAQAogICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAgICAgZmF0YWwoX19G
VU5DVElPTl9fKTsKICAgICAgICB9Ci0gICAgICAgYnVmID0gbW1hcChOVUxMLCBzdGF0cy5zdF9z
aXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7IAotICAgICAgIGlmIChidWYgPT0g
TUFQX0ZBSUxFRCkgewotICAgICAgICAgICAgICAgY2NfbG9nKCJGYWlsZWQgdG8gbW1hcCAlc1xu
IiwgZm5hbWUpOwotICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgICAgZmF0
YWwoX19GVU5DVElPTl9fKTsKLSAgICAgICAgfSAgICAgICAKKyAgICAgICBpZiggc3RhdHMuc3Rf
c2l6ZSA9PSAwICkKKwkgICAgICAgYnVmID0gTlVMTDsKKyAgICAgICBlbHNlIHsKKwkgICAgICAg
YnVmID0gbW1hcChOVUxMLCBzdGF0cy5zdF9zaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBm
ZCwgMCk7IAorCSAgICAgICBpZiAoYnVmID09IE1BUF9GQUlMRUQpIHsKKwkJICAgICAgIGNjX2xv
ZygiRmFpbGVkIHRvIG1tYXAgJXNcbiIsIGZuYW1lKTsKKwkJICAgICAgIGNsb3NlKGZkKTsKKwkJ
ICAgICAgIGZhdGFsKF9fRlVOQ1RJT05fXyk7CisJCX0gICAgICAgCisgICAgICAgfQogCiAgICAg
ICAgIGhhc2hfYnVmZmVyKGJ1Ziwgc3RhdHMuc3Rfc2l6ZSk7CiAJY2xvc2UoZmQpOwo=
--=_c8a6da3ff5ed2d176ffac65707f6706f--





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55daf4085f8ce3b4e383e36ba502bdec>