Date: Sun, 19 Jul 2009 22:13:48 -0800 From: Mel Flynn <mel.flynn+fbsd.hackers@mailing.thruhere.net> To: John Baldwin <jhb@freebsd.org> Cc: Nate Eldredge <neldredge@math.ucsd.edu>, Tijl Coosemans <tijl@ulyssis.org>, Alexander Best <alexbestms@math.uni-muenster.de>, Alan Cox <alc@freebsd.org>, freebsd-hackers@freebsd.org Subject: Re: mmap/munmap with zero length Message-ID: <d3ab62ffe922ca48ca81955ae44e71fb@sbmail.office-on-the.net> In-Reply-To: <200907131639.10346.jhb@freebsd.org> 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>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 13 Jul 2009 16:39:09 -0400, John Baldwin <jhb@freebsd.org> wrote: > 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.con= f >> >> option seems more like a workaround/hack. imo it's confusing to hav= e >> >> 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. If this has hit the tree recently, I think it broke ccache. 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 doing this twice for all dependants of libtool :(. Failed to mmap /var/db/ccache/mel/tmp.cpp_stderr.smoochies.rachie.is-a-geek.net.27934 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=3D124= 8069251, ctime=3D1248069251, birthtime=3D1248069251, size=3D0, blksize=3D4096, blo= cks=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 Sent from webmail, so excuse any formatting issues. --=20 Mel
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d3ab62ffe922ca48ca81955ae44e71fb>