Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/xen/xen Xen MP merge introduced MP safety around ip...



details:   https://anonhg.NetBSD.org/src/rev/42897e1b9d0e
branches:  trunk
changeset: 773669:42897e1b9d0e
user:      jym <jym%NetBSD.org@localhost>
date:      Sun Feb 12 14:24:08 2012 +0000

description:
Xen MP merge introduced MP safety around ipl handlers. When removing an
event handler, check handler's function and arguments against the real
ones, not the ones from wrappers.

This fixes a bug where !mpsafe events could not be removed from the handler
chain, thereby blocking suspension of a domU.

ok releng@.

diffstat:

 sys/arch/xen/xen/evtchn.c |  8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diffs (36 lines):

diff -r 942a6f6a06b7 -r 42897e1b9d0e sys/arch/xen/xen/evtchn.c
--- a/sys/arch/xen/xen/evtchn.c Sun Feb 12 13:56:56 2012 +0000
+++ b/sys/arch/xen/xen/evtchn.c Sun Feb 12 14:24:08 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: evtchn.c,v 1.61 2011/12/08 03:34:44 cherry Exp $       */
+/*     $NetBSD: evtchn.c,v 1.62 2012/02/12 14:24:08 jym Exp $  */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -54,7 +54,7 @@
 
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: evtchn.c,v 1.61 2011/12/08 03:34:44 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: evtchn.c,v 1.62 2012/02/12 14:24:08 jym Exp $");
 
 #include "opt_xen.h"
 #include "isa.h"
@@ -774,7 +774,7 @@
        for (ihp = &evts->ev_handlers, ih = evts->ev_handlers;
            ih != NULL;
            ihp = &ih->ih_evt_next, ih = ih->ih_evt_next) {
-               if (ih->ih_fun == func && ih->ih_arg == arg)
+               if (ih->ih_realfun == func && ih->ih_realarg == arg)
                        break;
        }
        if (ih == NULL) {
@@ -789,7 +789,7 @@
        for (ihp = &ipls->ipl_handlers, ih = ipls->ipl_handlers;
            ih != NULL;
            ihp = &ih->ih_ipl_next, ih = ih->ih_ipl_next) {
-               if (ih->ih_fun == func && ih->ih_arg == arg)
+               if (ih->ih_realfun == func && ih->ih_realarg == arg)
                        break;
        }
        if (ih == NULL)



Home | Main Index | Thread Index | Old Index