Index: sys/kern/subr_intr.c =================================================================== --- sys/kern/subr_intr.c +++ sys/kern/subr_intr.c @@ -445,6 +445,10 @@ if (irq_sources[isrc->isrc_irq] != isrc) return (EINVAL); + /* signal availability to isrc_alloc_irq(), if needed */ + if (irq_next_free >= maxirqs) + irq_next_free = isrc->isrc_irq; + irq_sources[isrc->isrc_irq] = NULL; isrc->isrc_irq = INTR_IRQ_INVALID; /* just to be safe */ return (0);