From: Nicolai Stange Date: Sun, 29 Jul 2018 10:15:33 +0000 (+0200) Subject: x86: Don't include linux/irq.h from asm/hardirq.h X-Git-Tag: v4.1.12-124.31.3~607 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d24cdf8fbe906db33adf16e3c9c5b2ba295e46c9;p=users%2Fjedix%2Flinux-maple.git x86: Don't include linux/irq.h from asm/hardirq.h The next patch in this series will have to make the definition of irq_cpustat_t available to entering_irq(). Inclusion of asm/hardirq.h into asm/apic.h would cause circular header dependencies like asm/smp.h asm/apic.h asm/hardirq.h linux/irq.h linux/topology.h linux/smp.h asm/smp.h or linux/gfp.h linux/mmzone.h asm/mmzone.h asm/mmzone_64.h asm/smp.h asm/apic.h asm/hardirq.h linux/irq.h linux/irqdesc.h linux/kobject.h linux/sysfs.h linux/kernfs.h linux/idr.h linux/gfp.h and others. This causes compilation errors because of the header guards becoming effective in the second inclusion: symbols/macros that had been defined before wouldn't be available to intermediate headers in the #include chain anymore. A possible workaround would be to move the definition of irq_cpustat_t into its own header and include that from both, asm/hardirq.h and asm/apic.h. However, this wouldn't solve the real problem, namely asm/harirq.h unnecessarily pulling in all the linux/irq.h cruft: nothing in asm/hardirq.h itself requires it. Also, note that there are some other archs, like e.g. arm64, which don't have that #include in their asm/hardirq.h. Remove the linux/irq.h #include from x86' asm/hardirq.h. Fix resulting compilation errors by adding appropriate #includes to *.c files as needed. Note that some of these *.c files could be cleaned up a bit wrt. to their set of #includes, but that should better be done from separate patches, if at all. Signed-off-by: Nicolai Stange Signed-off-by: Thomas Gleixner Orabug: 28220625 CVE: CVE-2018-3620 (cherry picked from commit 447ae316670230d7d29430e2cbf1f5db4f49d14c) Signed-off-by: Mihai Carabas Reviewed-by: Darren Kenny Reviewed-by: Boris Ostrovsky Conflicts: arch/x86/kernel/apic/vector.c drivers/gpu/drm/i915/i915_pmu.c drivers/pci/controller/pci-hyperv.c arch/x86/kernel/apic/apic.c arch/x86/kernel/apic/htirq.c arch/x86/kernel/fpu/core.c arch/x86/kernel/idt.c arch/x86/kernel/kprobes/core.c arch/x86/mm/fault.c arch/x86/mm/pti.c arch/x86/platform/intel-mid/device_libs/platform_mrfld_wdt.c drivers/gpu/drm/i915/intel_lpe_audio.c drivers/pci/host/pci-hyperv.c Contextual: different content In these files we included "linux/irq.h" just to preserve KABI: arch/x86/kernel/ftrace.c drivers/misc/ioc4.c drivers/pci/pci.c drivers/pci/pcie/aer/aerdrv_core.c drivers/pci/search.c drivers/pnp/resource.c fs/file_table.c mm/vmstat.c --- diff --git a/arch/x86/include/asm/dmi.h b/arch/x86/include/asm/dmi.h index 535192f6bfad..f3f564b8c5ad 100644 --- a/arch/x86/include/asm/dmi.h +++ b/arch/x86/include/asm/dmi.h @@ -3,8 +3,8 @@ #include #include +#include -#include #include static __always_inline __init void *dmi_alloc(unsigned len) diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h index 4852ca0af9f5..479a5b843e06 100644 --- a/arch/x86/include/asm/hardirq.h +++ b/arch/x86/include/asm/hardirq.h @@ -2,7 +2,6 @@ #define _ASM_X86_HARDIRQ_H #include -#include #include typedef struct { diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index b5200f517f61..a49841ba44f6 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index e900f44a36f7..45e1f26a58e4 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -55,6 +55,8 @@ #include #include #include +#include +#include unsigned int num_processors; diff --git a/arch/x86/kernel/apic/htirq.c b/arch/x86/kernel/apic/htirq.c index 816f36e979ad..9231dc58ca4b 100644 --- a/arch/x86/kernel/apic/htirq.c +++ b/arch/x86/kernel/apic/htirq.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index f4dc2462a1ac..7fe02796d44f 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -22,6 +22,7 @@ #include #include +#include #include #include #include diff --git a/arch/x86/kernel/apic/msi.c b/arch/x86/kernel/apic/msi.c index 8c186a300b96..a392660fdf51 100644 --- a/arch/x86/kernel/apic/msi.c +++ b/arch/x86/kernel/apic/msi.c @@ -10,6 +10,7 @@ */ #include #include +#include #include #include #include diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c index 503261444eee..4902161b69e3 100644 --- a/arch/x86/kernel/apic/vector.c +++ b/arch/x86/kernel/apic/vector.c @@ -9,6 +9,7 @@ * published by the Free Software Foundation. */ #include +#include #include #include #include diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 8b7b0a51e742..335afdad21be 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -28,6 +28,7 @@ #include #include #include +#include #ifdef CONFIG_DYNAMIC_FTRACE diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index 0ae020847f55..d098aecbed03 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c index c0bbf1d7780d..15537a9dbab4 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c @@ -19,6 +19,7 @@ #include #include #include +#include static DEFINE_PER_CPU(bool, in_kernel_fpu); diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c index e7cc5370cd2f..514685f96647 100644 --- a/arch/x86/kernel/i8259.c +++ b/arch/x86/kernel/i8259.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index e9fff7847a66..30e8e5782687 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c index 6c7d669f904e..efa7ba2d8c94 100644 --- a/arch/x86/kernel/irq_32.c +++ b/arch/x86/kernel/irq_32.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c index 394e643d7830..eaad3e0f42ea 100644 --- a/arch/x86/kernel/irq_64.c +++ b/arch/x86/kernel/irq_64.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c index 77b07c72c3e3..f197a0efb79f 100644 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c index 023c442c33bb..78a715b66ca3 100644 --- a/arch/x86/kernel/kprobes/core.c +++ b/arch/x86/kernel/kprobes/core.c @@ -57,6 +57,7 @@ #include #include #include +#include #include "common.h" diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c index cc83ef87d7af..85e355104876 100644 --- a/arch/x86/kernel/kprobes/opt.c +++ b/arch/x86/kernel/kprobes/opt.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "common.h" diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c index 415480d3ea84..1268a72c9c57 100644 --- a/arch/x86/kernel/machine_kexec_64.c +++ b/arch/x86/kernel/machine_kexec_64.c @@ -25,6 +25,7 @@ #include #include #include +#include #ifdef CONFIG_KEXEC_FILE static struct kexec_file_ops *kexec_file_loaders[] = { diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 1af36d897a41..fa9abc8af3f0 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -53,6 +53,8 @@ #include #include #include +#include +#include #include #include @@ -78,6 +80,7 @@ #include #include #include +#include /* Number of siblings per CPU package */ int smp_num_siblings = 1; diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c index d39c09119db6..f8a0518d2810 100644 --- a/arch/x86/kernel/time.c +++ b/arch/x86/kernel/time.c @@ -11,6 +11,7 @@ #include #include +#include #include #include #include diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 9cf6ad536ad6..af247a4b14dd 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -20,6 +20,7 @@ #include /* kmemcheck_*(), ... */ #include /* VSYSCALL_ADDR */ #include /* emulate_vsyscall */ +#include #define CREATE_TRACE_POINTS #include diff --git a/arch/x86/mm/kaiser.c b/arch/x86/mm/kaiser.c index 5863d9d2b34e..ed7e2949a58c 100644 --- a/arch/x86/mm/kaiser.c +++ b/arch/x86/mm/kaiser.c @@ -20,6 +20,7 @@ #include #include #include +#include #include diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index 3327c3155a9f..80e7e364f8ad 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c @@ -40,6 +40,7 @@ #include #include #include +#include /* * We allocate runtime services regions bottom-up, starting from -4G, i.e. diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c index 1c7380da65ff..e23ec3076665 100644 --- a/arch/x86/platform/efi/quirks.c +++ b/arch/x86/platform/efi/quirks.c @@ -10,6 +10,7 @@ #include #include #include +#include #define EFI_MIN_RESERVE 5120 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index d879c916f00f..f03fb13ea533 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -34,6 +34,7 @@ #include #include +#include #include #include diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 1abe7d8517ab..9b11716aad3b 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c @@ -67,6 +67,7 @@ #include #include #include +#include #include #include diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index e52b4b74ae30..4329d9cc83fb 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include diff --git a/drivers/misc/ioc4.c b/drivers/misc/ioc4.c index 8758d033db23..cbed0e61bdc7 100644 --- a/drivers/misc/ioc4.c +++ b/drivers/misc/ioc4.c @@ -33,6 +33,7 @@ #include #include #include +#include #include /*************** diff --git a/drivers/pci/host/pci-hyperv.c b/drivers/pci/host/pci-hyperv.c index eaa3a837d93a..1e58fb43a6e8 100644 --- a/drivers/pci/host/pci-hyperv.c +++ b/drivers/pci/host/pci-hyperv.c @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 0c90860d805e..6a106c8040f4 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c index b60a325234c5..99b8d882a23e 100644 --- a/drivers/pci/pcie/aer/aerdrv_core.c +++ b/drivers/pci/pcie/aer/aerdrv_core.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "aerdrv.h" static bool forceload; diff --git a/drivers/pci/search.c b/drivers/pci/search.c index a20ce7d5e2a7..1fb8ca12b2b6 100644 --- a/drivers/pci/search.c +++ b/drivers/pci/search.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "pci.h" DECLARE_RWSEM(pci_bus_sem); diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c index 153a493b5413..c3a51a0bd7aa 100644 --- a/drivers/pnp/driver.c +++ b/drivers/pnp/driver.c @@ -10,6 +10,7 @@ #include #include #include + #include "base.h" static int compare_func(const char *ida, const char *idb) diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c index f980ff7166e9..00783d547722 100644 --- a/drivers/pnp/resource.c +++ b/drivers/pnp/resource.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/fs/file_table.c b/fs/file_table.c index 294174dcc226..3feaa05e78d1 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -26,6 +26,7 @@ #include #include #include +#include #include diff --git a/kernel/dtrace/dtrace_os.c b/kernel/dtrace/dtrace_os.c index 17e52e25df32..c375f9e81caf 100644 --- a/kernel/dtrace/dtrace_os.c +++ b/kernel/dtrace/dtrace_os.c @@ -34,6 +34,7 @@ #include #include #include +#include #if defined(CONFIG_DT_FASTTRAP) || defined(CONFIG_DT_FASTTRAP_MODULE) # include diff --git a/mm/vmstat.c b/mm/vmstat.c index 9152387d34f5..c3680b17e6a7 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "internal.h"