diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-06-01 18:53:04 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-06-01 18:53:04 +0000 |
commit | fbf86ddab2cd53c0a63173c1eb8b39c2b970fb8d (patch) | |
tree | 233df1d9ff53bdaa0453c2e3f5d8f5aea4f0f90b /sysdeps/mach/hurd/mmap.c | |
parent | 016deb4c4fb9c52abe842bfc468af2ea38691dbc (diff) | |
download | glibc-fbf86ddab2cd53c0a63173c1eb8b39c2b970fb8d.tar.gz glibc-fbf86ddab2cd53c0a63173c1eb8b39c2b970fb8d.tar.xz glibc-fbf86ddab2cd53c0a63173c1eb8b39c2b970fb8d.zip |
Update.
2004-05-10 Jakub Jelinek <jakub@redhat.com> * sysdeps/posix/sysconf.c (__sysconf) <cases _SC_REALTIME_SIGNALS, _SC_PRIORITY_SCHEDULING, _SC_TIMERS, _SC_ASYNCHRONOUS_IO, _SC_PRIORITIZED_IO, _SC_SYNCHRONIZED_IO, _SC_FSYNC, _SC_MAPPED_FILES, _SC_MEMLOCK, _SC_MEMLOCK_RANGE, _SC_MEMORY_PROTECTION, _SC_MESSAGE_PASSING, _SC_SEMAPHORES, _SC_SHARED_MEMORY_OBJECTS, _SC_THREADS, _SC_THREAD_SAFE_FUNCTIONS, _SC_THREAD_ATTR_STACKADDR, _SC_THREAD_ATTR_STACKSIZE, _SC_THREAD_PRIORITY_SCHEDULING, _SC_THREAD_PRIO_INHERIT, _SC_THREAD_PRIO_PROTECT, _SC_THREAD_PROCESS_SHARED>: Return _POSIX_* value instead of 1. * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <case _SC_MONOTONIC_CLOCK>: Return _POSIX_VERSION instead of 1. 2004-05-07 Jeroen Dekkers <jeroen@dekkers.cx> * sysdeps/mach/hurd/i386/Makefile (CFLAGS-init-first.c): Add -momit-leaf-frame-pointer. * inet/test-ifaddrs.c (addr_string): Surround AF_PACKET case with #ifdef AF_PACKET. * sysdeps/mach/hurd/getcwd.c (_hurd_canonicalize_directory_name_intern): Only realloc when size is <= 0. * sysdeps/mach/hurd/mmap.c (__mmap): Fail when addr or offset isn't page aligned. * sysdeps/mach/hurd/spawni.c (EXPAND_DTABLE): Set dtablesize to new size. * sysdeps/mach/hurd/Versions (GLIBC_PRIVATE): Add __libc_read, __libc_write and __libc_lseek64.
Diffstat (limited to 'sysdeps/mach/hurd/mmap.c')
-rw-r--r-- | sysdeps/mach/hurd/mmap.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/sysdeps/mach/hurd/mmap.c b/sysdeps/mach/hurd/mmap.c index 85bde529b9..1d1460cead 100644 --- a/sysdeps/mach/hurd/mmap.c +++ b/sysdeps/mach/hurd/mmap.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994,1995,1996,1997,1999,2002,2003 +/* Copyright (C) 1994,1995,1996,1997,1999,2002,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -39,10 +39,13 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) vm_prot_t vmprot; memory_object_t memobj; vm_address_t mapaddr; - vm_size_t pageoff; mapaddr = (vm_address_t) addr; + /* ADDR and OFFSET must be page-aligned. */ + if ((mapaddr & (vm_page_size - 1)) || (offset & (vm_page_size - 1))) + return (__ptr_t) (long int) __hurd_fail (EINVAL); + if ((flags & (MAP_TYPE|MAP_INHERIT)) == MAP_ANON && prot == (PROT_READ|PROT_WRITE)) /* cf VM_PROT_DEFAULT */ { @@ -62,20 +65,6 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) return err ? (__ptr_t) (long int) __hurd_fail (err) : (__ptr_t) mapaddr; } - pageoff = offset & (vm_page_size - 1); - offset &= ~(vm_page_size - 1); - - if (flags & MAP_FIXED) - { - /* A specific address is requested. It need not be page-aligned; - it just needs to be congruent with the object offset. */ - if ((mapaddr & (vm_page_size - 1)) != pageoff) - return (__ptr_t) (long int) __hurd_fail (EINVAL); - else - /* We will add back PAGEOFF after mapping. */ - mapaddr -= pageoff; - } - vmprot = VM_PROT_NONE; if (prot & PROT_READ) vmprot |= VM_PROT_READ; @@ -173,9 +162,6 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) if (err) return (__ptr_t) (long int) __hurd_fail (err); - /* Adjust the mapping address for the offset-within-page. */ - mapaddr += pageoff; - return (__ptr_t) mapaddr; } |