Index: sys/x86/xen/xen_intr.c =================================================================== --- sys/x86/xen/xen_intr.c +++ sys/x86/xen/xen_intr.c @@ -319,15 +319,15 @@ vector = first_evtchn_irq + xen_intr_auto_vector_count; xen_intr_auto_vector_count++; - KASSERT((intr_lookup_source(vector) == NULL), - ("Trying to use an already allocated vector")); - mtx_unlock(&xen_intr_isrc_lock); isrc = malloc(sizeof(*isrc), M_XENINTR, M_WAITOK | M_ZERO); isrc->xi_intsrc.is_pic = &xen_intr_pic; isrc->xi_vector = vector; isrc->xi_type = type; - intr_register_source(&isrc->xi_intsrc); + if (intr_register_source(&isrc->xi_intsrc) != 0) { + free(isrc, M_XENINTR); + return (NULL); + } mtx_lock(&xen_intr_isrc_lock); return (isrc);