From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756890AbcHWMTp (ORCPT ); Tue, 23 Aug 2016 08:19:45 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:36758 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753521AbcHWMTo (ORCPT ); Tue, 23 Aug 2016 08:19:44 -0400 From: Wanpeng Li X-Google-Original-From: Wanpeng Li To: linux-kernel@vger.kernel.org, Cc: Wanpeng Li , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , "H. Peter Anvin" , Joerg Roedel Subject: [PATCH v3] x86/apic: Fix modify_irte NULL pointer Date: Tue, 23 Aug 2016 20:07:19 +0800 Message-Id: <1471954039-3942-1-git-send-email-wanpeng.li@hotmail.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wanpeng Li native_smp_prepare_cpus -> default_setup_apic_routing -> enable_IR_x2apic -> irq_remapping_prepare -> intel_prepare_irq_remapping -> intel_setup_irq_remapping IR table is setup even if "noapic" boot parameter is added. As a result: BUG: unable to handle kernel NULL pointer dereference at (null) IP: [] modify_irte+0x58/0x140 PGD 209638067 PUD 2105f4067 PMD 0 Oops: 0000 [#1] SMP RIP: 0010:[] [] modify_irte+0x58/0x140 Call Trace: intel_ir_set_affinity+0xa3/0xb0 msi_domain_set_affinity+0x21/0x70 ? __irq_set_affinity+0x34/0x70 irq_do_set_affinity+0x1d/0x70 irq_set_affinity_locked+0xc2/0x100 __irq_set_affinity+0x47/0x70 write_irq_affinity.isra.7+0xcc/0xf0 irq_affinity_proc_write+0x19/0x20 proc_reg_write+0x3d/0x70 ? rcu_sync_lockdep_assert+0x2f/0x60 __vfs_write+0x28/0x120 ? percpu_down_read+0x5c/0xa0 ? __sb_start_write+0xca/0xe0 ? __sb_start_write+0xca/0xe0 vfs_write+0xb5/0x1b0 SyS_write+0x49/0xa0 do_syscall_64+0x81/0x220 entry_SYSCALL64_slow_path+0x25/0x25 RIP [] modify_irte+0x58/0x140 RSP CR2: 0000000000000000 This patch fix it by disabling IOAPIC support if "noapic" is on the kernel command line. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Peter Zijlstra Cc: "H. Peter Anvin" Cc: Joerg Roedel Signed-off-by: Wanpeng Li --- v2 -> v3: * update changelog * skip ioapic instead of the whole APIC v1 -> v2: * not call any of the apic functions when apic is disabled arch/x86/kernel/apic/apic.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index cea4fc1..50c95af 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -1623,6 +1623,9 @@ void __init enable_IR_x2apic(void) unsigned long flags; int ret, ir_stat; + if (skip_ioapic_setup) + return; + ir_stat = irq_remapping_prepare(); if (ir_stat < 0 && !x2apic_supported()) return; -- 1.9.1