commit-hurd
[Top][All Lists]
Advanced

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

[hurd] 08/28: proc: Fix new task notifications.


From: Samuel Thibault
Subject: [hurd] 08/28: proc: Fix new task notifications.
Date: Wed, 16 Nov 2016 08:30:26 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit 87c1eba3e7c9402ca59340db8a43a4c9ef5b3bd5
Author: Justus Winter <address@hidden>
Date:   Thu Oct 13 23:39:33 2016 +0200

    proc: Fix new task notifications.
    
    * proc/mgt.c (S_mach_notify_new_task): Fix receiver handling, fix port
    leak.
    * proc/mig-mutate.h: Mutate the task notification protocol.
---
 proc/mgt.c        | 12 +++++++-----
 proc/mig-mutate.h |  9 +++++++++
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/proc/mgt.c b/proc/mgt.c
index cb442b0..d572788 100644
--- a/proc/mgt.c
+++ b/proc/mgt.c
@@ -41,6 +41,7 @@
 #include "mutated_ourmsg_U.h"
 #include "proc_exc_S.h"
 #include "proc_exc_U.h"
+#include "task_notify_S.h"
 #include <hurd/signal.h>
 
 /* Create a new id structure with the given genuine uids and gids. */
@@ -1048,13 +1049,13 @@ S_proc_get_code (struct proc *callerp,
 
 /* Handle new task notifications from the kernel.  */
 error_t
-S_mach_notify_new_task (mach_port_t notify,
+S_mach_notify_new_task (struct port_info *notify,
                        mach_port_t task,
                        mach_port_t parent)
 {
   struct proc *parentp, *childp;
 
-  if (notify != generic_port)
+  if (! notify || notify->class != generic_port_class)
     return EOPNOTSUPP;
 
   parentp = task_find_nocreate (parent);
@@ -1079,9 +1080,10 @@ S_mach_notify_new_task (mach_port_t notify,
         proc_child, so we do it on their behalf.  */
       mach_port_mod_refs (mach_task_self (), task, MACH_PORT_RIGHT_SEND, +1);
       err = S_proc_child (parentp, task);
-      if (! err)
-       /* Relay the notification.  This consumes TASK and PARENT.  */
-       return mach_notify_new_task (childp->p_task_namespace, task, parent);
+      assert_perror (err);
+
+      /* Relay the notification.  */
+      mach_notify_new_task (childp->p_task_namespace, task, parent);
     }
 
   mach_port_deallocate (mach_task_self (), task);
diff --git a/proc/mig-mutate.h b/proc/mig-mutate.h
index 62dc2a5..35b0241 100644
--- a/proc/mig-mutate.h
+++ b/proc/mig-mutate.h
@@ -35,3 +35,12 @@
   end_using_port_info (port_info_t)
 #define NOTIFY_IMPORTS                                         \
   import "libports/mig-decls.h";
+
+#define TASK_NOTIFY_INTRAN                                     \
+  port_info_t begin_using_port_info_port (mach_port_t)
+#define TASK_NOTIFY_INTRAN_PAYLOAD                             \
+  port_info_t begin_using_port_info_payload
+#define TASK_NOTIFY_DESTRUCTOR                                 \
+  end_using_port_info (port_info_t)
+#define TASK_NOTIFY_IMPORTS                                    \
+  import "libports/mig-decls.h";

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

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