]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
x86: Don't include linux/irq.h from asm/hardirq.h
authorNicolai Stange <nstange@suse.de>
Sun, 29 Jul 2018 10:15:33 +0000 (12:15 +0200)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Sat, 11 Aug 2018 00:44:50 +0000 (20:44 -0400)
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 <nstange@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Orabug: 28220625
CVE: CVE-2018-3620

(cherry picked from commit 447ae316670230d7d29430e2cbf1f5db4f49d14c)

Signed-off-by: Mihai Carabas <mihai.carabas@oracle.com>
Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
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

38 files changed:
arch/x86/include/asm/dmi.h
arch/x86/include/asm/hardirq.h
arch/x86/include/asm/kvm_host.h
arch/x86/kernel/apic/apic.c
arch/x86/kernel/apic/htirq.c
arch/x86/kernel/apic/io_apic.c
arch/x86/kernel/apic/msi.c
arch/x86/kernel/apic/vector.c
arch/x86/kernel/ftrace.c
arch/x86/kernel/hpet.c
arch/x86/kernel/i387.c
arch/x86/kernel/i8259.c
arch/x86/kernel/irq.c
arch/x86/kernel/irq_32.c
arch/x86/kernel/irq_64.c
arch/x86/kernel/irqinit.c
arch/x86/kernel/kprobes/core.c
arch/x86/kernel/kprobes/opt.c
arch/x86/kernel/machine_kexec_64.c
arch/x86/kernel/smpboot.c
arch/x86/kernel/time.c
arch/x86/mm/fault.c
arch/x86/mm/kaiser.c
arch/x86/platform/efi/efi_64.c
arch/x86/platform/efi/quirks.c
arch/x86/xen/enlighten.c
arch/x86/xen/mmu.c
arch/x86/xen/setup.c
drivers/misc/ioc4.c
drivers/pci/host/pci-hyperv.c
drivers/pci/pci.c
drivers/pci/pcie/aer/aerdrv_core.c
drivers/pci/search.c
drivers/pnp/driver.c
drivers/pnp/resource.c
fs/file_table.c
kernel/dtrace/dtrace_os.c
mm/vmstat.c

index 535192f6bfad8d67c27235377e1e549b8ba89276..f3f564b8c5ad8d6a0db1b944d783fb0937c1a130 100644 (file)
@@ -3,8 +3,8 @@
 
 #include <linux/compiler.h>
 #include <linux/init.h>
+#include <linux/io.h>
 
-#include <asm/io.h>
 #include <asm/setup.h>
 
 static __always_inline __init void *dmi_alloc(unsigned len)
index 4852ca0af9f5d45a7da3d93a16759de3539c073b..479a5b843e06cc5746e4a2b8bb2a0d394d30fe17 100644 (file)
@@ -2,7 +2,6 @@
 #define _ASM_X86_HARDIRQ_H
 
 #include <linux/threads.h>
