commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd,commited] hurd: Make _hurd_libc_proc_init idempotent


From: Samuel Thibault
Subject: [hurd,commited] hurd: Make _hurd_libc_proc_init idempotent
Date: Fri, 13 Nov 2020 01:24:27 +0100

For the cases where _init is getting called several times during startup. Better
clean pointers anyway.
---
 hurd/hurdinit.c | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/hurd/hurdinit.c b/hurd/hurdinit.c
index e4ec005b48..06a2d3b7fd 100644
--- a/hurd/hurdinit.c
+++ b/hurd/hurdinit.c
@@ -114,17 +114,25 @@ libc_hidden_def (_hurd_init)
 void
 _hurd_libc_proc_init (char **argv)
 {
-  /* Tell the proc server we exist, if it does.  */
-  if (_hurd_portarray[INIT_PORT_PROC] != MACH_PORT_NULL)
-    _hurd_new_proc_init (argv, _hurd_intarray, _hurd_intarraysize);
-
-  /* All done with init ints and ports.  */
-  __vm_deallocate (__mach_task_self (),
-                  (vm_address_t) _hurd_intarray,
-                  _hurd_intarraysize * sizeof (int));
-  __vm_deallocate (__mach_task_self (),
-                  (vm_address_t) _hurd_portarray,
-                  _hurd_portarraysize * sizeof (mach_port_t));
+  if (_hurd_portarray)
+    {
+      /* Tell the proc server we exist, if it does.  */
+      if (_hurd_portarray[INIT_PORT_PROC] != MACH_PORT_NULL)
+       _hurd_new_proc_init (argv, _hurd_intarray, _hurd_intarraysize);
+
+      /* All done with init ints and ports.  */
+      __vm_deallocate (__mach_task_self (),
+                      (vm_address_t) _hurd_intarray,
+                      _hurd_intarraysize * sizeof (int));
+      _hurd_intarray = NULL;
+      _hurd_intarraysize = 0;
+
+      __vm_deallocate (__mach_task_self (),
+                      (vm_address_t) _hurd_portarray,
+                      _hurd_portarraysize * sizeof (mach_port_t));
+      _hurd_portarray = NULL;
+      _hurd_portarraysize = 0;
+    }
 }
 libc_hidden_def (_hurd_libc_proc_init)
 
-- 
2.28.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]