mmap/munmap with zero length
Alan Cox
alc at cs.rice.edu
Tue Jul 14 16:32:45 UTC 2009
John Baldwin 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.
>
>
I have no objections to "uap->len == 0" (without the cast).
Alan
More information about the freebsd-hackers
mailing list