aboutsummaryrefslogtreecommitdiff
path: root/proc/mgt.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2014-01-28 23:43:09 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2014-01-28 23:43:09 +0100
commite24381784b0a56896542d1a5828a77ad0e1c40ec (patch)
tree493e0d6ad811f563142c5de72a8b80bb5d142b93 /proc/mgt.c
parent613f84a0fcd46f2143b046b57c6c6444eafa4d4d (diff)
parentb8c728ec51696c5d17ef09a00b3b193b70a487da (diff)
downloadhurd-e24381784b0a56896542d1a5828a77ad0e1c40ec.tar.gz
hurd-e24381784b0a56896542d1a5828a77ad0e1c40ec.tar.bz2
hurd-e24381784b0a56896542d1a5828a77ad0e1c40ec.zip
Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd
Diffstat (limited to 'proc/mgt.c')
-rw-r--r--proc/mgt.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/proc/mgt.c b/proc/mgt.c
index 602ba84a..5e0accd9 100644
--- a/proc/mgt.c
+++ b/proc/mgt.c
@@ -417,7 +417,7 @@ S_proc_handle_exceptions (struct proc *p,
the thread_set_state requested by proc_handle_exceptions and then
send an exception_raise message as requested. */
kern_return_t
-S_proc_exception_raise (mach_port_t excport,
+S_proc_exception_raise (struct exc *e,
mach_port_t reply,
mach_msg_type_name_t reply_type,
mach_port_t thread,
@@ -428,8 +428,7 @@ S_proc_exception_raise (mach_port_t excport,
{
error_t err;
struct proc *p;
- struct exc *e = ports_lookup_port (proc_bucket, excport, exc_class);
- if (!e)
+ if (!e || e->pi.bucket != proc_bucket || e->pi.class != exc_class)
return EOPNOTSUPP;
p = task_find (task);
@@ -455,7 +454,6 @@ S_proc_exception_raise (mach_port_t excport,
the faulting thread's state to run its recovery code, which should
dequeue that message. */
err = thread_set_state (thread, e->flavor, e->thread_state, e->statecnt);
- ports_port_deref (e);
mach_port_deallocate (mach_task_self (), thread);
mach_port_deallocate (mach_task_self (), task);
if (err)
@@ -484,7 +482,6 @@ S_proc_exception_raise (mach_port_t excport,
/* Nuke the task; we will get a notification message and report that
it died with SIGNO. */
task_terminate (task);
- ports_port_deref (e);
/* In the MACH_SEND_NOTIFY_IN_PROGRESS case, the kernel did a
pseudo-receive of the RPC request message that may have added user