diff options
Diffstat (limited to 'drivers/of/irq.c')
-rw-r--r-- | drivers/of/irq.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/of/irq.c b/drivers/of/irq.c index 89a71c6074fc..a2e68f740eda 100644 --- a/drivers/of/irq.c +++ b/drivers/of/irq.c | |||
@@ -544,12 +544,15 @@ void __init of_irq_init(const struct of_device_id *matches) | |||
544 | 544 | ||
545 | list_del(&desc->list); | 545 | list_del(&desc->list); |
546 | 546 | ||
547 | of_node_set_flag(desc->dev, OF_POPULATED); | ||
548 | |||
547 | pr_debug("of_irq_init: init %s (%p), parent %p\n", | 549 | pr_debug("of_irq_init: init %s (%p), parent %p\n", |
548 | desc->dev->full_name, | 550 | desc->dev->full_name, |
549 | desc->dev, desc->interrupt_parent); | 551 | desc->dev, desc->interrupt_parent); |
550 | ret = desc->irq_init_cb(desc->dev, | 552 | ret = desc->irq_init_cb(desc->dev, |
551 | desc->interrupt_parent); | 553 | desc->interrupt_parent); |
552 | if (ret) { | 554 | if (ret) { |
555 | of_node_clear_flag(desc->dev, OF_POPULATED); | ||
553 | kfree(desc); | 556 | kfree(desc); |
554 | continue; | 557 | continue; |
555 | } | 558 | } |
@@ -559,8 +562,6 @@ void __init of_irq_init(const struct of_device_id *matches) | |||
559 | * its children can get processed in a subsequent pass. | 562 | * its children can get processed in a subsequent pass. |
560 | */ | 563 | */ |
561 | list_add_tail(&desc->list, &intc_parent_list); | 564 | list_add_tail(&desc->list, &intc_parent_list); |
562 | |||
563 | of_node_set_flag(desc->dev, OF_POPULATED); | ||
564 | } | 565 | } |
565 | 566 | ||
566 | /* Get the next pending parent that might have children */ | 567 | /* Get the next pending parent that might have children */ |