-#include <linux/irq.h>
 #include <linux/uek_kabi.h>
 
 typedef struct {
index b5200f517f61a3a3e772e9d157ff7387b2bea9b3..a49841ba44f643e20ffa1ad6c2ff38dab721b7d6 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/tracepoint.h>
 #include <linux/cpumask.h>
 #include <linux/irq_work.h>
+#include <linux/irq.h>
 
 #include <linux/kvm.h>
 #include <linux/kvm_para.h>
index e900f44a36f79a0d3fae76876bb1deb36bc672a9..45e1f26a58e47ab6f49c91b0ffed7bf4f93c0e8b 100644 (file)
@@ -55,6 +55,8 @@
 #include <asm/mce.h>
 #include <asm/tsc.h>
 #include <asm/hypervisor.h>
+#include <asm/irq_regs.h>
+#include <asm/hw_irq.h>
 
 unsigned int num_processors;
 
index 816f36e979ad03c6b052b1ec5c1ca34b6dc566e4..9231dc58ca4b3e16ddd3ee8d75e0f6d8c2c01f5d 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/device.h>
 #include <linux/pci.h>
 #include <linux/htirq.h>
+#include <linux/irq.h>
 #include <asm/hw_irq.h>
 #include <asm/apic.h>
 #include <asm/hypertransport.h>
index f4dc2462a1ac410803cd94ff4944ebf23c636fa9..7fe02796d44fb018a48558c720bf96dad8d43375 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <linux/mm.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/sched.h>
index 8c186a300b96b3bad029028a5592cbf2ab02a2ec..a392660fdf519255c7575149a0b6b05e7bafcb91 100644 (file)
@@ -10,6 +10,7 @@
  */
 #include <linux/mm.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/pci.h>
 #include <linux/dmar.h>
 #include <linux/hpet.h>
index 503261444eeeba14b06d7629fc23d710ebfa6812..4902161b69e33287d9a7f0acf84a40414c685f32 100644 (file)
@@ -9,6 +9,7 @@
  * published by the Free Software Foundation.
  */
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/init.h>
 #include <linux/compiler.h>
 #include <linux/irqdomain.h>
index 8b7b0a51e742cd26defe12b535f37a865ee3c172..335afdad21bec7b64748aa2ad4235fd17837f5ce 100644 (file)
@@ -28,6 +28,7 @@
 #include <asm/kprobes.h>
 #include <asm/ftrace.h>
 #include <asm/nops.h>
+#include <asm/sections.h>
 
 #ifdef CONFIG_DYNAMIC_FTRACE
 
index 0ae020847f554d6991b453000544ae65a9d80bd1..d098aecbed03b0a864123b4a11d584bbcfb47938 100644 (file)
@@ -1,6 +1,7 @@
 #include <linux/clocksource.h>
 #include <linux/clockchips.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/export.h>
 #include <linux/delay.h>
 #include <linux/errno.h>
index c0bbf1d7780d7b4607d78f3400fc2c9845c78224..15537a9dbab434efd32df823bea58d50949c63e3 100644 (file)
@@ -19,6 +19,7 @@
 #include <asm/i387.h>
 #include <asm/fpu-internal.h>
 #include <asm/user.h>
+#include <asm/irq_regs.h>
 
 static DEFINE_PER_CPU(bool, in_kernel_fpu);
 
index e7cc5370cd2fcade87dc1cecae2ab85184f62d27..514685f96647e95399eef1c990e468110317dd5b 100644 (file)
@@ -4,6 +4,7 @@
 #include <linux/sched.h>
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/timex.h>
 #include <linux/random.h>
 #include <linux/init.h>
index e9fff7847a66f39a5b3818b8eb71071bb96fe5cd..30e8e578268751398f379011949e90a2a1a6b4ad 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/ftrace.h>
 #include <linux/delay.h>
 #include <linux/export.h>
+#include <linux/irq.h>
 
 #include <asm/apic.h>
 #include <asm/io_apic.h>
index 6c7d669f904e2a5302ad839e7d4f3687ad08f671..efa7ba2d8c943ac17c99f39251a03232e19a29b1 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/module.h>
 #include <linux/seq_file.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/kernel_stat.h>
 #include <linux/notifier.h>
 #include <linux/cpu.h>
index 394e643d7830fc01d4da516bd79cab1dc0aa6962..eaad3e0f42eae04da359766620bc453e1c4a9813 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <linux/kernel_stat.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/seq_file.h>
 #include <linux/module.h>
 #include <linux/delay.h>
index 77b07c72c3e3020e5de883a91b112a04d00b2bd4..f197a0efb79fe787f877bbdfba46dd1719259255 100644 (file)
@@ -4,6 +4,7 @@
 #include <linux/sched.h>
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/timex.h>
 #include <linux/random.h>
 #include <linux/kprobes.h>
index 023c442c33bb4d3d1214f680cbb6370e323167ac..78a715b66ca3d01a618065f975ca07ae799b8546 100644 (file)
@@ -57,6 +57,7 @@
 #include <asm/alternative.h>
 #include <asm/insn.h>
 #include <asm/debugreg.h>
+#include <asm/sections.h>
 
 #include "common.h"
 
index cc83ef87d7af136cfd7ee8cef6be535542143bf5..85e355104876e37a2937223c557b171b67d14ae9 100644 (file)
@@ -37,6 +37,7 @@
 #include <asm/insn.h>
 #include <asm/debugreg.h>
 #include <asm/nospec-branch.h>
+#include <asm/sections.h>
 
 #include "common.h"
 
index 415480d3ea848bcf95e7ae26b56a5261add1cc8c..1268a72c9c576ffcc7ec0c156abc206373a9bda1 100644 (file)
@@ -25,6 +25,7 @@
 #include <asm/io_apic.h>
 #include <asm/debugreg.h>
 #include <asm/kexec-bzimage64.h>
+#include <asm/sections.h>
 
 #ifdef CONFIG_KEXEC_FILE
 static struct kexec_file_ops *kexec_file_loaders[] = {
index 1af36d897a4132e81818d28857e827a085ce2fc5..fa9abc8af3f0ad7f88a7ecd6a81978378bf07a64 100644 (file)
@@ -53,6 +53,8 @@
 #include <linux/stackprotector.h>
 #include <linux/gfp.h>
 #include <linux/cpuidle.h>
+#include <linux/irq.h>
+#include <linux/irqdesc.h>
 
 #include <asm/acpi.h>
 #include <asm/desc.h>
@@ -78,6 +80,7 @@
 #include <asm/misc.h>
 #include <asm/microcode.h>
 #include <asm/spec-ctrl.h>
+#include <asm/hw_irq.h>
 
 /* Number of siblings per CPU package */
 int smp_num_siblings = 1;
index d39c09119db6d2bf9e7ed6f1921f26f45dee3019..f8a0518d28104e3fadacfba6b5077317ae007244 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <linux/clockchips.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/i8253.h>
 #include <linux/time.h>
 #include <linux/export.h>
index 9cf6ad536ad64f03ff73e99e0de003121b6f29c4..af247a4b14dd0a0d4ff5c012c2d44272dba23c08 100644 (file)
@@ -20,6 +20,7 @@
 #include <asm/kmemcheck.h>             /* kmemcheck_*(), ...           */
 #include <asm/fixmap.h>                        /* VSYSCALL_ADDR                */
 #include <asm/vsyscall.h>              /* emulate_vsyscall             */
+#include <asm/sections.h>
 
 #define CREATE_TRACE_POINTS
 #include <asm/trace/exceptions.h>
index 5863d9d2b34e1453ae468b345293eb7de301e0f3..ed7e2949a58c6771cdc2fe2a5f3319695c296450 100644 (file)
@@ -20,6 +20,7 @@
 #include <asm/pgalloc.h>
 #include <asm/desc.h>
 #include <asm/cmdline.h>
+#include <asm/sections.h>
 
 #include <xen/xen.h>
 
index 3327c3155a9f44e6a71df02906c1ce45ac0ff5d3..80e7e364f8ad5f55cdd0f1214b2bc9999ec70acf 100644 (file)
@@ -40,6 +40,7 @@
 #include <asm/fixmap.h>
 #include <asm/realmode.h>
 #include <asm/time.h>
+#include <asm/sections.h>
 
 /*
  * We allocate runtime services regions bottom-up, starting from -4G, i.e.
index 1c7380da65ffab641f0cb0aedc88cb7ef7e8f6cc..e23ec307666504be36ed55b7ec05b52d495b0d00 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/acpi.h>
 #include <asm/efi.h>
 #include <asm/uv/uv.h>
+#include <asm/sections.h>
 
 #define EFI_MIN_RESERVE 5120
 
index d879c916f00f5f1c8335d3e688c8bcda9b6176f0..f03fb13ea5332c1a9d462cfcbda6bcaa4dac42a4 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/edd.h>
 
 #include <linux/kexec.h>
+#include <linux/slab.h>
 
 #include <xen/xen.h>
 #include <xen/events.h>
index 1abe7d8517ab943fd4bef2482e723e9338486498..9b11716aad3b5db86ada6ece292a14cf7e0575b8 100644 (file)
@@ -67,6 +67,7 @@
 #include <asm/init.h>
 #include <asm/pat.h>
 #include <asm/smp.h>
+#include <asm/sections.h>
 
 #include <asm/xen/hypercall.h>
 #include <asm/xen/hypervisor.h>
index e52b4b74ae3079b16f9a438ebb4fd1549f9a36e3..4329d9cc83fb54d9310623758b2ac5a1659f53bd 100644 (file)
@@ -21,6 +21,7 @@
 #include <asm/xen/hypervisor.h>
 #include <asm/xen/hypercall.h>
 #include <asm/xen/vnuma.h>
+#include <asm/sections.h>
 
 #include <xen/xen.h>
 #include <xen/page.h>
index 8758d033db23d7b84c7be8b2170f6702b1c979a3..cbed0e61bdc7ad43a48a312684591688226bbba2 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/slab.h>
 #include <linux/mutex.h>
 #include <linux/time.h>
+#include <linux/irq.h>
 #include <asm/io.h>
 
 /***************
index eaa3a837d93af9468b87e9dbe4f38461f58cacb2..1e58fb43a6e8d6b8c7d88be04a64364628a8535c 100644 (file)
@@ -52,6 +52,7 @@
 #include <linux/pci.h>
 #include <linux/semaphore.h>
 #include <linux/irqdomain.h>
+#include <linux/irq.h>
 #include <linux/msi.h>
 #include <linux/hyperv.h>
 #include <asm/mshyperv.h>
index 0c90860d805ef39a2686435c9ffbff047f91fd8c..6a106c8040f485c743898b28260b1a770cbdcc6a 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/pci-aspm.h>
 #include <linux/pm_wakeup.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/device.h>
 #include <linux/pm_runtime.h>
 #include <linux/pci_hotplug.h>
index b60a325234c5266676486b9db4cf9b2556a82713..99b8d882a23e9d71dc01f79bae8fc1c835f6069f 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/delay.h>
 #include <linux/slab.h>
 #include <linux/kfifo.h>
+#include <linux/irq.h>
 #include "aerdrv.h"
 
 static bool forceload;
index a20ce7d5e2a718551554a1e860457b852756d97b..1fb8ca12b2b6ff95d422cd8e0007779fefd60eb4 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include "pci.h"
 
 DECLARE_RWSEM(pci_bus_sem);
index 153a493b5413e06482dd9909bf0301e6d26eae1f..c3a51a0bd7aa48f7992f868f59cafd31a791e6e7 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/ctype.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+
 #include "base.h"
 
 static int compare_func(const char *ida, const char *idb)
index f980ff7166e98e93546f7f79657087983a5388ce..00783d54772233ae6b3a72e144d72e51c5f5e2eb 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/slab.h>
 #include <linux/errno.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/kernel.h>
 #include <asm/io.h>
 #include <asm/dma.h>
index 294174dcc2261237fa900432c5c3a7134fda3976..3feaa05e78d15e157979fba3446a1c731aea0631 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/hardirq.h>
 #include <linux/task_work.h>
 #include <linux/ima.h>
+#include <linux/irq.h>
 
 #include <linux/atomic.h>
 
index 17e52e25df3267316885bccf51cce253775100c2..c375f9e81cafc929d4fac0e86fb6e7f374fd39f7 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/kallsyms.h>
 #include <linux/workqueue.h>
 #include <asm/ptrace.h>
+#include <asm/uaccess.h>
 
 #if defined(CONFIG_DT_FASTTRAP) || defined(CONFIG_DT_FASTTRAP_MODULE)
 # include <linux/uprobes.h>
index 9152387d34f5ca6b60a3c15c6c932b94477e4bc6..c3680b17e6a7ac60e7907c9f3b5e77b079537a91 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/mm_inline.h>
 #include <linux/page_ext.h>
 #include <linux/page_owner.h>
+#include <linux/irq.h>
 
 #include "internal.h"