Index: sys/xen/xen_intr.c =================================================================== --- sys/xen/xen_intr.c +++ sys/xen/xen_intr.c @@ -323,6 +323,8 @@ xen_intr_release_isrc(struct xenisrc *isrc) { + if (isrc->xi_cookie != NULL) + xen_arch_intr_remove_handler(isrc, isrc->xi_cookie); KASSERT(!xen_arch_intr_has_handlers(isrc), ("Release called, but xenisrc still in use")); if (isrc->xi_port < NR_EVENT_CHANNELS) { @@ -1172,8 +1174,6 @@ } mtx_unlock(&xen_intr_isrc_lock); - if (isrc->xi_cookie != NULL) - xen_arch_intr_remove_handler(isrc, isrc->xi_cookie); xen_intr_release_isrc(isrc); }