diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c index fa2f0cc033e8ab957290807519ca2588b875d8ee..6a25a6ebafd34394671a2acfcc76a2cc75655afc 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);