mmap/munmap with zero length
Mel Flynn
mel.flynn+fbsd.hackers at mailing.thruhere.net
Mon Jul 20 06:27:26 UTC 2009
On Mon, 13 Jul 2009 16:39:09 -0400, John Baldwin <jhb at 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.conf
>> >> option seems more like a workaround/hack. imo it's confusing to have
>> >> mmap und munmap deal differently with len=0. being able to
>> >> succesfully alocate memory which cannot be removed doesn't seem
>> >> logical to me.
>> >
>> > This should fix it:
>> >
>> > --- //depot/user/jhb/acpipci/vm/vm_mmap.c
>> > +++ /home/jhb/work/p4/acpipci/vm/vm_mmap.c
>> > @@ -229,7 +229,7 @@
>> >
>> > fp = NULL;
>> > /* make sure mapping fits into numeric range etc */
>> > - if ((ssize_t) uap->len < 0 ||
>> > + if ((ssize_t) uap->len <= 0 ||
>> > ((flags & MAP_ANON) && uap->fd != -1))
>> > return (EINVAL);
>>
>> Why not "uap->len == 0"? Sizes of 2GiB and more (32bit) shouldn't cause
>> an error.
>
> I don't actually disagree and know of locally modified versions of
FreeBSD
> 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
"/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=105, ino=895320, mode=-rw-r--r-- ,
nlink=1, uid=1003, gid=0, rdev=0, atime=1248069251, stime=1248069251,
ctime=1248069251, birthtime=1248069251, size=0, blksize=4096, blocks=0,
flags=0x0 }
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.
--
Mel
More information about the freebsd-hackers
mailing list