hurd: support mmap with PROT_NONE

This commit is contained in:
Samuel Thibault 2015-02-07 22:22:40 +01:00
parent c187253fc2
commit e86c5b6459
2 changed files with 10 additions and 2 deletions

View File

@ -2,6 +2,7 @@
* hurd/hurd/signal.h (_hurd_critical_section_lock): Don't unlock
sigstate.
* sysdeps/mach/hurd/mmap.c (__mmap): Also handle PROT_NONE case.
2015-02-07 Samuel Thibault <samuel.thibault@ens-lyon.org>

View File

@ -97,6 +97,13 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
}
switch (prot & (PROT_READ|PROT_WRITE))
{
/* Although it apparently doesn't make sense to map a file with
protection set to PROT_NONE, it is actually sometimes done.
In particular, that's how localedef reserves some space for
the locale archive file, the rationale being that some
implementations take into account whether the mapping is
anonymous or not when selecting addresses. */
case PROT_NONE:
case PROT_READ:
memobj = robj;
if (wobj != MACH_PORT_NULL)
@ -126,8 +133,8 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
return (__ptr_t) (long int) __hurd_fail (EACCES);
}
break;
default: /* impossible */
return 0;
default:
__builtin_unreachable ();
}
break;
/* XXX handle MAP_NOEXTEND */