Messages in this thread Patch in this message | | | From | Pingfan Liu <> | Subject | [PATCH 5/9] x86/irq: place for_each_active_irq() in rcu read section | Date | Wed, 20 Apr 2022 22:05:17 +0800 |
| |
Since there are access to irq_desc, and no preemption is provided at the involved, it requires rcu read lock to protect irq_desc.
Signed-off-by: Pingfan Liu <kernelfans@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: "Maciej W. Rozycki" <macro@orcam.me.uk> Cc: Marc Zyngier <maz@kernel.org> Cc: linux-kernel@vger.kernel.org To: x86@kernel.org --- arch/x86/kernel/apic/io_apic.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index c1bb384935b0..4bb16edcbe4d 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -1333,6 +1333,7 @@ void __init print_IO_APICs(void) print_IO_APIC(ioapic_idx); printk(KERN_DEBUG "IRQ to pin mappings:\n"); + rcu_read_lock(); for_each_active_irq(irq) { struct irq_pin_list *entry; struct irq_chip *chip; @@ -1352,6 +1353,7 @@ void __init print_IO_APICs(void) pr_cont("-> %d:%d", entry->apic, entry->pin); pr_cont("\n"); } + rcu_read_unlock(); printk(KERN_INFO ".................................... done.\n"); } @@ -2009,6 +2011,7 @@ static inline void init_IO_APIC_traps(void) struct irq_cfg *cfg; unsigned int irq; + /* The early boot stage is free of irq_desc release */ for_each_active_irq(irq) { cfg = irq_cfg(irq); if (IO_APIC_IRQ(irq) && cfg && !cfg->vector) { -- 2.31.1
| |