diff options
author | Takashi Iwai <tiwai@suse.de> | 2016-02-08 08:16:55 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2016-02-08 08:16:55 +0100 |
commit | c9e9daccc7a6a670a6619723138ace6752f4773b (patch) | |
tree | ed38356575314aec55deda66ef856a9bfeaaf282 /arch/x86/kernel/irq.c | |
parent | 1f5e35636cc2737ccf1f67815cb33b978621f0f6 (diff) | |
parent | ddce57a6f0a2d8d1bfacfa77f06043bc760403c2 (diff) |
Merge branch 'topic/core-fixes' into for-next
Diffstat (limited to 'arch/x86/kernel/irq.c')
-rw-r--r-- | arch/x86/kernel/irq.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index f8062aaf5df9..61521dc19c10 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -462,7 +462,7 @@ void fixup_irqs(void) * non intr-remapping case, we can't wait till this interrupt * arrives at this cpu before completing the irq move. */ - irq_force_complete_move(irq); + irq_force_complete_move(desc); if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) { break_affinity = 1; @@ -470,6 +470,15 @@ void fixup_irqs(void) } chip = irq_data_get_irq_chip(data); + /* + * The interrupt descriptor might have been cleaned up + * already, but it is not yet removed from the radix tree + */ + if (!chip) { + raw_spin_unlock(&desc->lock); + continue; + } + if (!irqd_can_move_in_process_context(data) && chip->irq_mask) chip->irq_mask(data); |