[2/4] hurd: Don't attempt to deallocate MACH_PORT_DEAD

Message ID 20230423215526.346009-2-bugaevc@gmail.com
State Committed, archived
Headers
Series [1/4] hurd: Implement MAP_32BIT |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Sergey Bugaev April 23, 2023, 9:55 p.m. UTC
  ...in some more places.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
---
 sysdeps/mach/hurd/dl-sysdep.c | 2 +-
 sysdeps/mach/hurd/mmap.c      | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)
  

Comments

Samuel Thibault April 24, 2023, 8:44 p.m. UTC | #1
Applied, thanks!

Sergey Bugaev, le lun. 24 avril 2023 00:55:24 +0300, a ecrit:
> ...in some more places.
> 
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
>  sysdeps/mach/hurd/dl-sysdep.c | 2 +-
>  sysdeps/mach/hurd/mmap.c      | 6 +++---
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
> index d7b309e0..25a12774 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 c3cc1856..790eb238 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)
> -- 
> 2.40.0
>
  

Patch

diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index d7b309e0..25a12774 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 c3cc1856..790eb238 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)