Module Name: src Committed By: jym Date: Sun Feb 12 14:24:08 UTC 2012
Modified Files: src/sys/arch/xen/xen: evtchn.c Log Message: 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@. To generate a diff of this commit: cvs rdiff -u -r1.61 -r1.62 src/sys/arch/xen/xen/evtchn.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/xen/xen/evtchn.c diff -u src/sys/arch/xen/xen/evtchn.c:1.61 src/sys/arch/xen/xen/evtchn.c:1.62 --- src/sys/arch/xen/xen/evtchn.c:1.61 Thu Dec 8 03:34:44 2011 +++ src/sys/arch/xen/xen/evtchn.c Sun Feb 12 14:24:08 2012 @@ -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 @@ event_remove_handler(int evtch, int (*fu 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 @@ event_remove_handler(int evtch, int (*fu 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)