From: David Howells <dhowells@redhat.com>
Subject: [PATCH] PERCPU: Add #inclusions and forward type declarations to support rearrangement

Add #inclusions and forward type declarations to a number of files to support
future rearrangement of the header files.

Signed-off-by: Daivd Howells <dhowells@redhat.com>
---

 arch/x86/ia32/ia32entry.S           |    2 ++
 arch/x86/include/asm/uaccess.h      |    1 +
 arch/x86/include/asm/vmware.h       |    2 ++
 arch/x86/kernel/alternative.c       |    1 +
 arch/x86/kernel/apic/nmi.c          |    1 +
 arch/x86/kernel/cpu/mcheck/mce_64.c |    1 +
 arch/x86/kernel/cpu/vmware.c        |    1 +
 arch/x86/kernel/head64.c            |    1 +
 arch/x86/kernel/hpet.c              |    1 +
 arch/x86/kernel/i387.c              |    1 +
 arch/x86/kernel/tsc.c               |    1 +
 arch/x86/lib/copy_user_64.S         |    1 +
 arch/x86/lib/putuser.S              |    1 +
 arch/x86/mm/pat.c                   |    1 +
 arch/x86/vdso/vma.c                 |    1 +
 drivers/base/bus.c                  |    1 +
 drivers/base/devres.c               |    1 +
 drivers/base/driver.c               |    1 +
 drivers/base/firmware_class.c       |    1 +
 drivers/base/iommu.c                |    1 +
 drivers/base/module.c               |    1 +
 drivers/char/pty.c                  |    1 +
 drivers/char/tty_audit.c            |    1 +
 drivers/cpufreq/cpufreq_stats.c     |    1 +
 drivers/cpuidle/sysfs.c             |    1 +
 drivers/firmware/dmi-id.c           |    1 +
 drivers/firmware/memmap.c           |    1 +
 drivers/i2c/i2c-boardinfo.c         |    1 +
 drivers/input/ff-core.c             |    1 +
 drivers/input/ff-memless.c          |    1 +
 drivers/input/serio/i8042.c         |    1 +
 drivers/power/power_supply_sysfs.c  |    1 +
 drivers/rtc/class.c                 |    1 +
 drivers/serial/8250.c               |    1 +
 drivers/thermal/thermal_sys.c       |    1 +
 drivers/usb/core/driver.c           |    1 +
 drivers/usb/core/endpoint.c         |    1 +
 drivers/usb/core/file.c             |    1 +
 drivers/video/fb_ddc.c              |    1 +
 drivers/video/fbcvt.c               |    1 +
 drivers/video/fbsysfs.c             |    1 +
 drivers/video/modedb.c              |    1 +
 drivers/video/output.c              |    1 +
 fs/eventfd.c                        |    1 +
 fs/ext3/balloc.c                    |    1 +
 fs/fscache/operation.c              |    1 +
 fs/fscache/page.c                   |    1 +
 fs/libfs.c                          |    4 ++--
 fs/open.c                           |    1 +
 fs/ramfs/inode.c                    |    1 +
 fs/signalfd.c                       |    1 +
 fs/sync.c                           |    1 +
 fs/sysfs/inode.c                    |    1 +
 fs/sysfs/mount.c                    |    1 +
 fs/timerfd.c                        |    1 +
 include/linux/fsnotify.h            |    1 +
 include/linux/jbd.h                 |    1 +
 include/linux/security.h            |    1 +
 kernel/async.c                      |    1 +
 kernel/power/snapshot.c             |    1 +
 kernel/power/swsusp.c               |    1 +
 kernel/sched_cpupri.c               |    1 +
 kernel/time/timecompare.c           |    1 +
 kernel/timer.c                      |    1 +
 lib/kasprintf.c                     |    1 +
 lib/kref.c                          |    1 +
 lib/scatterlist.c                   |    1 +
 mm/sparse-vmemmap.c                 |    1 +
 mm/sparse.c                         |    1 +
 net/sunrpc/xdr.c                    |    1 +
 security/device_cgroup.c            |    1 +
 71 files changed, 74 insertions(+), 2 deletions(-)


diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
index a505202..a925f1a 100644
--- a/arch/x86/ia32/ia32entry.S
+++ b/arch/x86/ia32/ia32entry.S
@@ -13,7 +13,9 @@
 #include <asm/thread_info.h>	
 #include <asm/segment.h>
 #include <asm/irqflags.h>
+#include <asm/page_types.h>
 #include <linux/linkage.h>
+#include <linux/percpu.h>
 
 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this.  */
 #include <linux/elf-em.h>
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index b685ece..dc52199 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -8,6 +8,7 @@
 #include <linux/thread_info.h>
 #include <linux/prefetch.h>
 #include <linux/string.h>
+#include <linux/cache.h>
 #include <asm/asm.h>
 #include <asm/page.h>
 
diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h
index c11b7e1..86784ce 100644
--- a/arch/x86/include/asm/vmware.h
+++ b/arch/x86/include/asm/vmware.h
@@ -20,6 +20,8 @@
 #ifndef ASM_X86__VMWARE_H
 #define ASM_X86__VMWARE_H
 
+struct cpuinfo_x86;
+
 extern unsigned long vmware_get_tsc_khz(void);
 extern int vmware_platform(void);
 extern void vmware_set_feature_bits(struct cpuinfo_x86 *c);
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index f576587..e970115 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -6,6 +6,7 @@
 #include <linux/mm.h>
 #include <linux/vmalloc.h>
 #include <linux/memory.h>
+#include <linux/slab.h>
 #include <asm/alternative.h>
 #include <asm/sections.h>
 #include <asm/pgtable.h>
diff --git a/arch/x86/kernel/apic/nmi.c b/arch/x86/kernel/apic/nmi.c
index d6bd624..623f2d7 100644
--- a/arch/x86/kernel/apic/nmi.c
+++ b/arch/x86/kernel/apic/nmi.c
@@ -26,6 +26,7 @@
 #include <linux/kernel_stat.h>
 #include <linux/kdebug.h>
 #include <linux/smp.h>
+#include <linux/slab.h>
 
 #include <asm/i8259.h>
 #include <asm/io_apic.h>
diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c
index 863f895..10069cf 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_64.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_64.c
@@ -29,6 +29,7 @@
 #include <linux/kobject.h>
 #include <linux/sysfs.h>
 #include <linux/ratelimit.h>
+#include <linux/slab.h>
 #include <asm/processor.h>
 #include <asm/msr.h>
 #include <asm/mce.h>
diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c
index 284c399..d5ef0f2 100644
--- a/arch/x86/kernel/cpu/vmware.c
+++ b/arch/x86/kernel/cpu/vmware.c
@@ -24,6 +24,7 @@
 #include <linux/dmi.h>
 #include <asm/div64.h>
 #include <asm/vmware.h>
+#include <asm/processor.h>
 
 #define CPUID_VMWARE_INFO_LEAF	0x40000000
 #define VMWARE_HYPERVISOR_MAGIC	0x564D5868
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 70eaa85..f930b8e 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -25,6 +25,7 @@
 #include <asm/e820.h>
 #include <asm/bios_ebda.h>
 #include <asm/trampoline.h>
