hurd: Fix spurious port deallocation
authorBrent W. Baccala <cosine@freesoft.org>
Mon, 31 Oct 2016 16:31:56 +0000 (17:31 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 31 Oct 2016 16:32:25 +0000 (17:32 +0100)
* sysdeps/mach/hurd/dl-sysdep.c (__mmap): Do not deallocate memobj_wr
when it is MACH_PORT_NULL.

ChangeLog
sysdeps/mach/hurd/dl-sysdep.c

index e6d3121..1a14fdf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-31  Brent W. Baccala  <cosine@freesoft.org>
+
+       * sysdeps/mach/hurd/dl-sysdep.c (__mmap): Do not deallocate memobj_wr
+       when it is MACH_PORT_NULL.
+
 2016-10-31  Andreas Schwab  <schwab@suse.de>
 
        [BZ #20707]
index 76140cf..d730f82 100644 (file)
@@ -473,7 +473,8 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
       err = __io_map ((mach_port_t) fd, &memobj_rd, &memobj_wr);
       if (err)
        return __hurd_fail (err), MAP_FAILED;
-      __mach_port_deallocate (__mach_task_self (), memobj_wr);
+      if (memobj_wr != MACH_PORT_NULL)
+       __mach_port_deallocate (__mach_task_self (), memobj_wr);
     }
 
   mapaddr = (vm_address_t) addr;