diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c index 77722ebdf6f5fd7f8fbfd37574fd685cee1427ea..1e48af99feadf72f4215ae0f83c9d8365fef8fe9 100644 --- a/kernel/irq/msi.c +++ b/kernel/irq/msi.c @@ -156,7 +156,7 @@ static int msi_domain_alloc(struct irq_domain *domain, unsigned int virq, ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg); if (ret < 0) { if (ops->msi_free) { - for (i--; i > 0; i--) + for (i--; i >= 0; i--) ops->msi_free(domain, info, virq + i); } irq_domain_free_irqs_top(domain, virq, nr_irqs);