+#include <asm/fixmap.h>
 
 static void __init zap_identity_mappings(void)
 {
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 648b3a2..4c91d21 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -9,6 +9,7 @@
 #include <linux/cpu.h>
 #include <linux/pm.h>
 #include <linux/io.h>
+#include <linux/slab.h>
 
 #include <asm/fixmap.h>
 #include <asm/i8253.h>
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
index f2f8540..9002480 100644
--- a/arch/x86/kernel/i387.c
+++ b/arch/x86/kernel/i387.c
@@ -8,6 +8,7 @@
 #include <linux/module.h>
 #include <linux/regset.h>
 #include <linux/sched.h>
+#include <linux/slab.h>
 
 #include <asm/sigcontext.h>
 #include <asm/processor.h>
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 7a567eb..57a213e 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -16,6 +16,7 @@
 #include <asm/time.h>
 #include <asm/delay.h>
 #include <asm/hypervisor.h>
+#include <asm/apic.h>
 
 unsigned int __read_mostly cpu_khz;	/* TSC clocks / usec, not used here */
 EXPORT_SYMBOL(cpu_khz);
diff --git a/arch/x86/lib/copy_user_64.S b/arch/x86/lib/copy_user_64.S
index f118c11..8079b5b 100644
--- a/arch/x86/lib/copy_user_64.S
+++ b/arch/x86/lib/copy_user_64.S
@@ -15,6 +15,7 @@
 #include <asm/asm-offsets.h>
 #include <asm/thread_info.h>
 #include <asm/cpufeature.h>
+#include <asm/page_types.h>
 
 	.macro ALTERNATIVE_JUMP feature,orig,alt
 0:
diff --git a/arch/x86/lib/putuser.S b/arch/x86/lib/putuser.S
index 36b0d15..794f14a 100644
--- a/arch/x86/lib/putuser.S
+++ b/arch/x86/lib/putuser.S
@@ -13,6 +13,7 @@
 #include <linux/linkage.h>
 #include <asm/dwarf2.h>
 #include <asm/thread_info.h>
+#include <asm/page_types.h>
 #include <asm/errno.h>
 #include <asm/asm.h>
 
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index c009a24..6774611 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -15,6 +15,7 @@
 #include <linux/gfp.h>
 #include <linux/mm.h>
 #include <linux/fs.h>
+#include <linux/slab.h>
 
 #include <asm/cacheflush.h>
 #include <asm/processor.h>
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index 7133cdf..2e23126 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -8,6 +8,7 @@
 #include <linux/sched.h>
 #include <linux/init.h>
 #include <linux/random.h>
+#include <linux/slab.h>
 #include <asm/vsyscall.h>
 #include <asm/vgtod.h>
 #include <asm/proto.h>
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index dc030f1..277ea9a 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -15,6 +15,7 @@
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/string.h>
+#include <linux/slab.h>
 #include "base.h"
 #include "power/power.h"
 
diff --git a/drivers/base/devres.c b/drivers/base/devres.c
index e8beb8e..5c30ea3 100644
--- a/drivers/base/devres.c
+++ b/drivers/base/devres.c
@@ -9,6 +9,7 @@
 
 #include <linux/device.h>
 #include <linux/module.h>
+#include <linux/slab.h>
 
 #include "base.h"
 
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index c51f11b..8b7a352 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/errno.h>
 #include <linux/string.h>
+#include <linux/slab.h>
 #include "base.h"
 
 static struct device *next_device(struct klist_iter *i)
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index d3a59c6..0f27d76 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -17,6 +17,7 @@
 #include <linux/bitops.h>
 #include <linux/mutex.h>
 #include <linux/kthread.h>
+#include <linux/slab.h>
 
 #include <linux/firmware.h>
 #include "base.h"
diff --git a/drivers/base/iommu.c b/drivers/base/iommu.c
index 9f0e672..09e7b37 100644
--- a/drivers/base/iommu.c
+++ b/drivers/base/iommu.c
@@ -20,6 +20,7 @@
 #include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/iommu.h>
+#include <linux/slab.h>
 
 static struct iommu_ops *iommu_ops;
 
diff --git a/drivers/base/module.c b/drivers/base/module.c
index 103be9c..f1fcd61 100644
--- a/drivers/base/module.c
+++ b/drivers/base/module.c
@@ -8,6 +8,7 @@
 #include <linux/module.h>
 #include <linux/errno.h>
 #include <linux/string.h>
+#include <linux/slab.h>
 #include "base.h"
 
 static char *make_driver_name(struct device_driver *drv)
diff --git a/drivers/char/pty.c b/drivers/char/pty.c
index 31038a0..e8726fb 100644
--- a/drivers/char/pty.c
+++ b/drivers/char/pty.c
@@ -27,6 +27,7 @@
 #include <linux/uaccess.h>
 #include <linux/bitops.h>
 #include <linux/devpts_fs.h>
+#include <linux/slab.h>
 
 #include <asm/system.h>
 
diff --git a/drivers/char/tty_audit.c b/drivers/char/tty_audit.c
index 55ba6f1..572490c 100644
--- a/drivers/char/tty_audit.c
+++ b/drivers/char/tty_audit.c
@@ -11,6 +11,7 @@
 
 #include <linux/audit.h>
 #include <linux/tty.h>
+#include <linux/slab.h>
 
 struct tty_audit_buf {
 	atomic_t count;
diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c
index 5a62d67..51e478a 100644
--- a/drivers/cpufreq/cpufreq_stats.c
+++ b/drivers/cpufreq/cpufreq_stats.c
@@ -19,6 +19,7 @@
 #include <linux/kobject.h>
 #include <linux/spinlock.h>
 #include <linux/notifier.h>
+#include <linux/slab.h>
 #include <asm/cputime.h>
 
 static spinlock_t cpufreq_stats_lock;
diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
index 97b0038..d31990d 100644
--- a/drivers/cpuidle/sysfs.c
+++ b/drivers/cpuidle/sysfs.c
@@ -10,6 +10,7 @@
 #include <linux/cpuidle.h>
 #include <linux/sysfs.h>
 #include <linux/cpu.h>
+#include <linux/slab.h>
 
 #include "cpuidle.h"
 
diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c
index 5a76d05..157c75c 100644
--- a/drivers/firmware/dmi-id.c
+++ b/drivers/firmware/dmi-id.c
@@ -11,6 +11,7 @@
 #include <linux/init.h>
 #include <linux/dmi.h>
 #include <linux/device.h>
+#include <linux/slab.h>
 
 struct dmi_device_attribute{
 	struct device_attribute dev_attr;
diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
index 05aa2d4..bdac4cf 100644
--- a/drivers/firmware/memmap.c
+++ b/drivers/firmware/memmap.c
@@ -20,6 +20,7 @@
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/bootmem.h>
+#include <linux/slab.h>
 
 /*
  * Data types ------------------------------------------------------------------
diff --git a/drivers/i2c/i2c-boardinfo.c b/drivers/i2c/i2c-boardinfo.c
index ffb35f0..663e7ac 100644
--- a/drivers/i2c/i2c-boardinfo.c
+++ b/drivers/i2c/i2c-boardinfo.c
@@ -18,6 +18,7 @@
 
 #include <linux/kernel.h>
 #include <linux/i2c.h>
+#include <linux/slab.h>
 
 #include "i2c-core.h"
 
diff --git a/drivers/input/ff-core.c b/drivers/input/ff-core.c
index 72c63e5..cf0d9c9 100644
--- a/drivers/input/ff-core.c
+++ b/drivers/input/ff-core.c
@@ -29,6 +29,7 @@
 #include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/sched.h>
+#include <linux/slab.h>
 
 /*
  * Check that the effect_id is a valid effect and whether the user
diff --git a/drivers/input/ff-memless.c b/drivers/input/ff-memless.c
index bc4e40f..1867f73 100644
--- a/drivers/input/ff-memless.c
+++ b/drivers/input/ff-memless.c
@@ -30,6 +30,7 @@
 #include <linux/mutex.h>
 #include <linux/spinlock.h>
 #include <linux/jiffies.h>
+#include <linux/slab.h>
 
 #include "fixp-arith.h"
 
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 170f71e..d2afa04 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -20,6 +20,7 @@
 #include <linux/rcupdate.h>
 #include <linux/platform_device.h>
 #include <linux/i8042.h>
+#include <linux/slab.h>
 
 #include <asm/io.h>
 
diff --git a/drivers/power/power_supply_sysfs.c b/drivers/power/power_supply_sysfs.c
index da73591..d71d521 100644
--- a/drivers/power/power_supply_sysfs.c
+++ b/drivers/power/power_supply_sysfs.c
@@ -13,6 +13,7 @@
 
 #include <linux/ctype.h>
 #include <linux/power_supply.h>
+#include <linux/slab.h>
 
 #include "power_supply.h"
 
diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c
index be5a6b7..b5b338f 100644
--- a/drivers/rtc/class.c
+++ b/drivers/rtc/class.c
@@ -15,6 +15,7 @@
 #include <linux/rtc.h>
 #include <linux/kdev_t.h>
 #include <linux/idr.h>
+#include <linux/slab.h>
 
 #include "rtc-core.h"
 
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 23b981e..b35d5cb 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -38,6 +38,7 @@
 #include <linux/serial_8250.h>
 #include <linux/nmi.h>
 #include <linux/mutex.h>
+#include <linux/slab.h>
 
 #include <asm/io.h>
 #include <asm/irq.h>
diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index d0b093b..b82f33e 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -31,6 +31,7 @@
 #include <linux/thermal.h>
 #include <linux/spinlock.h>
 #include <linux/reboot.h>
+#include <linux/slab.h>
 
 MODULE_AUTHOR("Zhang Rui");
 MODULE_DESCRIPTION("Generic thermal management sysfs support");
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index d0a21a5..5c6cefb 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -26,6 +26,7 @@
 #include <linux/usb.h>
 #include <linux/usb/quirks.h>
 #include <linux/workqueue.h>
+#include <linux/slab.h>
 #include "hcd.h"
 #include "usb.h"
 
diff --git a/drivers/usb/core/endpoint.c b/drivers/usb/core/endpoint.c
index 40dee2a..8746c0f 100644
--- a/drivers/usb/core/endpoint.c
+++ b/drivers/usb/core/endpoint.c
@@ -13,6 +13,7 @@
 #include <linux/spinlock.h>
 #include <linux/idr.h>
 #include <linux/usb.h>
+#include <linux/slab.h>
 #include "usb.h"
 
 #define MAX_ENDPOINT_MINORS (64*128*32)
diff --git a/drivers/usb/core/file.c b/drivers/usb/core/file.c
index 997e659..90e007d 100644
--- a/drivers/usb/core/file.c
+++ b/drivers/usb/core/file.c
@@ -20,6 +20,7 @@
 #include <linux/rwsem.h>
 #include <linux/smp_lock.h>
 #include <linux/usb.h>
+#include <linux/slab.h>
 
 #include "usb.h"
 
diff --git a/drivers/video/fb_ddc.c b/drivers/video/fb_ddc.c
index 0cf96eb..4a874c8 100644
--- a/drivers/video/fb_ddc.c
+++ b/drivers/video/fb_ddc.c
@@ -12,6 +12,7 @@
 #include <linux/device.h>
 #include <linux/fb.h>
 #include <linux/i2c-algo-bit.h>
+#include <linux/slab.h>
 
 #include "edid.h"
 
diff --git a/drivers/video/fbcvt.c b/drivers/video/fbcvt.c
index 0847c5e..7293eac 100644
--- a/drivers/video/fbcvt.c
+++ b/drivers/video/fbcvt.c
@@ -13,6 +13,7 @@
  *
  */
 #include <linux/fb.h>
+#include <linux/slab.h>
 
 #define FB_CVT_CELLSIZE               8
 #define FB_CVT_GTF_C                 40
diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c
index d4a2c11..ea5f0a5 100644
--- a/drivers/video/fbsysfs.c
+++ b/drivers/video/fbsysfs.c
@@ -19,6 +19,7 @@
 #include <linux/fb.h>
 #include <linux/console.h>
 #include <linux/module.h>
+#include <linux/slab.h>
 
 #define FB_SYSFS_FLAG_ATTR 1
 
diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
index 1618624..9afc652 100644
--- a/drivers/video/modedb.c
+++ b/drivers/video/modedb.c
@@ -13,6 +13,7 @@
 
 #include <linux/module.h>
 #include <linux/fb.h>
+#include <linux/slab.h>
 
 #undef DEBUG
 
diff --git a/drivers/video/output.c b/drivers/video/output.c
index 5e6439a..b92e0ad 100644
--- a/drivers/video/output.c
+++ b/drivers/video/output.c
@@ -25,6 +25,7 @@
 #include <linux/video_output.h>
 #include <linux/err.h>
 #include <linux/ctype.h>
+#include <linux/slab.h>
 
 
 MODULE_DESCRIPTION("Display Output Switcher Lowlevel Control Abstraction");
diff --git a/fs/eventfd.c b/fs/eventfd.c
index 2a701d5..77d3345 100644
--- a/fs/eventfd.c
+++ b/fs/eventfd.c
@@ -16,6 +16,7 @@
 #include <linux/anon_inodes.h>
 #include <linux/eventfd.h>
 #include <linux/syscalls.h>
+#include <linux/slab.h>
 
 struct eventfd_ctx {
 	wait_queue_head_t wqh;
diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
index 225202d..46bf683 100644
--- a/fs/ext3/balloc.c
+++ b/fs/ext3/balloc.c
@@ -19,6 +19,7 @@
 #include <linux/ext3_jbd.h>
 #include <linux/quotaops.h>
 #include <linux/buffer_head.h>
+#include <linux/slab.h>
 
 /*
  * balloc.c contains the blocks allocation and deallocation routines
diff --git a/fs/fscache/operation.c b/fs/fscache/operation.c
index e7f8d53..6939263 100644
--- a/fs/fscache/operation.c
+++ b/fs/fscache/operation.c
@@ -13,6 +13,7 @@
 
 #define FSCACHE_DEBUG_LEVEL OPERATION
 #include <linux/module.h>
+#include <linux/slab.h>
 #include "internal.h"
 
 atomic_t fscache_op_debug_id;
diff --git a/fs/fscache/page.c b/fs/fscache/page.c
index 2568e0e..9e965c2 100644
--- a/fs/fscache/page.c
+++ b/fs/fscache/page.c
@@ -14,6 +14,7 @@
 #include <linux/fscache-cache.h>
 #include <linux/buffer_head.h>
 #include <linux/pagevec.h>
+#include <linux/slab.h>
 #include "internal.h"
 
 /*
diff --git a/fs/libfs.c b/fs/libfs.c
index cd22319..76ca633 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -9,8 +9,8 @@
 #include <linux/vfs.h>
 #include <linux/mutex.h>
 #include <linux/exportfs.h>
-
-#include <asm/uaccess.h>
+#include <linux/slab.h>
+#include <linux/uaccess.h>
 
 int simple_getattr(struct vfsmount *mnt, struct dentry *dentry,
 		   struct kstat *stat)
diff --git a/fs/open.c b/fs/open.c
index 377eb25..c1966d4 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -30,6 +30,7 @@
 #include <linux/audit.h>
 #include <linux/falloc.h>
 #include <linux/fs_struct.h>
+#include <linux/slab.h>
 
 int vfs_statfs(struct dentry *dentry, struct kstatfs *buf)
 {
diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
index 3a6b193..3a58e02 100644
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -34,6 +34,7 @@
 #include <linux/ramfs.h>
 #include <linux/sched.h>
 #include <linux/parser.h>
+#include <linux/slab.h>
 #include <asm/uaccess.h>
 #include "internal.h"
 
diff --git a/fs/signalfd.c b/fs/signalfd.c
index b07565c..3f8800f 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -28,6 +28,7 @@
 #include <linux/anon_inodes.h>
 #include <linux/signalfd.h>
 #include <linux/syscalls.h>
+#include <linux/slab.h>
 
 struct signalfd_ctx {
 	sigset_t sigmask;
diff --git a/fs/sync.c b/fs/sync.c
index 7abc65f..36ef011 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -13,6 +13,7 @@
 #include <linux/pagemap.h>
 #include <linux/quotaops.h>
 #include <linux/buffer_head.h>
+#include <linux/slab.h>
 
 #define VALID_FLAGS (SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE| \
 			SYNC_FILE_RANGE_WAIT_AFTER)
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
index 555f0ff..1fb257d 100644
--- a/fs/sysfs/inode.c
+++ b/fs/sysfs/inode.c
@@ -18,6 +18,7 @@
 #include <linux/capability.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
+#include <linux/slab.h>
 #include "sysfs.h"
 
 extern struct super_block * sysfs_sb;
diff --git a/fs/sysfs/mount.c b/fs/sysfs/mount.c
index 4974995..57a7717 100644
--- a/fs/sysfs/mount.c
+++ b/fs/sysfs/mount.c
@@ -18,6 +18,7 @@
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/magic.h>
+#include <linux/slab.h>
 
 #include "sysfs.h"
 
diff --git a/fs/timerfd.c b/fs/timerfd.c
index b042bd7..7805b03 100644
--- a/fs/timerfd.c
+++ b/fs/timerfd.c
@@ -21,6 +21,7 @@
 #include <linux/anon_inodes.h>
 #include <linux/timerfd.h>
 #include <linux/syscalls.h>
+#include <linux/slab.h>
 
 struct timerfd_ctx {
 	struct hrtimer tmr;
diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h
index 00fbd5b..b9a9c2e 100644
--- a/include/linux/fsnotify.h
+++ b/include/linux/fsnotify.h
@@ -14,6 +14,7 @@
 #include <linux/dnotify.h>
 #include <linux/inotify.h>
 #include <linux/audit.h>
+#include <linux/slab.h>
 
 /*
  * fsnotify_d_instantiate - instantiate a dentry for inode
diff --git a/include/linux/jbd.h b/include/linux/jbd.h
index 53ae439..80838d5 100644
--- a/include/linux/jbd.h
+++ b/include/linux/jbd.h
@@ -31,6 +31,7 @@
 #include <linux/mutex.h>
 #include <linux/timer.h>
 #include <linux/lockdep.h>
+#include <linux/slab.h>
 
 #define journal_oom_retry 1
 
diff --git a/include/linux/security.h b/include/linux/security.h
index d5fd616..108d241 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -33,6 +33,7 @@
 #include <linux/key.h>
 #include <linux/xfrm.h>
 #include <linux/gfp.h>
+#include <linux/slab.h>
 #include <net/flow.h>
 
 /* Maximum number of letters for an LSM name string */
diff --git a/kernel/async.c b/kernel/async.c
index 968ef94..6a8c141 100644
--- a/kernel/async.c
+++ b/kernel/async.c
@@ -56,6 +56,7 @@ asynchronous and synchronous parts of the kernel.
 #include <linux/init.h>
 #include <linux/kthread.h>
 #include <linux/delay.h>
+#include <linux/slab.h>
 #include <asm/atomic.h>
 
 static async_cookie_t next_cookie = 1;
diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index 33e2e4a..4f8d8f8 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -26,6 +26,7 @@
 #include <linux/console.h>
 #include <linux/highmem.h>
 #include <linux/list.h>
+#include <linux/slab.h>
 
 #include <asm/uaccess.h>
 #include <asm/mmu_context.h>
diff --git a/kernel/power/swsusp.c b/kernel/power/swsusp.c
index 78c3504..6dcbf16 100644
--- a/kernel/power/swsusp.c
+++ b/kernel/power/swsusp.c
@@ -52,6 +52,7 @@
 #include <linux/time.h>
 #include <linux/rbtree.h>
 #include <linux/io.h>
+#include <linux/slab.h>
 
 #include "power.h"
 
diff --git a/kernel/sched_cpupri.c b/kernel/sched_cpupri.c
index cdd3c89..4551352 100644
--- a/kernel/sched_cpupri.c
+++ b/kernel/sched_cpupri.c
@@ -27,6 +27,7 @@
  *  of the License.
  */
 
+#include <linux/gfp.h>
 #include "sched_cpupri.h"
 
 /* Convert between a 140 based task->prio, and our 102 based cpupri */
diff --git a/kernel/time/timecompare.c b/kernel/time/timecompare.c
index 71e7f1a..018e126 100644
--- a/kernel/time/timecompare.c
+++ b/kernel/time/timecompare.c
@@ -20,6 +20,7 @@
 #include <linux/timecompare.h>
 #include <linux/module.h>
 #include <linux/math64.h>
+#include <linux/slab.h>
 
 /*
  * fixed point arithmetic scale factor for skew
diff --git a/kernel/timer.c b/kernel/timer.c
index cffffad..c34955a 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -37,6 +37,7 @@
 #include <linux/delay.h>
 #include <linux/tick.h>
 #include <linux/kallsyms.h>
+#include <linux/slab.h>
 
 #include <asm/uaccess.h>
 #include <asm/unistd.h>
diff --git a/lib/kasprintf.c b/lib/kasprintf.c
index c5ff1fd..638c809 100644
--- a/lib/kasprintf.c
+++ b/lib/kasprintf.c
@@ -8,6 +8,7 @@
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/string.h>
+#include <linux/slab.h>
 
 /* Simplified asprintf. */
 char *kvasprintf(gfp_t gfp, const char *fmt, va_list ap)
diff --git a/lib/kref.c b/lib/kref.c
index 9ecd6e8..6d19f69 100644
--- a/lib/kref.c
+++ b/lib/kref.c
@@ -13,6 +13,7 @@
 
 #include <linux/kref.h>
 #include <linux/module.h>
+#include <linux/slab.h>
 
 /**
  * kref_set - initialize object and set refcount to requested number.
diff --git a/lib/scatterlist.c b/lib/scatterlist.c
index b7b449d..368b3f7 100644
--- a/lib/scatterlist.c
+++ b/lib/scatterlist.c
@@ -9,6 +9,7 @@
 #include <linux/module.h>
 #include <linux/scatterlist.h>
 #include <linux/highmem.h>
+#include <linux/slab.h>
 
 /**
  * sg_next - return the next scatterlist entry in a list
diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
index a13ea64..3bc8ccc 100644
--- a/mm/sparse-vmemmap.c
+++ b/mm/sparse-vmemmap.c
@@ -25,6 +25,7 @@
 #include <linux/spinlock.h>
 #include <linux/vmalloc.h>
 #include <linux/sched.h>
+#include <linux/slab.h>
 #include <asm/dma.h>
 #include <asm/pgalloc.h>
 #include <asm/pgtable.h>
diff --git a/mm/sparse.c b/mm/sparse.c
index da432d9..b1574e7 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -8,6 +8,7 @@
 #include <linux/module.h>
 #include <linux/spinlock.h>
 #include <linux/vmalloc.h>
+#include <linux/slab.h>
 #include "internal.h"
 #include <asm/dma.h>
 #include <asm/pgalloc.h>
diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c
index 406e26d..faf7085 100644
--- a/net/sunrpc/xdr.c
+++ b/net/sunrpc/xdr.c
@@ -12,6 +12,7 @@
 #include <linux/kernel.h>
 #include <linux/pagemap.h>
 #include <linux/errno.h>
+#include <linux/slab.h>
 #include <linux/sunrpc/xdr.h>
 #include <linux/sunrpc/msg_prot.h>
 
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index 5fda7df..417ae2f 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -12,6 +12,7 @@
 #include <linux/seq_file.h>
 #include <linux/rcupdate.h>
 #include <linux/mutex.h>
+#include <linux/slab.h>
 
 #define ACC_MKNOD 1
 #define ACC_READ  2
