about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergey Bugaev <bugaevc@gmail.com>2023-04-24 00:55:24 +0300
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-04-24 22:44:53 +0200
commit35b7bf2fe003d6dbd5726cdf69f3c5d8179590e5 (patch)
treeb61352075d0065833abcd4f9a408b5c24702a8d5
parent4c39333050815a33ddf4f3067798ac060eed1e2b (diff)
downloadglibc-35b7bf2fe003d6dbd5726cdf69f3c5d8179590e5.tar.gz
glibc-35b7bf2fe003d6dbd5726cdf69f3c5d8179590e5.tar.xz
glibc-35b7bf2fe003d6dbd5726cdf69f3c5d8179590e5.zip
hurd: Don't attempt to deallocate MACH_PORT_DEAD
...in some more places.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230423215526.346009-2-bugaevc@gmail.com>
-rw-r--r--sysdeps/mach/hurd/dl-sysdep.c2
-rw-r--r--sysdeps/mach/hurd/mmap.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index d7b309e05d..25a1277461 100644
--- a/sysdeps/mach/hurd/dl-sysdep.c
+++ b/sysdeps/mach/hurd/dl-sysdep.c
@@ -472,7 +472,7 @@ __mmap (void *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;
-      if (memobj_wr != MACH_PORT_NULL)
+      if (MACH_PORT_VALID (memobj_wr))
 	__mach_port_deallocate (__mach_task_self (), memobj_wr);
     }
 
diff --git a/sysdeps/mach/hurd/mmap.c b/sysdeps/mach/hurd/mmap.c
index c3cc18560c..790eb23886 100644
--- a/sysdeps/mach/hurd/mmap.c
+++ b/sysdeps/mach/hurd/mmap.c
@@ -91,7 +91,7 @@ __mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset)
             if (wobj == robj)
               max_vmprot |= VM_PROT_WRITE;
 	    memobj = robj;
-	    if (wobj != MACH_PORT_NULL)
+	    if (MACH_PORT_VALID (wobj))
 	      __mach_port_deallocate (__mach_task_self (), wobj);
 	    break;
 	  case PROT_WRITE:
@@ -99,7 +99,7 @@ __mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset)
             if (robj == wobj)
               max_vmprot |= VM_PROT_READ|VM_PROT_EXECUTE;
 	    memobj = wobj;
-	    if (robj != MACH_PORT_NULL)
+	    if (MACH_PORT_VALID (robj))
 	      __mach_port_deallocate (__mach_task_self (), robj);
 	    break;
 	  case PROT_READ|PROT_WRITE:
@@ -167,7 +167,7 @@ __mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset)
 			copy ? VM_INHERIT_COPY : VM_INHERIT_SHARE);
     }
 
-  if (memobj != MACH_PORT_NULL)
+  if (MACH_PORT_VALID (memobj))
     __mach_port_deallocate (__mach_task_self (), memobj);
 
   if (err == KERN_PROTECTION_FAILURE)