]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
kernel: Update to Linux 3.2.
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 1 Mar 2012 18:10:03 +0000 (19:10 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 2 Apr 2012 00:12:38 +0000 (02:12 +0200)
Introduce new way of creating configurations:

From now on, there are no configuration files as they come
out of "make oldconfig" for every single architecture and kernel
version.

There is now a system that creates those configurations
and so it is easier to track changes, see differences between
architectures and a lot more.

There are configuration files for armv5tel kernels but they
do not build because of problems with the grsecurity patchset.

19 files changed:
kernel/config-arm-generic [new file with mode: 0644]
kernel/config-armv5tel-kirkwood [new file with mode: 0644]
kernel/config-armv7hl-omap [new file with mode: 0644]
kernel/config-generic [moved from kernel/config.i686-legacy with 80% similarity]
kernel/config-i686-default [new file with mode: 0644]
kernel/config-i686-legacy [new file with mode: 0644]
kernel/config-x86-generic [new file with mode: 0644]
kernel/config-x86_64-default [new file with mode: 0644]
kernel/config.armv5tel-versatile [deleted file]
kernel/config.i686 [deleted file]
kernel/config.x86_64 [deleted file]
kernel/kernel.nm
kernel/patches/arm-smsc-support-reading-mac-address-from-device-tree.patch [new file with mode: 0644]
kernel/patches/grsecurity-2.9-3.2.12-201203221944.patch [moved from kernel/patches/grsecurity-2.2.2-3.1.5-201112101853.patch with 84% similarity]
kernel/patches/linux-3.1-bridge-master-device-stuck-in-no-carrier-state-forever-when-in-user-stp-mode.patch [deleted file]
kernel/scripts/configcommon.py [new file with mode: 0755]
kernel/scripts/configdiff.py [new file with mode: 0755]
kernel/scripts/configure [new file with mode: 0755]
kernel/scripts/merge.pl [new file with mode: 0644]

diff --git a/kernel/config-arm-generic b/kernel/config-arm-generic
new file mode 100644 (file)
index 0000000..1e2f0af
--- /dev/null
@@ -0,0 +1,459 @@
+CONFIG_ARM=y
+CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
+CONFIG_KTIME_SCALAR=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+
+#
+# General setup
+#
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_KERNEL_GZIP=y
+
+#
+# IRQ subsystem
+#
+CONFIG_IRQ_DOMAIN=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TINY_RCU=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# GCOV-based kernel profiling
+#
+CONFIG_LBDAF=y
+
+#
+# IO Schedulers
+#
+# CONFIG_MUTEX_SPIN_ON_OWNER is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+CONFIG_ARCH_VERSATILE=y
+# CONFIG_ARCH_VEXPRESS is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCMRING is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CNS3XXX is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_PRIMA2 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_MXS is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_LPC32XX is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_PICOXCELL is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5P64X0 is not set
+# CONFIG_ARCH_S5PC100 is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_TCC_926 is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_NOMADIK is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_VT8500 is not set
+# CONFIG_ARCH_ZYNQ is not set
+
+#
+# Versatile platform type
+#
+CONFIG_ARCH_VERSATILE_PB=y
+CONFIG_MACH_VERSATILE_AB=y
+CONFIG_MACH_VERSATILE_DT=y
+CONFIG_PLAT_VERSATILE_CLCD=y
+CONFIG_PLAT_VERSATILE_FPGA_IRQ=y
+CONFIG_PLAT_VERSATILE_LEDS=y
+CONFIG_PLAT_VERSATILE_SCHED_CLOCK=y
+CONFIG_PLAT_VERSATILE=y
+CONFIG_ARM_TIMER_SP804=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_PABRT_LEGACY=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_USE_DOMAINS=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+CONFIG_ARM_L1_CACHE_SHIFT=5
+CONFIG_ARM_VIC=y
+CONFIG_ARM_VIC_NR=2
+CONFIG_ICST=y
+CONFIG_PL330=y
+
+#
+# Bus support
+#
+CONFIG_ARM_AMBA=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# Kernel Features
+#
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_HIGHMEM=y
+# CONFIG_HIGHPTE is not set
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_SPLIT_PTLOCK_CPUS=999999
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_NEED_PER_CPU_KM=y
+CONFIG_FORCE_MAX_ZONEORDER=11
+CONFIG_LEDS=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
+
+#
+# Boot options
+#
+CONFIG_USE_OF=y
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_ARM_APPENDED_DTB=y
+# CONFIG_ARM_ATAG_DTB_COMPAT is not set
+CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_EXTEND is not set
+# CONFIG_CMDLINE_FORCE is not set
+# CONFIG_XIP_KERNEL is not set
+CONFIG_ATAGS_PROC=y
+CONFIG_AUTO_ZRELADDR=y
+
+#
+# CPU Power Management
+#
+# CONFIG_CPU_IDLE is not set
+
+#
+# At least one emulation must be selected
+#
+CONFIG_VFP=y
+
+#
+# Power management options
+#
+CONFIG_APM_EMULATION=y
+CONFIG_PM_CLK=y
+CONFIG_CPU_PM=y
+CONFIG_ARM_CPU_SUSPEND=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_RFKILL_GPIO is not set
+
+#
+# Generic Driver Options
+#
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_DTC=y
+CONFIG_OF=y
+
+#
+# Device Tree and Open Firmware support
+#
+CONFIG_PROC_DEVICETREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_DEVICE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_I2C=m
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_PCI=y
+CONFIG_OF_PCI_IRQ=y
+# CONFIG_MG_DISK is not set
+# CONFIG_SENSORS_LIS3LV02D is not set
+# CONFIG_ATMEL_PWM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_ARM_CHARLCD is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_ACARD is not set
+CONFIG_SCSI_NSP32=m
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_ATM_HE is not set
+
+#
+# CAIF transport drivers
+#
+CONFIG_DM9000=m
+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
+CONFIG_NET_VENDOR_FARADAY=y
+# CONFIG_FTMAC100 is not set
+# CONFIG_FTGMAC100 is not set
+# CONFIG_MLX4_EN is not set
+# CONFIG_MLX4_CORE is not set
+CONFIG_AX88796=m
+CONFIG_AX88796_93CX6=y
+CONFIG_SMC91X=m
+CONFIG_SMC911X=m
+CONFIG_SMSC911X=m
+# CONFIG_SMSC911X_ARCH_HOOKS is not set
+# CONFIG_SUNGEM is not set
+
+#
+# ISDN feature submodules
+#
+# CONFIG_ISDN_DRV_LOOP is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO_AMBAKMI=m
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250_DW is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_OF_PLATFORM=m
+# CONFIG_HVC_DCC is not set
+CONFIG_VIRTIO_CONSOLE=m
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+CONFIG_I2C_VERSATILE=m
+
+#
+# Memory mapped GPIO drivers:
+#
+# CONFIG_GPIO_PL061 is not set
+
+#
+# 1-wire Slaves
+#
+# CONFIG_APM_POWER is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_ARM_SP805_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+
+#
+# Customize TV tuners
+#
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
+
+#
+# Miscelaneous helper chips
+#
+CONFIG_VIDEO_CAFE_CCIC=m
+# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
+# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+
+#
+# Graphics support
+#
+# CONFIG_DRM_RADEON is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=m
+CONFIG_FB_CFB_COPYAREA=m
+CONFIG_FB_CFB_IMAGEBLIT=m
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+CONFIG_FB_SYS_FOPS=m
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_ARMCLCD=m
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_SAVAGE is not set
+
+#
+# Console display driver support
+#
+# CONFIG_SND_ALI5451 is not set
+CONFIG_SND_ARM=y
+CONFIG_SND_ARMAACI=m
+CONFIG_SND_SOC=m
+# CONFIG_SND_SOC_CACHE_LZO is not set
+CONFIG_SND_SOC_I2C_AND_SPI=m
+# CONFIG_SND_SOC_ALL_CODECS is not set
+
+#
+# OTG and related infrastructure
+#
+# CONFIG_USB_ULPI is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_ARMMMCI=m
+CONFIG_MMC_SDHCI_PXAV3=m
+CONFIG_MMC_SDHCI_PXAV2=m
+CONFIG_MMC_DW=m
+# CONFIG_MMC_DW_IDMAC is not set
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_RENESAS_TPU is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_PL030=m
+CONFIG_RTC_DRV_PL031=m
+
+#
+# DMA Devices
+#
+# CONFIG_AMBA_PL08X is not set
+# CONFIG_DW_DMAC is not set
+CONFIG_PL330_DMA=y
+
+#
+# Virtio drivers
+#
+# CONFIG_DRM_NOUVEAU is not set
+
+#
+# Speakup console speech
+#
+CONFIG_CLKDEV_LOOKUP=y
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_CLKSRC_MMIO=y
+
+#
+# Pseudo filesystems
+#
+# CONFIG_HUGETLB_PAGE is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_HARDLOCKUP_DETECTOR is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_FUNCTION_GRAPH_TRACER=y
+CONFIG_ARM_UNWIND=y
+CONFIG_OLD_MCOUNT=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_OC_ETM is not set
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_PAX_MEMORY_SANITIZE=y
+CONFIG_LSM_MMAP_MIN_ADDR=32768
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+
+#
+# Library routines
+#
+CONFIG_AUDIT_GENERIC=y
+CONFIG_GENERIC_ATOMIC64=y
diff --git a/kernel/config-armv5tel-kirkwood b/kernel/config-armv5tel-kirkwood
new file mode 100644 (file)
index 0000000..38a8f21
--- /dev/null
@@ -0,0 +1,130 @@
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_CHIP=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_VERSATILE is not set
+CONFIG_ARCH_KIRKWOOD=y
+
+#
+# Marvell Kirkwood Implementations
+#
+CONFIG_MACH_DB88F6281_BP=y
+CONFIG_MACH_RD88F6192_NAS=y
+CONFIG_MACH_RD88F6281=y
+CONFIG_MACH_MV88F6281GTW_GE=y
+CONFIG_MACH_SHEEVAPLUG=y
+CONFIG_MACH_ESATA_SHEEVAPLUG=y
+CONFIG_MACH_GURUPLUG=y
+CONFIG_MACH_TS219=y
+CONFIG_MACH_TS41X=y
+CONFIG_MACH_DOCKSTAR=y
+CONFIG_MACH_OPENRD=y
+CONFIG_MACH_OPENRD_BASE=y
+CONFIG_MACH_OPENRD_CLIENT=y
+CONFIG_MACH_OPENRD_ULTIMATE=y
+CONFIG_MACH_NETSPACE_V2=y
+CONFIG_MACH_INETSPACE_V2=y
+CONFIG_MACH_NETSPACE_MAX_V2=y
+CONFIG_MACH_D2NET_V2=y
+CONFIG_MACH_NET2BIG_V2=y
+CONFIG_MACH_NET5BIG_V2=y
+CONFIG_MACH_T5325=y
+
+#
+# System MMU
+#
+CONFIG_PLAT_ORION=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_FEROCEON=y
+# CONFIG_CPU_FEROCEON_OLD_ID is not set
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_COPY_FEROCEON=y
+CONFIG_CPU_TLB_FEROCEON=y
+
+#
+# Processor Features
+#
+CONFIG_OUTER_CACHE=y
+CONFIG_CACHE_FEROCEON_L2=y
+CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH=y
+
+#
+# Power management options
+#
+# CONFIG_ARM_CPU_SUSPEND is not set
+
+#
+# CAIF transport drivers
+#
+CONFIG_MV643XX_ETH=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_MV64XXX=m
+
+#
+# Enable Device Drivers -> PPS to see the PTP clock options.
+#
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIO_GENERIC=y
+
+#
+# Memory mapped GPIO drivers:
+#
+CONFIG_GPIO_GENERIC_PLATFORM=y
+
+#
+# SPI GPIO expanders:
+#
+CONFIG_GPIO_MCP23S08=m
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_ORION_WATCHDOG=m
+
+#
+# Console display driver support
+#
+CONFIG_SND_KIRKWOOD_SOC=m
+CONFIG_SND_KIRKWOOD_SOC_I2S=m
+CONFIG_SND_KIRKWOOD_SOC_OPENRD=m
+CONFIG_SND_KIRKWOOD_SOC_T5325=m
+CONFIG_SND_SOC_ALC5623=m
+CONFIG_SND_SOC_CS42L51=m
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_MVSDIO=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_NS2=m
+CONFIG_LEDS_NETXBIG=m
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_MV=m
+
+#
+# DMA Devices
+#
+CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
+CONFIG_MV_XOR=y
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_DEV_MV_CESA=m
diff --git a/kernel/config-armv7hl-omap b/kernel/config-armv7hl-omap
new file mode 100644 (file)
index 0000000..920644c
--- /dev/null
@@ -0,0 +1,589 @@
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_ARCH_HAS_CPUFREQ=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_CHIP=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
+CONFIG_RCU_FAST_NO_HZ=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+
+#
+# GCOV-based kernel profiling
+#
+CONFIG_STOP_MACHINE=y
+
+#
+# IO Schedulers
+#
+CONFIG_PADATA=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_VERSATILE is not set
+CONFIG_ARCH_OMAP=y
+
+#
+# TI OMAP Common Features
+#
+CONFIG_ARCH_OMAP_OTG=y
+# CONFIG_ARCH_OMAP1 is not set
+CONFIG_ARCH_OMAP2PLUS=y
+
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_SMARTREFLEX=y
+CONFIG_OMAP_SMARTREFLEX_CLASS3=y
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_MCBSP=y
+CONFIG_OMAP_MBOX_FWK=m
+CONFIG_OMAP_MBOX_KFIFO_SIZE=256
+CONFIG_OMAP_32K_TIMER=y
+# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
+CONFIG_OMAP_32K_TIMER_HZ=128
+CONFIG_OMAP_DM_TIMER=y
+CONFIG_OMAP_PM_NOOP=y
+CONFIG_MACH_OMAP_GENERIC=y
+
+#
+# TI OMAP2/3/4 Specific Features
+#
+CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
+# CONFIG_ARCH_OMAP2 is not set
+CONFIG_ARCH_OMAP3=y
+CONFIG_ARCH_OMAP4=y
+CONFIG_SOC_OMAP3430=y
+# CONFIG_SOC_OMAPTI816X is not set
+CONFIG_OMAP_PACKAGE_CBB=y
+CONFIG_OMAP_PACKAGE_CUS=y
+CONFIG_OMAP_PACKAGE_CBP=y
+CONFIG_OMAP_PACKAGE_CBL=y
+CONFIG_OMAP_PACKAGE_CBS=y
+
+#
+# OMAP Board Type
+#
+CONFIG_MACH_OMAP3_BEAGLE=y
+CONFIG_MACH_DEVKIT8000=y
+CONFIG_MACH_OMAP_LDP=y
+CONFIG_MACH_OMAP3530_LV_SOM=y
+CONFIG_MACH_OMAP3_TORPEDO=y
+CONFIG_MACH_OVERO=y
+CONFIG_MACH_OMAP3EVM=y
+CONFIG_MACH_OMAP3517EVM=y
+CONFIG_MACH_CRANEBOARD=y
+CONFIG_MACH_OMAP3_PANDORA=y
+CONFIG_MACH_OMAP3_TOUCHBOOK=y
+CONFIG_MACH_OMAP_3430SDP=y
+CONFIG_MACH_NOKIA_RM680=y
+CONFIG_MACH_NOKIA_RX51=y
+CONFIG_MACH_OMAP_ZOOM2=y
+CONFIG_MACH_OMAP_ZOOM3=y
+CONFIG_MACH_CM_T35=y
+CONFIG_MACH_CM_T3517=y
+CONFIG_MACH_CM_T3730=y
+CONFIG_MACH_IGEP0020=y
+CONFIG_MACH_IGEP0030=y
+CONFIG_MACH_SBC3530=y
+CONFIG_MACH_OMAP_3630SDP=y
+CONFIG_MACH_OMAP_4430SDP=y
+CONFIG_MACH_OMAP4_PANDA=y
+CONFIG_OMAP3_EMU=y
+# CONFIG_OMAP3_SDRC_AC_TIMING is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMBEE=y
+CONFIG_SWP_EMULATE=y
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_CACHE_L2X0=y
+CONFIG_CACHE_PL310=y
+CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_CPU_HAS_PMU=y
+CONFIG_ARM_ERRATA_430973=y
+# CONFIG_ARM_ERRATA_458693 is not set
+# CONFIG_ARM_ERRATA_460075 is not set
+# CONFIG_ARM_ERRATA_742230 is not set
+# CONFIG_ARM_ERRATA_742231 is not set
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_ARM_ERRATA_720789=y
+CONFIG_PL310_ERRATA_727915=y
+# CONFIG_ARM_ERRATA_743622 is not set
+# CONFIG_ARM_ERRATA_751472 is not set
+# CONFIG_PL310_ERRATA_753970 is not set
+# CONFIG_ARM_ERRATA_754322 is not set
+# CONFIG_ARM_ERRATA_754327 is not set
+# CONFIG_ARM_ERRATA_764369 is not set
+CONFIG_PL310_ERRATA_769419=y
+CONFIG_ARM_GIC=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+CONFIG_ARM_CPU_TOPOLOGY=y
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_SMT=y
+CONFIG_NR_CPUS=2
+CONFIG_HOTPLUG_CPU=y
+CONFIG_LOCAL_TIMERS=y
+CONFIG_HZ=128
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
+CONFIG_HW_PERF_EVENTS=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# At least one emulation must be selected
+#
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+
+#
+# Power management options
+#
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_ARCH_HAS_OPP=y
+CONFIG_PM_OPP=y
+
+#
+# Classification
+#
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_XPS=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_RFKILL_REGULATOR is not set
+
+#
+# Generic Driver Options
+#
+CONFIG_MTD=y
+CONFIG_MTD_TESTS=m
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+CONFIG_SM_FTL=m
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_RAM=m
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_DOCG3 is not set
+CONFIG_MTD_NAND_ECC=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_BCH is not set
+# CONFIG_MTD_SM_COMMON is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_OMAP2=y
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+CONFIG_MTD_NAND_PLATFORM=y
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_ONENAND=y
+# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
+# CONFIG_MTD_ONENAND_GENERIC is not set
+CONFIG_MTD_ONENAND_OMAP2=y
+# CONFIG_MTD_ONENAND_OTP is not set
+CONFIG_MTD_ONENAND_2X_PROGRAM=y
+CONFIG_MTD_ONENAND_SIM=m
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+# CONFIG_MTD_UBI is not set
+
+#
+# Device Tree and Open Firmware support
+#
+CONFIG_OF_I2C=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_MG_DISK=m
+CONFIG_MG_DISK_RES=0
+
+#
+# Generic fallback / legacy drivers
+#
+# CONFIG_MULTICORE_RAID456 is not set
+
+#
+# CAIF transport drivers
+#
+# CONFIG_TI_DAVINCI_EMAC is not set
+# CONFIG_TI_DAVINCI_MDIO is not set
+# CONFIG_TI_DAVINCI_CPDMA is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT_FF_MEMLESS=y
+
+#
+# Input Device Drivers
+#
+# CONFIG_KEYBOARD_OMAP4 is not set
+CONFIG_KEYBOARD_TWL4030=m
+CONFIG_MOUSE_GPIO=m
+CONFIG_INPUT_TWL4030_PWRBUTTON=y
+CONFIG_INPUT_TWL4030_VIBRA=y
+CONFIG_INPUT_TWL6040_VIBRA=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_AMBA_PL010 is not set
+CONFIG_SERIAL_OMAP=y
+CONFIG_SERIAL_OMAP_CONSOLE=y
+CONFIG_I2C=y
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_OMAP=y
+
+#
+# Enable Device Drivers -> PPS to see the PTP clock options.
+#
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_SX150X is not set
+CONFIG_GPIO_TWL4030=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_HDQ_MASTER_OMAP is not set
+
+#
+# 1-wire Slaves
+#
+# CONFIG_CHARGER_TWL4030 is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_MPCORE_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=y
+# CONFIG_TWL4030_WATCHDOG is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+CONFIG_TWL4030_CORE=y
+# CONFIG_TWL4030_MADC is not set
+CONFIG_TWL4030_POWER=y
+CONFIG_MFD_TWL4030_AUDIO=y
+# CONFIG_TWL6030_PWM is not set
+CONFIG_TWL6040_CORE=y
+# CONFIG_MFD_STMPE is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+CONFIG_MFD_OMAP_USB_HOST=y
+# CONFIG_MFD_AAT2870_CORE is not set
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+# CONFIG_REGULATOR_DUMMY is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+CONFIG_REGULATOR_GPIO=y
+# CONFIG_REGULATOR_BQ24022 is not set
+# CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+# CONFIG_REGULATOR_MAX8952 is not set
+CONFIG_REGULATOR_TWL4030=y
+# CONFIG_REGULATOR_WM8400 is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+# CONFIG_REGULATOR_AD5398 is not set
+
+#
+# Miscelaneous helper chips
+#
+# CONFIG_VIDEO_VPFE_CAPTURE is not set
+CONFIG_VIDEO_OMAP2_VOUT_VRFB=y
+CONFIG_VIDEO_OMAP2_VOUT=m
+
+#
+# Texas Instruments WL128x FM driver (ST based)
+#
+# CONFIG_TTPCI_EEPROM is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_BACKLIGHT is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_OMAP2_VRAM=y
+CONFIG_OMAP2_VRFB=y
+CONFIG_OMAP2_DSS=y
+CONFIG_OMAP2_VRAM_SIZE=12
+CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
+# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
+CONFIG_OMAP2_DSS_DPI=y
+# CONFIG_OMAP2_DSS_RFBI is not set
+CONFIG_OMAP2_DSS_VENC=y
+CONFIG_OMAP4_DSS_HDMI=y
+# CONFIG_OMAP2_DSS_SDI is not set
+# CONFIG_OMAP2_DSS_DSI is not set
+# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=1
+CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
+CONFIG_FB_OMAP2=y
+CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
+CONFIG_FB_OMAP2_NUM_FBS=3
+
+#
+# OMAP2/3 Display Device Drivers
+#
+CONFIG_PANEL_GENERIC_DPI=y
+# CONFIG_PANEL_DVI is not set
+CONFIG_PANEL_SHARP_LS037V7DW01=y
+# CONFIG_PANEL_PICODLP is not set
+# CONFIG_LCD_PLATFORM is not set
+
+#
+# Console display driver support
+#
+# CONFIG_SND_OPL3_LIB_SEQ is not set
+# CONFIG_SND_EMU10K1_SEQ is not set
+# CONFIG_SND_OMAP_SOC is not set
+
+#
+# Special HID drivers
+#
+# CONFIG_USB_ARCH_HAS_XHCI is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD_OMAP=y
+CONFIG_USB_OHCI_HCD_OMAP3=y
+
+#
+# OTG and related infrastructure
+#
+CONFIG_USB_GPIO_VBUS=y
+# CONFIG_ISP1301_OMAP is not set
+CONFIG_TWL4030_USB=y
+CONFIG_TWL6030_USB=y
+CONFIG_MMC=y
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_OMAP=y
+CONFIG_MMC_OMAP_HS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_REGULATOR is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_TWL4030 is not set
+
+#
+# Virtio drivers
+#
+# CONFIG_TIDSPBRIDGE is not set
+
+#
+# Speakup console speech
+#
+CONFIG_HWSPINLOCK=m
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_HWSPINLOCK_OMAP=m
+# CONFIG_OMAP_IOMMU is not set
+
+#
+# Pseudo filesystems
+#
+# CONFIG_JFFS2_FS is not set
+
+#
+# Kernel hacking
+#
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
+CONFIG_OC_ETM=y
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_PAX_REFCOUNT=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_PCRYPT=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_DEV_OMAP_SHAM=m
+CONFIG_CRYPTO_DEV_OMAP_AES=m
+
+#
+# Library routines
+#
+CONFIG_CPU_RMAP=y
similarity index 80%
rename from kernel/config.i686-legacy
rename to kernel/config-generic
index 0cb854c3119ed7c1fca5725eecd3a36e25612ed4..b918e5c1c7da081539c7ae52cadf9ca918afa700 100644 (file)
@@ -1,56 +1,17 @@
 #
 #
-# Automatically generated file; DO NOT EDIT.
-# Linux/i386 3.1.1-1.ip3.i686 Kernel Configuration
-#
-# CONFIG_64BIT is not set
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86=y
-CONFIG_INSTRUCTION_DECODER=y
-CONFIG_OUTPUT_FORMAT="elf32-i386"
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
+#
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_MMU=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_SG_DMA_LENGTH=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
 CONFIG_GENERIC_BUG=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_GPIO=y
 CONFIG_GENERIC_BUG=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_GPIO=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_HAVE_SETUP_PER_CPU_AREA=y
-CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
-CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
-# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
-CONFIG_HAVE_INTEL_TXT=y
-CONFIG_X86_32_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
-CONFIG_KTIME_SCALAR=y
-CONFIG_ARCH_CPU_PROBE_RELEASE=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_HAVE_IRQ_WORK=y
 CONFIG_IRQ_WORK=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_HAVE_IRQ_WORK=y
 CONFIG_IRQ_WORK=y
@@ -64,14 +25,9 @@ CONFIG_CROSS_COMPILE=""
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_BZIP2=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
 CONFIG_HAVE_KERNEL_LZO=y
-# CONFIG_KERNEL_GZIP is not set
-# CONFIG_KERNEL_BZIP2 is not set
 # CONFIG_KERNEL_LZMA is not set
 # CONFIG_KERNEL_LZMA is not set
-CONFIG_KERNEL_XZ=y
 # CONFIG_KERNEL_LZO is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
 # CONFIG_KERNEL_LZO is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
@@ -87,9 +43,6 @@ CONFIG_TASK_DELAY_ACCT=y
 CONFIG_TASK_XACCT=y
 CONFIG_TASK_IO_ACCOUNTING=y
 CONFIG_AUDIT=y
 CONFIG_TASK_XACCT=y
 CONFIG_TASK_IO_ACCOUNTING=y
 CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_WATCH=y
-CONFIG_AUDIT_TREE=y
 CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
@@ -99,23 +52,16 @@ CONFIG_GENERIC_HARDIRQS=y
 CONFIG_HAVE_SPARSE_IRQ=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_HAVE_SPARSE_IRQ=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_IRQ_FORCED_THREADING=y
-# CONFIG_SPARSE_IRQ is not set
+CONFIG_SPARSE_IRQ=y
 
 #
 # RCU Subsystem
 #
 
 #
 # RCU Subsystem
 #
-CONFIG_TREE_RCU=y
 # CONFIG_PREEMPT_RCU is not set
 # CONFIG_RCU_TRACE is not set
 # CONFIG_PREEMPT_RCU is not set
 # CONFIG_RCU_TRACE is not set
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
 # CONFIG_TREE_RCU_TRACE is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=18
 # CONFIG_TREE_RCU_TRACE is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=18
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
 CONFIG_CGROUPS=y
 # CONFIG_CGROUP_DEBUG is not set
 CONFIG_CGROUP_FREEZER=y
 CONFIG_CGROUPS=y
 # CONFIG_CGROUP_DEBUG is not set
 CONFIG_CGROUP_FREEZER=y
@@ -130,6 +76,7 @@ CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
 CONFIG_CGROUP_PERF=y
 CONFIG_CGROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
 CONFIG_CGROUP_PERF=y
 CONFIG_CGROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_CFS_BANDWIDTH is not set
 CONFIG_RT_GROUP_SCHED=y
 CONFIG_BLK_CGROUP=y
 # CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_RT_GROUP_SCHED=y
 CONFIG_BLK_CGROUP=y
 # CONFIG_DEBUG_BLK_CGROUP is not set
@@ -155,15 +102,13 @@ CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 # CONFIG_EXPERT is not set
 CONFIG_UID16=y
 CONFIG_ANON_INODES=y
 # CONFIG_EXPERT is not set
 CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
 CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
 CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-CONFIG_PCSPKR_PLATFORM=y
-CONFIG_HAVE_PCSPKR_PLATFORM=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
@@ -191,30 +136,15 @@ CONFIG_SLUB=y
 CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
 # CONFIG_KPROBES is not set
 CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
 # CONFIG_KPROBES is not set
-CONFIG_JUMP_LABEL=y
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_USER_RETURN_NOTIFIER=y
-CONFIG_HAVE_IOREMAP_PROT=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_OPTPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_DMA_API_DEBUG=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
-CONFIG_HAVE_USER_RETURN_NOTIFIER=y
-CONFIG_HAVE_PERF_EVENTS_NMI=y
-CONFIG_HAVE_ARCH_JUMP_LABEL=y
-CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
 
 #
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
 
 #
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
 CONFIG_BASE_SMALL=0
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
 CONFIG_BASE_SMALL=0
@@ -224,9 +154,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
 # CONFIG_MODVERSIONS is not set
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
 # CONFIG_MODVERSIONS is not set
 CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_BLOCK=y
-CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_BLK_DEV_INTEGRITY=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_BLK_DEV_INTEGRITY=y
@@ -243,8 +171,6 @@ CONFIG_CFQ_GROUP_IOSCHED=y
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_PREEMPT_NOTIFIERS=y
-CONFIG_PADATA=y
 # CONFIG_INLINE_SPIN_TRYLOCK is not set
 # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
 # CONFIG_INLINE_SPIN_LOCK is not set
 # CONFIG_INLINE_SPIN_TRYLOCK is not set
 # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
 # CONFIG_INLINE_SPIN_LOCK is not set
@@ -273,7 +199,6 @@ CONFIG_INLINE_WRITE_UNLOCK=y
 # CONFIG_INLINE_WRITE_UNLOCK_BH is not set
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
 # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
 # CONFIG_INLINE_WRITE_UNLOCK_BH is not set
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
 # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_FREEZER=y
 
 #
 CONFIG_FREEZER=y
 
 #
@@ -283,310 +208,59 @@ CONFIG_TICK_ONESHOT=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-CONFIG_X86_MPPARSE=y
-CONFIG_X86_BIGSMP=y
-CONFIG_X86_EXTENDED_PLATFORM=y
-# CONFIG_X86_INTEL_MID is not set
-# CONFIG_X86_RDC321X is not set
-# CONFIG_X86_32_NON_STANDARD is not set
-CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
-# CONFIG_X86_32_IRIS is not set
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-CONFIG_PARAVIRT_GUEST=y
-CONFIG_PARAVIRT_TIME_ACCOUNTING=y
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
-CONFIG_KVM_CLOCK=y
-CONFIG_KVM_GUEST=y
-# CONFIG_LGUEST_GUEST is not set
-CONFIG_PARAVIRT=y
-# CONFIG_PARAVIRT_SPINLOCKS is not set
-CONFIG_PARAVIRT_CLOCK=y
-# CONFIG_PARAVIRT_DEBUG is not set
-CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-CONFIG_M686=y
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MELAN is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MATOM is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_INTERNODE_CACHE_SHIFT=6
-CONFIG_X86_CMPXCHG=y
-CONFIG_CMPXCHG_LOCAL=y
-CONFIG_CMPXCHG_DOUBLE=y
-CONFIG_X86_L1_CACHE_SHIFT=6
-CONFIG_X86_XADD=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_ALIGNMENT_16=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=5
-CONFIG_X86_DEBUGCTLMSR=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_CYRIX_32=y
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR=y
-CONFIG_CPU_SUP_TRANSMETA_32=y
-CONFIG_CPU_SUP_UMC_32=y
-CONFIG_HPET_TIMER=y
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_DMI=y
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_NR_CPUS=256
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_IRQ_TIME_ACCOUNTING=y
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_INTEL=y
-CONFIG_X86_MCE_AMD=y
-# CONFIG_X86_ANCIENT_MCE is not set
-CONFIG_X86_MCE_THRESHOLD=y
-# CONFIG_X86_MCE_INJECT is not set
-CONFIG_X86_THERMAL_VECTOR=y
-CONFIG_VM86=y
-CONFIG_TOSHIBA=m
-CONFIG_I8K=m
-# CONFIG_X86_REBOOTFIXUPS is not set
-CONFIG_MICROCODE=m
-CONFIG_MICROCODE_INTEL=y
-CONFIG_MICROCODE_AMD=y
-CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=y
-CONFIG_X86_CPUID=y
-# CONFIG_NOHIGHMEM is not set
-CONFIG_HIGHMEM4G=y
-# CONFIG_HIGHMEM64G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_HIGHMEM=y
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
 CONFIG_HAVE_MEMBLOCK=y
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_HAVE_MEMBLOCK=y
 CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
 CONFIG_BOUNCE=y
 CONFIG_VIRT_TO_BUS=y
 CONFIG_BOUNCE=y
 CONFIG_VIRT_TO_BUS=y
-CONFIG_MMU_NOTIFIER=y
 CONFIG_KSM=y
 CONFIG_KSM=y
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
-CONFIG_MEMORY_FAILURE=y
-# CONFIG_HWPOISON_INJECT is not set
-CONFIG_TRANSPARENT_HUGEPAGE=y
-CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
-# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
 CONFIG_CLEANCACHE=y
 CONFIG_CLEANCACHE=y
-CONFIG_HIGHPTE=y
-# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
-CONFIG_X86_RESERVE_LOW=64
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-CONFIG_MTRR_SANITIZER=y
-CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
-CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
-CONFIG_X86_PAT=y
-CONFIG_ARCH_USES_PG_UNCACHED=y
-CONFIG_EFI=y
 CONFIG_SECCOMP=y
 CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-CONFIG_HZ_300=y
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=300
-CONFIG_SCHED_HRTICK=y
+CONFIG_CC_STACKPROTECTOR=y
 CONFIG_KEXEC=y
 CONFIG_CRASH_DUMP=y
 CONFIG_KEXEC=y
 CONFIG_CRASH_DUMP=y
-# CONFIG_KEXEC_JUMP is not set
-CONFIG_PHYSICAL_START=0x400000
-CONFIG_RELOCATABLE=y
-CONFIG_X86_NEED_RELOCS=y
-CONFIG_PHYSICAL_ALIGN=0x400000
-CONFIG_HOTPLUG_CPU=y
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 
 #
 # Power management and ACPI options
 #
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
 
 #
 # Power management and ACPI options
 #
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
-CONFIG_HIBERNATE_CALLBACKS=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION=""
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP=y
-CONFIG_PM_SLEEP_SMP=y
 CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_EC_DEBUGFS=m
-# CONFIG_ACPI_PROC_EVENT is not set
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_FAN=y
-CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_IPMI=m
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=1999
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=y
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-CONFIG_ACPI_SBS=m
-CONFIG_ACPI_HED=y
-CONFIG_ACPI_CUSTOM_METHOD=m
-CONFIG_ACPI_APEI=y
-CONFIG_ACPI_APEI_GHES=y
-CONFIG_ACPI_APEI_PCIEAER=y
-CONFIG_ACPI_APEI_MEMORY_FAILURE=y
-# CONFIG_ACPI_APEI_EINJ is not set
-# CONFIG_ACPI_APEI_ERST_DEBUG is not set
-CONFIG_SFI=y
-CONFIG_X86_APM_BOOT=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-# CONFIG_APM_DO_ENABLE is not set
-CONFIG_APM_CPU_IDLE=y
-# CONFIG_APM_DISPLAY_BLANK is not set
-# CONFIG_APM_ALLOW_INTS is not set
 
 #
 # CPU Frequency scaling
 #
 
 #
 # CPU Frequency scaling
 #
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=m
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
 
 #
 # x86 CPU frequency scaling drivers
 #
 
 #
 # x86 CPU frequency scaling drivers
 #
-CONFIG_X86_PCC_CPUFREQ=m
-CONFIG_X86_ACPI_CPUFREQ=m
-# CONFIG_X86_POWERNOW_K6 is not set
-CONFIG_X86_POWERNOW_K7=y
-CONFIG_X86_POWERNOW_K7_ACPI=y
-CONFIG_X86_POWERNOW_K8=m
-# CONFIG_X86_GX_SUSPMOD is not set
-# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
-CONFIG_X86_SPEEDSTEP_ICH=y
-CONFIG_X86_SPEEDSTEP_SMI=y
-CONFIG_X86_P4_CLOCKMOD=m
-# CONFIG_X86_CPUFREQ_NFORCE2 is not set
-CONFIG_X86_LONGRUN=y
-# CONFIG_X86_LONGHAUL is not set
-# CONFIG_X86_E_POWERSAVER is not set
 
 #
 # shared options
 #
 
 #
 # shared options
 #
-CONFIG_X86_SPEEDSTEP_LIB=y
-# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-CONFIG_INTEL_IDLE=y
+
+#
+# Memory power savings
+#
 
 #
 # Bus options (PCI etc.)
 #
 CONFIG_PCI=y
 
 #
 # Bus options (PCI etc.)
 #
 CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCI_CNB20LE_QUIRK is not set
-CONFIG_PCIEPORTBUS=y
-CONFIG_HOTPLUG_PCI_PCIE=y
-CONFIG_PCIEAER=y
-CONFIG_PCIE_ECRC=y
-CONFIG_PCIEAER_INJECT=m
-CONFIG_PCIEASPM=y
-# CONFIG_PCIEASPM_DEBUG is not set
-CONFIG_PCIE_PME=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
 CONFIG_PCI_STUB=y
 # CONFIG_PCI_DEBUG is not set
 CONFIG_PCI_STUB=y
-CONFIG_HT_IRQ=y
+CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 CONFIG_PCI_IOV=y
-CONFIG_PCI_IOAPIC=y
-CONFIG_PCI_LABEL=y
-CONFIG_ISA_DMA_API=y
-# CONFIG_ISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-# CONFIG_OLPC is not set
-CONFIG_AMD_NB=y
+# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PASID is not set
 CONFIG_PCCARD=m
 # CONFIG_PCMCIA is not set
 CONFIG_CARDBUS=y
 CONFIG_PCCARD=m
 # CONFIG_PCMCIA is not set
 CONFIG_CARDBUS=y
@@ -600,26 +274,13 @@ CONFIG_YENTA_RICOH=y
 CONFIG_YENTA_TI=y
 CONFIG_YENTA_ENE_TUNE=y
 CONFIG_YENTA_TOSHIBA=y
 CONFIG_YENTA_TI=y
 CONFIG_YENTA_ENE_TUNE=y
 CONFIG_YENTA_TOSHIBA=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_FAKE=m
-CONFIG_HOTPLUG_PCI_COMPAQ=m
-# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-CONFIG_HOTPLUG_PCI_IBM=m
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
-# CONFIG_RAPIDIO is not set
 
 #
 # Executable file formats / Emulations
 #
 CONFIG_BINFMT_ELF=y
 CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
 
 #
 # Executable file formats / Emulations
 #
 CONFIG_BINFMT_ELF=y
 CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_HAVE_AOUT=y
 CONFIG_BINFMT_MISC=y
 CONFIG_BINFMT_MISC=y
-CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_HAVE_TEXT_POKE_SMP=y
 CONFIG_NET=y
 
 #
 CONFIG_NET=y
 
 #
@@ -1062,9 +723,6 @@ CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 # CONFIG_BATMAN_ADV is not set
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 # CONFIG_BATMAN_ADV is not set
-CONFIG_RPS=y
-CONFIG_RFS_ACCEL=y
-CONFIG_XPS=y
 
 #
 # Network testing
 
 #
 # Network testing
@@ -1161,7 +819,8 @@ CONFIG_FW_LOADER=y
 CONFIG_EXTRA_FIRMWARE=""
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 CONFIG_EXTRA_FIRMWARE=""
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 # CONFIG_MTD is not set
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 # CONFIG_MTD is not set
@@ -1174,15 +833,11 @@ CONFIG_PARPORT_SERIAL=m
 # CONFIG_PARPORT_AX88796 is not set
 CONFIG_PARPORT_1284=y
 CONFIG_PARPORT_NOT_PC=y
 # CONFIG_PARPORT_AX88796 is not set
 CONFIG_PARPORT_1284=y
 CONFIG_PARPORT_NOT_PC=y
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG_MESSAGES is not set
 
 #
 # Protocols
 #
 
 #
 # Protocols
 #
-CONFIG_PNPACPI=y
 CONFIG_BLK_DEV=y
 CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=m
 # CONFIG_PARIDE is not set
 CONFIG_BLK_CPQ_DA=m
 CONFIG_BLK_CPQ_CISS_DA=m
 # CONFIG_PARIDE is not set
 CONFIG_BLK_CPQ_DA=m
 CONFIG_BLK_CPQ_CISS_DA=m
@@ -1205,20 +860,15 @@ CONFIG_BLK_DEV_RAM_SIZE=16384
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
 CONFIG_VIRTIO_BLK=m
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
 CONFIG_VIRTIO_BLK=m
-# CONFIG_BLK_DEV_HD is not set
 # CONFIG_BLK_DEV_RBD is not set
 # CONFIG_BLK_DEV_RBD is not set
-CONFIG_SENSORS_LIS3LV02D=m
 CONFIG_MISC_DEVICES=y
 # CONFIG_AD525X_DPOT is not set
 CONFIG_MISC_DEVICES=y
 # CONFIG_AD525X_DPOT is not set
-# CONFIG_IBM_ASM is not set
 # CONFIG_PHANTOM is not set
 # CONFIG_INTEL_MID_PTI is not set
 # CONFIG_PHANTOM is not set
 # CONFIG_INTEL_MID_PTI is not set
-# CONFIG_SGI_IOC4 is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
 CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
 CONFIG_ENCLOSURE_SERVICES=m
-# CONFIG_CS5535_MFGPT is not set
 CONFIG_HP_ILO=m
 # CONFIG_APDS9802ALS is not set
 # CONFIG_ISL29003 is not set
 CONFIG_HP_ILO=m
 # CONFIG_APDS9802ALS is not set
 # CONFIG_ISL29003 is not set
@@ -1229,7 +879,6 @@ CONFIG_HP_ILO=m
 # CONFIG_SENSORS_APDS990X is not set
 # CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
 # CONFIG_SENSORS_APDS990X is not set
 # CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
-CONFIG_VMWARE_BALLOON=m
 # CONFIG_BMP085 is not set
 CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
 # CONFIG_BMP085 is not set
 CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
@@ -1252,6 +901,11 @@ CONFIG_CB710_DEBUG_ASSUMPTIONS=y
 #
 CONFIG_TI_ST=m
 # CONFIG_SENSORS_LIS3_I2C is not set
 #
 CONFIG_TI_ST=m
 # CONFIG_SENSORS_LIS3_I2C is not set
+
+#
+# Altera FPGA firmware download module
+#
+# CONFIG_ALTERA_STAPL is not set
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1308,7 +962,6 @@ CONFIG_BLK_DEV_3W_XXXX_RAID=m
 CONFIG_SCSI_HPSA=m
 CONFIG_SCSI_3W_9XXX=m
 CONFIG_SCSI_3W_SAS=m
 CONFIG_SCSI_HPSA=m
 CONFIG_SCSI_3W_9XXX=m
 CONFIG_SCSI_3W_SAS=m
-CONFIG_SCSI_ACARD=m
 CONFIG_SCSI_AACRAID=m
 CONFIG_SCSI_AIC7XXX=m
 CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
 CONFIG_SCSI_AACRAID=m
 CONFIG_SCSI_AIC7XXX=m
 CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
@@ -1328,10 +981,10 @@ CONFIG_SCSI_AIC94XX=m
 CONFIG_SCSI_MVSAS=m
 # CONFIG_SCSI_MVSAS_DEBUG is not set
 CONFIG_SCSI_MVSAS_TASKLET=y
 CONFIG_SCSI_MVSAS=m
 # CONFIG_SCSI_MVSAS_DEBUG is not set
 CONFIG_SCSI_MVSAS_TASKLET=y
+# CONFIG_SCSI_MVUMI is not set
 CONFIG_SCSI_DPT_I2O=m
 CONFIG_SCSI_ADVANSYS=m
 CONFIG_SCSI_ARCMSR=m
 CONFIG_SCSI_DPT_I2O=m
 CONFIG_SCSI_ADVANSYS=m
 CONFIG_SCSI_ARCMSR=m
-# CONFIG_SCSI_ARCMSR_AER is not set
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -1341,21 +994,11 @@ CONFIG_SCSI_MPT2SAS=m
 CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 # CONFIG_SCSI_MPT2SAS_LOGGING is not set
 CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 # CONFIG_SCSI_MPT2SAS_LOGGING is not set
 CONFIG_SCSI_HPTIOP=m
-CONFIG_SCSI_BUSLOGIC=m
-CONFIG_SCSI_FLASHPOINT=y
-CONFIG_VMWARE_PVSCSI=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
 CONFIG_FCOE=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
 CONFIG_FCOE=m
-CONFIG_FCOE_FNIC=m
 CONFIG_SCSI_DMX3191D=m
 CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_EATA=m
-CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
-CONFIG_SCSI_EATA_MAX_TAGS=16
 CONFIG_SCSI_FUTURE_DOMAIN=m
 CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_GDTH=m
-CONFIG_SCSI_ISCI=m
 CONFIG_SCSI_IPS=m
 CONFIG_SCSI_INITIO=m
 CONFIG_SCSI_INIA100=m
 CONFIG_SCSI_IPS=m
 CONFIG_SCSI_INITIO=m
 CONFIG_SCSI_INIA100=m
@@ -1379,7 +1022,6 @@ CONFIG_SCSI_LPFC=m
 # CONFIG_SCSI_LPFC_DEBUG_FS is not set
 CONFIG_SCSI_DC395x=m
 CONFIG_SCSI_DC390T=m
 # CONFIG_SCSI_LPFC_DEBUG_FS is not set
 CONFIG_SCSI_DC395x=m
 CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_NSP32=m
 # CONFIG_SCSI_DEBUG is not set
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
 # CONFIG_SCSI_DEBUG is not set
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
@@ -1397,7 +1039,6 @@ CONFIG_SCSI_OSD_DPRINT_SENSE=1
 CONFIG_ATA=y
 # CONFIG_ATA_NONSTANDARD is not set
 CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_ATA=y
 # CONFIG_ATA_NONSTANDARD is not set
 CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_ATA_ACPI=y
 CONFIG_SATA_PMP=y
 
 #
 CONFIG_SATA_PMP=y
 
 #
@@ -1444,7 +1085,6 @@ CONFIG_PATA_ATP867X=m
 CONFIG_PATA_CMD64X=m
 CONFIG_PATA_CS5520=m
 CONFIG_PATA_CS5530=m
 CONFIG_PATA_CMD64X=m
 CONFIG_PATA_CS5520=m
 CONFIG_PATA_CS5530=m
-CONFIG_PATA_CS5535=m
 CONFIG_PATA_CS5536=m
 CONFIG_PATA_CYPRESS=m
 CONFIG_PATA_EFAR=m
 CONFIG_PATA_CS5536=m
 CONFIG_PATA_CYPRESS=m
 CONFIG_PATA_EFAR=m
@@ -1488,7 +1128,6 @@ CONFIG_PATA_RZ1000=m
 #
 # Generic fallback / legacy drivers
 #
 #
 # Generic fallback / legacy drivers
 #
-CONFIG_PATA_ACPI=m
 CONFIG_ATA_GENERIC=m
 # CONFIG_PATA_LEGACY is not set
 CONFIG_MD=y
 CONFIG_ATA_GENERIC=m
 # CONFIG_PATA_LEGACY is not set
 CONFIG_MD=y
@@ -1499,13 +1138,13 @@ CONFIG_MD_RAID0=m
 CONFIG_MD_RAID1=m
 CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
 CONFIG_MD_RAID1=m
 CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
-# CONFIG_MULTICORE_RAID456 is not set
 CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
 CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
+# CONFIG_DM_THIN_PROVISIONING is not set
 CONFIG_DM_MIRROR=y
 CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
 CONFIG_DM_MIRROR=y
 CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
@@ -1543,50 +1182,89 @@ CONFIG_I2O_BUS=m
 CONFIG_I2O_BLOCK=m
 CONFIG_I2O_SCSI=m
 CONFIG_I2O_PROC=m
 CONFIG_I2O_BLOCK=m
 CONFIG_I2O_SCSI=m
 CONFIG_I2O_PROC=m
-# CONFIG_MACINTOSH_DRIVERS is not set
 CONFIG_NETDEVICES=y
 CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
+CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_BONDING=m
+CONFIG_DUMMY=m
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_FC is not set
+CONFIG_MII=m
+CONFIG_IFB=m
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
-# CONFIG_EQUALIZER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_TRAP=y
+CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_TUN=m
 CONFIG_VETH=m
 CONFIG_TUN=m
 CONFIG_VETH=m
-# CONFIG_NET_SB1000 is not set
+CONFIG_VIRTIO_NET=m
 # CONFIG_ARCNET is not set
 # CONFIG_ARCNET is not set
-CONFIG_MII=m
-CONFIG_PHYLIB=y
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+# CONFIG_ATM_ZATM is not set
+CONFIG_ATM_NICSTAR=m
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+# CONFIG_ATM_AMBASSADOR is not set
+# CONFIG_ATM_HORIZON is not set
+# CONFIG_ATM_IA is not set
+# CONFIG_ATM_FORE200E is not set
+CONFIG_ATM_SOLOS=m
 
 #
 
 #
-# MII PHY device drivers
+# CAIF transport drivers
 #
 #
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MICREL_PHY=m
-CONFIG_FIXED_PHY=y
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_CASSINI=m
+CONFIG_ETHERNET=y
+CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
 CONFIG_VORTEX=m
 CONFIG_TYPHOON=m
 CONFIG_NET_VENDOR_3COM=y
 CONFIG_VORTEX=m
 CONFIG_TYPHOON=m
-CONFIG_ETHOC=m
+CONFIG_NET_VENDOR_ADAPTEC=y
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_ALTEON=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_NET_VENDOR_AMD=y
+CONFIG_AMD8111_ETH=m
+CONFIG_PCNET32=m
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_ATL2=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_TIGON3=m
+CONFIG_BNX2X=m
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_BNA=m
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3=m
+CONFIG_CHELSIO_T4=m
+CONFIG_CHELSIO_T4VF=m
+CONFIG_NET_VENDOR_CISCO=y
+CONFIG_ENIC=m
 CONFIG_DNET=m
 CONFIG_DNET=m
+CONFIG_NET_VENDOR_DEC=y
 CONFIG_NET_TULIP=y
 CONFIG_DE2104X=m
 CONFIG_DE2104X_DSL=0
 CONFIG_NET_TULIP=y
 CONFIG_DE2104X=m
 CONFIG_DE2104X_DSL=0
@@ -1600,119 +1278,180 @@ CONFIG_WINBOND_840=m
 CONFIG_DM9102=m
 CONFIG_ULI526X=m
 CONFIG_PCMCIA_XIRCOM=m
 CONFIG_DM9102=m
 CONFIG_ULI526X=m
 CONFIG_PCMCIA_XIRCOM=m
+CONFIG_NET_VENDOR_DLINK=y
+CONFIG_DE600=m
+CONFIG_DE620=m
+CONFIG_DL2K=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_BE2NET=m
+CONFIG_NET_VENDOR_EXAR=y
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_NET_VENDOR_HP=y
 CONFIG_HP100=m
 CONFIG_HP100=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_KSZ884X_PCI=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
+CONFIG_NET_VENDOR_INTEL=y
 CONFIG_E100=m
 CONFIG_E100=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IGB=m
+CONFIG_IGBVF=m
+CONFIG_IXGB=m
+CONFIG_IXGBE=m
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_IP1000=m
+CONFIG_JME=m
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_MICREL=y
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851_MLL is not set
+CONFIG_KSZ884X_PCI=m
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_MYRI10GE=m
 CONFIG_FEALNX=m
 CONFIG_FEALNX=m
+CONFIG_NET_VENDOR_NATSEMI=y
 CONFIG_NATSEMI=m
 CONFIG_NATSEMI=m
+CONFIG_NS83820=m
+CONFIG_NET_VENDOR_8390=y
 CONFIG_NE2K_PCI=m
 CONFIG_NE2K_PCI=m
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_FORCEDETH=m
+CONFIG_NET_VENDOR_OKI=y
+CONFIG_PCH_GBE=m
+CONFIG_ETHOC=m
+# CONFIG_NET_PACKET_ENGINE is not set
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_QLA3XXX=m
+CONFIG_QLCNIC=m
+CONFIG_QLGE=m
+CONFIG_NETXEN_NIC=m
+CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_8139CP=m
 CONFIG_8139TOO=m
 # CONFIG_8139TOO_PIO is not set
 # CONFIG_8139TOO_TUNE_TWISTER is not set
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_8139CP=m
 CONFIG_8139TOO=m
 # CONFIG_8139TOO_PIO is not set
 # CONFIG_8139TOO_TUNE_TWISTER is not set
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R8169=m
+CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_R6040=m
+CONFIG_NET_VENDOR_SEEQ=y
+# CONFIG_SEEQ8005 is not set
+CONFIG_NET_VENDOR_SILAN=y
+CONFIG_SC92031=m
+CONFIG_NET_VENDOR_SIS=y
 CONFIG_SIS900=m
 CONFIG_SIS900=m
+CONFIG_SIS190=m
+CONFIG_SFC=m
+CONFIG_NET_VENDOR_SMSC=y
 CONFIG_EPIC100=m
 CONFIG_SMSC9420=m
 CONFIG_EPIC100=m
 CONFIG_SMSC9420=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-# CONFIG_KS8842 is not set
-# CONFIG_KS8851_MLL is not set
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_ATL2=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000E=m
-CONFIG_IP1000=m
-CONFIG_IGB=m
-CONFIG_IGB_DCA=y
-CONFIG_IGBVF=m
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-# CONFIG_SKGE_DEBUG is not set
-CONFIG_SKGE_GENESIS=y
-CONFIG_SKY2=m
-# CONFIG_SKY2_DEBUG is not set
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_CNIC=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_ATL1E=m
-CONFIG_ATL1C=m
-CONFIG_JME=m
+CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
 CONFIG_STMMAC_ETH=m
+# CONFIG_STMMAC_DEBUG_FS is not set
 # CONFIG_STMMAC_DA is not set
 # CONFIG_STMMAC_DA is not set
-# CONFIG_STMMAC_DUAL_MAC is not set
-CONFIG_PCH_GBE=m
-CONFIG_NETDEV_10000=y
-CONFIG_MDIO=m
-CONFIG_CHELSIO_T1=m
-CONFIG_CHELSIO_T1_1G=y
-CONFIG_CHELSIO_T3=m
-CONFIG_CHELSIO_T4=m
-CONFIG_CHELSIO_T4VF=m
-CONFIG_ENIC=m
-CONFIG_IXGBE=m
-CONFIG_IXGBE_DCA=y
-CONFIG_IXGBEVF=m
-CONFIG_IXGB=m
-CONFIG_S2IO=m
-CONFIG_VXGE=m
-# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
-CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NETXEN_NIC=m
+CONFIG_STMMAC_RING=y
+# CONFIG_STMMAC_CHAINED is not set
+CONFIG_NET_VENDOR_SUN=y
+CONFIG_HAPPYMEAL=m
+CONFIG_CASSINI=m
 CONFIG_NIU=m
 CONFIG_NIU=m
-CONFIG_MLX4_EN=m
-CONFIG_MLX4_CORE=m
-CONFIG_MLX4_DEBUG=y
+CONFIG_NET_VENDOR_TEHUTI=y
 CONFIG_TEHUTI=m
 CONFIG_TEHUTI=m
-CONFIG_BNX2X=m
-CONFIG_QLCNIC=m
-CONFIG_QLGE=m
-CONFIG_BNA=m
-CONFIG_SFC=m
-CONFIG_BE2NET=m
+CONFIG_NET_VENDOR_TI=y
+CONFIG_TLAN=m
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_VELOCITY=m
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_MICREL_PHY=m
+CONFIG_FIXED_PHY=y
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_GPIO is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+CONFIG_PPPOE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
 # CONFIG_TR is not set
 # CONFIG_TR is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_IPHETH=m
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_VL600=m
 CONFIG_WLAN=y
 CONFIG_LIBERTAS_THINFIRM=m
 # CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
 CONFIG_LIBERTAS_THINFIRM_USB=m
 CONFIG_WLAN=y
 CONFIG_LIBERTAS_THINFIRM=m
 # CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
 CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_AIRO=m
 CONFIG_ATMEL=m
 CONFIG_PCI_ATMEL=m
 CONFIG_AT76C50X_USB=m
 CONFIG_ATMEL=m
 CONFIG_PCI_ATMEL=m
 CONFIG_AT76C50X_USB=m
@@ -1744,6 +1483,8 @@ CONFIG_CARL9170=m
 CONFIG_CARL9170_LEDS=y
 # CONFIG_CARL9170_DEBUGFS is not set
 CONFIG_CARL9170_WPC=y
 CONFIG_CARL9170_LEDS=y
 # CONFIG_CARL9170_DEBUGFS is not set
 CONFIG_CARL9170_WPC=y
+# CONFIG_CARL9170_HWRNG is not set
+# CONFIG_ATH6KL is not set
 CONFIG_B43=m
 CONFIG_B43_SSB=y
 CONFIG_B43_PCI_AUTOSELECT=y
 CONFIG_B43=m
 CONFIG_B43_SSB=y
 CONFIG_B43_PCI_AUTOSELECT=y
@@ -1752,6 +1493,7 @@ CONFIG_B43_SDIO=y
 CONFIG_B43_PIO=y
 CONFIG_B43_PHY_N=y
 CONFIG_B43_PHY_LP=y
 CONFIG_B43_PIO=y
 CONFIG_B43_PHY_N=y
 CONFIG_B43_PHY_LP=y
+# CONFIG_B43_PHY_HT is not set
 CONFIG_B43_LEDS=y
 CONFIG_B43_HWRNG=y
 # CONFIG_B43_DEBUG is not set
 CONFIG_B43_LEDS=y
 CONFIG_B43_HWRNG=y
 # CONFIG_B43_DEBUG is not set
@@ -1766,6 +1508,8 @@ CONFIG_B43LEGACY_PIO=y
 CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
 # CONFIG_B43LEGACY_DMA_MODE is not set
 # CONFIG_B43LEGACY_PIO_MODE is not set
 CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
 # CONFIG_B43LEGACY_DMA_MODE is not set
 # CONFIG_B43LEGACY_PIO_MODE is not set
+# CONFIG_BRCMSMAC is not set
+# CONFIG_BRCMFMAC is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 CONFIG_HOSTAP_FIRMWARE_NVRAM=y
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 CONFIG_HOSTAP_FIRMWARE_NVRAM=y
@@ -1782,16 +1526,7 @@ CONFIG_IPW2200_QOS=y
 # CONFIG_IPW2200_DEBUG is not set
 CONFIG_LIBIPW=m
 # CONFIG_LIBIPW_DEBUG is not set
 # CONFIG_IPW2200_DEBUG is not set
 CONFIG_LIBIPW=m
 # CONFIG_LIBIPW_DEBUG is not set
-CONFIG_IWLAGN=m
-
-#
-# Debugging Options
-#
-# CONFIG_IWLWIFI_DEBUG is not set
-CONFIG_IWLWIFI_DEBUGFS=y
-# CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLWIFI_DEVICE_SVTOOL=y
-# CONFIG_IWL_P2P is not set
+# CONFIG_IWLWIFI is not set
 CONFIG_IWLWIFI_LEGACY=m
 
 #
 CONFIG_IWLWIFI_LEGACY=m
 
 #
@@ -1853,7 +1588,6 @@ CONFIG_WL1251=m
 CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX_MENU=m
 CONFIG_WL12XX=m
 CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX_MENU=m
 CONFIG_WL12XX=m
-# CONFIG_WL12XX_HT is not set
 CONFIG_WL12XX_SDIO=m
 # CONFIG_WL12XX_SDIO_TEST is not set
 CONFIG_WL12XX_PLATFORM_DATA=y
 CONFIG_WL12XX_SDIO=m
 # CONFIG_WL12XX_SDIO_TEST is not set
 CONFIG_WL12XX_PLATFORM_DATA=y
@@ -1861,98 +1595,12 @@ CONFIG_ZD1211RW=m
 # CONFIG_ZD1211RW_DEBUG is not set
 CONFIG_MWIFIEX=m
 CONFIG_MWIFIEX_SDIO=m
 # CONFIG_ZD1211RW_DEBUG is not set
 CONFIG_MWIFIEX=m
 CONFIG_MWIFIEX_SDIO=m
+# CONFIG_MWIFIEX_PCIE is not set
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
 # CONFIG_WAN is not set
 # CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-# CONFIG_ATM_ZATM is not set
-CONFIG_ATM_NICSTAR=m
-# CONFIG_ATM_NICSTAR_USE_SUNI is not set
-# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_IDT77252_USE_SUNI=y
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E is not set
-CONFIG_ATM_HE=m
-# CONFIG_ATM_HE_USE_SUNI is not set
-CONFIG_ATM_SOLOS=m
-
-#
-# CAIF transport drivers
-#
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETCONSOLE_DYNAMIC=y
-CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_VIRTIO_NET=m
 CONFIG_VMXNET3=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
 CONFIG_VMXNET3=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
@@ -2050,14 +1698,7 @@ CONFIG_ISDN_DIVAS_PRIPCI=y
 CONFIG_ISDN_DIVAS_DIVACAPI=m
 CONFIG_ISDN_DIVAS_USERIDI=m
 CONFIG_ISDN_DIVAS_MAINT=m
 CONFIG_ISDN_DIVAS_DIVACAPI=m
 CONFIG_ISDN_DIVAS_USERIDI=m
 CONFIG_ISDN_DIVAS_MAINT=m
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_CAPI=y
-# CONFIG_GIGASET_I4L is not set
-# CONFIG_GIGASET_DUMMYLL is not set
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-CONFIG_GIGASET_M101=m
-# CONFIG_GIGASET_DEBUG is not set
+# CONFIG_ISDN_DRV_GIGASET is not set
 CONFIG_HYSDN=m
 CONFIG_HYSDN_CAPI=y
 # CONFIG_MISDN is not set
 CONFIG_HYSDN=m
 CONFIG_HYSDN_CAPI=y
 # CONFIG_MISDN is not set
@@ -2111,7 +1752,6 @@ CONFIG_MOUSE_PS2=m
 CONFIG_MOUSE_PS2_ALPS=y
 CONFIG_MOUSE_PS2_LOGIPS2PP=y
 CONFIG_MOUSE_PS2_SYNAPTICS=y
 CONFIG_MOUSE_PS2_ALPS=y
 CONFIG_MOUSE_PS2_LOGIPS2PP=y
 CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
 CONFIG_MOUSE_PS2_TRACKPOINT=y
 CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_MOUSE_PS2_SENTELIC=y
 CONFIG_MOUSE_PS2_TRACKPOINT=y
 CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_MOUSE_PS2_SENTELIC=y
@@ -2127,13 +1767,9 @@ CONFIG_MOUSE_SYNAPTICS_I2C=m
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_AD714X is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_AD714X is not set
-CONFIG_INPUT_PCSPKR=m
+# CONFIG_INPUT_BMA150 is not set
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
-CONFIG_INPUT_APANEL=m
-CONFIG_INPUT_WISTRON_BTNS=m
-CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_ATI_REMOTE=m
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 # CONFIG_INPUT_KXTJ9 is not set
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 # CONFIG_INPUT_KXTJ9 is not set
@@ -2150,9 +1786,7 @@ CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # Hardware I/O ports
 #
 CONFIG_SERIO=y
 # Hardware I/O ports
 #
 CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
 CONFIG_SERIO_SERPORT=m
 CONFIG_SERIO_SERPORT=m
-# CONFIG_SERIO_CT82C710 is not set
 # CONFIG_SERIO_PARKBD is not set
 # CONFIG_SERIO_PCIPS2 is not set
 CONFIG_SERIO_LIBPS2=y
 # CONFIG_SERIO_PARKBD is not set
 # CONFIG_SERIO_PCIPS2 is not set
 CONFIG_SERIO_LIBPS2=y
@@ -2167,6 +1801,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
 CONFIG_HW_CONSOLE=y
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
@@ -2178,7 +1813,6 @@ CONFIG_CYCLADES=m
 # CONFIG_CYZ_INTR is not set
 # CONFIG_MOXA_INTELLIO is not set
 # CONFIG_MOXA_SMARTIO is not set
 # CONFIG_CYZ_INTR is not set
 # CONFIG_MOXA_INTELLIO is not set
 # CONFIG_MOXA_SMARTIO is not set
-CONFIG_SYNCLINK=m
 CONFIG_SYNCLINKMP=m
 CONFIG_SYNCLINK_GT=m
 CONFIG_NOZOMI=m
 CONFIG_SYNCLINKMP=m
 CONFIG_SYNCLINK_GT=m
 CONFIG_NOZOMI=m
@@ -2193,9 +1827,7 @@ CONFIG_N_GSM=m
 #
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
 #
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
 CONFIG_SERIAL_8250_PCI=y
 CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
 CONFIG_SERIAL_8250_NR_UARTS=32
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 CONFIG_SERIAL_8250_EXTENDED=y
 CONFIG_SERIAL_8250_NR_UARTS=32
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 CONFIG_SERIAL_8250_EXTENDED=y
@@ -2220,7 +1852,6 @@ CONFIG_PRINTER=m
 CONFIG_LP_CONSOLE=y
 CONFIG_PPDEV=m
 CONFIG_HVC_DRIVER=y
 CONFIG_LP_CONSOLE=y
 CONFIG_PPDEV=m
 CONFIG_HVC_DRIVER=y
-CONFIG_VIRTIO_CONSOLE=m
 CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
@@ -2229,25 +1860,13 @@ CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
-CONFIG_HW_RANDOM_INTEL=m
-CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_GEODE=m
-CONFIG_HW_RANDOM_VIA=m
 CONFIG_HW_RANDOM_VIRTIO=m
 CONFIG_NVRAM=y
 CONFIG_R3964=m
 # CONFIG_APPLICOM is not set
 CONFIG_HW_RANDOM_VIRTIO=m
 CONFIG_NVRAM=y
 CONFIG_R3964=m
 # CONFIG_APPLICOM is not set
-CONFIG_SONYPI=m
-CONFIG_MWAVE=m
-CONFIG_PC8736x_GPIO=m
-CONFIG_NSC_GPIO=m
 CONFIG_RAW_DRIVER=y
 CONFIG_MAX_RAW_DEVS=8192
 CONFIG_RAW_DRIVER=y
 CONFIG_MAX_RAW_DEVS=8192
-CONFIG_HPET=y
-# CONFIG_HPET_MMAP is not set
-CONFIG_HANGCHECK_TIMER=m
 # CONFIG_TCG_TPM is not set
 # CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
 # CONFIG_RAMOOPS is not set
 CONFIG_I2C=m
 CONFIG_I2C_BOARDINFO=y
 # CONFIG_RAMOOPS is not set
 CONFIG_I2C=m
 CONFIG_I2C_BOARDINFO=y
@@ -2266,19 +1885,12 @@ CONFIG_I2C_ALGOPCA=m
 #
 # PC SMBus host controller drivers
 #
 #
 # PC SMBus host controller drivers
 #
-CONFIG_I2C_ALI1535=m
-CONFIG_I2C_ALI1563=m
-CONFIG_I2C_ALI15X3=m
 CONFIG_I2C_AMD756=m
 CONFIG_I2C_AMD756=m
-CONFIG_I2C_AMD756_S4882=m
 CONFIG_I2C_AMD8111=m
 CONFIG_I2C_I801=m
 CONFIG_I2C_ISCH=m
 CONFIG_I2C_PIIX4=m
 CONFIG_I2C_NFORCE2=m
 CONFIG_I2C_AMD8111=m
 CONFIG_I2C_I801=m
 CONFIG_I2C_ISCH=m
 CONFIG_I2C_PIIX4=m
 CONFIG_I2C_NFORCE2=m
-CONFIG_I2C_NFORCE2_S4985=m
-CONFIG_I2C_SIS5595=m
-CONFIG_I2C_SIS630=m
 CONFIG_I2C_SIS96X=m
 CONFIG_I2C_VIA=m
 CONFIG_I2C_VIAPRO=m
 CONFIG_I2C_SIS96X=m
 CONFIG_I2C_VIA=m
 CONFIG_I2C_VIAPRO=m
@@ -2286,11 +1898,11 @@ CONFIG_I2C_VIAPRO=m
 #
 # ACPI drivers
 #
 #
 # ACPI drivers
 #
-CONFIG_I2C_SCMI=m
 
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
 
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
+# CONFIG_I2C_DESIGNWARE_PCI is not set
 # CONFIG_I2C_GPIO is not set
 # CONFIG_I2C_INTEL_MID is not set
 # CONFIG_I2C_OCORES is not set
 # CONFIG_I2C_GPIO is not set
 # CONFIG_I2C_INTEL_MID is not set
 # CONFIG_I2C_OCORES is not set
@@ -2313,7 +1925,6 @@ CONFIG_I2C_TINY_USB=m
 # Other I2C/SMBus bus drivers
 #
 CONFIG_I2C_STUB=m
 # Other I2C/SMBus bus drivers
 #
 CONFIG_I2C_STUB=m
-CONFIG_SCx200_ACB=m
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -2345,7 +1956,6 @@ CONFIG_GPIO_SYSFS=y
 #
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
 # CONFIG_GPIO_IT8761E is not set
 #
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
 # CONFIG_GPIO_IT8761E is not set
-CONFIG_GPIO_SCH=m
 # CONFIG_GPIO_VX855 is not set
 
 #
 # CONFIG_GPIO_VX855 is not set
 
 #
@@ -2360,9 +1970,6 @@ CONFIG_GPIO_SCH=m
 #
 # PCI GPIO expanders:
 #
 #
 # PCI GPIO expanders:
 #
-# CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_LANGWELL is not set
-# CONFIG_GPIO_PCH is not set
 # CONFIG_GPIO_ML_IOH is not set
 # CONFIG_GPIO_RDC321X is not set
 
 # CONFIG_GPIO_ML_IOH is not set
 # CONFIG_GPIO_RDC321X is not set
 
@@ -2424,8 +2031,6 @@ CONFIG_HWMON_VID=m
 #
 # Native drivers
 #
 #
 # Native drivers
 #
-CONFIG_SENSORS_ABITUGURU=m
-CONFIG_SENSORS_ABITUGURU3=m
 CONFIG_SENSORS_AD7414=m
 CONFIG_SENSORS_AD7418=m
 CONFIG_SENSORS_ADM1021=m
 CONFIG_SENSORS_AD7414=m
 CONFIG_SENSORS_AD7418=m
 CONFIG_SENSORS_ADM1021=m
@@ -2439,10 +2044,6 @@ CONFIG_SENSORS_ADT7462=m
 CONFIG_SENSORS_ADT7470=m
 CONFIG_SENSORS_ADT7475=m
 CONFIG_SENSORS_ASC7621=m
 CONFIG_SENSORS_ADT7470=m
 CONFIG_SENSORS_ADT7475=m
 CONFIG_SENSORS_ASC7621=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_K10TEMP=m
-CONFIG_SENSORS_FAM15H_POWER=m
-CONFIG_SENSORS_ASB100=m
 CONFIG_SENSORS_ATXP1=m
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS1621=m
 CONFIG_SENSORS_ATXP1=m
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS1621=m
@@ -2450,12 +2051,10 @@ CONFIG_SENSORS_I5K_AMB=m
 CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_FSCHMD=m
 CONFIG_SENSORS_G760A=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 # CONFIG_SENSORS_GPIO_FAN is not set
 CONFIG_SENSORS_G760A=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 # CONFIG_SENSORS_GPIO_FAN is not set
-CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 CONFIG_SENSORS_IT87=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 CONFIG_SENSORS_IT87=m
@@ -2493,11 +2092,13 @@ CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
+# CONFIG_SENSORS_LTC2978 is not set
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
+# CONFIG_SENSORS_ZL6100 is not set
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
 CONFIG_SENSORS_SIS5595=m
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
 CONFIG_SENSORS_SIS5595=m
@@ -2519,7 +2120,6 @@ CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
 CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TMP421=m
 CONFIG_SENSORS_TMP102=m
 CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TMP421=m
-CONFIG_SENSORS_VIA_CPUTEMP=m
 CONFIG_SENSORS_VIA686A=m
 CONFIG_SENSORS_VT1211=m
 CONFIG_SENSORS_VT8231=m
 CONFIG_SENSORS_VIA686A=m
 CONFIG_SENSORS_VT1211=m
 CONFIG_SENSORS_VT8231=m
@@ -2533,13 +2133,10 @@ CONFIG_SENSORS_W83L785TS=m
 CONFIG_SENSORS_W83L786NG=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_SENSORS_W83L786NG=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
 
 #
 # ACPI drivers
 #
 
 #
 # ACPI drivers
 #
-CONFIG_SENSORS_ACPI_POWER=m
-CONFIG_SENSORS_ATK0110=m
 CONFIG_THERMAL=y
 CONFIG_THERMAL_HWMON=y
 CONFIG_WATCHDOG=y
 CONFIG_THERMAL=y
 CONFIG_THERMAL_HWMON=y
 CONFIG_WATCHDOG=y
@@ -2550,41 +2147,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-CONFIG_ALIM1535_WDT=m
 CONFIG_ALIM7101_WDT=m
 CONFIG_ALIM7101_WDT=m
-CONFIG_F71808E_WDT=m
-CONFIG_SP5100_TCO=m
-# CONFIG_SC520_WDT is not set
-CONFIG_SBC_FITPC2_WATCHDOG=m
-# CONFIG_EUROTECH_WDT is not set
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-# CONFIG_WAFER_WDT is not set
-CONFIG_I6300ESB_WDT=m
-CONFIG_ITCO_WDT=m
-# CONFIG_ITCO_VENDOR_SUPPORT is not set
-CONFIG_IT8712F_WDT=m
-CONFIG_IT87_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_HPWDT_NMI_DECODING=y
-# CONFIG_SC1200_WDT is not set
-# CONFIG_PC87413_WDT is not set
-CONFIG_NV_TCO=m
-# CONFIG_60XX_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_SBC7240_WDT is not set
-# CONFIG_CPU5_WDT is not set
-CONFIG_SMSC_SCH311X_WDT=m
-# CONFIG_SMSC37B787_WDT is not set
-CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
 
 #
 # PCI-based Watchdog Cards
 
 #
 # PCI-based Watchdog Cards
@@ -2618,7 +2181,10 @@ CONFIG_BCMA_POSSIBLE=y
 # Broadcom specific AMBA
 #
 # CONFIG_BCMA is not set
 # Broadcom specific AMBA
 #
 # CONFIG_BCMA is not set
-CONFIG_MFD_SUPPORT=y
+
+#
+# Multifunction device drivers
+#
 CONFIG_MFD_CORE=m
 CONFIG_MFD_SM501=m
 CONFIG_MFD_SM501_GPIO=y
 CONFIG_MFD_CORE=m
 CONFIG_MFD_SM501=m
 CONFIG_MFD_SM501_GPIO=y
@@ -2631,7 +2197,6 @@ CONFIG_MFD_SM501_GPIO=y
 CONFIG_MFD_WM8400=m
 # CONFIG_MFD_PCF50633 is not set
 # CONFIG_ABX500_CORE is not set
 CONFIG_MFD_WM8400=m
 # CONFIG_MFD_PCF50633 is not set
 # CONFIG_ABX500_CORE is not set
-CONFIG_MFD_CS5535=m
 # CONFIG_MFD_TIMBERDALE is not set
 CONFIG_LPC_SCH=m
 # CONFIG_MFD_RDC321X is not set
 # CONFIG_MFD_TIMBERDALE is not set
 CONFIG_LPC_SCH=m
 # CONFIG_MFD_RDC321X is not set
@@ -2668,15 +2233,11 @@ CONFIG_IR_SONY_DECODER=m
 CONFIG_IR_RC5_SZ_DECODER=m
 CONFIG_IR_MCE_KBD_DECODER=m
 CONFIG_IR_LIRC_CODEC=m
 CONFIG_IR_RC5_SZ_DECODER=m
 CONFIG_IR_MCE_KBD_DECODER=m
 CONFIG_IR_LIRC_CODEC=m
-CONFIG_IR_ENE=m
+# CONFIG_RC_ATI_REMOTE is not set
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
-CONFIG_IR_ITE_CIR=m
-CONFIG_IR_FINTEK=m
-CONFIG_IR_NUVOTON=m
 CONFIG_IR_REDRAT3=m
 CONFIG_IR_STREAMZAP=m
 CONFIG_IR_REDRAT3=m
 CONFIG_IR_STREAMZAP=m
-CONFIG_IR_WINBOND_CIR=m
 CONFIG_RC_LOOPBACK=m
 CONFIG_MEDIA_ATTACH=y
 CONFIG_MEDIA_TUNER=m
 CONFIG_RC_LOOPBACK=m
 CONFIG_MEDIA_ATTACH=y
 CONFIG_MEDIA_TUNER=m
@@ -2717,7 +2278,6 @@ CONFIG_VIDEO_TVEEPROM=m
 CONFIG_VIDEO_TUNER=m
 CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
 CONFIG_VIDEO_TUNER=m
 CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
-CONFIG_VIDEOBUF2_DMA_CONTIG=m
 CONFIG_VIDEOBUF2_VMALLOC=m
 CONFIG_VIDEO_CAPTURE_DRIVERS=y
 # CONFIG_VIDEO_ADV_DEBUG is not set
 CONFIG_VIDEOBUF2_VMALLOC=m
 CONFIG_VIDEO_CAPTURE_DRIVERS=y
 # CONFIG_VIDEO_ADV_DEBUG is not set
@@ -2812,7 +2372,6 @@ CONFIG_VIDEO_ZORAN_DC10=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
 CONFIG_VIDEO_ZORAN_AVS6EYES=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
 CONFIG_VIDEO_ZORAN_AVS6EYES=m
-CONFIG_VIDEO_MEYE=m
 CONFIG_VIDEO_SAA7134=m
 CONFIG_VIDEO_SAA7134_ALSA=m
 CONFIG_VIDEO_SAA7134_RC=y
 CONFIG_VIDEO_SAA7134=m
 CONFIG_VIDEO_SAA7134_ALSA=m
 CONFIG_VIDEO_SAA7134_RC=y
@@ -2829,17 +2388,13 @@ CONFIG_VIDEO_CX88_MPEG=m
 CONFIG_VIDEO_CX88_VP3054=m
 CONFIG_VIDEO_CX23885=m
 # CONFIG_MEDIA_ALTERA_CI is not set
 CONFIG_VIDEO_CX88_VP3054=m
 CONFIG_VIDEO_CX23885=m
 # CONFIG_MEDIA_ALTERA_CI is not set
+# CONFIG_VIDEO_CX25821 is not set
 CONFIG_VIDEO_AU0828=m
 CONFIG_VIDEO_IVTV=m
 CONFIG_VIDEO_FB_IVTV=m
 CONFIG_VIDEO_CX18=m
 CONFIG_VIDEO_CX18_ALSA=m
 CONFIG_VIDEO_SAA7164=m
 CONFIG_VIDEO_AU0828=m
 CONFIG_VIDEO_IVTV=m
 CONFIG_VIDEO_FB_IVTV=m
 CONFIG_VIDEO_CX18=m
 CONFIG_VIDEO_CX18_ALSA=m
 CONFIG_VIDEO_SAA7164=m
-CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_VIDEO_SR030PC30=m
-CONFIG_VIDEO_VIA_CAMERA=m
-CONFIG_VIDEO_NOON010PC30=m
-# CONFIG_VIDEO_M5MOLS is not set
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA_IMX074=m
 CONFIG_SOC_CAMERA_MT9M001=m
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA_IMX074=m
 CONFIG_SOC_CAMERA_MT9M001=m
@@ -2899,6 +2454,7 @@ CONFIG_USB_GSPCA_STK014=m
 CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
 CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
+# CONFIG_USB_GSPCA_TOPRO is not set
 CONFIG_USB_GSPCA_TV8532=m
 CONFIG_USB_GSPCA_VC032X=m
 CONFIG_USB_GSPCA_VICAM=m
 CONFIG_USB_GSPCA_TV8532=m
 CONFIG_USB_GSPCA_VC032X=m
 CONFIG_USB_GSPCA_VICAM=m
@@ -2918,6 +2474,7 @@ CONFIG_VIDEO_CX231XX=m
 CONFIG_VIDEO_CX231XX_RC=y
 CONFIG_VIDEO_CX231XX_ALSA=m
 CONFIG_VIDEO_CX231XX_DVB=m
 CONFIG_VIDEO_CX231XX_RC=y
 CONFIG_VIDEO_CX231XX_ALSA=m
 CONFIG_VIDEO_CX231XX_DVB=m
+# CONFIG_VIDEO_TM6000 is not set
 CONFIG_VIDEO_USBVISION=m
 # CONFIG_USB_ET61X251 is not set
 # CONFIG_USB_SN9C102 is not set
 CONFIG_VIDEO_USBVISION=m
 # CONFIG_USB_ET61X251 is not set
 # CONFIG_USB_SN9C102 is not set
@@ -2988,6 +2545,7 @@ CONFIG_DVB_USB_DTT200U=m
 CONFIG_DVB_USB_OPERA1=m
 CONFIG_DVB_USB_AF9005=m
 CONFIG_DVB_USB_AF9005_REMOTE=m
 CONFIG_DVB_USB_OPERA1=m
 CONFIG_DVB_USB_AF9005=m
 CONFIG_DVB_USB_AF9005_REMOTE=m
+# CONFIG_DVB_USB_PCTV452E is not set
 CONFIG_DVB_USB_DW2102=m
 CONFIG_DVB_USB_CINERGY_T2=m
 CONFIG_DVB_USB_ANYSEE=m
 CONFIG_DVB_USB_DW2102=m
 CONFIG_DVB_USB_CINERGY_T2=m
 CONFIG_DVB_USB_ANYSEE=m
@@ -2999,6 +2557,8 @@ CONFIG_DVB_USB_EC168=m
 CONFIG_DVB_USB_AZ6027=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_TECHNISAT_USB2=m
 CONFIG_DVB_USB_AZ6027=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_TECHNISAT_USB2=m
+# CONFIG_DVB_USB_IT913X is not set
+# CONFIG_DVB_USB_MXL111SF is not set
 CONFIG_DVB_TTUSB_BUDGET=m
 CONFIG_DVB_TTUSB_DEC=m
 CONFIG_SMS_SIANO_MDTV=m
 CONFIG_DVB_TTUSB_BUDGET=m
 CONFIG_DVB_TTUSB_DEC=m
 CONFIG_SMS_SIANO_MDTV=m
@@ -3109,6 +2669,7 @@ CONFIG_DVB_CX24116=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_DS3000=m
 CONFIG_DVB_MB86A16=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_DS3000=m
 CONFIG_DVB_MB86A16=m
+CONFIG_DVB_TDA10071=m
 
 #
 # DVB-T (terrestrial) frontends
 
 #
 # DVB-T (terrestrial) frontends
@@ -3174,14 +2735,17 @@ CONFIG_DVB_TUNER_DIB0090=m
 # SEC control devices for DVB-S
 #
 CONFIG_DVB_LNBP21=m
 # SEC control devices for DVB-S
 #
 CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
 CONFIG_DVB_ISL6405=m
 CONFIG_DVB_ISL6421=m
 CONFIG_DVB_ISL6423=m
 CONFIG_DVB_ISL6405=m
 CONFIG_DVB_ISL6421=m
 CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
 CONFIG_DVB_LGS8GL5=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
 CONFIG_DVB_IX2505V=m
 CONFIG_DVB_LGS8GL5=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
 CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
 
 #
 # Tools to develop new frontends
 
 #
 # Tools to develop new frontends
@@ -3191,50 +2755,24 @@ CONFIG_DVB_IX2505V=m
 #
 # Graphics support
 #
 #
 # Graphics support
 #
-CONFIG_AGP=y
-CONFIG_AGP_ALI=y
-CONFIG_AGP_ATI=y
-CONFIG_AGP_AMD=y
-CONFIG_AGP_AMD64=y
-CONFIG_AGP_INTEL=y
-CONFIG_AGP_NVIDIA=y
-CONFIG_AGP_SIS=y
-CONFIG_AGP_SWORKS=y
-CONFIG_AGP_VIA=y
-CONFIG_AGP_EFFICEON=y
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
-CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
 CONFIG_DRM=m
-CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_TTM=m
 CONFIG_DRM_TDFX=m
 CONFIG_DRM_R128=m
 CONFIG_DRM_TTM=m
 CONFIG_DRM_TDFX=m
 CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_RADEON_KMS=y
-CONFIG_DRM_I810=m
-CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
 CONFIG_DRM_MGA=m
 CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
 CONFIG_DRM_VIA=m
 CONFIG_DRM_SAVAGE=m
 CONFIG_DRM_VIA=m
 CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_VMWGFX=m
 CONFIG_STUB_POULSBO=m
 CONFIG_VGASTATE=m
 CONFIG_VIDEO_OUTPUT_CONTROL=m
 CONFIG_FB=y
 # CONFIG_FIRMWARE_EDID is not set
 CONFIG_FB_DDC=m
 CONFIG_STUB_POULSBO=m
 CONFIG_VGASTATE=m
 CONFIG_VIDEO_OUTPUT_CONTROL=m
 CONFIG_FB=y
 # CONFIG_FIRMWARE_EDID is not set
 CONFIG_FB_DDC=m
-CONFIG_FB_BOOT_VESA_SUPPORT=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
 # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
 # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 # CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
 # CONFIG_FB_WMT_GE_ROPS is not set
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_SVGALIB=m
 # CONFIG_FB_WMT_GE_ROPS is not set
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_SVGALIB=m
@@ -3249,15 +2787,9 @@ CONFIG_FB_TILEBLITTING=y
 CONFIG_FB_CIRRUS=m
 # CONFIG_FB_PM2 is not set
 # CONFIG_FB_CYBER2000 is not set
 CONFIG_FB_CIRRUS=m
 # CONFIG_FB_PM2 is not set
 # CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
 # CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_IMSTT is not set
 # CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=m
 # CONFIG_FB_UVESA is not set
 # CONFIG_FB_UVESA is not set
-CONFIG_FB_VESA=y
-CONFIG_FB_EFI=y
-# CONFIG_FB_N411 is not set
-# CONFIG_FB_HGA is not set
 # CONFIG_FB_S1D13XXX is not set
 CONFIG_FB_NVIDIA=m
 CONFIG_FB_NVIDIA_I2C=y
 # CONFIG_FB_S1D13XXX is not set
 CONFIG_FB_NVIDIA=m
 CONFIG_FB_NVIDIA_I2C=y
@@ -3267,20 +2799,12 @@ CONFIG_FB_RIVA=m
 # CONFIG_FB_RIVA_I2C is not set
 # CONFIG_FB_RIVA_DEBUG is not set
 CONFIG_FB_RIVA_BACKLIGHT=y
 # CONFIG_FB_RIVA_I2C is not set
 # CONFIG_FB_RIVA_DEBUG is not set
 CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_I810=m
-CONFIG_FB_I810_GTF=y
-CONFIG_FB_I810_I2C=y
-# CONFIG_FB_LE80578 is not set
 CONFIG_FB_MATROX=m
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
 CONFIG_FB_MATROX_G=y
 CONFIG_FB_MATROX_I2C=m
 CONFIG_FB_MATROX_MAVEN=m
 CONFIG_FB_MATROX=m
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
 CONFIG_FB_MATROX_G=y
 CONFIG_FB_MATROX_I2C=m
 CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
 CONFIG_FB_ATY128=m
 CONFIG_FB_ATY128_BACKLIGHT=y
 CONFIG_FB_ATY=m
 CONFIG_FB_ATY128=m
 CONFIG_FB_ATY128_BACKLIGHT=y
 CONFIG_FB_ATY=m
@@ -3290,13 +2814,7 @@ CONFIG_FB_ATY_GX=y
 CONFIG_FB_ATY_BACKLIGHT=y
 CONFIG_FB_S3=m
 CONFIG_FB_S3_DDC=y
 CONFIG_FB_ATY_BACKLIGHT=y
 CONFIG_FB_S3=m
 CONFIG_FB_S3_DDC=y
-CONFIG_FB_SAVAGE=m
-CONFIG_FB_SAVAGE_I2C=y
-CONFIG_FB_SAVAGE_ACCEL=y
 # CONFIG_FB_SIS is not set
 # CONFIG_FB_SIS is not set
-CONFIG_FB_VIA=m
-# CONFIG_FB_VIA_DIRECT_PROCFS is not set
-CONFIG_FB_VIA_X_COMPATIBILITY=y
 CONFIG_FB_NEOMAGIC=m
 CONFIG_FB_KYRO=m
 CONFIG_FB_3DFX=m
 CONFIG_FB_NEOMAGIC=m
 CONFIG_FB_KYRO=m
 CONFIG_FB_3DFX=m
@@ -3308,12 +2826,9 @@ CONFIG_FB_TRIDENT=m
 # CONFIG_FB_ARK is not set
 # CONFIG_FB_PM3 is not set
 # CONFIG_FB_CARMINE is not set
 # CONFIG_FB_ARK is not set
 # CONFIG_FB_PM3 is not set
 # CONFIG_FB_CARMINE is not set
-CONFIG_FB_GEODE=y
-CONFIG_FB_GEODE_LX=y
-CONFIG_FB_GEODE_GX=y
-# CONFIG_FB_GEODE_GX1 is not set
 # CONFIG_FB_TMIO is not set
 CONFIG_FB_SM501=m
 # CONFIG_FB_TMIO is not set
 CONFIG_FB_SM501=m
+# CONFIG_FB_SMSCUFX is not set
 CONFIG_FB_UDL=m
 CONFIG_FB_VIRTUAL=m
 CONFIG_FB_METRONOME=m
 CONFIG_FB_UDL=m
 CONFIG_FB_VIRTUAL=m
 CONFIG_FB_METRONOME=m
@@ -3326,9 +2841,6 @@ CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_GENERIC is not set
 CONFIG_LCD_PLATFORM=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_GENERIC is not set
-CONFIG_BACKLIGHT_PROGEAR=m
-CONFIG_BACKLIGHT_APPLE=m
-# CONFIG_BACKLIGHT_SAHARA is not set
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
 
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
 
@@ -3344,9 +2856,6 @@ CONFIG_DISPLAY_SUPPORT=m
 #
 # Console display driver support
 #
 #
 # Console display driver support
 #
-CONFIG_VGA_CONSOLE=y
-CONFIG_VGACON_SOFT_SCROLLBACK=y
-CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=128
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
@@ -3384,7 +2893,6 @@ CONFIG_SND_DEBUG=y
 # CONFIG_SND_DEBUG_VERBOSE is not set
 CONFIG_SND_PCM_XRUN_DEBUG=y
 CONFIG_SND_VMASTER=y
 # CONFIG_SND_DEBUG_VERBOSE is not set
 CONFIG_SND_PCM_XRUN_DEBUG=y
 CONFIG_SND_VMASTER=y
-CONFIG_SND_DMA_SGBUF=y
 CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
 # CONFIG_SND_OPL4_LIB_SEQ is not set
 CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
 # CONFIG_SND_OPL4_LIB_SEQ is not set
@@ -3395,7 +2903,6 @@ CONFIG_SND_OPL3_LIB=m
 CONFIG_SND_VX_LIB=m
 CONFIG_SND_AC97_CODEC=m
 CONFIG_SND_DRIVERS=y
 CONFIG_SND_VX_LIB=m
 CONFIG_SND_AC97_CODEC=m
 CONFIG_SND_DRIVERS=y
-CONFIG_SND_PCSP=m
 CONFIG_SND_DUMMY=m
 CONFIG_SND_ALOOP=m
 CONFIG_SND_VIRMIDI=m
 CONFIG_SND_DUMMY=m
 CONFIG_SND_ALOOP=m
 CONFIG_SND_VIRMIDI=m
@@ -3406,15 +2913,10 @@ CONFIG_SND_MPU401=m
 CONFIG_SND_PORTMAN2X4=m
 CONFIG_SND_AC97_POWER_SAVE=y
 CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
 CONFIG_SND_PORTMAN2X4=m
 CONFIG_SND_AC97_POWER_SAVE=y
 CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
-CONFIG_SND_SB_COMMON=m
-CONFIG_SND_SB16_DSP=m
 CONFIG_SND_TEA575X=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
 CONFIG_SND_ALS300=m
 CONFIG_SND_TEA575X=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
 CONFIG_SND_ALS300=m
-CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ASIHPI=m
 CONFIG_SND_ATIIXP=m
 CONFIG_SND_ATIIXP_MODEM=m
 CONFIG_SND_AU8810=m
 CONFIG_SND_ATIIXP=m
 CONFIG_SND_ATIIXP_MODEM=m
 CONFIG_SND_AU8810=m
@@ -3431,7 +2933,6 @@ CONFIG_SND_OXYGEN=m
 CONFIG_SND_CS4281=m
 CONFIG_SND_CS46XX=m
 CONFIG_SND_CS46XX_NEW_DSP=y
 CONFIG_SND_CS4281=m
 CONFIG_SND_CS46XX=m
 CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5530=m
 CONFIG_SND_CS5535AUDIO=m
 CONFIG_SND_CTXFI=m
 CONFIG_SND_DARLA20=m
 CONFIG_SND_CS5535AUDIO=m
 CONFIG_SND_CTXFI=m
 CONFIG_SND_DARLA20=m
@@ -3498,7 +2999,6 @@ CONFIG_SND_RIPTIDE=m
 CONFIG_SND_RME32=m
 CONFIG_SND_RME96=m
 CONFIG_SND_RME9652=m
 CONFIG_SND_RME32=m
 CONFIG_SND_RME96=m
 CONFIG_SND_RME9652=m
-CONFIG_SND_SIS7019=m
 CONFIG_SND_SONICVIBES=m
 CONFIG_SND_TRIDENT=m
 CONFIG_SND_VIA82XX=m
 CONFIG_SND_SONICVIBES=m
 CONFIG_SND_TRIDENT=m
 CONFIG_SND_VIA82XX=m
@@ -3509,16 +3009,13 @@ CONFIG_SND_YMFPCI=m
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_USB_UA101=m
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_USB_UA101=m
-CONFIG_SND_USB_USX2Y=m
 CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_US122L=m
 CONFIG_SND_USB_6FIRE=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_FIREWIRE_SPEAKERS=m
 # CONFIG_SND_ISIGHT is not set
 CONFIG_SND_USB_6FIRE=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_FIREWIRE_SPEAKERS=m
 # CONFIG_SND_ISIGHT is not set
-# CONFIG_SND_SOC is not set
 # CONFIG_SOUND_PRIME is not set
 CONFIG_AC97_BUS=m
 CONFIG_HID_SUPPORT=y
 # CONFIG_SOUND_PRIME is not set
 CONFIG_AC97_BUS=m
 CONFIG_HID_SUPPORT=y
@@ -3557,10 +3054,11 @@ CONFIG_HID_TWINHAN=m
 CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
 CONFIG_HID_LOGITECH=y
 CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
 CONFIG_HID_LOGITECH=y
+CONFIG_HID_LOGITECH_DJ=m
 # CONFIG_LOGITECH_FF is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
 # CONFIG_LOGITECH_FF is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
-# CONFIG_LOGIWII_FF is not set
+# CONFIG_LOGIWHEELS_FF is not set
 # CONFIG_HID_MAGICMOUSE is not set
 CONFIG_HID_MICROSOFT=y
 CONFIG_HID_MONTEREY=y
 # CONFIG_HID_MAGICMOUSE is not set
 CONFIG_HID_MICROSOFT=y
 CONFIG_HID_MONTEREY=y
@@ -3574,6 +3072,7 @@ CONFIG_HID_PICOLCD_FB=y
 CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
+# CONFIG_HID_PRIMAX is not set
 # CONFIG_HID_QUANTA is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_ROCCAT_COMMON=m
 # CONFIG_HID_QUANTA is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_ROCCAT_COMMON=m
@@ -3595,9 +3094,11 @@ CONFIG_HID_TOPSEED=m
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_USB_SUPPORT=y
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB_ARCH_HAS_EHCI=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB_ARCH_HAS_XHCI=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -3610,6 +3111,7 @@ CONFIG_USB_DEVICEFS=y
 # CONFIG_USB_DYNAMIC_MINORS is not set
 CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG is not set
 # CONFIG_USB_DYNAMIC_MINORS is not set
 CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG is not set
+# CONFIG_USB_DWC3 is not set
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
@@ -3800,7 +3302,6 @@ CONFIG_MMC_SDHCI=m
 CONFIG_MMC_SDHCI_PCI=m
 CONFIG_MMC_RICOH_MMC=y
 CONFIG_MMC_SDHCI_PLTFM=m
 CONFIG_MMC_SDHCI_PCI=m
 CONFIG_MMC_RICOH_MMC=y
 CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_WBSD=m
 CONFIG_MMC_TIFM_SD=m
 CONFIG_MMC_CB710=m
 CONFIG_MMC_VIA_SDMMC=m
 CONFIG_MMC_TIFM_SD=m
 CONFIG_MMC_CB710=m
 CONFIG_MMC_VIA_SDMMC=m
@@ -3828,18 +3329,14 @@ CONFIG_LEDS_CLASS=y
 # LED drivers
 #
 CONFIG_LEDS_LM3530=m
 # LED drivers
 #
 CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_ALIX2=m
 # CONFIG_LEDS_PCA9532 is not set
 # CONFIG_LEDS_GPIO is not set
 CONFIG_LEDS_LP3944=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 # CONFIG_LEDS_PCA9532 is not set
 # CONFIG_LEDS_GPIO is not set
 CONFIG_LEDS_LP3944=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
-CONFIG_LEDS_CLEVO_MAIL=m
 # CONFIG_LEDS_PCA955X is not set
 # CONFIG_LEDS_BD2802 is not set
 # CONFIG_LEDS_PCA955X is not set
 # CONFIG_LEDS_BD2802 is not set
-CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_LT3593=m
-CONFIG_LEDS_DELL_NETBOOKS=m
 CONFIG_LEDS_TRIGGERS=y
 
 #
 CONFIG_LEDS_TRIGGERS=y
 
 #
@@ -3856,31 +3353,10 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 #
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
 #
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
-CONFIG_EDAC=y
 
 #
 # Reporting subsystems
 #
 
 #
 # Reporting subsystems
 #
-# CONFIG_EDAC_DEBUG is not set
-CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_MCE_INJ=m
-CONFIG_EDAC_MM_EDAC=m
-CONFIG_EDAC_MCE=y
-CONFIG_EDAC_AMD76X=m
-CONFIG_EDAC_E7XXX=m
-CONFIG_EDAC_E752X=m
-CONFIG_EDAC_I82875P=m
-CONFIG_EDAC_I82975X=m
-CONFIG_EDAC_I3000=m
-CONFIG_EDAC_I3200=m
-CONFIG_EDAC_X38=m
-CONFIG_EDAC_I5400=m
-CONFIG_EDAC_I7CORE=m
-CONFIG_EDAC_I82860=m
-CONFIG_EDAC_R82600=m
-CONFIG_EDAC_I5000=m
-CONFIG_EDAC_I5100=m
-CONFIG_EDAC_I7300=m
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
@@ -3950,10 +3426,7 @@ CONFIG_DMADEVICES=y
 #
 # DMA Devices
 #
 #
 # DMA Devices
 #
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
 CONFIG_TIMB_DMA=m
 CONFIG_TIMB_DMA=m
-CONFIG_PCH_DMA=m
 CONFIG_DMA_ENGINE=y
 
 #
 CONFIG_DMA_ENGINE=y
 
 #
@@ -3962,7 +3435,6 @@ CONFIG_DMA_ENGINE=y
 CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
 CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
-CONFIG_DCA=m
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 # CONFIG_UIO_CIF is not set
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 # CONFIG_UIO_CIF is not set
@@ -3980,22 +3452,17 @@ CONFIG_VIRTIO_RING=m
 #
 CONFIG_VIRTIO_PCI=m
 CONFIG_VIRTIO_BALLOON=m
 #
 CONFIG_VIRTIO_PCI=m
 CONFIG_VIRTIO_BALLOON=m
+# CONFIG_VIRTIO_MMIO is not set
+
+#
+# Xen driver support
+#
 CONFIG_STAGING=y
 CONFIG_ET131X=m
 CONFIG_STAGING=y
 CONFIG_ET131X=m
-# CONFIG_ET131X_DEBUG is not set
-# CONFIG_SLICOSS is not set
-# CONFIG_VIDEO_GO7007 is not set
-# CONFIG_VIDEO_CX25821 is not set
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_DVB_CXD2099 is not set
 # CONFIG_USBIP_CORE is not set
 # CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
 # CONFIG_ECHO is not set
 # CONFIG_USBIP_CORE is not set
 # CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
 # CONFIG_ECHO is not set
-# CONFIG_BRCMUTIL is not set
-# CONFIG_BRCMSMAC is not set
-# CONFIG_BRCMFMAC is not set
-# CONFIG_COMEDI is not set
 # CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
 # CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
@@ -4003,30 +3470,19 @@ CONFIG_ET131X=m
 # CONFIG_RTL8192E is not set
 # CONFIG_R8712U is not set
 # CONFIG_RTS_PSTOR is not set
 # CONFIG_RTL8192E is not set
 # CONFIG_R8712U is not set
 # CONFIG_RTS_PSTOR is not set
+# CONFIG_RTS5139 is not set
 # CONFIG_TRANZPORT is not set
 # CONFIG_POHMELFS is not set
 # CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
 # CONFIG_TRANZPORT is not set
 # CONFIG_POHMELFS is not set
 # CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
-CONFIG_DRM_VMWGFX=m
-CONFIG_DRM_NOUVEAU=m
-CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-CONFIG_DRM_NOUVEAU_DEBUG=y
 
 #
 # I2C encoder or helper chips
 #
 
 #
 # I2C encoder or helper chips
 #
-# CONFIG_DRM_I2C_CH7006 is not set
-# CONFIG_DRM_I2C_SIL164 is not set
 # CONFIG_USB_SERIAL_QUATECH2 is not set
 # CONFIG_USB_SERIAL_QUATECH_USB2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
 # CONFIG_USB_SERIAL_QUATECH2 is not set
 # CONFIG_USB_SERIAL_QUATECH_USB2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
-CONFIG_HYPERV=m
-CONFIG_HYPERV_STORAGE=m
-CONFIG_HYPERV_BLOCK=m
-CONFIG_HYPERV_NET=m
-CONFIG_HYPERV_UTILS=m
-CONFIG_HYPERV_MOUSE=m
 # CONFIG_VME_BUS is not set
 # CONFIG_DX_SEP is not set
 # CONFIG_IIO is not set
 # CONFIG_VME_BUS is not set
 # CONFIG_DX_SEP is not set
 # CONFIG_IIO is not set
@@ -4034,14 +3490,8 @@ CONFIG_HYPERV_MOUSE=m
 # CONFIG_ZRAM is not set
 # CONFIG_ZCACHE is not set
 # CONFIG_FB_SM7XX is not set
 # CONFIG_ZRAM is not set
 # CONFIG_ZCACHE is not set
 # CONFIG_FB_SM7XX is not set
-# CONFIG_VIDEO_DT3155 is not set
 # CONFIG_CRYSTALHD is not set
 # CONFIG_FB_XGI is not set
 # CONFIG_CRYSTALHD is not set
 # CONFIG_FB_XGI is not set
-# CONFIG_LIRC_STAGING is not set
-# CONFIG_EASYCAP is not set
-# CONFIG_SOLO6X10 is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_ATH6K_LEGACY is not set
 # CONFIG_USB_ENESTORAGE is not set
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
 # CONFIG_USB_ENESTORAGE is not set
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
@@ -4052,79 +3502,18 @@ CONFIG_HYPERV_MOUSE=m
 # CONFIG_SPEAKUP is not set
 # CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
 # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
 # CONFIG_SPEAKUP is not set
 # CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
 # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-# CONFIG_DRM_PSB is not set
-# CONFIG_ALTERA_STAPL is not set
-# CONFIG_INTEL_MEI is not set
-CONFIG_X86_PLATFORM_DEVICES=y
-CONFIG_ACER_WMI=m
-CONFIG_ACERHDF=m
-CONFIG_ASUS_LAPTOP=m
-CONFIG_DELL_LAPTOP=m
-CONFIG_DELL_WMI=m
-CONFIG_DELL_WMI_AIO=m
-CONFIG_FUJITSU_LAPTOP=m
-# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
-CONFIG_TC1100_WMI=m
-CONFIG_HP_ACCEL=m
-CONFIG_HP_WMI=m
-CONFIG_MSI_LAPTOP=m
-CONFIG_PANASONIC_LAPTOP=m
-CONFIG_COMPAL_LAPTOP=m
-CONFIG_SONY_LAPTOP=m
-CONFIG_SONYPI_COMPAT=y
-CONFIG_IDEAPAD_LAPTOP=m
-CONFIG_THINKPAD_ACPI=m
-CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
-# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
-# CONFIG_THINKPAD_ACPI_DEBUG is not set
-# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
-CONFIG_THINKPAD_ACPI_VIDEO=y
-CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
-CONFIG_SENSORS_HDAPS=m
-# CONFIG_INTEL_MENLOW is not set
-CONFIG_EEEPC_LAPTOP=m
-CONFIG_ASUS_WMI=m
-CONFIG_ASUS_NB_WMI=m
-CONFIG_EEEPC_WMI=m
-CONFIG_ACPI_WMI=m
-CONFIG_MSI_WMI=m
-# CONFIG_ACPI_ASUS is not set
-CONFIG_TOPSTAR_LAPTOP=m
-CONFIG_ACPI_TOSHIBA=m
-CONFIG_TOSHIBA_BT_RFKILL=m
-CONFIG_ACPI_CMPC=m
-CONFIG_INTEL_IPS=m
-# CONFIG_IBM_RTL is not set
-CONFIG_XO15_EBOOK=m
-CONFIG_SAMSUNG_LAPTOP=m
-CONFIG_MXM_WMI=m
-CONFIG_INTEL_OAKTRAIL=m
-CONFIG_SAMSUNG_Q10=m
-CONFIG_CLKSRC_I8253=y
-CONFIG_CLKEVT_I8253=y
-CONFIG_I8253_LOCK=y
-CONFIG_CLKBLD_I8253=y
-CONFIG_IOMMU_API=y
+# CONFIG_STAGING_MEDIA is not set
+
+#
+# Hardware Spinlock drivers
+#
 CONFIG_IOMMU_SUPPORT=y
 CONFIG_IOMMU_SUPPORT=y
-CONFIG_DMAR=y
-CONFIG_DMAR_DEFAULT_ON=y
-CONFIG_DMAR_FLOPPY_WA=y
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRT_DRIVERS=y
+# CONFIG_PM_DEVFREQ is not set
 
 #
 # Firmware Drivers
 #
 
 #
 # Firmware Drivers
 #
-CONFIG_EDD=m
-# CONFIG_EDD_OFF is not set
-CONFIG_FIRMWARE_MEMMAP=y
-CONFIG_EFI_VARS=y
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
-CONFIG_DMIID=y
-CONFIG_DMI_SYSFS=y
-# CONFIG_ISCSI_IBFT_FIND is not set
-# CONFIG_SIGMA is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
 
 #
 # File systems
 
 #
 # File systems
@@ -4218,8 +3607,6 @@ CONFIG_SYSFS=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
 CONFIG_CONFIGFS_FS=m
 CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ADFS_FS is not set
 CONFIG_CONFIGFS_FS=m
 CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ADFS_FS is not set
@@ -4243,6 +3630,7 @@ CONFIG_PSTORE=y
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
 # CONFIG_EXOFS_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
 # CONFIG_EXOFS_FS is not set
+CONFIG_ORE=m
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
@@ -4368,7 +3756,6 @@ CONFIG_HEADERS_CHECK=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_SHIRQ=y
 CONFIG_LOCKUP_DETECTOR=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_SHIRQ=y
 CONFIG_LOCKUP_DETECTOR=y
-CONFIG_HARDLOCKUP_DETECTOR=y
 # CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 # CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
@@ -4394,11 +3781,9 @@ CONFIG_TIMER_STATS=y
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_VM is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_VIRTUAL is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
 CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_LIST=y
 # CONFIG_DEBUG_WRITECOUNT is not set
 CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_LIST=y
@@ -4406,34 +3791,24 @@ CONFIG_DEBUG_LIST=y
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
 CONFIG_BOOT_PRINTK_DELAY=y
 # CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_FRAME_POINTER=y
 CONFIG_BOOT_PRINTK_DELAY=y
 # CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
 # CONFIG_LKDTM is not set
 # CONFIG_LKDTM is not set
-# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
 # CONFIG_FAULT_INJECTION is not set
 CONFIG_SYSCTL_SYSCALL_CHECK=y
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_FAULT_INJECTION is not set
 CONFIG_SYSCTL_SYSCALL_CHECK=y
 # CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_USER_STACKTRACE_SUPPORT=y
 CONFIG_NOP_TRACER=y
 CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FTRACE_NMI_ENTER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_C_RECORDMCOUNT=y
 CONFIG_TRACER_MAX_TRACE=y
 CONFIG_RING_BUFFER=y
 CONFIG_HAVE_C_RECORDMCOUNT=y
 CONFIG_TRACER_MAX_TRACE=y
 CONFIG_RING_BUFFER=y
-CONFIG_FTRACE_NMI_ENTER=y
 CONFIG_EVENT_TRACING=y
 CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
 CONFIG_CONTEXT_SWITCH_TRACER=y
 CONFIG_EVENT_TRACING=y
 CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
 CONFIG_CONTEXT_SWITCH_TRACER=y
@@ -4444,7 +3819,6 @@ CONFIG_FTRACE=y
 CONFIG_FUNCTION_TRACER=y
 # CONFIG_IRQSOFF_TRACER is not set
 CONFIG_SCHED_TRACER=y
 CONFIG_FUNCTION_TRACER=y
 # CONFIG_IRQSOFF_TRACER is not set
 CONFIG_SCHED_TRACER=y
-CONFIG_FTRACE_SYSCALLS=y
 CONFIG_BRANCH_PROFILE_NONE=y
 # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
 # CONFIG_PROFILE_ALL_BRANCHES is not set
 CONFIG_BRANCH_PROFILE_NONE=y
 # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
 # CONFIG_PROFILE_ALL_BRANCHES is not set
@@ -4454,9 +3828,7 @@ CONFIG_DYNAMIC_FTRACE=y
 CONFIG_FUNCTION_PROFILER=y
 CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
 CONFIG_FUNCTION_PROFILER=y
 CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
-# CONFIG_MMIOTRACE is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 CONFIG_RING_BUFFER_BENCHMARK=m
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
 # CONFIG_BUILD_DOCSRC is not set
 CONFIG_DYNAMIC_DEBUG=y
 # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
 # CONFIG_BUILD_DOCSRC is not set
 CONFIG_DYNAMIC_DEBUG=y
@@ -4466,31 +3838,8 @@ CONFIG_ASYNC_RAID6_TEST=m
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
-CONFIG_HAVE_ARCH_KMEMCHECK=y
 # CONFIG_TEST_KSTRTOX is not set
 CONFIG_STRICT_DEVMEM=y
 # CONFIG_TEST_KSTRTOX is not set
 CONFIG_STRICT_DEVMEM=y
-CONFIG_X86_VERBOSE_BOOTUP=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EARLY_PRINTK_DBGP is not set
-CONFIG_DEBUG_STACKOVERFLOW=y
-# CONFIG_X86_PTDUMP is not set
-CONFIG_DEBUG_NX_TEST=m
-CONFIG_DOUBLEFAULT=y
-# CONFIG_IOMMU_STRESS is not set
-CONFIG_HAVE_MMIOTRACE_SUPPORT=y
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-CONFIG_DEBUG_BOOT_PARAMS=y
-# CONFIG_CPA_DEBUG is not set
-CONFIG_OPTIMIZE_INLINING=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
 
 #
 # Security options
 
 #
 # Security options
@@ -4506,11 +3855,9 @@ CONFIG_GRKERNSEC_HIGH=y
 # CONFIG_GRKERNSEC_CUSTOM is not set
 
 #
 # CONFIG_GRKERNSEC_CUSTOM is not set
 
 #
-# Address Space Protection
+# Memory Protections
 #
 CONFIG_GRKERNSEC_KMEM=y
 #
 CONFIG_GRKERNSEC_KMEM=y
-CONFIG_GRKERNSEC_VM86=y
-# CONFIG_GRKERNSEC_IO is not set
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
 CONFIG_GRKERNSEC_BRUTE=y
 CONFIG_GRKERNSEC_MODHARDEN=y
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
 CONFIG_GRKERNSEC_BRUTE=y
 CONFIG_GRKERNSEC_MODHARDEN=y
@@ -4574,6 +3921,8 @@ CONFIG_GRKERNSEC_AUDIT_TEXTREL=y
 #
 CONFIG_GRKERNSEC_DMESG=y
 CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 #
 CONFIG_GRKERNSEC_DMESG=y
 CONFIG_GRKERNSEC_HARDEN_PTRACE=y
+CONFIG_GRKERNSEC_PTRACE_READEXEC=y
+CONFIG_GRKERNSEC_SETXID=y
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
@@ -4598,7 +3947,6 @@ CONFIG_GRKERNSEC_FLOODBURST=6
 #
 # PaX
 #
 #
 # PaX
 #
-CONFIG_ARCH_TRACK_EXEC_LIMIT=y
 CONFIG_PAX=y
 
 #
 CONFIG_PAX=y
 
 #
@@ -4607,6 +3955,7 @@ CONFIG_PAX=y
 # CONFIG_PAX_SOFTMODE is not set
 CONFIG_PAX_EI_PAX=y
 CONFIG_PAX_PT_PAX_FLAGS=y
 # CONFIG_PAX_SOFTMODE is not set
 CONFIG_PAX_EI_PAX=y
 CONFIG_PAX_PT_PAX_FLAGS=y
+# CONFIG_PAX_XATTR_PAX_FLAGS is not set
 # CONFIG_PAX_NO_ACL_FLAGS is not set
 CONFIG_PAX_HAVE_ACL_FLAGS=y
 # CONFIG_PAX_HOOK_ACL_FLAGS is not set
 # CONFIG_PAX_NO_ACL_FLAGS is not set
 CONFIG_PAX_HAVE_ACL_FLAGS=y
 # CONFIG_PAX_HOOK_ACL_FLAGS is not set
@@ -4616,31 +3965,25 @@ CONFIG_PAX_HAVE_ACL_FLAGS=y
 #
 CONFIG_PAX_NOEXEC=y
 CONFIG_PAX_PAGEEXEC=y
 #
 CONFIG_PAX_NOEXEC=y
 CONFIG_PAX_PAGEEXEC=y
-CONFIG_PAX_SEGMEXEC=y
-CONFIG_PAX_EMUTRAMP=y
 CONFIG_PAX_MPROTECT=y
 # CONFIG_PAX_MPROTECT_COMPAT is not set
 CONFIG_PAX_ELFRELOCS=y
 CONFIG_PAX_MPROTECT=y
 # CONFIG_PAX_MPROTECT_COMPAT is not set
 CONFIG_PAX_ELFRELOCS=y
-CONFIG_PAX_KERNEXEC=y
-CONFIG_PAX_KERNEXEC_MODULE_TEXT=4
+CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
 
 #
 # Address Space Layout Randomization
 #
 CONFIG_PAX_ASLR=y
 
 #
 # Address Space Layout Randomization
 #
 CONFIG_PAX_ASLR=y
-CONFIG_PAX_RANDKSTACK=y
 CONFIG_PAX_RANDUSTACK=y
 CONFIG_PAX_RANDMMAP=y
 
 #
 # Miscellaneous hardening features
 #
 CONFIG_PAX_RANDUSTACK=y
 CONFIG_PAX_RANDMMAP=y
 
 #
 # Miscellaneous hardening features
 #
-CONFIG_PAX_MEMORY_SANITIZE=y
-CONFIG_PAX_MEMORY_STACKLEAK=y
-CONFIG_PAX_MEMORY_UDEREF=y
-CONFIG_PAX_REFCOUNT=y
 CONFIG_PAX_USERCOPY=y
 CONFIG_PAX_USERCOPY=y
+# CONFIG_PAX_SIZE_OVERFLOW is not set
 CONFIG_KEYS=y
 CONFIG_KEYS=y
+# CONFIG_ENCRYPTED_KEYS is not set
 CONFIG_KEYS_DEBUG_PROC_KEYS=y
 CONFIG_SECURITY_DMESG_RESTRICT=y
 CONFIG_SECURITY=y
 CONFIG_KEYS_DEBUG_PROC_KEYS=y
 CONFIG_SECURITY_DMESG_RESTRICT=y
 CONFIG_SECURITY=y
@@ -4648,8 +3991,6 @@ CONFIG_SECURITYFS=y
 CONFIG_SECURITY_NETWORK=y
 CONFIG_SECURITY_NETWORK_XFRM=y
 # CONFIG_SECURITY_PATH is not set
 CONFIG_SECURITY_NETWORK=y
 CONFIG_SECURITY_NETWORK_XFRM=y
 # CONFIG_SECURITY_PATH is not set
-CONFIG_INTEL_TXT=y
-CONFIG_LSM_MMAP_MIN_ADDR=65536
 CONFIG_SECURITY_SELINUX=y
 CONFIG_SECURITY_SELINUX_BOOTPARAM=y
 CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
 CONFIG_SECURITY_SELINUX=y
 CONFIG_SECURITY_SELINUX_BOOTPARAM=y
 CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
@@ -4661,6 +4002,7 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
 # CONFIG_SECURITY_TOMOYO is not set
 # CONFIG_SECURITY_APPARMOR is not set
 # CONFIG_IMA is not set
 # CONFIG_SECURITY_TOMOYO is not set
 # CONFIG_SECURITY_APPARMOR is not set
 # CONFIG_IMA is not set
+# CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_SELINUX=y
 # CONFIG_DEFAULT_SECURITY_DAC is not set
 CONFIG_DEFAULT_SECURITY="selinux"
 CONFIG_DEFAULT_SECURITY_SELINUX=y
 # CONFIG_DEFAULT_SECURITY_DAC is not set
 CONFIG_DEFAULT_SECURITY="selinux"
@@ -4670,8 +4012,6 @@ CONFIG_ASYNC_MEMCPY=m
 CONFIG_ASYNC_XOR=m
 CONFIG_ASYNC_PQ=m
 CONFIG_ASYNC_RAID6_RECOV=m
 CONFIG_ASYNC_XOR=m
 CONFIG_ASYNC_PQ=m
 CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
-CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
 CONFIG_CRYPTO=y
 
 #
 CONFIG_CRYPTO=y
 
 #
@@ -4692,10 +4032,10 @@ CONFIG_CRYPTO_PCOMP=m
 CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
 CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_USER is not set
 # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
 CONFIG_CRYPTO_GF128MUL=m
 # CONFIG_CRYPTO_NULL is not set
 # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
 CONFIG_CRYPTO_GF128MUL=m
 # CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_PCRYPT=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
 CONFIG_CRYPTO_AUTHENC=m
@@ -4730,7 +4070,6 @@ CONFIG_CRYPTO_VMAC=m
 # Digest
 #
 CONFIG_CRYPTO_CRC32C=y
 # Digest
 #
 CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_CRC32C_INTEL=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=y
@@ -4749,11 +4088,10 @@ CONFIG_CRYPTO_WP512=m
 # Ciphers
 #
 CONFIG_CRYPTO_AES=y
 # Ciphers
 #
 CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_AES_586=y
-CONFIG_CRYPTO_AES_NI_INTEL=y
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=m
 CONFIG_CRYPTO_CAMELLIA=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
 CONFIG_CRYPTO_CAMELLIA=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
@@ -4761,13 +4099,11 @@ CONFIG_CRYPTO_DES=m
 CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
 CONFIG_CRYPTO_SALSA20=m
 CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
 CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SALSA20_586=m
 CONFIG_CRYPTO_SEED=m
 CONFIG_CRYPTO_SERPENT=m
 CONFIG_CRYPTO_TEA=m
 CONFIG_CRYPTO_TWOFISH=m
 CONFIG_CRYPTO_TWOFISH_COMMON=m
 CONFIG_CRYPTO_SEED=m
 CONFIG_CRYPTO_SERPENT=m
 CONFIG_CRYPTO_TEA=m
 CONFIG_CRYPTO_TWOFISH=m
 CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_TWOFISH_586=m
 
 #
 # Compression
 
 #
 # Compression
@@ -4784,25 +4120,6 @@ CONFIG_CRYPTO_USER_API=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
 CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_PADLOCK=m
-CONFIG_CRYPTO_DEV_PADLOCK_AES=m
-CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-CONFIG_CRYPTO_DEV_GEODE=m
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_KVM_IRQCHIP=y
-CONFIG_HAVE_KVM_EVENTFD=y
-CONFIG_KVM_APIC_ARCHITECTURE=y
-CONFIG_KVM_MMIO=y
-CONFIG_KVM_ASYNC_PF=y
-CONFIG_VIRTUALIZATION=y
-CONFIG_KVM=m
-CONFIG_KVM_INTEL=m
-CONFIG_KVM_AMD=m
-CONFIG_KVM_MMU_AUDIT=y
-CONFIG_VHOST_NET=m
-# CONFIG_LGUEST is not set
 CONFIG_BINARY_PRINTF=y
 
 #
 CONFIG_BINARY_PRINTF=y
 
 #
@@ -4810,7 +4127,6 @@ CONFIG_BINARY_PRINTF=y
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_CRC_CCITT=m
 CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=m
 CONFIG_CRC_CCITT=m
 CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=m
@@ -4819,7 +4135,6 @@ CONFIG_CRC32=y
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
-CONFIG_AUDIT_GENERIC=y
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
 CONFIG_LZO_COMPRESS=y
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
 CONFIG_LZO_COMPRESS=y
@@ -4838,7 +4153,6 @@ CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
-CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
@@ -4847,8 +4161,6 @@ CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
 CONFIG_CHECK_SIGNATURE=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
 CONFIG_CHECK_SIGNATURE=y
-CONFIG_CPU_RMAP=y
 CONFIG_NLATTR=y
 CONFIG_AVERAGE=y
 CONFIG_CORDIC=m
 CONFIG_NLATTR=y
 CONFIG_AVERAGE=y
 CONFIG_CORDIC=m
-CONFIG_LLIST=y
diff --git a/kernel/config-i686-default b/kernel/config-i686-default
new file mode 100644 (file)
index 0000000..5a4ba8f
--- /dev/null
@@ -0,0 +1,298 @@
+# CONFIG_64BIT is not set
+CONFIG_X86_32=y
+# CONFIG_X86_64 is not set
+CONFIG_OUTPUT_FORMAT="elf32-i386"
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
+# CONFIG_GENERIC_TIME_VSYSCALL is not set
+# CONFIG_ZONE_DMA32 is not set
+# CONFIG_AUDIT_ARCH is not set
+CONFIG_X86_32_SMP=y
+CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
+CONFIG_KTIME_SCALAR=y
+
+#
+# RCU Subsystem
+#
+CONFIG_RCU_FANOUT=32
+
+#
+# GCOV-based kernel profiling
+#
+CONFIG_LBDAF=y
+
+#
+# Processor type and features
+#
+CONFIG_X86_BIGSMP=y
+# CONFIG_X86_WANT_INTEL_MID is not set
+# CONFIG_X86_RDC321X is not set
+CONFIG_X86_32_NON_STANDARD=y
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_ES7000 is not set
+CONFIG_X86_32_IRIS=m
+# CONFIG_LGUEST_GUEST is not set
+CONFIG_X86_CYCLONE_TIMER=y
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+CONFIG_M686=y
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MELAN is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+# CONFIG_X86_PPRO_FENCE is not set
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=5
+CONFIG_CPU_SUP_CYRIX_32=y
+CONFIG_CPU_SUP_TRANSMETA_32=y
+CONFIG_CPU_SUP_UMC_32=y
+CONFIG_NR_CPUS=32
+# CONFIG_X86_ANCIENT_MCE is not set
+CONFIG_VM86=y
+CONFIG_TOSHIBA=m
+# CONFIG_X86_REBOOTFIXUPS is not set
+# CONFIG_NOHIGHMEM is not set
+# CONFIG_HIGHMEM4G is not set
+CONFIG_HIGHMEM64G=y
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_HIGHMEM=y
+CONFIG_X86_PAE=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ILLEGAL_POINTER_VALUE=0
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_SPARSEMEM_STATIC=y
+CONFIG_HIGHPTE=y
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_KEXEC_JUMP is not set
+CONFIG_PHYSICAL_START=0x400000
+CONFIG_X86_NEED_RELOCS=y
+CONFIG_PHYSICAL_ALIGN=0x400000
+
+#
+# Power management and ACPI options
+#
+CONFIG_ACPI_BLACKLIST_YEAR=1999
+CONFIG_X86_APM_BOOT=y
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+# CONFIG_APM_DO_ENABLE is not set
+CONFIG_APM_CPU_IDLE=y
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_ALLOW_INTS is not set
+
+#
+# x86 CPU frequency scaling drivers
+#
+# CONFIG_X86_POWERNOW_K6 is not set
+CONFIG_X86_POWERNOW_K7=y
+CONFIG_X86_POWERNOW_K7_ACPI=y
+# CONFIG_X86_GX_SUSPMOD is not set
+CONFIG_X86_SPEEDSTEP_ICH=y
+CONFIG_X86_SPEEDSTEP_SMI=y
+# CONFIG_X86_CPUFREQ_NFORCE2 is not set
+CONFIG_X86_LONGRUN=y
+# CONFIG_X86_LONGHAUL is not set
+# CONFIG_X86_E_POWERSAVER is not set
+
+#
+# shared options
+#
+# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
+
+#
+# Bus options (PCI etc.)
+#
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+# CONFIG_ISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
+# CONFIG_ALIX is not set
+
+#
+# PC-card bridges
+#
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_IBM is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+
+#
+# Protocols
+#
+CONFIG_IBM_ASM=m
+# CONFIG_SGI_IOC4 is not set
+CONFIG_CS5535_MFGPT=m
+CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
+CONFIG_CS5535_CLOCK_EVENT_SRC=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_FLASHPOINT is not set
+# CONFIG_SCSI_NSP32 is not set
+
+#
+# PATA SFF controllers with BMDMA
+#
+# CONFIG_PATA_CS5535 is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_WISTRON_BTNS is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_HW_RANDOM_GEODE=m
+CONFIG_SONYPI=m
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+CONFIG_SCx200_ACB=m
+
+#
+# PCI GPIO expanders:
+#
+# CONFIG_GPIO_LANGWELL is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_GEODE_WDT=m
+# CONFIG_SBC7240_WDT is not set
+
+#
+# Customize TV tuners
+#
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
+
+#
+# Miscelaneous helper chips
+#
+CONFIG_VIDEO_CAFE_CCIC=m
+
+#
+# Graphics support
+#
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+# CONFIG_AGP_NVIDIA is not set
+# CONFIG_AGP_SWORKS is not set
+# CONFIG_AGP_EFFICEON is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_I810 is not set
+
+#
+# Console display driver support
+#
+# CONFIG_SND_SIS7019 is not set
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_AMD76X is not set
+# CONFIG_EDAC_E7XXX is not set
+# CONFIG_EDAC_I82875P is not set
+# CONFIG_EDAC_I82860 is not set
+# CONFIG_EDAC_R82600 is not set
+
+#
+# Speakup console speech
+#
+CONFIG_TC1100_WMI=m
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_CLKSRC_I8253=y
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_HIGHMEM is not set
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
+CONFIG_DOUBLEFAULT=y
+
+#
+# Memory Protections
+#
+CONFIG_GRKERNSEC_VM86=y
+
+#
+# PaX
+#
+CONFIG_ARCH_TRACK_EXEC_LIMIT=y
+
+#
+# Non-executable pages
+#
+CONFIG_PAX_SEGMEXEC=y
+
+#
+# Miscellaneous hardening features
+#
+# CONFIG_INTEL_TXT is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES_586=y
+# CONFIG_CRYPTO_SALSA20_586 is not set
+CONFIG_CRYPTO_TWOFISH_586=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_DEV_GEODE=m
+# CONFIG_LGUEST is not set
+
+#
+# Library routines
+#
+CONFIG_AUDIT_GENERIC=y
diff --git a/kernel/config-i686-legacy b/kernel/config-i686-legacy
new file mode 100644 (file)
index 0000000..6f03829
--- /dev/null
@@ -0,0 +1,118 @@
+
+#
+# Processor type and features
+#
+# CONFIG_XEN_PRIVILEGED_GUEST is not set
+# CONFIG_IOMMU_HELPER is not set
+CONFIG_HIGHMEM4G=y
+# CONFIG_HIGHMEM64G is not set
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+
+#
+# Bus options (PCI etc.)
+#
+# CONFIG_PCI_GOOLPC is not set
+CONFIG_PCI_OLPC=y
+CONFIG_OLPC=y
+CONFIG_OLPC_XO1_PM=y
+CONFIG_OLPC_XO1_RTC=y
+CONFIG_OLPC_XO1_SCI=y
+CONFIG_OLPC_XO15_SCI=y
+
+#
+# Generic Driver Options
+#
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_OF=y
+
+#
+# Device Tree and Open Firmware support
+#
+CONFIG_PROC_DEVICETREE=y
+CONFIG_OF_PROMTREE=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_DEVICE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_I2C=m
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_PCI=y
+CONFIG_OF_PCI_IRQ=y
+
+#
+# Input Device Drivers
+#
+CONFIG_MOUSE_PS2_OLPC=y
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250_DW is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_OF_PLATFORM=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_PXA=m
+CONFIG_I2C_PXA_PCI=y
+
+#
+# PCI GPIO expanders:
+#
+CONFIG_GPIO_CS5535=y
+
+#
+# 1-wire Slaves
+#
+CONFIG_BATTERY_OLPC=y
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=y
+
+#
+# Graphics support
+#
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+CONFIG_FB_SYS_FOPS=m
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_NET5501 is not set
+
+#
+# Virtio drivers
+#
+# CONFIG_FB_OLPC_DCON is not set
+
+#
+# Speakup console speech
+#
+CONFIG_XO1_RFKILL=m
+
+#
+# Non-executable pages
+#
+CONFIG_PAX_KERNEXEC=y
+CONFIG_PAX_KERNEXEC_MODULE_TEXT=4
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_PAX_MEMORY_UDEREF=y
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
diff --git a/kernel/config-x86-generic b/kernel/config-x86-generic
new file mode 100644 (file)
index 0000000..224fd52
--- /dev/null
@@ -0,0 +1,833 @@
+CONFIG_X86=y
+CONFIG_INSTRUCTION_DECODER=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_ZONE_DMA=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_X86_HT=y
+CONFIG_ARCH_CPU_PROBE_RELEASE=y
+
+#
+# General setup
+#
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_XZ=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_WATCH=y
+CONFIG_AUDIT_TREE=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_IRQ_FORCED_THREADING=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_RCU_FANOUT_EXACT is not set
+CONFIG_RCU_FAST_NO_HZ=y
+CONFIG_PCSPKR_PLATFORM=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_JUMP_LABEL=y
+CONFIG_USER_RETURN_NOTIFIER=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
+
+#
+# GCOV-based kernel profiling
+#
+CONFIG_STOP_MACHINE=y
+
+#
+# IO Schedulers
+#
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_PADATA=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+
+#
+# Processor type and features
+#
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_SMP=y
+CONFIG_X86_MPPARSE=y
+CONFIG_X86_EXTENDED_PLATFORM=y
+CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+CONFIG_PARAVIRT_GUEST=y
+CONFIG_PARAVIRT_TIME_ACCOUNTING=y
+CONFIG_XEN=y
+CONFIG_XEN_DOM0=y
+CONFIG_XEN_PRIVILEGED_GUEST=y
+CONFIG_XEN_PVHVM=y
+CONFIG_XEN_MAX_DOMAIN_MEMORY=128
+CONFIG_XEN_SAVE_RESTORE=y
+CONFIG_XEN_DEBUG_FS=y
+CONFIG_KVM_CLOCK=y
+CONFIG_KVM_GUEST=y
+CONFIG_PARAVIRT=y
+# CONFIG_PARAVIRT_SPINLOCKS is not set
+CONFIG_PARAVIRT_CLOCK=y
+# CONFIG_PARAVIRT_DEBUG is not set
+CONFIG_NO_BOOTMEM=y
+# CONFIG_MEMTEST is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
+CONFIG_X86_CMPXCHG=y
+CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_XADD=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR=y
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_X86_MCE_THRESHOLD=y
+# CONFIG_X86_MCE_INJECT is not set
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_I8K=m
+CONFIG_MICROCODE=m
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=y
+CONFIG_X86_CPUID=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_MMU_NOTIFIER=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_MEMORY_FAILURE=y
+# CONFIG_HWPOISON_INJECT is not set
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
+# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+CONFIG_X86_RESERVE_LOW=64
+CONFIG_MTRR=y
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+CONFIG_X86_PAT=y
+CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_ARCH_RANDOM=y
+CONFIG_EFI=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+CONFIG_HZ_300=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=300
+CONFIG_SCHED_HRTICK=y
+CONFIG_RELOCATABLE=y
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_HIBERNATE_CALLBACKS=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION=""
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_PROCFS=y
+# CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_EC_DEBUGFS=m
+# CONFIG_ACPI_PROC_EVENT is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_FAN=y
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_IPMI=m
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_PCI_SLOT=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_SBS=m
+CONFIG_ACPI_HED=y
+CONFIG_ACPI_CUSTOM_METHOD=m
+CONFIG_ACPI_APEI=y
+CONFIG_ACPI_APEI_GHES=y
+CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
+# CONFIG_ACPI_APEI_EINJ is not set
+# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_SFI=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+
+#
+# x86 CPU frequency scaling drivers
+#
+CONFIG_X86_PCC_CPUFREQ=y
+CONFIG_X86_ACPI_CPUFREQ=y
+CONFIG_X86_POWERNOW_K8=y
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+CONFIG_X86_P4_CLOCKMOD=y
+
+#
+# shared options
+#
+CONFIG_X86_SPEEDSTEP_LIB=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+CONFIG_INTEL_IDLE=y
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_XEN=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCI_CNB20LE_QUIRK is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=y
+CONFIG_PCIEAER=y
+CONFIG_PCIE_ECRC=y
+CONFIG_PCIEAER_INJECT=m
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEBUG is not set
+CONFIG_PCIE_PME=y
+CONFIG_ARCH_SUPPORTS_MSI=y
+CONFIG_PCI_MSI=y
+CONFIG_XEN_PCIDEV_FRONTEND=m
+CONFIG_HT_IRQ=y
+CONFIG_PCI_IOAPIC=y
+CONFIG_PCI_LABEL=y
+CONFIG_ISA_DMA_API=y
+CONFIG_AMD_NB=y
+
+#
+# PC-card bridges
+#
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_RAPIDIO is not set
+
+#
+# Classification
+#
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_XPS=y
+
+#
+# Generic Driver Options
+#
+CONFIG_SYS_HYPERVISOR=y
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG_MESSAGES is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV_FD=m
+CONFIG_XEN_BLKDEV_FRONTEND=m
+CONFIG_XEN_BLKDEV_BACKEND=m
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_SENSORS_LIS3LV02D=m
+CONFIG_VMWARE_BALLOON=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_BUSLOGIC=m
+CONFIG_VMWARE_PVSCSI=m
+CONFIG_FCOE_FNIC=m
+CONFIG_SCSI_EATA=m
+CONFIG_SCSI_EATA_TAGGED_QUEUE=y
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_ISCI=m
+CONFIG_ATA_ACPI=y
+
+#
+# Generic fallback / legacy drivers
+#
+CONFIG_PATA_ACPI=m
+# CONFIG_MULTICORE_RAID456 is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
+CONFIG_MACINTOSH_DRIVERS=y
+# CONFIG_MAC_EMUMOUSEBTN is not set
+CONFIG_SUNGEM_PHY=m
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+
+#
+# CAIF transport drivers
+#
+CONFIG_IGB_DCA=y
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGBEVF=m
+# CONFIG_ZNET is not set
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_MYRI10GE_DCA=y
+CONFIG_ATP=m
+CONFIG_SUNGEM=m
+# CONFIG_NET_SB1000 is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_AIRO=m
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+CONFIG_XEN_NETDEV_FRONTEND=m
+CONFIG_XEN_NETDEV_BACKEND=m
+
+#
+# Input Device Drivers
+#
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_ATLAS_BTNS=m
+CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_CT82C710 is not set
+
+#
+# Character devices
+#
+CONFIG_SYNCLINK=m
+
+#
+# Serial drivers
+#
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PNP=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_HVC_IRQ=y
+CONFIG_HVC_XEN=y
+# CONFIG_VIRTIO_CONSOLE is not set
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_VIA=m
+CONFIG_MWAVE=m
+CONFIG_HPET=y
+# CONFIG_HPET_MMAP is not set
+CONFIG_HANGCHECK_TIMER=m
+# CONFIG_TELCLOCK is not set
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_NFORCE2_S4985=m
+
+#
+# ACPI drivers
+#
+CONFIG_I2C_SCMI=m
+
+#
+# Memory mapped GPIO drivers:
+#
+CONFIG_GPIO_SCH=m
+
+#
+# PCI GPIO expanders:
+#
+# CONFIG_GPIO_CS5535 is not set
+# CONFIG_GPIO_PCH is not set
+
+#
+# Native drivers
+#
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_K10TEMP=m
+CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_CORETEMP=m
+CONFIG_SENSORS_VIA_CPUTEMP=m
+CONFIG_SENSORS_APPLESMC=m
+
+#
+# ACPI drivers
+#
+CONFIG_SENSORS_ACPI_POWER=m
+CONFIG_SENSORS_ATK0110=m
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
+CONFIG_ALIM1535_WDT=m
+CONFIG_F71808E_WDT=m
+CONFIG_SP5100_TCO=m
+# CONFIG_SC520_WDT is not set
+CONFIG_SBC_FITPC2_WATCHDOG=m
+# CONFIG_EUROTECH_WDT is not set
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+# CONFIG_WAFER_WDT is not set
+CONFIG_I6300ESB_WDT=m
+CONFIG_ITCO_WDT=m
+# CONFIG_ITCO_VENDOR_SUPPORT is not set
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_HP_WATCHDOG=m
+CONFIG_HPWDT_NMI_DECODING=y
+# CONFIG_SC1200_WDT is not set
+# CONFIG_PC87413_WDT is not set
+CONFIG_NV_TCO=m
+# CONFIG_60XX_WDT is not set
+# CONFIG_SBC8360_WDT is not set
+# CONFIG_CPU5_WDT is not set
+CONFIG_SMSC_SCH311X_WDT=m
+# CONFIG_SMSC37B787_WDT is not set
+CONFIG_W83627HF_WDT=m
+CONFIG_W83697HF_WDT=m
+CONFIG_W83697UG_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
+CONFIG_XEN_WDT=m
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CS5535=m
+
+#
+# Multimedia drivers
+#
+CONFIG_IR_ENE=m
+CONFIG_IR_ITE_CIR=m
+CONFIG_IR_FINTEK=m
+CONFIG_IR_NUVOTON=m
+CONFIG_IR_WINBOND_CIR=m
+
+#
+# Miscelaneous helper chips
+#
+CONFIG_VIDEO_MEYE=m
+CONFIG_VIDEO_VIA_CAMERA=m
+
+#
+# Graphics support
+#
+CONFIG_AGP=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+CONFIG_AGP_SIS=y
+CONFIG_AGP_VIA=y
+CONFIG_VGA_SWITCHEROO=y
+CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_RADEON_KMS=y
+CONFIG_DRM_I810=m
+CONFIG_DRM_I915=m
+CONFIG_DRM_I915_KMS=y
+CONFIG_DRM_SIS=m
+CONFIG_FB_BOOT_VESA_SUPPORT=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+CONFIG_FB_SYS_FOPS=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_ARC is not set
+CONFIG_FB_VGA16=m
+CONFIG_FB_VESA=y
+CONFIG_FB_EFI=y
+# CONFIG_FB_N411 is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_LE80578 is not set
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+CONFIG_FB_RADEON_BACKLIGHT=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_SAVAGE=m
+CONFIG_FB_SAVAGE_I2C=y
+CONFIG_FB_SAVAGE_ACCEL=y
+CONFIG_FB_VIA=m
+# CONFIG_FB_VIA_DIRECT_PROCFS is not set
+CONFIG_FB_VIA_X_COMPATIBILITY=y
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_LX=y
+CONFIG_FB_GEODE_GX=y
+# CONFIG_FB_GEODE_GX1 is not set
+CONFIG_XEN_FBDEV_FRONTEND=y
+CONFIG_BACKLIGHT_PROGEAR=m
+CONFIG_BACKLIGHT_APPLE=m
+# CONFIG_BACKLIGHT_SAHARA is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_VGACON_SOFT_SCROLLBACK=y
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=128
+CONFIG_SND_DMA_SGBUF=y
+CONFIG_SND_PCSP=m
+CONFIG_SND_SB_COMMON=m
+CONFIG_SND_SB16_DSP=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ASIHPI=m
+CONFIG_SND_CS5530=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_US122L=m
+# CONFIG_SND_SOC is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_WBSD=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_CLEVO_MAIL=m
+CONFIG_LEDS_INTEL_SS4200=m
+CONFIG_LEDS_DELL_NETBOOKS=m
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_EDAC=y
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=m
+CONFIG_EDAC_MCE_INJ=m
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_E752X=m
+CONFIG_EDAC_I82975X=m
+CONFIG_EDAC_I3000=m
+CONFIG_EDAC_I3200=m
+CONFIG_EDAC_X38=m
+CONFIG_EDAC_I5400=m
+CONFIG_EDAC_I7CORE=m
+CONFIG_EDAC_I5000=m
+CONFIG_EDAC_I5100=m
+CONFIG_EDAC_I7300=m
+
+#
+# DMA Devices
+#
+# CONFIG_INTEL_MID_DMAC is not set
+CONFIG_INTEL_IOATDMA=m
+CONFIG_PCH_DMA=m
+
+#
+# DMA Clients
+#
+CONFIG_DCA=m
+
+#
+# Xen driver support
+#
+CONFIG_XEN_BALLOON=y
+CONFIG_XEN_SELFBALLOONING=y
+CONFIG_XEN_SCRUB_PAGES=y
+CONFIG_XEN_DEV_EVTCHN=m
+CONFIG_XEN_BACKEND=y
+CONFIG_XENFS=m
+CONFIG_XEN_COMPAT_XENFS=y
+CONFIG_XEN_SYS_HYPERVISOR=y
+CONFIG_XEN_XENBUS_FRONTEND=y
+CONFIG_XEN_GNTDEV=m
+CONFIG_XEN_GRANT_DEV_ALLOC=m
+CONFIG_SWIOTLB_XEN=y
+CONFIG_XEN_TMEM=y
+CONFIG_XEN_PCIDEV_BACKEND=m
+# CONFIG_SLICOSS is not set
+# CONFIG_COMEDI is not set
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_NOUVEAU_DEBUG=y
+
+#
+# I2C encoder or helper chips
+#
+# CONFIG_DRM_I2C_CH7006 is not set
+# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_ACPI_QUICKSTART is not set
+
+#
+# Speakup console speech
+#
+# CONFIG_DRM_PSB is not set
+# CONFIG_INTEL_MEI is not set
+CONFIG_X86_PLATFORM_DEVICES=y
+CONFIG_ACER_WMI=m
+CONFIG_ACERHDF=m
+CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_WMI=m
+CONFIG_DELL_WMI_AIO=m
+CONFIG_FUJITSU_LAPTOP=m
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+CONFIG_HP_ACCEL=m
+CONFIG_HP_WMI=m
+CONFIG_MSI_LAPTOP=m
+CONFIG_PANASONIC_LAPTOP=m
+CONFIG_COMPAL_LAPTOP=m
+CONFIG_SONY_LAPTOP=m
+CONFIG_SONYPI_COMPAT=y
+CONFIG_IDEAPAD_LAPTOP=m
+CONFIG_THINKPAD_ACPI=m
+CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_SENSORS_HDAPS=m
+# CONFIG_INTEL_MENLOW is not set
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ASUS_WMI=m
+CONFIG_ASUS_NB_WMI=m
+CONFIG_EEEPC_WMI=m
+CONFIG_ACPI_WMI=m
+CONFIG_MSI_WMI=m
+# CONFIG_ACPI_ASUS is not set
+CONFIG_TOPSTAR_LAPTOP=m
+CONFIG_ACPI_TOSHIBA=m
+CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_ACPI_CMPC=m
+CONFIG_INTEL_IPS=m
+# CONFIG_IBM_RTL is not set
+# CONFIG_XO15_EBOOK is not set
+CONFIG_SAMSUNG_LAPTOP=m
+CONFIG_MXM_WMI=m
+CONFIG_INTEL_OAKTRAIL=m
+CONFIG_SAMSUNG_Q10=m
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+CONFIG_IOMMU_API=y
+CONFIG_DMAR_TABLE=y
+CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
+CONFIG_INTEL_IOMMU_FLOPPY_WA=y
+# CONFIG_HYPERV is not set
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+# CONFIG_EDD_OFF is not set
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_EFI_VARS=y
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+CONFIG_DMIID=y
+CONFIG_DMI_SYSFS=y
+CONFIG_ISCSI_IBFT_FIND=y
+CONFIG_ISCSI_IBFT=m
+# CONFIG_SIGMA is not set
+# CONFIG_GOOGLE_FIRMWARE is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+
+#
+# Kernel hacking
+#
+CONFIG_HARDLOCKUP_DETECTOR=y
+# CONFIG_DEBUG_VIRTUAL is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_FTRACE_NMI_ENTER=y
+CONFIG_FTRACE_SYSCALLS=y
+# CONFIG_MMIOTRACE is not set
+# CONFIG_X86_VERBOSE_BOOTUP is not set
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DBGP is not set
+CONFIG_DEBUG_STACKOVERFLOW=y
+# CONFIG_X86_PTDUMP is not set
+CONFIG_DEBUG_NX_TEST=m
+# CONFIG_IOMMU_STRESS is not set
+CONFIG_IO_DELAY_TYPE_0X80=0
+CONFIG_IO_DELAY_TYPE_0XED=1
+CONFIG_IO_DELAY_TYPE_UDELAY=2
+CONFIG_IO_DELAY_TYPE_NONE=3
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
+CONFIG_DEBUG_BOOT_PARAMS=y
+# CONFIG_CPA_DEBUG is not set
+CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
+
+#
+# Memory Protections
+#
+# CONFIG_GRKERNSEC_IO is not set
+
+#
+# Non-executable pages
+#
+CONFIG_PAX_EMUTRAMP=y
+
+#
+# Address Space Layout Randomization
+#
+CONFIG_PAX_RANDKSTACK=y
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_PAX_MEMORY_STACKLEAK=y
+CONFIG_PAX_REFCOUNT=y
+CONFIG_LSM_MMAP_MIN_ADDR=65536
+CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
+CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_PCRYPT=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C_INTEL=y
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES_NI_INTEL=y
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_KVM_APIC_ARCHITECTURE=y
+CONFIG_KVM_MMIO=y
+CONFIG_KVM_ASYNC_PF=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_KVM_AMD=m
+CONFIG_KVM_MMU_AUDIT=y
+CONFIG_VHOST_NET=m
+
+#
+# Library routines
+#
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_CPU_RMAP=y
diff --git a/kernel/config-x86_64-default b/kernel/config-x86_64-default
new file mode 100644 (file)
index 0000000..c6b9a49
--- /dev/null
@@ -0,0 +1,171 @@
+CONFIG_64BIT=y
+# CONFIG_X86_32 is not set
+CONFIG_X86_64=y
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_ZONE_DMA32=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_X86_64_SMP=y
+CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
+# CONFIG_KTIME_SCALAR is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_RCU_FANOUT=64
+
+#
+# GCOV-based kernel profiling
+#
+CONFIG_BLOCK_COMPAT=y
+
+#
+# Processor type and features
+#
+CONFIG_X86_X2APIC=y
+# CONFIG_X86_VSMP is not set
+# CONFIG_X86_UV is not set
+# CONFIG_MPSC is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=7
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_GART_IOMMU=y
+# CONFIG_CALGARY_IOMMU is not set
+# CONFIG_MAXSMP is not set
+CONFIG_NR_CPUS=64
+CONFIG_DIRECT_GBPAGES=y
+CONFIG_NUMA=y
+CONFIG_AMD_NUMA=y
+CONFIG_X86_64_ACPI_NUMA=y
+CONFIG_NODES_SPAN_OTHER_NODES=y
+# CONFIG_NUMA_EMU is not set
+CONFIG_NODES_SHIFT=9
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_NEED_MULTIPLE_NODES=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+# CONFIG_MEMORY_HOTPLUG is not set
+CONFIG_KEXEC_JUMP=y
+CONFIG_PHYSICAL_START=0x1000000
+CONFIG_PHYSICAL_ALIGN=0x1000000
+CONFIG_USE_PERCPU_NUMA_NODE_ID=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_ACPI_NUMA=y
+CONFIG_ACPI_BLACKLIST_YEAR=0
+
+#
+# Memory power savings
+#
+CONFIG_I7300_IDLE_IOAT_CHANNEL=y
+CONFIG_I7300_IDLE=m
+
+#
+# PC-card bridges
+#
+CONFIG_HOTPLUG_PCI_SHPC=m
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_COMPAT_BINFMT_ELF=y
+CONFIG_IA32_EMULATION=y
+# CONFIG_IA32_AOUT is not set
+CONFIG_COMPAT=y
+CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_KEYS_COMPAT=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+
+#
+# Classification
+#
+CONFIG_BPF_JIT=y
+
+#
+# Protocols
+#
+# CONFIG_IBM_ASM is not set
+CONFIG_SGI_IOC4=m
+# CONFIG_CS5535_MFGPT is not set
+
+#
+# PC SMBus host controller drivers
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+
+#
+# PCI GPIO expanders:
+#
+CONFIG_GPIO_LANGWELL=y
+
+#
+# Miscelaneous helper chips
+#
+# CONFIG_VIDEO_CAFE_CCIC is not set
+
+#
+# Reporting subsystems
+#
+CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
+CONFIG_EDAC_SBRIDGE=m
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_AMD_IOMMU=y
+CONFIG_AMD_IOMMU_STATS=y
+CONFIG_IRQ_REMAP=y
+
+#
+# File systems
+#
+CONFIG_QUOTACTL_COMPAT=y
+
+#
+# Kernel hacking
+#
+CONFIG_FUNCTION_GRAPH_TRACER=y
+CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
+# CONFIG_IOMMU_DEBUG is not set
+
+#
+# PaX
+#
+CONFIG_TASK_SIZE_MAX_SHIFT=47
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_INTEL_TXT=y
+
+#
+# Digest
+#
+CONFIG_CRYPTO_SHA1_SSSE3=m
+CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES_X86_64=y
+CONFIG_CRYPTO_BLOWFISH_X86_64=m
+CONFIG_CRYPTO_SALSA20_X86_64=m
+CONFIG_CRYPTO_TWOFISH_X86_64=m
+CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
diff --git a/kernel/config.armv5tel-versatile b/kernel/config.armv5tel-versatile
deleted file mode 100644 (file)
index bee5a61..0000000
+++ /dev/null
@@ -1,1449 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.1.1-2.ip3.armv5tel Kernel Configuration
-#
-CONFIG_ARM=y
-CONFIG_MIGHT_HAVE_PCI=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_SCHED_CLOCK=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_VECTORS_BASE=0xffff0000
-# CONFIG_ARM_PATCH_PHYS_VIRT is not set
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_KERNEL_GZIP=y
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_LZO is not set
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_FHANDLE is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_SHOW=y
-# CONFIG_SPARSE_IRQ is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_TINY_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-# CONFIG_SCHED_AUTOGROUP is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EXPERT is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-
-#
-# Kernel Performance Events And Counters
-#
-# CONFIG_PERF_EVENTS is not set
-# CONFIG_PERF_COUNTERS is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_COMPAT_BRK=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_PROFILING is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-
-#
-# GCOV-based kernel profiling
-#
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-CONFIG_BLK_DEV_BSG=y
-# CONFIG_BLK_DEV_BSGLIB is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-CONFIG_FREEZER=y
-
-#
-# System Type
-#
-CONFIG_MMU=y
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-CONFIG_ARCH_VERSATILE=y
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
-# CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_PRIMA2 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LPC32XX is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_NUC93X is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS4 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_TCC_926 is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_ZYNQ is not set
-
-#
-# System MMU
-#
-
-#
-# Versatile platform type
-#
-CONFIG_ARCH_VERSATILE_PB=y
-CONFIG_MACH_VERSATILE_AB=y
-# CONFIG_MACH_VERSATILE_DT is not set
-CONFIG_PLAT_VERSATILE_CLCD=y
-CONFIG_PLAT_VERSATILE_FPGA_IRQ=y
-CONFIG_PLAT_VERSATILE_SCHED_CLOCK=y
-CONFIG_PLAT_VERSATILE=y
-CONFIG_ARM_TIMER_SP804=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_ARM926T=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5TJ=y
-CONFIG_CPU_PABRT_LEGACY=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-CONFIG_CPU_USE_DOMAINS=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
-CONFIG_ARM_L1_CACHE_SHIFT=5
-CONFIG_ARM_VIC=y
-CONFIG_ARM_VIC_NR=2
-CONFIG_ICST=y
-
-#
-# Bus support
-#
-CONFIG_ARM_AMBA=y
-# CONFIG_PCI is not set
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-CONFIG_HAVE_ARCH_PFN_VALID=y
-# CONFIG_HIGHMEM is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=999999
-# CONFIG_COMPACTION is not set
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
-CONFIG_FORCE_MAX_ZONEORDER=11
-CONFIG_LEDS=y
-CONFIG_LEDS_CPU=y
-CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_SECCOMP is not set
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-
-#
-# Boot options
-#
-# CONFIG_USE_OF is not set
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=1f03 mem=32M"
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-# CONFIG_AUTO_ZRELADDR is not set
-
-#
-# CPU Power Management
-#
-# CONFIG_CPU_IDLE is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_VFP=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_PM_SLEEP=y
-# CONFIG_PM_RUNTIME is not set
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-# CONFIG_APM_EMULATION is not set
-CONFIG_PM_CLK=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-# CONFIG_IP_PNP_DHCP is not set
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE_DEMUX is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_LRO=y
-# CONFIG_INET_DIAG is not set
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_L2TP is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_NET_DSA is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_PHONET is not set
-# CONFIG_IEEE802154 is not set
-# CONFIG_NET_SCHED is not set
-# CONFIG_DCB is not set
-# CONFIG_BATMAN_ADV is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_WIRELESS=y
-# CONFIG_CFG80211 is not set
-# CONFIG_LIB80211 is not set
-
-#
-# CFG80211 needs to be enabled for MAC80211
-#
-# CONFIG_WIMAX is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_NFC is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-# CONFIG_DEVTMPFS is not set
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_SM_FTL is not set
-# CONFIG_MTD_OOPS is not set
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_GEOMETRY is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=y
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_PLATRAM is not set
-# CONFIG_MTD_PISMO is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-# CONFIG_BLK_DEV_LOOP is not set
-
-#
-# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
-#
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_BLK_DEV_RBD is not set
-# CONFIG_SENSORS_LIS3LV02D is not set
-# CONFIG_MISC_DEVICES is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCSI_NETLINK is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_VETH is not set
-CONFIG_MII=y
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-# CONFIG_AX88796 is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-# CONFIG_ETHOC is not set
-# CONFIG_SMC911X is not set
-# CONFIG_SMSC911X is not set
-# CONFIG_DNET is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-# CONFIG_B44 is not set
-# CONFIG_KS8851_MLL is not set
-# CONFIG_FTMAC100 is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_STMMAC_ETH is not set
-# CONFIG_FTGMAC100 is not set
-CONFIG_NETDEV_10000=y
-CONFIG_WLAN=y
-# CONFIG_HOSTAP is not set
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-# CONFIG_WAN is not set
-
-#
-# CAIF transport drivers
-#
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-# CONFIG_INPUT_SPARSEKMAP is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_MAX7359 is not set
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-# CONFIG_MOUSE_PS2_SENTELIC is not set
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_AMBAKMI=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=16
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_N_GSM is not set
-# CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_HVC_DCC is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_DESIGNWARE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_VERSATILE is not set
-# CONFIG_I2C_XILINX is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_SPI is not set
-
-#
-# PPS support
-#
-# CONFIG_PPS is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-
-#
-# Enable Device Drivers -> PPS to see the PTP clock options.
-#
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-# CONFIG_GPIOLIB is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_THERMAL is not set
-# CONFIG_WATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-# CONFIG_SSB is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-CONFIG_MFD_SUPPORT=y
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_REGULATOR is not set
-# CONFIG_MEDIA_SUPPORT is not set
-
-#
-# Graphics support
-#
-# CONFIG_DRM is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_WMT_GE_ROPS is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_ARMCLCD=y
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_BROADSHEET is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-CONFIG_FONT_ACORN_8x8=y
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-# CONFIG_LOGO is not set
-CONFIG_SOUND=y
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_VMASTER=y
-# CONFIG_SND_RAWMIDI_SEQ is not set
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_ALOOP is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-# CONFIG_SND_AC97_POWER_SAVE is not set
-CONFIG_SND_ARM=y
-CONFIG_SND_ARMAACI=m
-# CONFIG_SND_SOC is not set
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
-# CONFIG_HID_PID is not set
-
-#
-# Special HID drivers
-#
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_ARMMMCI=m
-# CONFIG_MMC_SDHCI is not set
-# CONFIG_MMC_SDHCI_PXAV3 is not set
-# CONFIG_MMC_SDHCI_PXAV2 is not set
-# CONFIG_MMC_DW is not set
-# CONFIG_MEMSTICK is not set
-# CONFIG_NEW_LEDS is not set
-# CONFIG_ACCESSIBILITY is not set
-CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_UIO is not set
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_STAGING is not set
-CONFIG_CLKDEV_LOOKUP=y
-CONFIG_HAVE_MACH_CLKDEV=y
-CONFIG_CLKSRC_MMIO=y
-CONFIG_IOMMU_SUPPORT=y
-# CONFIG_VIRT_DRIVERS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_EXT4_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-CONFIG_EXPORTFS=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_FANOTIFY is not set
-# CONFIG_QUOTA is not set
-# CONFIG_QUOTACTL is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_LOGFS is not set
-CONFIG_CRAMFS=y
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-CONFIG_ROMFS_FS=y
-CONFIG_ROMFS_BACKED_BY_BLOCK=y
-# CONFIG_ROMFS_BACKED_BY_MTD is not set
-# CONFIG_ROMFS_BACKED_BY_BOTH is not set
-CONFIG_ROMFS_ON_BLOCK=y
-# CONFIG_PSTORE is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-CONFIG_ROOT_NFS=y
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_CEPH_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=m
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=m
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-# CONFIG_DETECT_HUNG_TASK is not set
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_ENABLE_DEFAULT_TRACERS is not set
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-# CONFIG_STACK_TRACER is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_LL=y
-# CONFIG_EARLY_PRINTK is not set
-# CONFIG_DEBUG_ICEDCC is not set
-# CONFIG_OC_ETM is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-# CONFIG_CRYPTO_FIPS is not set
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_ALGAPI2=m
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=m
-# CONFIG_CRYPTO_MANAGER is not set
-# CONFIG_CRYPTO_MANAGER2 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-# CONFIG_CRYPTO_CBC is not set
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-# CONFIG_CRYPTO_ECB is not set
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_VMAC is not set
-
-#
-# Digest
-#
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_GHASH is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_ZLIB is not set
-# CONFIG_CRYPTO_LZO is not set
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-CONFIG_CRYPTO_HW=y
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_T10DIF is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-# CONFIG_LIBCRC32C is not set
-# CONFIG_CRC8 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_NLATTR=y
-CONFIG_GENERIC_ATOMIC64=y
-# CONFIG_AVERAGE is not set
-# CONFIG_CORDIC is not set
diff --git a/kernel/config.i686 b/kernel/config.i686
deleted file mode 100644 (file)
index 6344c96..0000000
+++ /dev/null
@@ -1,4870 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/i386 3.1.1-1.ip3.i686.PAE Kernel Configuration
-#
-# CONFIG_64BIT is not set
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86=y
-CONFIG_INSTRUCTION_DECODER=y
-CONFIG_OUTPUT_FORMAT="elf32-i386"
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_SG_DMA_LENGTH=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_HAVE_SETUP_PER_CPU_AREA=y
-CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
-CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
-# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
-CONFIG_HAVE_INTEL_TXT=y
-CONFIG_X86_32_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
-CONFIG_KTIME_SCALAR=y
-CONFIG_ARCH_CPU_PROBE_RELEASE=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-CONFIG_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_BZIP2=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_XZ=y
-CONFIG_HAVE_KERNEL_LZO=y
-# CONFIG_KERNEL_GZIP is not set
-# CONFIG_KERNEL_BZIP2 is not set
-# CONFIG_KERNEL_LZMA is not set
-CONFIG_KERNEL_XZ=y
-# CONFIG_KERNEL_LZO is not set
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_FHANDLE=y
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_WATCH=y
-CONFIG_AUDIT_TREE=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_IRQ_FORCED_THREADING=y
-# CONFIG_SPARSE_IRQ is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=18
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
-CONFIG_CGROUP_MEM_RES_CTLR=y
-CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
-# CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED is not set
-CONFIG_CGROUP_PERF=y
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-CONFIG_SCHED_AUTOGROUP=y
-CONFIG_MM_OWNER=y
-# CONFIG_SYSFS_DEPRECATED is not set
-CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EXPERT is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_ALL=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_PCSPKR_PLATFORM=y
-CONFIG_HAVE_PCSPKR_PLATFORM=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
-CONFIG_HAVE_PERF_EVENTS=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_PERF_EVENTS=y
-CONFIG_PERF_COUNTERS=y
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
-CONFIG_SLUB_DEBUG=y
-# CONFIG_COMPAT_BRK is not set
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_PROFILING is not set
-CONFIG_TRACEPOINTS=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_JUMP_LABEL=y
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_USER_RETURN_NOTIFIER=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_OPTPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
-CONFIG_HAVE_USER_RETURN_NOTIFIER=y
-CONFIG_HAVE_PERF_EVENTS_NMI=y
-CONFIG_HAVE_ARCH_JUMP_LABEL=y
-CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-CONFIG_BLK_DEV_BSG=y
-CONFIG_BLK_DEV_BSGLIB=y
-CONFIG_BLK_DEV_INTEGRITY=y
-CONFIG_BLK_DEV_THROTTLING=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_CFQ_GROUP_IOSCHED=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_PREEMPT_NOTIFIERS=y
-CONFIG_PADATA=y
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-CONFIG_MUTEX_SPIN_ON_OWNER=y
-CONFIG_FREEZER=y
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-CONFIG_X86_MPPARSE=y
-CONFIG_X86_BIGSMP=y
-CONFIG_X86_EXTENDED_PLATFORM=y
-# CONFIG_X86_INTEL_MID is not set
-# CONFIG_X86_RDC321X is not set
-# CONFIG_X86_32_NON_STANDARD is not set
-CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
-# CONFIG_X86_32_IRIS is not set
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-CONFIG_PARAVIRT_GUEST=y
-CONFIG_PARAVIRT_TIME_ACCOUNTING=y
-# CONFIG_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
-CONFIG_KVM_CLOCK=y
-CONFIG_KVM_GUEST=y
-# CONFIG_LGUEST_GUEST is not set
-CONFIG_PARAVIRT=y
-# CONFIG_PARAVIRT_SPINLOCKS is not set
-CONFIG_PARAVIRT_CLOCK=y
-# CONFIG_PARAVIRT_DEBUG is not set
-CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-CONFIG_M686=y
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MELAN is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MATOM is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_INTERNODE_CACHE_SHIFT=7
-CONFIG_X86_CMPXCHG=y
-CONFIG_CMPXCHG_LOCAL=y
-CONFIG_CMPXCHG_DOUBLE=y
-CONFIG_X86_L1_CACHE_SHIFT=6
-CONFIG_X86_XADD=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_ALIGNMENT_16=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=5
-CONFIG_X86_DEBUGCTLMSR=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_CYRIX_32=y
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR=y
-CONFIG_CPU_SUP_TRANSMETA_32=y
-CONFIG_CPU_SUP_UMC_32=y
-CONFIG_HPET_TIMER=y
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_DMI=y
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_NR_CPUS=256
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_IRQ_TIME_ACCOUNTING=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_INTEL=y
-CONFIG_X86_MCE_AMD=y
-# CONFIG_X86_ANCIENT_MCE is not set
-CONFIG_X86_MCE_THRESHOLD=y
-# CONFIG_X86_MCE_INJECT is not set
-CONFIG_X86_THERMAL_VECTOR=y
-CONFIG_VM86=y
-CONFIG_TOSHIBA=m
-CONFIG_I8K=m
-# CONFIG_X86_REBOOTFIXUPS is not set
-CONFIG_MICROCODE=m
-CONFIG_MICROCODE_INTEL=y
-CONFIG_MICROCODE_AMD=y
-CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=y
-CONFIG_X86_CPUID=y
-# CONFIG_NOHIGHMEM is not set
-# CONFIG_HIGHMEM4G is not set
-CONFIG_HIGHMEM64G=y
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_HIGHMEM=y
-CONFIG_X86_PAE=y
-CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
-CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_NUMA=y
-# CONFIG_NUMA_EMU is not set
-CONFIG_NODES_SHIFT=3
-CONFIG_HAVE_ARCH_BOOTMEM=y
-CONFIG_HAVE_ARCH_ALLOC_REMAP=y
-CONFIG_ARCH_HAVE_MEMORY_PRESENT=y
-CONFIG_NEED_NODE_MEMMAP_SIZE=y
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_NEED_MULTIPLE_NODES=y
-CONFIG_HAVE_MEMORY_PRESENT=y
-CONFIG_SPARSEMEM_STATIC=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_COMPACTION=y
-CONFIG_MIGRATION=y
-CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_MMU_NOTIFIER=y
-CONFIG_KSM=y
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
-CONFIG_MEMORY_FAILURE=y
-# CONFIG_HWPOISON_INJECT is not set
-CONFIG_TRANSPARENT_HUGEPAGE=y
-CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
-# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
-CONFIG_CLEANCACHE=y
-CONFIG_HIGHPTE=y
-# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
-CONFIG_X86_RESERVE_LOW=64
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-CONFIG_MTRR_SANITIZER=y
-CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
-CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
-CONFIG_X86_PAT=y
-CONFIG_ARCH_USES_PG_UNCACHED=y
-CONFIG_EFI=y
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-CONFIG_HZ_300=y
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=300
-CONFIG_SCHED_HRTICK=y
-CONFIG_KEXEC=y
-CONFIG_CRASH_DUMP=y
-# CONFIG_KEXEC_JUMP is not set
-CONFIG_PHYSICAL_START=0x400000
-CONFIG_RELOCATABLE=y
-CONFIG_X86_NEED_RELOCS=y
-CONFIG_PHYSICAL_ALIGN=0x400000
-CONFIG_HOTPLUG_CPU=y
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-CONFIG_USE_PERCPU_NUMA_NODE_ID=y
-
-#
-# Power management and ACPI options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_HIBERNATE_CALLBACKS=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION=""
-CONFIG_PM_SLEEP=y
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_EC_DEBUGFS=m
-# CONFIG_ACPI_PROC_EVENT is not set
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_FAN=y
-CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_IPMI=m
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_NUMA is not set
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=1999
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=y
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-CONFIG_ACPI_SBS=m
-CONFIG_ACPI_HED=y
-CONFIG_ACPI_CUSTOM_METHOD=m
-CONFIG_ACPI_APEI=y
-CONFIG_ACPI_APEI_GHES=y
-CONFIG_ACPI_APEI_PCIEAER=y
-CONFIG_ACPI_APEI_MEMORY_FAILURE=y
-# CONFIG_ACPI_APEI_EINJ is not set
-# CONFIG_ACPI_APEI_ERST_DEBUG is not set
-CONFIG_SFI=y
-CONFIG_X86_APM_BOOT=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-# CONFIG_APM_DO_ENABLE is not set
-CONFIG_APM_CPU_IDLE=y
-# CONFIG_APM_DISPLAY_BLANK is not set
-# CONFIG_APM_ALLOW_INTS is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=m
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-
-#
-# x86 CPU frequency scaling drivers
-#
-CONFIG_X86_PCC_CPUFREQ=m
-CONFIG_X86_ACPI_CPUFREQ=m
-# CONFIG_X86_POWERNOW_K6 is not set
-CONFIG_X86_POWERNOW_K7=y
-CONFIG_X86_POWERNOW_K7_ACPI=y
-CONFIG_X86_POWERNOW_K8=m
-# CONFIG_X86_GX_SUSPMOD is not set
-# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
-CONFIG_X86_SPEEDSTEP_ICH=y
-CONFIG_X86_SPEEDSTEP_SMI=y
-CONFIG_X86_P4_CLOCKMOD=m
-# CONFIG_X86_CPUFREQ_NFORCE2 is not set
-CONFIG_X86_LONGRUN=y
-# CONFIG_X86_LONGHAUL is not set
-# CONFIG_X86_E_POWERSAVER is not set
-
-#
-# shared options
-#
-CONFIG_X86_SPEEDSTEP_LIB=y
-# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-CONFIG_INTEL_IDLE=y
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCI_CNB20LE_QUIRK is not set
-CONFIG_PCIEPORTBUS=y
-CONFIG_HOTPLUG_PCI_PCIE=y
-CONFIG_PCIEAER=y
-CONFIG_PCIE_ECRC=y
-CONFIG_PCIEAER_INJECT=m
-CONFIG_PCIEASPM=y
-# CONFIG_PCIEASPM_DEBUG is not set
-CONFIG_PCIE_PME=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-# CONFIG_PCI_DEBUG is not set
-CONFIG_PCI_STUB=y
-CONFIG_HT_IRQ=y
-CONFIG_PCI_IOV=y
-CONFIG_PCI_IOAPIC=y
-CONFIG_PCI_LABEL=y
-CONFIG_ISA_DMA_API=y
-# CONFIG_ISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-CONFIG_AMD_NB=y
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA is not set
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-CONFIG_YENTA_O2=y
-CONFIG_YENTA_RICOH=y
-CONFIG_YENTA_TI=y
-CONFIG_YENTA_ENE_TUNE=y
-CONFIG_YENTA_TOSHIBA=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_FAKE=m
-CONFIG_HOTPLUG_PCI_COMPAQ=m
-# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-CONFIG_HOTPLUG_PCI_IBM=m
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
-# CONFIG_RAPIDIO is not set
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_HAVE_AOUT=y
-CONFIG_BINFMT_MISC=y
-CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_HAVE_TEXT_POKE_SMP=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=y
-CONFIG_XFRM_SUB_POLICY=y
-CONFIG_XFRM_MIGRATE=y
-CONFIG_XFRM_STATISTICS=y
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_FIB_TRIE_STATS=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_ROUTE_CLASSID=y
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE_DEMUX=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=m
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_CUBIC=y
-# CONFIG_DEFAULT_RENO is not set
-CONFIG_DEFAULT_TCP_CONG="cubic"
-CONFIG_TCP_MD5SIG=y
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-CONFIG_IPV6_ROUTER_PREF=y
-CONFIG_IPV6_ROUTE_INFO=y
-CONFIG_IPV6_OPTIMISTIC_DAD=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_SIT_6RD=y
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_MROUTE=y
-CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
-CONFIG_IPV6_PIMSM_V2=y
-# CONFIG_NETLABEL is not set
-CONFIG_NETWORK_SECMARK=y
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_SECMARK=y
-CONFIG_NF_CONNTRACK_ZONES=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CONNTRACK_TIMESTAMP=y
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_BROADCAST=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_SNMP=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=y
-
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=m
-CONFIG_NETFILTER_XT_CONNMARK=m
-CONFIG_NETFILTER_XT_SET=m
-
-#
-# Xtables targets
-#
-CONFIG_NETFILTER_XT_TARGET_AUDIT=m
-CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
-CONFIG_NETFILTER_XT_TARGET_CT=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_HL=m
-CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
-CONFIG_NETFILTER_XT_TARGET_LED=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TEE=m
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_SECMARK=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-
-#
-# Xtables matches
-#
-CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
-CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_CPU=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_HL=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_OSF=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_SOCKET=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_IP_SET=m
-CONFIG_IP_SET_MAX=256
-CONFIG_IP_SET_BITMAP_IP=m
-CONFIG_IP_SET_BITMAP_IPMAC=m
-CONFIG_IP_SET_BITMAP_PORT=m
-CONFIG_IP_SET_HASH_IP=m
-CONFIG_IP_SET_HASH_IPPORT=m
-CONFIG_IP_SET_HASH_IPPORTIP=m
-CONFIG_IP_SET_HASH_IPPORTNET=m
-CONFIG_IP_SET_HASH_NET=m
-CONFIG_IP_SET_HASH_NETPORT=m
-CONFIG_IP_SET_HASH_NETIFACE=m
-CONFIG_IP_SET_LIST_SET=m
-CONFIG_IP_VS=m
-CONFIG_IP_VS_IPV6=y
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-CONFIG_IP_VS_PROTO_SCTP=y
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-CONFIG_IP_VS_NFCT=y
-CONFIG_IP_VS_PE_SIP=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_SECURITY=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_IP6_NF_SECURITY=m
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-# CONFIG_BRIDGE_EBT_ULOG is not set
-CONFIG_BRIDGE_EBT_NFLOG=m
-# CONFIG_IP_DCCP is not set
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-# CONFIG_ATM_LANE is not set
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_L2TP=m
-CONFIG_L2TP_DEBUGFS=m
-CONFIG_L2TP_V3=y
-CONFIG_L2TP_IP=m
-CONFIG_L2TP_ETH=m
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_TAG_DSA=y
-CONFIG_NET_DSA_TAG_EDSA=y
-CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_PHONET is not set
-# CONFIG_IEEE802154 is not set
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFB=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-CONFIG_NET_SCH_MQPRIO=m
-CONFIG_NET_SCH_CHOKE=m
-CONFIG_NET_SCH_QFQ=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-CONFIG_NET_CLS_CGROUP=m
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_ACT_SKBEDIT=m
-CONFIG_NET_ACT_CSUM=m
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-CONFIG_DNS_RESOLVER=y
-# CONFIG_BATMAN_ADV is not set
-CONFIG_RPS=y
-CONFIG_RFS_ACCEL=y
-CONFIG_XPS=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_DROP_MONITOR is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_CMTP=m
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_ATH3K=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_BT_MRVL=m
-CONFIG_BT_MRVL_SDIO=m
-CONFIG_BT_ATH3K=m
-CONFIG_BT_WILINK=m
-# CONFIG_AF_RXRPC is not set
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_WEXT_SPY=y
-CONFIG_WEXT_PRIV=y
-CONFIG_CFG80211=m
-CONFIG_NL80211_TESTMODE=y
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_CFG80211_DEFAULT_PS=y
-CONFIG_CFG80211_DEBUGFS=y
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
-CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=m
-CONFIG_LIB80211_CRYPT_WEP=m
-CONFIG_LIB80211_CRYPT_CCMP=m
-CONFIG_LIB80211_CRYPT_TKIP=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-CONFIG_MAC80211_HAS_RC=y
-CONFIG_MAC80211_RC_MINSTREL=y
-CONFIG_MAC80211_RC_MINSTREL_HT=y
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
-CONFIG_MAC80211_MESH=y
-CONFIG_MAC80211_LEDS=y
-CONFIG_MAC80211_DEBUGFS=y
-# CONFIG_MAC80211_DEBUG_MENU is not set
-# CONFIG_WIMAX is not set
-CONFIG_RFKILL=m
-CONFIG_RFKILL_LEDS=y
-CONFIG_RFKILL_INPUT=y
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_NFC is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_SERIAL=m
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_AX88796 is not set
-CONFIG_PARPORT_1284=y
-CONFIG_PARPORT_NOT_PC=y
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG_MESSAGES is not set
-
-#
-# Protocols
-#
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=m
-# CONFIG_PARIDE is not set
-CONFIG_BLK_CPQ_DA=m
-CONFIG_BLK_CPQ_CISS_DA=m
-# CONFIG_CISS_SCSI_TAPE is not set
-CONFIG_BLK_DEV_DAC960=m
-CONFIG_BLK_DEV_UMEM=m
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-# CONFIG_BLK_DEV_DRBD is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_OSD is not set
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_VIRTIO_BLK=m
-# CONFIG_BLK_DEV_HD is not set
-# CONFIG_BLK_DEV_RBD is not set
-CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_MISC_DEVICES=y
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_IBM_ASM is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_INTEL_MID_PTI is not set
-# CONFIG_SGI_IOC4 is not set
-CONFIG_TIFM_CORE=m
-CONFIG_TIFM_7XX1=m
-CONFIG_ICS932S401=m
-CONFIG_ENCLOSURE_SERVICES=m
-# CONFIG_CS5535_MFGPT is not set
-CONFIG_HP_ILO=m
-# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-# CONFIG_HMC6352 is not set
-CONFIG_DS1682=m
-CONFIG_VMWARE_BALLOON=m
-# CONFIG_BMP085 is not set
-CONFIG_PCH_PHUB=m
-CONFIG_USB_SWITCH_FSA9480=m
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_MAX6875=m
-CONFIG_EEPROM_93CX6=m
-CONFIG_CB710_CORE=m
-# CONFIG_CB710_DEBUG is not set
-CONFIG_CB710_DEBUG_ASSUMPTIONS=y
-# CONFIG_IWMC3200TOP is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-CONFIG_TI_ST=m
-# CONFIG_SENSORS_LIS3_I2C is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_SCSI_SAS_LIBSAS=m
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_SRP_TGT_ATTRS=y
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-CONFIG_ISCSI_BOOT_SYSFS=m
-CONFIG_SCSI_CXGB3_ISCSI=m
-CONFIG_SCSI_CXGB4_ISCSI=m
-CONFIG_SCSI_BNX2_ISCSI=m
-CONFIG_SCSI_BNX2X_FCOE=m
-CONFIG_BE2ISCSI=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_HPSA=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_3W_SAS=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
-CONFIG_AIC7XXX_RESET_DELAY_MS=5000
-CONFIG_AIC7XXX_DEBUG_ENABLE=y
-CONFIG_AIC7XXX_DEBUG_MASK=0
-CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=4000
-# CONFIG_AIC79XX_DEBUG_ENABLE is not set
-CONFIG_AIC79XX_DEBUG_MASK=0
-# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC94XX=m
-# CONFIG_AIC94XX_DEBUG is not set
-CONFIG_SCSI_MVSAS=m
-# CONFIG_SCSI_MVSAS_DEBUG is not set
-CONFIG_SCSI_MVSAS_TASKLET=y
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_ARCMSR=m
-# CONFIG_SCSI_ARCMSR_AER is not set
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
-CONFIG_SCSI_HPTIOP=m
-CONFIG_SCSI_BUSLOGIC=m
-CONFIG_SCSI_FLASHPOINT=y
-CONFIG_VMWARE_PVSCSI=m
-CONFIG_LIBFC=m
-CONFIG_LIBFCOE=m
-CONFIG_FCOE=m
-CONFIG_FCOE_FNIC=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_EATA=m
-CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_GDTH=m
-CONFIG_SCSI_ISCI=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_PPA=m
-CONFIG_SCSI_IMM=m
-# CONFIG_SCSI_IZIP_EPP16 is not set
-# CONFIG_SCSI_IZIP_SLOW_CTR is not set
-CONFIG_SCSI_STEX=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-CONFIG_SCSI_IPR=m
-CONFIG_SCSI_IPR_TRACE=y
-CONFIG_SCSI_IPR_DUMP=y
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_QLA_FC=m
-CONFIG_SCSI_QLA_ISCSI=m
-CONFIG_SCSI_LPFC=m
-# CONFIG_SCSI_LPFC_DEBUG_FS is not set
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_NSP32=m
-# CONFIG_SCSI_DEBUG is not set
-CONFIG_SCSI_PMCRAID=m
-CONFIG_SCSI_PM8001=m
-# CONFIG_SCSI_SRP is not set
-CONFIG_SCSI_BFA_FC=m
-CONFIG_SCSI_DH=m
-CONFIG_SCSI_DH_RDAC=m
-CONFIG_SCSI_DH_HP_SW=m
-CONFIG_SCSI_DH_EMC=m
-CONFIG_SCSI_DH_ALUA=m
-CONFIG_SCSI_OSD_INITIATOR=m
-CONFIG_SCSI_OSD_ULD=m
-CONFIG_SCSI_OSD_DPRINT_SENSE=1
-# CONFIG_SCSI_OSD_DEBUG is not set
-CONFIG_ATA=y
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_ATA_ACPI=y
-CONFIG_SATA_PMP=y
-
-#
-# Controllers with non-SFF native interface
-#
-CONFIG_SATA_AHCI=y
-CONFIG_SATA_AHCI_PLATFORM=m
-CONFIG_SATA_INIC162X=m
-CONFIG_SATA_ACARD_AHCI=m
-CONFIG_SATA_SIL24=m
-CONFIG_ATA_SFF=y
-
-#
-# SFF controllers with custom DMA interface
-#
-CONFIG_PDC_ADMA=m
-CONFIG_SATA_QSTOR=m
-CONFIG_SATA_SX4=m
-CONFIG_ATA_BMDMA=y
-
-#
-# SATA SFF controllers with BMDMA
-#
-CONFIG_ATA_PIIX=y
-CONFIG_SATA_MV=m
-CONFIG_SATA_NV=m
-CONFIG_SATA_PROMISE=m
-CONFIG_SATA_SIL=m
-CONFIG_SATA_SIS=m
-CONFIG_SATA_SVW=m
-CONFIG_SATA_ULI=m
-CONFIG_SATA_VIA=m
-CONFIG_SATA_VITESSE=m
-
-#
-# PATA SFF controllers with BMDMA
-#
-CONFIG_PATA_ALI=m
-CONFIG_PATA_AMD=m
-CONFIG_PATA_ARASAN_CF=m
-CONFIG_PATA_ARTOP=m
-CONFIG_PATA_ATIIXP=m
-CONFIG_PATA_ATP867X=m
-CONFIG_PATA_CMD64X=m
-CONFIG_PATA_CS5520=m
-CONFIG_PATA_CS5530=m
-CONFIG_PATA_CS5535=m
-CONFIG_PATA_CS5536=m
-CONFIG_PATA_CYPRESS=m
-CONFIG_PATA_EFAR=m
-CONFIG_PATA_HPT366=m
-CONFIG_PATA_HPT37X=m
-CONFIG_PATA_HPT3X2N=m
-CONFIG_PATA_HPT3X3=m
-# CONFIG_PATA_HPT3X3_DMA is not set
-CONFIG_PATA_IT8213=m
-CONFIG_PATA_IT821X=m
-CONFIG_PATA_JMICRON=m
-CONFIG_PATA_MARVELL=m
-CONFIG_PATA_NETCELL=m
-CONFIG_PATA_NINJA32=m
-CONFIG_PATA_NS87415=m
-CONFIG_PATA_OLDPIIX=m
-CONFIG_PATA_OPTIDMA=m
-CONFIG_PATA_PDC2027X=m
-CONFIG_PATA_PDC_OLD=m
-# CONFIG_PATA_RADISYS is not set
-CONFIG_PATA_RDC=m
-# CONFIG_PATA_SC1200 is not set
-CONFIG_PATA_SCH=m
-CONFIG_PATA_SERVERWORKS=m
-CONFIG_PATA_SIL680=m
-CONFIG_PATA_SIS=m
-CONFIG_PATA_TOSHIBA=m
-CONFIG_PATA_TRIFLEX=m
-CONFIG_PATA_VIA=m
-CONFIG_PATA_WINBOND=m
-
-#
-# PIO-only SFF controllers
-#
-CONFIG_PATA_CMD640_PCI=m
-CONFIG_PATA_MPIIX=m
-CONFIG_PATA_NS87410=m
-CONFIG_PATA_OPTI=m
-CONFIG_PATA_RZ1000=m
-
-#
-# Generic fallback / legacy drivers
-#
-CONFIG_PATA_ACPI=m
-CONFIG_ATA_GENERIC=m
-# CONFIG_PATA_LEGACY is not set
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_MD_AUTODETECT=y
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-# CONFIG_MULTICORE_RAID456 is not set
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=y
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=y
-CONFIG_DM_MIRROR=y
-CONFIG_DM_RAID=m
-CONFIG_DM_LOG_USERSPACE=m
-CONFIG_DM_ZERO=y
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_QL=m
-CONFIG_DM_MULTIPATH_ST=m
-# CONFIG_DM_DELAY is not set
-CONFIG_DM_UEVENT=y
-# CONFIG_DM_FLAKEY is not set
-# CONFIG_TARGET_CORE is not set
-CONFIG_FUSION=y
-CONFIG_FUSION_SPI=m
-CONFIG_FUSION_FC=m
-CONFIG_FUSION_SAS=m
-CONFIG_FUSION_MAX_SGE=40
-CONFIG_FUSION_CTL=m
-CONFIG_FUSION_LOGGING=y
-
-#
-# IEEE 1394 (FireWire) support
-#
-CONFIG_FIREWIRE=m
-CONFIG_FIREWIRE_OHCI=m
-CONFIG_FIREWIRE_OHCI_DEBUG=y
-CONFIG_FIREWIRE_SBP2=m
-# CONFIG_FIREWIRE_NET is not set
-# CONFIG_FIREWIRE_NOSY is not set
-CONFIG_I2O=m
-# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-CONFIG_VETH=m
-# CONFIG_NET_SB1000 is not set
-# CONFIG_ARCNET is not set
-CONFIG_MII=m
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MICREL_PHY=m
-CONFIG_FIXED_PHY=y
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_CASSINI=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_ETHOC=m
-CONFIG_DNET=m
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_DE2104X_DSL=0
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-CONFIG_TULIP_MMIO=y
-CONFIG_TULIP_NAPI=y
-CONFIG_TULIP_NAPI_HW_MITIGATION=y
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_PCMCIA_XIRCOM=m
-CONFIG_HP100=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_KSZ884X_PCI=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_R6040=m
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SMSC9420=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-# CONFIG_KS8842 is not set
-# CONFIG_KS8851_MLL is not set
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_ATL2=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000E=m
-CONFIG_IP1000=m
-CONFIG_IGB=m
-CONFIG_IGB_DCA=y
-CONFIG_IGBVF=m
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-# CONFIG_SKGE_DEBUG is not set
-CONFIG_SKGE_GENESIS=y
-CONFIG_SKY2=m
-# CONFIG_SKY2_DEBUG is not set
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_CNIC=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_ATL1E=m
-CONFIG_ATL1C=m
-CONFIG_JME=m
-CONFIG_STMMAC_ETH=m
-# CONFIG_STMMAC_DA is not set
-# CONFIG_STMMAC_DUAL_MAC is not set
-CONFIG_PCH_GBE=m
-CONFIG_NETDEV_10000=y
-CONFIG_MDIO=m
-CONFIG_CHELSIO_T1=m
-CONFIG_CHELSIO_T1_1G=y
-CONFIG_CHELSIO_T3=m
-CONFIG_CHELSIO_T4=m
-CONFIG_CHELSIO_T4VF=m
-CONFIG_ENIC=m
-CONFIG_IXGBE=m
-CONFIG_IXGBE_DCA=y
-CONFIG_IXGBEVF=m
-CONFIG_IXGB=m
-CONFIG_S2IO=m
-CONFIG_VXGE=m
-# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
-CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NETXEN_NIC=m
-CONFIG_NIU=m
-CONFIG_MLX4_EN=m
-CONFIG_MLX4_CORE=m
-CONFIG_MLX4_DEBUG=y
-CONFIG_TEHUTI=m
-CONFIG_BNX2X=m
-CONFIG_QLCNIC=m
-CONFIG_QLGE=m
-CONFIG_BNA=m
-CONFIG_SFC=m
-CONFIG_BE2NET=m
-# CONFIG_TR is not set
-CONFIG_WLAN=y
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_AT76C50X_USB=m
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
-CONFIG_ADM8211=m
-CONFIG_MAC80211_HWSIM=m
-CONFIG_MWL8K=m
-CONFIG_ATH_COMMON=m
-# CONFIG_ATH_DEBUG is not set
-CONFIG_ATH5K=m
-CONFIG_ATH5K_DEBUG=y
-# CONFIG_ATH5K_TRACER is not set
-CONFIG_ATH5K_PCI=y
-CONFIG_ATH9K_HW=m
-CONFIG_ATH9K_COMMON=m
-CONFIG_ATH9K=m
-CONFIG_ATH9K_PCI=y
-CONFIG_ATH9K_AHB=y
-CONFIG_ATH9K_DEBUGFS=y
-CONFIG_ATH9K_RATE_CONTROL=y
-CONFIG_ATH9K_HTC=m
-# CONFIG_ATH9K_HTC_DEBUGFS is not set
-CONFIG_CARL9170=m
-CONFIG_CARL9170_LEDS=y
-# CONFIG_CARL9170_DEBUGFS is not set
-CONFIG_CARL9170_WPC=y
-CONFIG_B43=m
-CONFIG_B43_SSB=y
-CONFIG_B43_PCI_AUTOSELECT=y
-CONFIG_B43_PCICORE_AUTOSELECT=y
-CONFIG_B43_SDIO=y
-CONFIG_B43_PIO=y
-CONFIG_B43_PHY_N=y
-CONFIG_B43_PHY_LP=y
-CONFIG_B43_LEDS=y
-CONFIG_B43_HWRNG=y
-# CONFIG_B43_DEBUG is not set
-CONFIG_B43LEGACY=m
-CONFIG_B43LEGACY_PCI_AUTOSELECT=y
-CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
-CONFIG_B43LEGACY_LEDS=y
-CONFIG_B43LEGACY_HWRNG=y
-# CONFIG_B43LEGACY_DEBUG is not set
-CONFIG_B43LEGACY_DMA=y
-CONFIG_B43LEGACY_PIO=y
-CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
-# CONFIG_B43LEGACY_DMA_MODE is not set
-# CONFIG_B43LEGACY_PIO_MODE is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2200=m
-CONFIG_IPW2200_MONITOR=y
-CONFIG_IPW2200_RADIOTAP=y
-CONFIG_IPW2200_PROMISCUOUS=y
-CONFIG_IPW2200_QOS=y
-# CONFIG_IPW2200_DEBUG is not set
-CONFIG_LIBIPW=m
-# CONFIG_LIBIPW_DEBUG is not set
-CONFIG_IWLAGN=m
-
-#
-# Debugging Options
-#
-# CONFIG_IWLWIFI_DEBUG is not set
-CONFIG_IWLWIFI_DEBUGFS=y
-# CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLWIFI_DEVICE_SVTOOL=y
-# CONFIG_IWL_P2P is not set
-CONFIG_IWLWIFI_LEGACY=m
-
-#
-# Debugging Options
-#
-# CONFIG_IWLWIFI_LEGACY_DEBUG is not set
-CONFIG_IWLWIFI_LEGACY_DEBUGFS=y
-# CONFIG_IWLWIFI_LEGACY_DEVICE_TRACING is not set
-CONFIG_IWL4965=m
-CONFIG_IWL3945=m
-# CONFIG_IWM is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_MESH=y
-CONFIG_HERMES=m
-# CONFIG_HERMES_PRISM is not set
-CONFIG_HERMES_CACHE_FW_ON_INIT=y
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_NORTEL_HERMES=m
-CONFIG_ORINOCO_USB=m
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-CONFIG_P54_PCI=m
-CONFIG_P54_LEDS=y
-CONFIG_RT2X00=m
-CONFIG_RT2400PCI=m
-CONFIG_RT2500PCI=m
-CONFIG_RT61PCI=m
-CONFIG_RT2800PCI=m
-CONFIG_RT2800PCI_RT33XX=y
-CONFIG_RT2800PCI_RT35XX=y
-CONFIG_RT2800PCI_RT53XX=y
-CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
-CONFIG_RT2800USB=m
-CONFIG_RT2800USB_RT33XX=y
-CONFIG_RT2800USB_RT35XX=y
-CONFIG_RT2800USB_RT53XX=y
-CONFIG_RT2800USB_UNKNOWN=y
-CONFIG_RT2800_LIB=m
-CONFIG_RT2X00_LIB_PCI=m
-CONFIG_RT2X00_LIB_USB=m
-CONFIG_RT2X00_LIB=m
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_CRYPTO=y
-CONFIG_RT2X00_LIB_LEDS=y
-CONFIG_RT2X00_LIB_DEBUGFS=y
-# CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTL8192CE=m
-CONFIG_RTL8192SE=m
-CONFIG_RTL8192DE=m
-CONFIG_RTL8192CU=m
-CONFIG_RTLWIFI=m
-CONFIG_RTL8192C_COMMON=m
-CONFIG_WL1251=m
-CONFIG_WL1251_SDIO=m
-CONFIG_WL12XX_MENU=m
-CONFIG_WL12XX=m
-# CONFIG_WL12XX_HT is not set
-CONFIG_WL12XX_SDIO=m
-# CONFIG_WL12XX_SDIO_TEST is not set
-CONFIG_WL12XX_PLATFORM_DATA=y
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
-# CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-# CONFIG_ATM_ZATM is not set
-CONFIG_ATM_NICSTAR=m
-# CONFIG_ATM_NICSTAR_USE_SUNI is not set
-# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_IDT77252_USE_SUNI=y
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E is not set
-CONFIG_ATM_HE=m
-# CONFIG_ATM_HE_USE_SUNI is not set
-CONFIG_ATM_SOLOS=m
-
-#
-# CAIF transport drivers
-#
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETCONSOLE_DYNAMIC=y
-CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_VIRTIO_NET=m
-CONFIG_VMXNET3=m
-CONFIG_ISDN=y
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-
-#
-# ISDN feature submodules
-#
-CONFIG_ISDN_DIVERSION=m
-
-#
-# ISDN4Linux hardware drivers
-#
-
-#
-# Passive cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-
-#
-# D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-CONFIG_HISAX_NO_SENDCOMPLETE=y
-CONFIG_HISAX_NO_LLC=y
-CONFIG_HISAX_NO_KEYPAD=y
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-# HiSax supported cards
-#
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_TELESPCI=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_PCI=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-# CONFIG_HISAX_DEBUG is not set
-
-#
-# HiSax PCMCIA card service modules
-#
-
-#
-# HiSax sub driver modules
-#
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-#
-# CAPI hardware drivers
-#
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_CAPI=y
-# CONFIG_GIGASET_I4L is not set
-# CONFIG_GIGASET_DUMMYLL is not set
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-CONFIG_GIGASET_M101=m
-# CONFIG_GIGASET_DEBUG is not set
-CONFIG_HYSDN=m
-CONFIG_HYSDN_CAPI=y
-# CONFIG_MISDN is not set
-CONFIG_ISDN_HDLC=m
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-CONFIG_INPUT_POLLDEV=m
-CONFIG_INPUT_SPARSEKMAP=m
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_KEYBOARD_GPIO_POLLED=m
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_MAX7359 is not set
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-CONFIG_MOUSE_PS2_ELANTECH=y
-CONFIG_MOUSE_PS2_SENTELIC=y
-CONFIG_MOUSE_PS2_TOUCHKIT=y
-CONFIG_MOUSE_SERIAL=m
-CONFIG_MOUSE_APPLETOUCH=m
-CONFIG_MOUSE_BCM5974=m
-CONFIG_MOUSE_VSXXXAA=m
-# CONFIG_MOUSE_GPIO is not set
-CONFIG_MOUSE_SYNAPTICS_I2C=m
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_AD714X is not set
-CONFIG_INPUT_PCSPKR=m
-# CONFIG_INPUT_MMA8450 is not set
-# CONFIG_INPUT_MPU3050 is not set
-CONFIG_INPUT_APANEL=m
-CONFIG_INPUT_WISTRON_BTNS=m
-CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_ATI_REMOTE=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-# CONFIG_INPUT_KXTJ9 is not set
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-CONFIG_INPUT_UINPUT=m
-# CONFIG_INPUT_PCF8574 is not set
-CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
-# CONFIG_INPUT_ADXL34X is not set
-# CONFIG_INPUT_CMA3000 is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=m
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SERIO_RAW=m
-CONFIG_SERIO_ALTERA_PS2=m
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_ROCKETPORT=m
-CONFIG_CYCLADES=m
-# CONFIG_CYZ_INTR is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-CONFIG_SYNCLINK=m
-CONFIG_SYNCLINKMP=m
-CONFIG_SYNCLINK_GT=m
-CONFIG_NOZOMI=m
-# CONFIG_ISI is not set
-CONFIG_N_HDLC=m
-CONFIG_N_GSM=m
-# CONFIG_TRACE_SINK is not set
-# CONFIG_STALDRV is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_MFD_HSU is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_SERIAL_JSM=m
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_PCH_UART is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-CONFIG_PRINTER=m
-CONFIG_LP_CONSOLE=y
-CONFIG_PPDEV=m
-CONFIG_HVC_DRIVER=y
-CONFIG_VIRTIO_CONSOLE=m
-CONFIG_IPMI_HANDLER=m
-# CONFIG_IPMI_PANIC_EVENT is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_TIMERIOMEM=m
-CONFIG_HW_RANDOM_INTEL=m
-CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_GEODE=m
-CONFIG_HW_RANDOM_VIA=m
-CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_NVRAM=y
-CONFIG_R3964=m
-# CONFIG_APPLICOM is not set
-CONFIG_SONYPI=m
-CONFIG_MWAVE=m
-CONFIG_PC8736x_GPIO=m
-CONFIG_NSC_GPIO=m
-CONFIG_RAW_DRIVER=y
-CONFIG_MAX_RAW_DEVS=8192
-CONFIG_HPET=y
-# CONFIG_HPET_MMAP is not set
-CONFIG_HANGCHECK_TIMER=m
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=m
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_SMBUS=m
-CONFIG_I2C_ALGOBIT=m
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-CONFIG_I2C_ALI1535=m
-CONFIG_I2C_ALI1563=m
-CONFIG_I2C_ALI15X3=m
-CONFIG_I2C_AMD756=m
-CONFIG_I2C_AMD756_S4882=m
-CONFIG_I2C_AMD8111=m
-CONFIG_I2C_I801=m
-CONFIG_I2C_ISCH=m
-CONFIG_I2C_PIIX4=m
-CONFIG_I2C_NFORCE2=m
-CONFIG_I2C_NFORCE2_S4985=m
-CONFIG_I2C_SIS5595=m
-CONFIG_I2C_SIS630=m
-CONFIG_I2C_SIS96X=m
-CONFIG_I2C_VIA=m
-CONFIG_I2C_VIAPRO=m
-
-#
-# ACPI drivers
-#
-CONFIG_I2C_SCMI=m
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_INTEL_MID is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_PCA_PLATFORM=m
-# CONFIG_I2C_PXA_PCI is not set
-CONFIG_I2C_SIMTEC=m
-# CONFIG_I2C_XILINX is not set
-# CONFIG_I2C_EG20T is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-CONFIG_I2C_DIOLAN_U2C=m
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-# CONFIG_I2C_TAOS_EVM is not set
-CONFIG_I2C_TINY_USB=m
-
-#
-# Other I2C/SMBus bus drivers
-#
-CONFIG_I2C_STUB=m
-CONFIG_SCx200_ACB=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_SPI is not set
-
-#
-# PPS support
-#
-# CONFIG_PPS is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-
-#
-# Enable Device Drivers -> PPS to see the PTP clock options.
-#
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_GPIOLIB=y
-# CONFIG_DEBUG_GPIO is not set
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO drivers:
-#
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-CONFIG_GPIO_SCH=m
-# CONFIG_GPIO_VX855 is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-# CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_LANGWELL is not set
-# CONFIG_GPIO_PCH is not set
-# CONFIG_GPIO_ML_IOH is not set
-# CONFIG_GPIO_RDC321X is not set
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MCP23S08 is not set
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-CONFIG_W1=m
-CONFIG_W1_CON=y
-
-#
-# 1-wire Bus Masters
-#
-# CONFIG_W1_MASTER_MATROX is not set
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-CONFIG_W1_MASTER_DS1WM=m
-# CONFIG_W1_MASTER_GPIO is not set
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2408=m
-CONFIG_W1_SLAVE_DS2423=m
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
-CONFIG_W1_SLAVE_DS2780=m
-CONFIG_W1_SLAVE_BQ27000=m
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_TEST_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_MAX17040 is not set
-# CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_ISP1704 is not set
-# CONFIG_CHARGER_MAX8903 is not set
-# CONFIG_CHARGER_GPIO is not set
-CONFIG_HWMON=y
-CONFIG_HWMON_VID=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-CONFIG_SENSORS_ABITUGURU=m
-CONFIG_SENSORS_ABITUGURU3=m
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-CONFIG_SENSORS_ADT7411=m
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_ASC7621=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_K10TEMP=m
-CONFIG_SENSORS_FAM15H_POWER=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_DS620=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_I5K_AMB=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-# CONFIG_SENSORS_GPIO_FAN is not set
-CONFIG_SENSORS_CORETEMP=m
-CONFIG_SENSORS_IBMAEM=m
-CONFIG_SENSORS_IBMPEX=m
-CONFIG_SENSORS_IT87=m
-# CONFIG_SENSORS_JC42 is not set
-CONFIG_SENSORS_LINEAGE=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM73=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
-CONFIG_SENSORS_LM95241=m
-CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_NTC_THERMISTOR=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_PMBUS=m
-CONFIG_SENSORS_PMBUS=m
-CONFIG_SENSORS_ADM1275=m
-CONFIG_SENSORS_LM25066=m
-CONFIG_SENSORS_MAX16064=m
-CONFIG_SENSORS_MAX34440=m
-CONFIG_SENSORS_MAX8688=m
-CONFIG_SENSORS_UCD9000=m
-CONFIG_SENSORS_UCD9200=m
-CONFIG_SENSORS_SHT15=m
-CONFIG_SENSORS_SHT21=m
-CONFIG_SENSORS_SIS5595=m
-# CONFIG_SENSORS_SMM665 is not set
-CONFIG_SENSORS_DME1737=m
-CONFIG_SENSORS_EMC1403=m
-# CONFIG_SENSORS_EMC2103 is not set
-CONFIG_SENSORS_EMC6W201=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_SCH56XX_COMMON=m
-CONFIG_SENSORS_SCH5627=m
-CONFIG_SENSORS_SCH5636=m
-CONFIG_SENSORS_ADS1015=m
-CONFIG_SENSORS_ADS7828=m
-CONFIG_SENSORS_AMC6821=m
-CONFIG_SENSORS_THMC50=m
-CONFIG_SENSORS_TMP102=m
-CONFIG_SENSORS_TMP401=m
-CONFIG_SENSORS_TMP421=m
-CONFIG_SENSORS_VIA_CPUTEMP=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_VT8231=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-CONFIG_SENSORS_W83795=m
-# CONFIG_SENSORS_W83795_FANCTRL is not set
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
-
-#
-# ACPI drivers
-#
-CONFIG_SENSORS_ACPI_POWER=m
-CONFIG_SENSORS_ATK0110=m
-CONFIG_THERMAL=y
-CONFIG_THERMAL_HWMON=y
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-CONFIG_ALIM1535_WDT=m
-CONFIG_ALIM7101_WDT=m
-CONFIG_F71808E_WDT=m
-CONFIG_SP5100_TCO=m
-# CONFIG_SC520_WDT is not set
-CONFIG_SBC_FITPC2_WATCHDOG=m
-# CONFIG_EUROTECH_WDT is not set
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-# CONFIG_WAFER_WDT is not set
-CONFIG_I6300ESB_WDT=m
-CONFIG_ITCO_WDT=m
-# CONFIG_ITCO_VENDOR_SUPPORT is not set
-CONFIG_IT8712F_WDT=m
-CONFIG_IT87_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_HPWDT_NMI_DECODING=y
-# CONFIG_SC1200_WDT is not set
-# CONFIG_PC87413_WDT is not set
-CONFIG_NV_TCO=m
-# CONFIG_60XX_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_SBC7240_WDT is not set
-# CONFIG_CPU5_WDT is not set
-CONFIG_SMSC_SCH311X_WDT=m
-# CONFIG_SMSC37B787_WDT is not set
-CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-
-#
-# PCI-based Watchdog Cards
-#
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=m
-CONFIG_SSB_SPROM=y
-CONFIG_SSB_BLOCKIO=y
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-CONFIG_SSB_B43_PCI_BRIDGE=y
-CONFIG_SSB_SDIOHOST_POSSIBLE=y
-CONFIG_SSB_SDIOHOST=y
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-CONFIG_MFD_SUPPORT=y
-CONFIG_MFD_CORE=m
-CONFIG_MFD_SM501=m
-CONFIG_MFD_SM501_GPIO=y
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_UCB1400_CORE is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_MFD_TMIO is not set
-CONFIG_MFD_WM8400=m
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_ABX500_CORE is not set
-CONFIG_MFD_CS5535=m
-# CONFIG_MFD_TIMBERDALE is not set
-CONFIG_LPC_SCH=m
-# CONFIG_MFD_RDC321X is not set
-# CONFIG_MFD_JANZ_CMODIO is not set
-CONFIG_MFD_VX855=m
-CONFIG_MFD_WL1273_CORE=m
-# CONFIG_REGULATOR is not set
-CONFIG_MEDIA_SUPPORT=m
-
-#
-# Multimedia core support
-#
-CONFIG_MEDIA_CONTROLLER=y
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-CONFIG_VIDEO_V4L2_SUBDEV_API=y
-CONFIG_DVB_CORE=m
-CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_RC_CORE=m
-CONFIG_LIRC=m
-CONFIG_RC_MAP=m
-CONFIG_IR_NEC_DECODER=m
-CONFIG_IR_RC5_DECODER=m
-CONFIG_IR_RC6_DECODER=m
-CONFIG_IR_JVC_DECODER=m
-CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
-CONFIG_IR_MCE_KBD_DECODER=m
-CONFIG_IR_LIRC_CODEC=m
-CONFIG_IR_ENE=m
-CONFIG_IR_IMON=m
-CONFIG_IR_MCEUSB=m
-CONFIG_IR_ITE_CIR=m
-CONFIG_IR_FINTEK=m
-CONFIG_IR_NUVOTON=m
-CONFIG_IR_REDRAT3=m
-CONFIG_IR_STREAMZAP=m
-CONFIG_IR_WINBOND_CIR=m
-CONFIG_RC_LOOPBACK=m
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-CONFIG_MEDIA_TUNER_CUSTOMISE=y
-
-#
-# Customize TV tuners
-#
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_MT2131=m
-CONFIG_MEDIA_TUNER_QT1010=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MXL5005S=m
-CONFIG_MEDIA_TUNER_MXL5007T=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_MEDIA_TUNER_MAX2165=m
-CONFIG_MEDIA_TUNER_TDA18218=m
-CONFIG_MEDIA_TUNER_TDA18212=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEOBUF_GEN=m
-CONFIG_VIDEOBUF_DMA_SG=m
-CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
-CONFIG_VIDEOBUF_DVB=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEOBUF2_CORE=m
-CONFIG_VIDEOBUF2_MEMOPS=m
-CONFIG_VIDEOBUF2_DMA_CONTIG=m
-CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Audio decoders, processors and mixers
-#
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS5345=m
-CONFIG_VIDEO_CS53L32A=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_WM8739=m
-CONFIG_VIDEO_VP27SMPX=m
-
-#
-# RDS decoders
-#
-CONFIG_VIDEO_SAA6588=m
-
-#
-# Video decoders
-#
-CONFIG_VIDEO_ADV7180=m
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_BT866=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_VPX3220=m
-
-#
-# Video and audio decoders
-#
-CONFIG_VIDEO_SAA717X=m
-CONFIG_VIDEO_CX25840=m
-
-#
-# MPEG video encoders
-#
-CONFIG_VIDEO_CX2341X=m
-
-#
-# Video encoders
-#
-CONFIG_VIDEO_SAA7127=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-
-#
-# Camera sensor devices
-#
-CONFIG_VIDEO_OV7670=m
-CONFIG_VIDEO_MT9V011=m
-
-#
-# Flash devices
-#
-
-#
-# Video improvement chips
-#
-CONFIG_VIDEO_UPD64031A=m
-CONFIG_VIDEO_UPD64083=m
-
-#
-# Miscelaneous helper chips
-#
-CONFIG_VIDEO_M52790=m
-# CONFIG_VIDEO_VIVI is not set
-CONFIG_VIDEO_BT848=m
-CONFIG_VIDEO_BT848_DVB=y
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_W9966=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_ZR36060=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_ZORAN_AVS6EYES=m
-CONFIG_VIDEO_MEYE=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_ALSA=m
-CONFIG_VIDEO_SAA7134_RC=y
-CONFIG_VIDEO_SAA7134_DVB=m
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_TIMBERDALE=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-CONFIG_VIDEO_CX88_BLACKBIRD=m
-CONFIG_VIDEO_CX88_DVB=m
-CONFIG_VIDEO_CX88_MPEG=m
-CONFIG_VIDEO_CX88_VP3054=m
-CONFIG_VIDEO_CX23885=m
-# CONFIG_MEDIA_ALTERA_CI is not set
-CONFIG_VIDEO_AU0828=m
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_FB_IVTV=m
-CONFIG_VIDEO_CX18=m
-CONFIG_VIDEO_CX18_ALSA=m
-CONFIG_VIDEO_SAA7164=m
-CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_VIDEO_SR030PC30=m
-CONFIG_VIDEO_VIA_CAMERA=m
-CONFIG_VIDEO_NOON010PC30=m
-# CONFIG_VIDEO_M5MOLS is not set
-CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_IMX074=m
-CONFIG_SOC_CAMERA_MT9M001=m
-CONFIG_SOC_CAMERA_MT9M111=m
-CONFIG_SOC_CAMERA_MT9T031=m
-CONFIG_SOC_CAMERA_MT9T112=m
-CONFIG_SOC_CAMERA_MT9V022=m
-CONFIG_SOC_CAMERA_RJ54N1=m
-CONFIG_SOC_CAMERA_TW9910=m
-CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_SOC_CAMERA_OV2640=m
-CONFIG_SOC_CAMERA_OV5642=m
-CONFIG_SOC_CAMERA_OV6650=m
-CONFIG_SOC_CAMERA_OV772X=m
-CONFIG_SOC_CAMERA_OV9640=m
-CONFIG_SOC_CAMERA_OV9740=m
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-CONFIG_USB_M5602=m
-CONFIG_USB_STV06XX=m
-CONFIG_USB_GL860=m
-CONFIG_USB_GSPCA_BENQ=m
-CONFIG_USB_GSPCA_CONEX=m
-CONFIG_USB_GSPCA_CPIA1=m
-CONFIG_USB_GSPCA_ETOMS=m
-CONFIG_USB_GSPCA_FINEPIX=m
-CONFIG_USB_GSPCA_JEILINJ=m
-CONFIG_USB_GSPCA_KINECT=m
-CONFIG_USB_GSPCA_KONICA=m
-CONFIG_USB_GSPCA_MARS=m
-CONFIG_USB_GSPCA_MR97310A=m
-CONFIG_USB_GSPCA_NW80X=m
-CONFIG_USB_GSPCA_OV519=m
-CONFIG_USB_GSPCA_OV534=m
-CONFIG_USB_GSPCA_OV534_9=m
-CONFIG_USB_GSPCA_PAC207=m
-CONFIG_USB_GSPCA_PAC7302=m
-CONFIG_USB_GSPCA_PAC7311=m
-CONFIG_USB_GSPCA_SE401=m
-CONFIG_USB_GSPCA_SN9C2028=m
-CONFIG_USB_GSPCA_SN9C20X=m
-CONFIG_USB_GSPCA_SONIXB=m
-CONFIG_USB_GSPCA_SONIXJ=m
-CONFIG_USB_GSPCA_SPCA500=m
-CONFIG_USB_GSPCA_SPCA501=m
-CONFIG_USB_GSPCA_SPCA505=m
-CONFIG_USB_GSPCA_SPCA506=m
-CONFIG_USB_GSPCA_SPCA508=m
-CONFIG_USB_GSPCA_SPCA561=m
-CONFIG_USB_GSPCA_SPCA1528=m
-CONFIG_USB_GSPCA_SQ905=m
-CONFIG_USB_GSPCA_SQ905C=m
-CONFIG_USB_GSPCA_SQ930X=m
-CONFIG_USB_GSPCA_STK014=m
-CONFIG_USB_GSPCA_STV0680=m
-CONFIG_USB_GSPCA_SUNPLUS=m
-CONFIG_USB_GSPCA_T613=m
-CONFIG_USB_GSPCA_TV8532=m
-CONFIG_USB_GSPCA_VC032X=m
-CONFIG_USB_GSPCA_VICAM=m
-CONFIG_USB_GSPCA_XIRLINK_CIT=m
-CONFIG_USB_GSPCA_ZC3XX=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-CONFIG_VIDEO_PVRUSB2_DVB=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_ALSA=m
-CONFIG_VIDEO_EM28XX_DVB=m
-CONFIG_VIDEO_EM28XX_RC=y
-CONFIG_VIDEO_TLG2300=m
-CONFIG_VIDEO_CX231XX=m
-CONFIG_VIDEO_CX231XX_RC=y
-CONFIG_VIDEO_CX231XX_ALSA=m
-CONFIG_VIDEO_CX231XX_DVB=m
-CONFIG_VIDEO_USBVISION=m
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_PWC_INPUT_EVDEV=y
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-CONFIG_V4L_MEM2MEM_DRIVERS=y
-# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_RADIO_MAXIRADIO=m
-CONFIG_I2C_SI4713=m
-CONFIG_RADIO_SI4713=m
-CONFIG_USB_DSBR=m
-CONFIG_RADIO_SI470X=y
-CONFIG_USB_SI470X=m
-CONFIG_I2C_SI470X=m
-CONFIG_USB_MR800=m
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-CONFIG_RADIO_WL1273=m
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-# CONFIG_RADIO_WL128X is not set
-CONFIG_DVB_MAX_ADAPTERS=8
-CONFIG_DVB_DYNAMIC_MINORS=y
-CONFIG_DVB_CAPTURE_DRIVERS=y
-
-#
-# Supported SAA7146 based PCI Adapters
-#
-CONFIG_TTPCI_EEPROM=m
-CONFIG_DVB_AV7110=m
-CONFIG_DVB_AV7110_OSD=y
-CONFIG_DVB_BUDGET_CORE=m
-CONFIG_DVB_BUDGET=m
-CONFIG_DVB_BUDGET_CI=m
-CONFIG_DVB_BUDGET_AV=m
-CONFIG_DVB_BUDGET_PATCH=m
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-CONFIG_DVB_USB_AF9005=m
-CONFIG_DVB_USB_AF9005_REMOTE=m
-CONFIG_DVB_USB_DW2102=m
-CONFIG_DVB_USB_CINERGY_T2=m
-CONFIG_DVB_USB_ANYSEE=m
-CONFIG_DVB_USB_DTV5100=m
-CONFIG_DVB_USB_AF9015=m
-CONFIG_DVB_USB_CE6230=m
-CONFIG_DVB_USB_FRIIO=m
-CONFIG_DVB_USB_EC168=m
-CONFIG_DVB_USB_AZ6027=m
-CONFIG_DVB_USB_LME2510=m
-CONFIG_DVB_USB_TECHNISAT_USB2=m
-CONFIG_DVB_TTUSB_BUDGET=m
-CONFIG_DVB_TTUSB_DEC=m
-CONFIG_SMS_SIANO_MDTV=m
-
-#
-# Siano module components
-#
-CONFIG_SMS_USB_DRV=m
-# CONFIG_SMS_SDIO_DRV is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_PCI=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-
-#
-# Supported BT878 Adapters
-#
-CONFIG_DVB_BT8XX=m
-
-#
-# Supported Pluto2 Adapters
-#
-CONFIG_DVB_PLUTO2=m
-
-#
-# Supported SDMC DM1105 Adapters
-#
-CONFIG_DVB_DM1105=m
-
-#
-# Supported FireWire (IEEE 1394) Adapters
-#
-CONFIG_DVB_FIREDTV=m
-CONFIG_DVB_FIREDTV_INPUT=y
-
-#
-# Supported Earthsoft PT1 Adapters
-#
-CONFIG_DVB_PT1=m
-
-#
-# Supported Mantis Adapters
-#
-CONFIG_MANTIS_CORE=m
-CONFIG_DVB_MANTIS=m
-CONFIG_DVB_HOPPER=m
-
-#
-# Supported nGene Adapters
-#
-CONFIG_DVB_NGENE=m
-
-#
-# Supported ddbridge ('Octopus') Adapters
-#
-# CONFIG_DVB_DDBRIDGE is not set
-
-#
-# Supported DVB Frontends
-#
-CONFIG_DVB_FE_CUSTOMISE=y
-
-#
-# Customise DVB Frontends
-#
-
-#
-# Multistandard (satellite) frontends
-#
-CONFIG_DVB_STB0899=m
-CONFIG_DVB_STB6100=m
-CONFIG_DVB_STV090x=m
-CONFIG_DVB_STV6110x=m
-
-#
-# Multistandard (cable + terrestrial) frontends
-#
-CONFIG_DVB_DRXK=m
-CONFIG_DVB_TDA18271C2DD=m
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_ZL10036=m
-CONFIG_DVB_ZL10039=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0288=m
-CONFIG_DVB_STB6000=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_STV6110=m
-CONFIG_DVB_STV0900=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TUNER_CX24113=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_CX24116=m
-CONFIG_DVB_SI21XX=m
-CONFIG_DVB_DS3000=m
-CONFIG_DVB_MB86A16=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_S5H1432=m
-CONFIG_DVB_DRXD=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_DIB9000=m
-CONFIG_DVB_TDA10048=m
-CONFIG_DVB_AF9013=m
-CONFIG_DVB_EC100=m
-CONFIG_DVB_STV0367=m
-CONFIG_DVB_CXD2820R=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_LGDT3305=m
-CONFIG_DVB_S5H1409=m
-CONFIG_DVB_AU8522=m
-CONFIG_DVB_S5H1411=m
-
-#
-# ISDB-T (terrestrial) frontends
-#
-CONFIG_DVB_S921=m
-CONFIG_DVB_DIB8000=m
-CONFIG_DVB_MB86A20S=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-CONFIG_DVB_TUNER_DIB0090=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-CONFIG_DVB_ISL6405=m
-CONFIG_DVB_ISL6421=m
-CONFIG_DVB_ISL6423=m
-CONFIG_DVB_LGS8GL5=m
-CONFIG_DVB_LGS8GXX=m
-CONFIG_DVB_ATBM8830=m
-CONFIG_DVB_TDA665x=m
-CONFIG_DVB_IX2505V=m
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-
-#
-# Graphics support
-#
-CONFIG_AGP=y
-CONFIG_AGP_ALI=y
-CONFIG_AGP_ATI=y
-CONFIG_AGP_AMD=y
-CONFIG_AGP_AMD64=y
-CONFIG_AGP_INTEL=y
-CONFIG_AGP_NVIDIA=y
-CONFIG_AGP_SIS=y
-CONFIG_AGP_SWORKS=y
-CONFIG_AGP_VIA=y
-CONFIG_AGP_EFFICEON=y
-CONFIG_VGA_ARB=y
-CONFIG_VGA_ARB_MAX_GPUS=16
-CONFIG_VGA_SWITCHEROO=y
-CONFIG_DRM=m
-CONFIG_DRM_KMS_HELPER=m
-CONFIG_DRM_TTM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_RADEON_KMS=y
-CONFIG_DRM_I810=m
-CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-CONFIG_STUB_POULSBO=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-CONFIG_FB_DDC=m
-CONFIG_FB_BOOT_VESA_SUPPORT=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_FB_SVGALIB=m
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_BACKLIGHT=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_CIRRUS=m
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=m
-# CONFIG_FB_UVESA is not set
-CONFIG_FB_VESA=y
-CONFIG_FB_EFI=y
-# CONFIG_FB_N411 is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-CONFIG_FB_RIVA=m
-# CONFIG_FB_RIVA_I2C is not set
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_I810=m
-CONFIG_FB_I810_GTF=y
-CONFIG_FB_I810_I2C=y
-# CONFIG_FB_LE80578 is not set
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-CONFIG_FB_ATY_GENERIC_LCD=y
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_S3=m
-CONFIG_FB_S3_DDC=y
-CONFIG_FB_SAVAGE=m
-CONFIG_FB_SAVAGE_I2C=y
-CONFIG_FB_SAVAGE_ACCEL=y
-# CONFIG_FB_SIS is not set
-CONFIG_FB_VIA=m
-# CONFIG_FB_VIA_DIRECT_PROCFS is not set
-CONFIG_FB_VIA_X_COMPATIBILITY=y
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_3DFX=m
-CONFIG_FB_3DFX_ACCEL=y
-CONFIG_FB_3DFX_I2C=y
-CONFIG_FB_VOODOO1=m
-# CONFIG_FB_VT8623 is not set
-CONFIG_FB_TRIDENT=m
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_CARMINE is not set
-CONFIG_FB_GEODE=y
-CONFIG_FB_GEODE_LX=y
-CONFIG_FB_GEODE_GX=y
-# CONFIG_FB_GEODE_GX1 is not set
-# CONFIG_FB_TMIO is not set
-CONFIG_FB_SM501=m
-CONFIG_FB_UDL=m
-CONFIG_FB_VIRTUAL=m
-CONFIG_FB_METRONOME=m
-CONFIG_FB_MB862XX=m
-CONFIG_FB_MB862XX_PCI_GDC=y
-CONFIG_FB_MB862XX_I2C=y
-# CONFIG_FB_BROADSHEET is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_PLATFORM=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_GENERIC is not set
-CONFIG_BACKLIGHT_PROGEAR=m
-CONFIG_BACKLIGHT_APPLE=m
-# CONFIG_BACKLIGHT_SAHARA is not set
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-CONFIG_VGACON_SOFT_SCROLLBACK=y
-CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=128
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_HRTIMER=m
-CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
-CONFIG_SND_DYNAMIC_MINORS=y
-# CONFIG_SND_SUPPORT_OLD_API is not set
-CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_VERBOSE is not set
-CONFIG_SND_PCM_XRUN_DEBUG=y
-CONFIG_SND_VMASTER=y
-CONFIG_SND_DMA_SGBUF=y
-CONFIG_SND_RAWMIDI_SEQ=m
-CONFIG_SND_OPL3_LIB_SEQ=m
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-CONFIG_SND_EMU10K1_SEQ=m
-CONFIG_SND_MPU401_UART=m
-CONFIG_SND_OPL3_LIB=m
-CONFIG_SND_VX_LIB=m
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_DRIVERS=y
-CONFIG_SND_PCSP=m
-CONFIG_SND_DUMMY=m
-CONFIG_SND_ALOOP=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_PORTMAN2X4=m
-CONFIG_SND_AC97_POWER_SAVE=y
-CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
-CONFIG_SND_SB_COMMON=m
-CONFIG_SND_SB16_DSP=m
-CONFIG_SND_TEA575X=m
-CONFIG_SND_PCI=y
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALS300=m
-CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ASIHPI=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-# CONFIG_SND_AW2 is not set
-CONFIG_SND_AZT3328=m
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_OXYGEN_LIB=m
-CONFIG_SND_OXYGEN=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5530=m
-CONFIG_SND_CS5535AUDIO=m
-CONFIG_SND_CTXFI=m
-CONFIG_SND_DARLA20=m
-CONFIG_SND_GINA20=m
-CONFIG_SND_LAYLA20=m
-CONFIG_SND_DARLA24=m
-CONFIG_SND_GINA24=m
-CONFIG_SND_LAYLA24=m
-CONFIG_SND_MONA=m
-CONFIG_SND_MIA=m
-CONFIG_SND_ECHO3G=m
-CONFIG_SND_INDIGO=m
-CONFIG_SND_INDIGOIO=m
-CONFIG_SND_INDIGODJ=m
-CONFIG_SND_INDIGOIOX=m
-CONFIG_SND_INDIGODJX=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_ES1968_INPUT=y
-CONFIG_SND_ES1968_RADIO=y
-CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_RECONFIG=y
-CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=1
-CONFIG_SND_HDA_INPUT_JACK=y
-# CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_HDMI=y
-CONFIG_SND_HDA_CODEC_CIRRUS=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CA0110=y
-CONFIG_SND_HDA_CODEC_CA0132=y
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
-# CONFIG_SND_HDA_POWER_SAVE is not set
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_LOLA=m
-CONFIG_SND_LX6464ES=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MAESTRO3_INPUT=y
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RIPTIDE=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SIS7019=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VIRTUOSO=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_UA101=m
-CONFIG_SND_USB_USX2Y=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_US122L=m
-CONFIG_SND_USB_6FIRE=m
-CONFIG_SND_FIREWIRE=y
-CONFIG_SND_FIREWIRE_LIB=m
-CONFIG_SND_FIREWIRE_SPEAKERS=m
-# CONFIG_SND_ISIGHT is not set
-# CONFIG_SND_SOC is not set
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-CONFIG_HIDRAW=y
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-
-#
-# Special HID drivers
-#
-CONFIG_HID_A4TECH=y
-# CONFIG_HID_ACRUX is not set
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-# CONFIG_HID_PRODIKEYS is not set
-CONFIG_HID_CYPRESS=y
-# CONFIG_HID_DRAGONRISE is not set
-# CONFIG_HID_EMS_FF is not set
-# CONFIG_HID_ELECOM is not set
-CONFIG_HID_EZKEY=y
-# CONFIG_HID_HOLTEK is not set
-CONFIG_HID_KEYTOUCH=m
-CONFIG_HID_KYE=y
-# CONFIG_HID_UCLOGIC is not set
-# CONFIG_HID_WALTOP is not set
-CONFIG_HID_GYRATION=m
-CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=y
-CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=y
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-# CONFIG_LOGIG940_FF is not set
-# CONFIG_LOGIWII_FF is not set
-# CONFIG_HID_MAGICMOUSE is not set
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-# CONFIG_HID_MULTITOUCH is not set
-# CONFIG_HID_NTRIG is not set
-CONFIG_HID_ORTEK=m
-# CONFIG_HID_PANTHERLORD is not set
-CONFIG_HID_PETALYNX=m
-CONFIG_HID_PICOLCD=m
-CONFIG_HID_PICOLCD_FB=y
-CONFIG_HID_PICOLCD_BACKLIGHT=y
-CONFIG_HID_PICOLCD_LCD=y
-CONFIG_HID_PICOLCD_LEDS=y
-# CONFIG_HID_QUANTA is not set
-CONFIG_HID_ROCCAT=m
-CONFIG_HID_ROCCAT_COMMON=m
-CONFIG_HID_ROCCAT_ARVO=m
-CONFIG_HID_ROCCAT_KONE=m
-CONFIG_HID_ROCCAT_KONEPLUS=m
-CONFIG_HID_ROCCAT_KOVAPLUS=m
-CONFIG_HID_ROCCAT_PYRA=m
-CONFIG_HID_SAMSUNG=m
-# CONFIG_HID_SONY is not set
-CONFIG_HID_SPEEDLINK=m
-CONFIG_HID_SUNPLUS=m
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-CONFIG_HID_TOPSEED=m
-# CONFIG_HID_THRUSTMASTER is not set
-# CONFIG_HID_WACOM is not set
-# CONFIG_HID_WIIMOTE is not set
-# CONFIG_HID_ZEROPLUS is not set
-CONFIG_HID_ZYDACRON=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_OTG is not set
-CONFIG_USB_MON=m
-CONFIG_USB_WUSB=m
-CONFIG_USB_WUSB_CBAF=m
-# CONFIG_USB_WUSB_CBAF_DEBUG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_XHCI_HCD=m
-# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-CONFIG_USB_ISP1362_HCD=m
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_U132_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_HCD_ISO=y
-# CONFIG_USB_R8A66597_HCD is not set
-CONFIG_USB_WHCI_HCD=m
-CONFIG_USB_HWA_HCD=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_REALTEK=m
-CONFIG_REALTEK_AUTOPM=y
-CONFIG_USB_STORAGE_DATAFAB=m
-CONFIG_USB_STORAGE_FREECOM=m
-CONFIG_USB_STORAGE_ISD200=m
-CONFIG_USB_STORAGE_USBAT=m
-CONFIG_USB_STORAGE_SDDR09=m
-CONFIG_USB_STORAGE_SDDR55=m
-CONFIG_USB_STORAGE_JUMPSHOT=m
-CONFIG_USB_STORAGE_ALAUDA=m
-CONFIG_USB_STORAGE_ONETOUCH=m
-CONFIG_USB_STORAGE_KARMA=m
-CONFIG_USB_STORAGE_CYPRESS_ATACB=m
-CONFIG_USB_STORAGE_ENE_UB6250=m
-CONFIG_USB_UAS=m
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB port drivers
-#
-CONFIG_USB_USS720=m
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP210X=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-# CONFIG_USB_SERIAL_EMPEG is not set
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-# CONFIG_USB_SERIAL_GARMIN is not set
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-CONFIG_USB_SERIAL_KLSI=m
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7715_PARPORT=y
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_QCAUX=m
-CONFIG_USB_SERIAL_QUALCOMM=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-# CONFIG_USB_SERIAL_HP4X is not set
-# CONFIG_USB_SERIAL_SAFE is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-# CONFIG_USB_SERIAL_SYMBOL is not set
-# CONFIG_USB_SERIAL_TI is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_WWAN=m
-CONFIG_USB_SERIAL_OPTION=m
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_SERIAL_OPTICON is not set
-# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
-# CONFIG_USB_SERIAL_ZIO is not set
-CONFIG_USB_SERIAL_SSU100=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_SEVSEG=m
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-CONFIG_USB_IOWARRIOR=m
-# CONFIG_USB_TEST is not set
-# CONFIG_USB_ISIGHTFW is not set
-CONFIG_USB_YUREX=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-# CONFIG_USB_GPIO_VBUS is not set
-CONFIG_NOP_USB_XCEIV=m
-CONFIG_UWB=m
-CONFIG_UWB_HWA=m
-CONFIG_UWB_WHCI=m
-CONFIG_UWB_I1480U=m
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=m
-CONFIG_MMC_SDHCI_PCI=m
-CONFIG_MMC_RICOH_MMC=y
-CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_WBSD=m
-CONFIG_MMC_TIFM_SD=m
-CONFIG_MMC_CB710=m
-CONFIG_MMC_VIA_SDMMC=m
-CONFIG_MMC_VUB300=m
-CONFIG_MMC_USHC=m
-CONFIG_MEMSTICK=m
-# CONFIG_MEMSTICK_DEBUG is not set
-
-#
-# MemoryStick drivers
-#
-# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
-CONFIG_MSPRO_BLOCK=m
-
-#
-# MemoryStick Host Controller Drivers
-#
-CONFIG_MEMSTICK_TIFM_MS=m
-CONFIG_MEMSTICK_JMICRON_38X=m
-CONFIG_MEMSTICK_R592=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_ALIX2=m
-# CONFIG_LEDS_PCA9532 is not set
-# CONFIG_LEDS_GPIO is not set
-CONFIG_LEDS_LP3944=m
-CONFIG_LEDS_LP5521=m
-CONFIG_LEDS_LP5523=m
-CONFIG_LEDS_CLEVO_MAIL=m
-# CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_BD2802 is not set
-CONFIG_LEDS_INTEL_SS4200=m
-CONFIG_LEDS_LT3593=m
-CONFIG_LEDS_DELL_NETBOOKS=m
-CONFIG_LEDS_TRIGGERS=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-CONFIG_LEDS_TRIGGER_GPIO=m
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-# CONFIG_ACCESSIBILITY is not set
-# CONFIG_INFINIBAND is not set
-CONFIG_EDAC=y
-
-#
-# Reporting subsystems
-#
-# CONFIG_EDAC_DEBUG is not set
-CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_MCE_INJ=m
-CONFIG_EDAC_MM_EDAC=m
-CONFIG_EDAC_MCE=y
-CONFIG_EDAC_AMD76X=m
-CONFIG_EDAC_E7XXX=m
-CONFIG_EDAC_E752X=m
-CONFIG_EDAC_I82875P=m
-CONFIG_EDAC_I82975X=m
-CONFIG_EDAC_I3000=m
-CONFIG_EDAC_I3200=m
-CONFIG_EDAC_X38=m
-CONFIG_EDAC_I5400=m
-CONFIG_EDAC_I7CORE=m
-CONFIG_EDAC_I82860=m
-CONFIG_EDAC_R82600=m
-CONFIG_EDAC_I5000=m
-CONFIG_EDAC_I5100=m
-CONFIG_EDAC_I7300=m
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_M41T80_WDT=y
-CONFIG_RTC_DRV_BQ32K=m
-# CONFIG_RTC_DRV_S35390A is not set
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-CONFIG_RTC_DRV_RX8025=m
-CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=y
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_MSM6242=m
-CONFIG_RTC_DRV_BQ4802=m
-CONFIG_RTC_DRV_RP5C01=m
-CONFIG_RTC_DRV_V3020=m
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_DMADEVICES=y
-# CONFIG_DMADEVICES_DEBUG is not set
-
-#
-# DMA Devices
-#
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
-CONFIG_TIMB_DMA=m
-CONFIG_PCH_DMA=m
-CONFIG_DMA_ENGINE=y
-
-#
-# DMA Clients
-#
-CONFIG_NET_DMA=y
-CONFIG_ASYNC_TX_DMA=y
-# CONFIG_DMATEST is not set
-CONFIG_DCA=m
-# CONFIG_AUXDISPLAY is not set
-CONFIG_UIO=m
-# CONFIG_UIO_CIF is not set
-# CONFIG_UIO_PDRV is not set
-# CONFIG_UIO_PDRV_GENIRQ is not set
-CONFIG_UIO_AEC=m
-CONFIG_UIO_SERCOS3=m
-CONFIG_UIO_PCI_GENERIC=m
-# CONFIG_UIO_NETX is not set
-CONFIG_VIRTIO=m
-CONFIG_VIRTIO_RING=m
-
-#
-# Virtio drivers
-#
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
-CONFIG_STAGING=y
-CONFIG_ET131X=m
-# CONFIG_ET131X_DEBUG is not set
-# CONFIG_SLICOSS is not set
-# CONFIG_VIDEO_GO7007 is not set
-# CONFIG_VIDEO_CX25821 is not set
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_DVB_CXD2099 is not set
-# CONFIG_USBIP_CORE is not set
-# CONFIG_W35UND is not set
-# CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
-# CONFIG_BRCMUTIL is not set
-# CONFIG_BRCMSMAC is not set
-# CONFIG_BRCMFMAC is not set
-# CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_PANEL is not set
-# CONFIG_R8187SE is not set
-# CONFIG_RTL8192U is not set
-# CONFIG_RTL8192E is not set
-# CONFIG_R8712U is not set
-# CONFIG_RTS_PSTOR is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_LINE6_USB is not set
-CONFIG_DRM_VMWGFX=m
-CONFIG_DRM_NOUVEAU=m
-CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-CONFIG_DRM_NOUVEAU_DEBUG=y
-
-#
-# I2C encoder or helper chips
-#
-# CONFIG_DRM_I2C_CH7006 is not set
-# CONFIG_DRM_I2C_SIL164 is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
-# CONFIG_VT6655 is not set
-# CONFIG_VT6656 is not set
-CONFIG_HYPERV=m
-CONFIG_HYPERV_STORAGE=m
-CONFIG_HYPERV_BLOCK=m
-CONFIG_HYPERV_NET=m
-CONFIG_HYPERV_UTILS=m
-CONFIG_HYPERV_MOUSE=m
-# CONFIG_VME_BUS is not set
-# CONFIG_DX_SEP is not set
-# CONFIG_IIO is not set
-# CONFIG_XVMALLOC is not set
-# CONFIG_ZRAM is not set
-# CONFIG_ZCACHE is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_VIDEO_DT3155 is not set
-# CONFIG_CRYSTALHD is not set
-# CONFIG_FB_XGI is not set
-# CONFIG_LIRC_STAGING is not set
-# CONFIG_EASYCAP is not set
-# CONFIG_SOLO6X10 is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_ATH6K_LEGACY is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
-
-#
-# Speakup console speech
-#
-# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-# CONFIG_DRM_PSB is not set
-# CONFIG_ALTERA_STAPL is not set
-# CONFIG_INTEL_MEI is not set
-CONFIG_X86_PLATFORM_DEVICES=y
-CONFIG_ACER_WMI=m
-CONFIG_ACERHDF=m
-CONFIG_ASUS_LAPTOP=m
-CONFIG_DELL_LAPTOP=m
-CONFIG_DELL_WMI=m
-CONFIG_DELL_WMI_AIO=m
-CONFIG_FUJITSU_LAPTOP=m
-# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
-CONFIG_TC1100_WMI=m
-CONFIG_HP_ACCEL=m
-CONFIG_HP_WMI=m
-CONFIG_MSI_LAPTOP=m
-CONFIG_PANASONIC_LAPTOP=m
-CONFIG_COMPAL_LAPTOP=m
-CONFIG_SONY_LAPTOP=m
-CONFIG_SONYPI_COMPAT=y
-CONFIG_IDEAPAD_LAPTOP=m
-CONFIG_THINKPAD_ACPI=m
-CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
-# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
-# CONFIG_THINKPAD_ACPI_DEBUG is not set
-# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
-CONFIG_THINKPAD_ACPI_VIDEO=y
-CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
-CONFIG_SENSORS_HDAPS=m
-# CONFIG_INTEL_MENLOW is not set
-CONFIG_EEEPC_LAPTOP=m
-CONFIG_ASUS_WMI=m
-CONFIG_ASUS_NB_WMI=m
-CONFIG_EEEPC_WMI=m
-CONFIG_ACPI_WMI=m
-CONFIG_MSI_WMI=m
-# CONFIG_ACPI_ASUS is not set
-CONFIG_TOPSTAR_LAPTOP=m
-CONFIG_ACPI_TOSHIBA=m
-CONFIG_TOSHIBA_BT_RFKILL=m
-CONFIG_ACPI_CMPC=m
-CONFIG_INTEL_IPS=m
-# CONFIG_IBM_RTL is not set
-CONFIG_XO15_EBOOK=m
-CONFIG_SAMSUNG_LAPTOP=m
-CONFIG_MXM_WMI=m
-CONFIG_INTEL_OAKTRAIL=m
-CONFIG_SAMSUNG_Q10=m
-CONFIG_CLKSRC_I8253=y
-CONFIG_CLKEVT_I8253=y
-CONFIG_I8253_LOCK=y
-CONFIG_CLKBLD_I8253=y
-CONFIG_IOMMU_API=y
-CONFIG_IOMMU_SUPPORT=y
-CONFIG_DMAR=y
-CONFIG_DMAR_DEFAULT_ON=y
-CONFIG_DMAR_FLOPPY_WA=y
-CONFIG_VIRT_DRIVERS=y
-
-#
-# Firmware Drivers
-#
-CONFIG_EDD=m
-# CONFIG_EDD_OFF is not set
-CONFIG_FIRMWARE_MEMMAP=y
-CONFIG_EFI_VARS=y
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
-CONFIG_DMIID=y
-CONFIG_DMI_SYSFS=y
-# CONFIG_ISCSI_IBFT_FIND is not set
-# CONFIG_SIGMA is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS is not set
-# CONFIG_EXT3_FS is not set
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-# CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD2=y
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-CONFIG_REISERFS_PROC_INFO=y
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# CONFIG_JFS_FS is not set
-CONFIG_XFS_FS=m
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-CONFIG_XFS_RT=y
-# CONFIG_XFS_DEBUG is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-CONFIG_BTRFS_FS=m
-CONFIG_BTRFS_FS_POSIX_ACL=y
-# CONFIG_NILFS2_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_FANOTIFY=y
-CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-# CONFIG_PRINT_QUOTA_WARNING is not set
-# CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=y
-CONFIG_FUSE_FS=m
-CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
-
-#
-# Caches
-#
-CONFIG_FSCACHE=m
-CONFIG_FSCACHE_STATS=y
-# CONFIG_FSCACHE_HISTOGRAM is not set
-# CONFIG_FSCACHE_DEBUG is not set
-# CONFIG_FSCACHE_OBJECT_LIST is not set
-CONFIG_CACHEFILES=m
-# CONFIG_CACHEFILES_DEBUG is not set
-# CONFIG_CACHEFILES_HISTOGRAM is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_TMPFS_XATTR=y
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
-CONFIG_CONFIGFS_FS=m
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_ECRYPT_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_LOGFS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_PSTORE=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_EXOFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-CONFIG_NFS_V4_1=y
-CONFIG_PNFS_FILE_LAYOUT=m
-CONFIG_PNFS_BLOCK=m
-CONFIG_PNFS_OBJLAYOUT=m
-CONFIG_NFS_FSCACHE=y
-# CONFIG_NFS_USE_LEGACY_DNS is not set
-CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V2_ACL=y
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_V3_ACL=y
-CONFIG_NFSD_V4=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_ACL_SUPPORT=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_SUNRPC_BACKCHANNEL=y
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_CEPH_FS is not set
-CONFIG_CIFS=m
-CONFIG_CIFS_STATS=y
-# CONFIG_CIFS_STATS2 is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_UPCALL is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-CONFIG_CIFS_DFS_UPCALL=y
-CONFIG_CIFS_FSCACHE=y
-CONFIG_CIFS_ACL=y
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf-8"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_PRINTK_TIME=y
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=2048
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_STRIP_ASM_SYMS=y
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-CONFIG_HEADERS_CHECK=y
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-CONFIG_DEBUG_SHIRQ=y
-CONFIG_LOCKUP_DETECTOR=y
-CONFIG_HARDLOCKUP_DETECTOR=y
-# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
-CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
-# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
-CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
-# CONFIG_DETECT_HUNG_TASK is not set
-CONFIG_SCHED_DEBUG=y
-CONFIG_SCHEDSTATS=y
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_VIRTUAL is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_DEBUG_LIST=y
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-CONFIG_FRAME_POINTER=y
-CONFIG_BOOT_PRINTK_DELAY=y
-# CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_LKDTM is not set
-# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
-# CONFIG_FAULT_INJECTION is not set
-CONFIG_SYSCTL_SYSCALL_CHECK=y
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_USER_STACKTRACE_SUPPORT=y
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FTRACE_NMI_ENTER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_TRACER_MAX_TRACE=y
-CONFIG_RING_BUFFER=y
-CONFIG_FTRACE_NMI_ENTER=y
-CONFIG_EVENT_TRACING=y
-CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
-CONFIG_CONTEXT_SWITCH_TRACER=y
-CONFIG_TRACING=y
-CONFIG_GENERIC_TRACER=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-CONFIG_FUNCTION_TRACER=y
-# CONFIG_IRQSOFF_TRACER is not set
-CONFIG_SCHED_TRACER=y
-CONFIG_FTRACE_SYSCALLS=y
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-CONFIG_STACK_TRACER=y
-CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_DYNAMIC_FTRACE=y
-CONFIG_FUNCTION_PROFILER=y
-CONFIG_FTRACE_MCOUNT_RECORD=y
-# CONFIG_FTRACE_STARTUP_TEST is not set
-# CONFIG_MMIOTRACE is not set
-CONFIG_RING_BUFFER_BENCHMARK=m
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
-# CONFIG_BUILD_DOCSRC is not set
-CONFIG_DYNAMIC_DEBUG=y
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-CONFIG_ASYNC_RAID6_TEST=m
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-CONFIG_HAVE_ARCH_KMEMCHECK=y
-# CONFIG_TEST_KSTRTOX is not set
-CONFIG_STRICT_DEVMEM=y
-CONFIG_X86_VERBOSE_BOOTUP=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EARLY_PRINTK_DBGP is not set
-CONFIG_DEBUG_STACKOVERFLOW=y
-# CONFIG_X86_PTDUMP is not set
-CONFIG_DEBUG_NX_TEST=m
-CONFIG_DOUBLEFAULT=y
-# CONFIG_IOMMU_STRESS is not set
-CONFIG_HAVE_MMIOTRACE_SUPPORT=y
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-CONFIG_DEBUG_BOOT_PARAMS=y
-# CONFIG_CPA_DEBUG is not set
-CONFIG_OPTIMIZE_INLINING=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
-
-#
-# Security options
-#
-
-#
-# Grsecurity
-#
-CONFIG_GRKERNSEC=y
-# CONFIG_GRKERNSEC_LOW is not set
-# CONFIG_GRKERNSEC_MEDIUM is not set
-CONFIG_GRKERNSEC_HIGH=y
-# CONFIG_GRKERNSEC_CUSTOM is not set
-
-#
-# Address Space Protection
-#
-CONFIG_GRKERNSEC_KMEM=y
-CONFIG_GRKERNSEC_VM86=y
-# CONFIG_GRKERNSEC_IO is not set
-CONFIG_GRKERNSEC_PROC_MEMMAP=y
-CONFIG_GRKERNSEC_BRUTE=y
-CONFIG_GRKERNSEC_MODHARDEN=y
-CONFIG_GRKERNSEC_HIDESYM=y
-CONFIG_GRKERNSEC_KERN_LOCKOUT=y
-
-#
-# Role Based Access Control Options
-#
-CONFIG_GRKERNSEC_NO_RBAC=y
-# CONFIG_GRKERNSEC_ACL_HIDEKERN is not set
-CONFIG_GRKERNSEC_ACL_MAXTRIES=3
-CONFIG_GRKERNSEC_ACL_TIMEOUT=30
-
-#
-# Filesystem Protections
-#
-CONFIG_GRKERNSEC_PROC=y
-# CONFIG_GRKERNSEC_PROC_USER is not set
-CONFIG_GRKERNSEC_PROC_USERGROUP=y
-CONFIG_GRKERNSEC_PROC_GID=10
-CONFIG_GRKERNSEC_PROC_ADD=y
-CONFIG_GRKERNSEC_LINK=y
-CONFIG_GRKERNSEC_FIFO=y
-CONFIG_GRKERNSEC_SYSFS_RESTRICT=y
-# CONFIG_GRKERNSEC_ROFS is not set
-CONFIG_GRKERNSEC_CHROOT=y
-CONFIG_GRKERNSEC_CHROOT_MOUNT=y
-CONFIG_GRKERNSEC_CHROOT_DOUBLE=y
-CONFIG_GRKERNSEC_CHROOT_PIVOT=y
-CONFIG_GRKERNSEC_CHROOT_CHDIR=y
-CONFIG_GRKERNSEC_CHROOT_CHMOD=y
-CONFIG_GRKERNSEC_CHROOT_FCHDIR=y
-CONFIG_GRKERNSEC_CHROOT_MKNOD=y
-CONFIG_GRKERNSEC_CHROOT_SHMAT=y
-CONFIG_GRKERNSEC_CHROOT_UNIX=y
-CONFIG_GRKERNSEC_CHROOT_FINDTASK=y
-CONFIG_GRKERNSEC_CHROOT_NICE=y
-CONFIG_GRKERNSEC_CHROOT_SYSCTL=y
-CONFIG_GRKERNSEC_CHROOT_CAPS=y
-
-#
-# Kernel Auditing
-#
-# CONFIG_GRKERNSEC_AUDIT_GROUP is not set
-# CONFIG_GRKERNSEC_EXECLOG is not set
-CONFIG_GRKERNSEC_RESLOG=y
-# CONFIG_GRKERNSEC_CHROOT_EXECLOG is not set
-# CONFIG_GRKERNSEC_AUDIT_PTRACE is not set
-# CONFIG_GRKERNSEC_AUDIT_CHDIR is not set
-CONFIG_GRKERNSEC_AUDIT_MOUNT=y
-CONFIG_GRKERNSEC_SIGNAL=y
-CONFIG_GRKERNSEC_FORKFAIL=y
-CONFIG_GRKERNSEC_TIME=y
-CONFIG_GRKERNSEC_PROC_IPADDR=y
-CONFIG_GRKERNSEC_RWXMAP_LOG=y
-CONFIG_GRKERNSEC_AUDIT_TEXTREL=y
-
-#
-# Executable Protections
-#
-CONFIG_GRKERNSEC_DMESG=y
-CONFIG_GRKERNSEC_HARDEN_PTRACE=y
-# CONFIG_GRKERNSEC_TPE is not set
-
-#
-# Network Protections
-#
-CONFIG_GRKERNSEC_RANDNET=y
-CONFIG_GRKERNSEC_BLACKHOLE=y
-# CONFIG_GRKERNSEC_SOCKET is not set
-
-#
-# Sysctl support
-#
-CONFIG_GRKERNSEC_SYSCTL=y
-CONFIG_GRKERNSEC_SYSCTL_ON=y
-
-#
-# Logging Options
-#
-CONFIG_GRKERNSEC_FLOODTIME=10
-CONFIG_GRKERNSEC_FLOODBURST=6
-
-#
-# PaX
-#
-CONFIG_ARCH_TRACK_EXEC_LIMIT=y
-CONFIG_PAX_PER_CPU_PGD=y
-CONFIG_PAX=y
-
-#
-# PaX Control
-#
-# CONFIG_PAX_SOFTMODE is not set
-CONFIG_PAX_EI_PAX=y
-CONFIG_PAX_PT_PAX_FLAGS=y
-# CONFIG_PAX_NO_ACL_FLAGS is not set
-CONFIG_PAX_HAVE_ACL_FLAGS=y
-# CONFIG_PAX_HOOK_ACL_FLAGS is not set
-
-#
-# Non-executable pages
-#
-CONFIG_PAX_NOEXEC=y
-CONFIG_PAX_PAGEEXEC=y
-CONFIG_PAX_SEGMEXEC=y
-CONFIG_PAX_EMUTRAMP=y
-CONFIG_PAX_MPROTECT=y
-# CONFIG_PAX_MPROTECT_COMPAT is not set
-CONFIG_PAX_ELFRELOCS=y
-CONFIG_PAX_KERNEXEC=y
-CONFIG_PAX_KERNEXEC_MODULE_TEXT=4
-
-#
-# Address Space Layout Randomization
-#
-CONFIG_PAX_ASLR=y
-CONFIG_PAX_RANDKSTACK=y
-CONFIG_PAX_RANDUSTACK=y
-CONFIG_PAX_RANDMMAP=y
-
-#
-# Miscellaneous hardening features
-#
-CONFIG_PAX_MEMORY_SANITIZE=y
-CONFIG_PAX_MEMORY_STACKLEAK=y
-CONFIG_PAX_MEMORY_UDEREF=y
-CONFIG_PAX_REFCOUNT=y
-CONFIG_PAX_USERCOPY=y
-CONFIG_KEYS=y
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
-CONFIG_SECURITY_DMESG_RESTRICT=y
-CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
-CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
-# CONFIG_SECURITY_PATH is not set
-CONFIG_INTEL_TXT=y
-CONFIG_LSM_MMAP_MIN_ADDR=65536
-CONFIG_SECURITY_SELINUX=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
-CONFIG_SECURITY_SELINUX_DISABLE=y
-CONFIG_SECURITY_SELINUX_DEVELOP=y
-CONFIG_SECURITY_SELINUX_AVC_STATS=y
-CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
-# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
-# CONFIG_SECURITY_TOMOYO is not set
-# CONFIG_SECURITY_APPARMOR is not set
-# CONFIG_IMA is not set
-CONFIG_DEFAULT_SECURITY_SELINUX=y
-# CONFIG_DEFAULT_SECURITY_DAC is not set
-CONFIG_DEFAULT_SECURITY="selinux"
-CONFIG_XOR_BLOCKS=m
-CONFIG_ASYNC_CORE=m
-CONFIG_ASYNC_MEMCPY=m
-CONFIG_ASYNC_XOR=m
-CONFIG_ASYNC_PQ=m
-CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
-CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_FIPS=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=y
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
-CONFIG_CRYPTO_GF128MUL=m
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_PCRYPT=m
-CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CRYPTO_CRYPTD=y
-CONFIG_CRYPTO_AUTHENC=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=y
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CTR=y
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_XTS=m
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_VMAC=m
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_CRC32C_INTEL=y
-CONFIG_CRYPTO_GHASH=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_WP512=m
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_AES_586=y
-CONFIG_CRYPTO_AES_NI_INTEL=y
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SALSA20_586=m
-CONFIG_CRYPTO_SEED=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_TWOFISH_586=m
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
-CONFIG_CRYPTO_LZO=m
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_USER_API=y
-CONFIG_CRYPTO_USER_API_HASH=y
-CONFIG_CRYPTO_USER_API_SKCIPHER=y
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_PADLOCK=m
-CONFIG_CRYPTO_DEV_PADLOCK_AES=m
-CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-CONFIG_CRYPTO_DEV_GEODE=m
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_KVM_IRQCHIP=y
-CONFIG_HAVE_KVM_EVENTFD=y
-CONFIG_KVM_APIC_ARCHITECTURE=y
-CONFIG_KVM_MMIO=y
-CONFIG_KVM_ASYNC_PF=y
-CONFIG_VIRTUALIZATION=y
-CONFIG_KVM=m
-CONFIG_KVM_INTEL=m
-CONFIG_KVM_AMD=m
-CONFIG_KVM_MMU_AUDIT=y
-CONFIG_VHOST_NET=m
-# CONFIG_LGUEST is not set
-CONFIG_BINARY_PRINTF=y
-
-#
-# Library routines
-#
-CONFIG_RAID6_PQ=m
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=m
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=m
-CONFIG_CRC8=m
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CHECK_SIGNATURE=y
-CONFIG_CPU_RMAP=y
-CONFIG_NLATTR=y
-CONFIG_AVERAGE=y
-CONFIG_CORDIC=m
-CONFIG_LLIST=y
diff --git a/kernel/config.x86_64 b/kernel/config.x86_64
deleted file mode 100644 (file)
index 5114d27..0000000
+++ /dev/null
@@ -1,2932 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/x86_64 3.1.5 Kernel Configuration
-#
-CONFIG_64BIT=y
-# CONFIG_X86_32 is not set
-CONFIG_X86_64=y
-CONFIG_X86=y
-CONFIG_INSTRUCTION_DECODER=y
-CONFIG_OUTPUT_FORMAT="elf64-x86-64"
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_ARCH_CLOCKSOURCE_DATA=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_SG_DMA_LENGTH=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_HAVE_SETUP_PER_CPU_AREA=y
-CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
-CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
-CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ZONE_DMA32=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_AUDIT_ARCH=y
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
-CONFIG_HAVE_INTEL_TXT=y
-CONFIG_X86_64_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
-# CONFIG_KTIME_SCALAR is not set
-CONFIG_ARCH_CPU_PROBE_RELEASE=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-CONFIG_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_BZIP2=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_XZ=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_KERNEL_GZIP=y
-# CONFIG_KERNEL_BZIP2 is not set
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_XZ is not set
-# CONFIG_KERNEL_LZO is not set
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_FHANDLE is not set
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_WATCH=y
-CONFIG_AUDIT_TREE=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_SPARSE_IRQ=y
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-CONFIG_RCU_FANOUT=64
-# CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_RCU_FAST_NO_HZ is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=18
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-# CONFIG_CGROUP_DEVICE is not set
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
-# CONFIG_CGROUP_MEM_RES_CTLR is not set
-# CONFIG_CGROUP_PERF is not set
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_RT_GROUP_SCHED is not set
-# CONFIG_BLK_CGROUP is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-# CONFIG_SCHED_AUTOGROUP is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EXPERT is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_PCSPKR_PLATFORM=y
-CONFIG_HAVE_PCSPKR_PLATFORM=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
-CONFIG_HAVE_PERF_EVENTS=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_PERF_EVENTS=y
-# CONFIG_PERF_COUNTERS is not set
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
-CONFIG_SLUB_DEBUG=y
-# CONFIG_COMPAT_BRK is not set
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-CONFIG_PROFILING=y
-CONFIG_TRACEPOINTS=y
-# CONFIG_OPROFILE is not set
-CONFIG_HAVE_OPROFILE=y
-CONFIG_KPROBES=y
-# CONFIG_JUMP_LABEL is not set
-CONFIG_OPTPROBES=y
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_KRETPROBES=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_OPTPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
-CONFIG_HAVE_USER_RETURN_NOTIFIER=y
-CONFIG_HAVE_PERF_EVENTS_NMI=y
-CONFIG_HAVE_ARCH_JUMP_LABEL=y
-CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_BLK_DEV_BSG=y
-# CONFIG_BLK_DEV_BSGLIB is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-CONFIG_BLOCK_COMPAT=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-CONFIG_MUTEX_SPIN_ON_OWNER=y
-CONFIG_FREEZER=y
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-CONFIG_X86_MPPARSE=y
-CONFIG_X86_EXTENDED_PLATFORM=y
-# CONFIG_X86_VSMP is not set
-CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
-# CONFIG_MK8 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MATOM is not set
-CONFIG_GENERIC_CPU=y
-CONFIG_X86_INTERNODE_CACHE_SHIFT=7
-CONFIG_X86_CMPXCHG=y
-CONFIG_CMPXCHG_LOCAL=y
-CONFIG_CMPXCHG_DOUBLE=y
-CONFIG_X86_L1_CACHE_SHIFT=6
-CONFIG_X86_XADD=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=64
-CONFIG_X86_DEBUGCTLMSR=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR=y
-CONFIG_HPET_TIMER=y
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_DMI=y
-CONFIG_GART_IOMMU=y
-CONFIG_CALGARY_IOMMU=y
-CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
-CONFIG_SWIOTLB=y
-CONFIG_IOMMU_HELPER=y
-# CONFIG_MAXSMP is not set
-CONFIG_NR_CPUS=64
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-# CONFIG_IRQ_TIME_ACCOUNTING is not set
-# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT_VOLUNTARY=y
-# CONFIG_PREEMPT is not set
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_INTEL=y
-CONFIG_X86_MCE_AMD=y
-CONFIG_X86_MCE_THRESHOLD=y
-# CONFIG_X86_MCE_INJECT is not set
-CONFIG_X86_THERMAL_VECTOR=y
-# CONFIG_I8K is not set
-CONFIG_MICROCODE=y
-CONFIG_MICROCODE_INTEL=y
-CONFIG_MICROCODE_AMD=y
-CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=y
-CONFIG_X86_CPUID=y
-CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
-CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_DIRECT_GBPAGES=y
-CONFIG_NUMA=y
-CONFIG_AMD_NUMA=y
-CONFIG_X86_64_ACPI_NUMA=y
-CONFIG_NODES_SPAN_OTHER_NODES=y
-# CONFIG_NUMA_EMU is not set
-CONFIG_NODES_SHIFT=6
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_DEFAULT=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_PROC_KCORE_TEXT=y
-CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_SPARSEMEM_MANUAL=y
-CONFIG_SPARSEMEM=y
-CONFIG_NEED_MULTIPLE_NODES=y
-CONFIG_HAVE_MEMORY_PRESENT=y
-CONFIG_SPARSEMEM_EXTREME=y
-CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
-CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y
-CONFIG_SPARSEMEM_VMEMMAP=y
-CONFIG_HAVE_MEMBLOCK=y
-# CONFIG_MEMORY_HOTPLUG is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
-CONFIG_MIGRATION=y
-CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
-CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
-# CONFIG_MEMORY_FAILURE is not set
-# CONFIG_TRANSPARENT_HUGEPAGE is not set
-# CONFIG_CLEANCACHE is not set
-CONFIG_X86_CHECK_BIOS_CORRUPTION=y
-CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
-CONFIG_X86_RESERVE_LOW=64
-CONFIG_MTRR=y
-# CONFIG_MTRR_SANITIZER is not set
-CONFIG_X86_PAT=y
-CONFIG_ARCH_USES_PG_UNCACHED=y
-CONFIG_EFI=y
-CONFIG_SECCOMP=y
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-# CONFIG_HZ_300 is not set
-CONFIG_HZ_1000=y
-CONFIG_HZ=1000
-CONFIG_SCHED_HRTICK=y
-CONFIG_KEXEC=y
-CONFIG_CRASH_DUMP=y
-# CONFIG_KEXEC_JUMP is not set
-CONFIG_PHYSICAL_START=0x1000000
-CONFIG_RELOCATABLE=y
-CONFIG_PHYSICAL_ALIGN=0x1000000
-CONFIG_HOTPLUG_CPU=y
-# CONFIG_COMPAT_VDSO is not set
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-CONFIG_USE_PERCPU_NUMA_NODE_ID=y
-
-#
-# Power management and ACPI options
-#
-CONFIG_ARCH_HIBERNATION_HEADER=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_HIBERNATE_CALLBACKS=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION=""
-CONFIG_PM_SLEEP=y
-CONFIG_PM_SLEEP_SMP=y
-# CONFIG_PM_RUNTIME is not set
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_ADVANCED_DEBUG is not set
-# CONFIG_PM_TEST_SUSPEND is not set
-CONFIG_CAN_PM_TRACE=y
-CONFIG_PM_TRACE=y
-CONFIG_PM_TRACE_RTC=y
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
-# CONFIG_ACPI_PROCFS_POWER is not set
-# CONFIG_ACPI_EC_DEBUGFS is not set
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_VIDEO=y
-CONFIG_ACPI_FAN=y
-CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_HOTPLUG_CPU=y
-# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
-CONFIG_ACPI_THERMAL=y
-CONFIG_ACPI_NUMA=y
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-# CONFIG_ACPI_PCI_SLOT is not set
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-# CONFIG_ACPI_SBS is not set
-# CONFIG_ACPI_HED is not set
-# CONFIG_ACPI_CUSTOM_METHOD is not set
-# CONFIG_ACPI_APEI is not set
-# CONFIG_SFI is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_STAT is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
-
-#
-# x86 CPU frequency scaling drivers
-#
-# CONFIG_X86_PCC_CPUFREQ is not set
-CONFIG_X86_ACPI_CPUFREQ=y
-# CONFIG_X86_POWERNOW_K8 is not set
-# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
-# CONFIG_X86_P4_CLOCKMOD is not set
-
-#
-# shared options
-#
-# CONFIG_X86_SPEEDSTEP_LIB is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-# CONFIG_INTEL_IDLE is not set
-
-#
-# Memory power savings
-#
-# CONFIG_I7300_IDLE is not set
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCI_CNB20LE_QUIRK is not set
-CONFIG_PCIEPORTBUS=y
-# CONFIG_HOTPLUG_PCI_PCIE is not set
-CONFIG_PCIEAER=y
-# CONFIG_PCIE_ECRC is not set
-# CONFIG_PCIEAER_INJECT is not set
-CONFIG_PCIEASPM=y
-# CONFIG_PCIEASPM_DEBUG is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-# CONFIG_PCI_DEBUG is not set
-# CONFIG_PCI_STUB is not set
-CONFIG_HT_IRQ=y
-CONFIG_PCI_IOV=y
-CONFIG_PCI_IOAPIC=y
-CONFIG_PCI_LABEL=y
-CONFIG_ISA_DMA_API=y
-CONFIG_AMD_NB=y
-CONFIG_PCCARD=y
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=y
-CONFIG_YENTA_O2=y
-CONFIG_YENTA_RICOH=y
-CONFIG_YENTA_TI=y
-CONFIG_YENTA_ENE_TUNE=y
-CONFIG_YENTA_TOSHIBA=y
-# CONFIG_PD6729 is not set
-# CONFIG_I82092 is not set
-CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-# CONFIG_HOTPLUG_PCI_FAKE is not set
-# CONFIG_HOTPLUG_PCI_ACPI is not set
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
-# CONFIG_RAPIDIO is not set
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_COMPAT_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-# CONFIG_HAVE_AOUT is not set
-CONFIG_BINFMT_MISC=y
-CONFIG_IA32_EMULATION=y
-# CONFIG_IA32_AOUT is not set
-CONFIG_COMPAT=y
-CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
-CONFIG_SYSVIPC_COMPAT=y
-CONFIG_KEYS_COMPAT=y
-CONFIG_HAVE_TEXT_POKE_SMP=y
-CONFIG_NET=y
-CONFIG_COMPAT_NETLINK_MESSAGES=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=y
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE_DEMUX is not set
-CONFIG_IP_MROUTE=y
-# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INET_TUNNEL=y
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-CONFIG_INET_LRO=y
-# CONFIG_INET_DIAG is not set
-CONFIG_TCP_CONG_ADVANCED=y
-# CONFIG_TCP_CONG_BIC is not set
-CONFIG_TCP_CONG_CUBIC=y
-# CONFIG_TCP_CONG_WESTWOOD is not set
-# CONFIG_TCP_CONG_HTCP is not set
-# CONFIG_TCP_CONG_HSTCP is not set
-# CONFIG_TCP_CONG_HYBLA is not set
-# CONFIG_TCP_CONG_VEGAS is not set
-# CONFIG_TCP_CONG_SCALABLE is not set
-# CONFIG_TCP_CONG_LP is not set
-# CONFIG_TCP_CONG_VENO is not set
-# CONFIG_TCP_CONG_YEAH is not set
-# CONFIG_TCP_CONG_ILLINOIS is not set
-CONFIG_DEFAULT_CUBIC=y
-# CONFIG_DEFAULT_RENO is not set
-CONFIG_DEFAULT_TCP_CONG="cubic"
-CONFIG_TCP_MD5SIG=y
-CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=y
-CONFIG_INET6_ESP=y
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_IPV6_MIP6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-CONFIG_INET6_XFRM_MODE_TRANSPORT=y
-CONFIG_INET6_XFRM_MODE_TUNNEL=y
-CONFIG_INET6_XFRM_MODE_BEET=y
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=y
-# CONFIG_IPV6_SIT_6RD is not set
-CONFIG_IPV6_NDISC_NODETYPE=y
-# CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MROUTE is not set
-CONFIG_NETLABEL=y
-CONFIG_NETWORK_SECMARK=y
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_NETFILTER_ADVANCED is not set
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=y
-CONFIG_NETFILTER_NETLINK_LOG=y
-CONFIG_NF_CONNTRACK=y
-CONFIG_NF_CONNTRACK_SECMARK=y
-CONFIG_NF_CONNTRACK_FTP=y
-CONFIG_NF_CONNTRACK_IRC=y
-CONFIG_NF_CONNTRACK_SIP=y
-CONFIG_NF_CT_NETLINK=y
-CONFIG_NETFILTER_XTABLES=y
-
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=m
-
-#
-# Xtables targets
-#
-CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
-CONFIG_NETFILTER_XT_TARGET_NFLOG=y
-CONFIG_NETFILTER_XT_TARGET_SECMARK=y
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
-
-#
-# Xtables matches
-#
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
-CONFIG_NETFILTER_XT_MATCH_POLICY=y
-CONFIG_NETFILTER_XT_MATCH_STATE=y
-# CONFIG_IP_SET is not set
-# CONFIG_IP_VS is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=y
-CONFIG_NF_CONNTRACK_IPV4=y
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_TARGET_LOG=y
-CONFIG_IP_NF_TARGET_ULOG=y
-CONFIG_NF_NAT=y
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=y
-CONFIG_NF_NAT_FTP=y
-CONFIG_NF_NAT_IRC=y
-# CONFIG_NF_NAT_TFTP is not set
-# CONFIG_NF_NAT_AMANDA is not set
-# CONFIG_NF_NAT_PPTP is not set
-# CONFIG_NF_NAT_H323 is not set
-CONFIG_NF_NAT_SIP=y
-CONFIG_IP_NF_MANGLE=y
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV6=y
-CONFIG_NF_CONNTRACK_IPV6=y
-CONFIG_IP6_NF_IPTABLES=y
-CONFIG_IP6_NF_MATCH_IPV6HEADER=y
-CONFIG_IP6_NF_TARGET_LOG=y
-CONFIG_IP6_NF_FILTER=y
-CONFIG_IP6_NF_TARGET_REJECT=y
-CONFIG_IP6_NF_MANGLE=y
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_L2TP is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_NET_DSA is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-CONFIG_LLC=y
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_PHONET is not set
-# CONFIG_IEEE802154 is not set
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-# CONFIG_NET_SCH_CBQ is not set
-# CONFIG_NET_SCH_HTB is not set
-# CONFIG_NET_SCH_HFSC is not set
-# CONFIG_NET_SCH_PRIO is not set
-# CONFIG_NET_SCH_MULTIQ is not set
-# CONFIG_NET_SCH_RED is not set
-# CONFIG_NET_SCH_SFB is not set
-# CONFIG_NET_SCH_SFQ is not set
-# CONFIG_NET_SCH_TEQL is not set
-# CONFIG_NET_SCH_TBF is not set
-# CONFIG_NET_SCH_GRED is not set
-# CONFIG_NET_SCH_DSMARK is not set
-# CONFIG_NET_SCH_NETEM is not set
-# CONFIG_NET_SCH_DRR is not set
-# CONFIG_NET_SCH_MQPRIO is not set
-# CONFIG_NET_SCH_CHOKE is not set
-# CONFIG_NET_SCH_QFQ is not set
-# CONFIG_NET_SCH_INGRESS is not set
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-# CONFIG_NET_CLS_BASIC is not set
-# CONFIG_NET_CLS_TCINDEX is not set
-# CONFIG_NET_CLS_ROUTE4 is not set
-# CONFIG_NET_CLS_FW is not set
-# CONFIG_NET_CLS_U32 is not set
-# CONFIG_NET_CLS_RSVP is not set
-# CONFIG_NET_CLS_RSVP6 is not set
-# CONFIG_NET_CLS_FLOW is not set
-# CONFIG_NET_CLS_CGROUP is not set
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-# CONFIG_NET_EMATCH_CMP is not set
-# CONFIG_NET_EMATCH_NBYTE is not set
-# CONFIG_NET_EMATCH_U32 is not set
-# CONFIG_NET_EMATCH_META is not set
-# CONFIG_NET_EMATCH_TEXT is not set
-CONFIG_NET_CLS_ACT=y
-# CONFIG_NET_ACT_POLICE is not set
-# CONFIG_NET_ACT_GACT is not set
-# CONFIG_NET_ACT_MIRRED is not set
-# CONFIG_NET_ACT_IPT is not set
-# CONFIG_NET_ACT_NAT is not set
-# CONFIG_NET_ACT_PEDIT is not set
-# CONFIG_NET_ACT_SIMP is not set
-# CONFIG_NET_ACT_SKBEDIT is not set
-# CONFIG_NET_ACT_CSUM is not set
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-CONFIG_DNS_RESOLVER=y
-# CONFIG_BATMAN_ADV is not set
-CONFIG_RPS=y
-CONFIG_RFS_ACCEL=y
-CONFIG_XPS=y
-CONFIG_HAVE_BPF_JIT=y
-# CONFIG_BPF_JIT is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_TCPPROBE is not set
-# CONFIG_NET_DROP_MONITOR is not set
-CONFIG_HAMRADIO=y
-
-#
-# Packet Radio protocols
-#
-# CONFIG_AX25 is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_CFG80211=y
-# CONFIG_NL80211_TESTMODE is not set
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_CFG80211_DEFAULT_PS=y
-# CONFIG_CFG80211_DEBUGFS is not set
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
-CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-# CONFIG_LIB80211 is not set
-CONFIG_MAC80211=y
-CONFIG_MAC80211_HAS_RC=y
-CONFIG_MAC80211_RC_MINSTREL=y
-CONFIG_MAC80211_RC_MINSTREL_HT=y
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
-# CONFIG_MAC80211_MESH is not set
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-# CONFIG_WIMAX is not set
-CONFIG_RFKILL=y
-CONFIG_RFKILL_LEDS=y
-CONFIG_RFKILL_INPUT=y
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_NFC is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_DEVTMPFS is not set
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-CONFIG_DEBUG_DEVRES=y
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
-# CONFIG_PARPORT is not set
-CONFIG_PNP=y
-CONFIG_PNP_DEBUG_MESSAGES=y
-
-#
-# Protocols
-#
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_DRBD is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_BLK_DEV_HD is not set
-# CONFIG_BLK_DEV_RBD is not set
-# CONFIG_SENSORS_LIS3LV02D is not set
-# CONFIG_MISC_DEVICES is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-CONFIG_SCSI_CONSTANTS=y
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=y
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-# CONFIG_SCSI_LOWLEVEL is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_SCSI_DH is not set
-# CONFIG_SCSI_OSD_INITIATOR is not set
-CONFIG_ATA=y
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_ATA_ACPI=y
-CONFIG_SATA_PMP=y
-
-#
-# Controllers with non-SFF native interface
-#
-CONFIG_SATA_AHCI=y
-# CONFIG_SATA_AHCI_PLATFORM is not set
-# CONFIG_SATA_INIC162X is not set
-# CONFIG_SATA_ACARD_AHCI is not set
-# CONFIG_SATA_SIL24 is not set
-CONFIG_ATA_SFF=y
-
-#
-# SFF controllers with custom DMA interface
-#
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_SX4 is not set
-CONFIG_ATA_BMDMA=y
-
-#
-# SATA SFF controllers with BMDMA
-#
-CONFIG_ATA_PIIX=y
-# CONFIG_SATA_MV is not set
-# CONFIG_SATA_NV is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_SATA_ULI is not set
-# CONFIG_SATA_VIA is not set
-# CONFIG_SATA_VITESSE is not set
-
-#
-# PATA SFF controllers with BMDMA
-#
-# CONFIG_PATA_ALI is not set
-CONFIG_PATA_AMD=y
-# CONFIG_PATA_ARASAN_CF is not set
-# CONFIG_PATA_ARTOP is not set
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_ATP867X is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CS5536 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_IT8213 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_MARVELL is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NINJA32 is not set
-# CONFIG_PATA_NS87415 is not set
-CONFIG_PATA_OLDPIIX=y
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_RDC is not set
-# CONFIG_PATA_SC1200 is not set
-CONFIG_PATA_SCH=y
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_TOSHIBA is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-
-#
-# PIO-only SFF controllers
-#
-# CONFIG_PATA_CMD640_PCI is not set
-# CONFIG_PATA_MPIIX is not set
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_PCMCIA is not set
-# CONFIG_PATA_RZ1000 is not set
-
-#
-# Generic fallback / legacy drivers
-#
-# CONFIG_PATA_ACPI is not set
-# CONFIG_ATA_GENERIC is not set
-# CONFIG_PATA_LEGACY is not set
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_MD_AUTODETECT=y
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID10 is not set
-# CONFIG_MD_RAID456 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_MD_FAULTY is not set
-CONFIG_BLK_DEV_DM=y
-# CONFIG_DM_DEBUG is not set
-# CONFIG_DM_CRYPT is not set
-# CONFIG_DM_SNAPSHOT is not set
-CONFIG_DM_MIRROR=y
-# CONFIG_DM_RAID is not set
-# CONFIG_DM_LOG_USERSPACE is not set
-CONFIG_DM_ZERO=y
-# CONFIG_DM_MULTIPATH is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-# CONFIG_DM_FLAKEY is not set
-# CONFIG_TARGET_CORE is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_FIREWIRE_NOSY is not set
-# CONFIG_I2O is not set
-CONFIG_MACINTOSH_DRIVERS=y
-CONFIG_MAC_EMUMOUSEBTN=y
-CONFIG_NETDEVICES=y
-# CONFIG_IFB is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_VETH is not set
-# CONFIG_NET_SB1000 is not set
-# CONFIG_ARCNET is not set
-CONFIG_MII=y
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_FIXED_PHY is not set
-# CONFIG_MDIO_BITBANG is not set
-CONFIG_NET_ETHERNET=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-# CONFIG_VORTEX is not set
-# CONFIG_TYPHOON is not set
-# CONFIG_ETHOC is not set
-# CONFIG_DNET is not set
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-# CONFIG_TULIP is not set
-# CONFIG_DE4X5 is not set
-# CONFIG_WINBOND_840 is not set
-# CONFIG_DM9102 is not set
-# CONFIG_ULI526X is not set
-# CONFIG_PCMCIA_XIRCOM is not set
-# CONFIG_HP100 is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_KSZ884X_PCI is not set
-# CONFIG_B44 is not set
-CONFIG_FORCEDETH=y
-CONFIG_E100=y
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=y
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-# CONFIG_R6040 is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SMSC9420 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_KS8851_MLL is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_SC92031 is not set
-# CONFIG_ATL2 is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-CONFIG_E1000=y
-# CONFIG_E1000E is not set
-# CONFIG_IP1000 is not set
-# CONFIG_IGB is not set
-# CONFIG_IGBVF is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-CONFIG_SKY2=y
-# CONFIG_SKY2_DEBUG is not set
-# CONFIG_VIA_VELOCITY is not set
-CONFIG_TIGON3=y
-# CONFIG_BNX2 is not set
-# CONFIG_CNIC is not set
-# CONFIG_QLA3XXX is not set
-# CONFIG_ATL1 is not set
-# CONFIG_ATL1E is not set
-# CONFIG_ATL1C is not set
-# CONFIG_JME is not set
-# CONFIG_STMMAC_ETH is not set
-# CONFIG_PCH_GBE is not set
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_CHELSIO_T4 is not set
-# CONFIG_CHELSIO_T4VF is not set
-# CONFIG_ENIC is not set
-# CONFIG_IXGBE is not set
-# CONFIG_IXGBEVF is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_VXGE is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_NIU is not set
-# CONFIG_MLX4_EN is not set
-# CONFIG_MLX4_CORE is not set
-# CONFIG_TEHUTI is not set
-# CONFIG_BNX2X is not set
-# CONFIG_QLCNIC is not set
-# CONFIG_QLGE is not set
-# CONFIG_BNA is not set
-# CONFIG_SFC is not set
-# CONFIG_BE2NET is not set
-CONFIG_TR=y
-# CONFIG_IBMOL is not set
-# CONFIG_3C359 is not set
-# CONFIG_TMS380TR is not set
-CONFIG_WLAN=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_LIBERTAS_THINFIRM is not set
-# CONFIG_AIRO is not set
-# CONFIG_ATMEL is not set
-# CONFIG_AT76C50X_USB is not set
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_USB_NET_RNDIS_WLAN is not set
-# CONFIG_RTL8180 is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_ADM8211 is not set
-# CONFIG_MAC80211_HWSIM is not set
-# CONFIG_MWL8K is not set
-# CONFIG_ATH_COMMON is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_IWLAGN is not set
-# CONFIG_IWL4965 is not set
-# CONFIG_IWL3945 is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_HERMES is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_RTL8192CE is not set
-# CONFIG_RTL8192SE is not set
-# CONFIG_RTL8192DE is not set
-# CONFIG_RTL8192CU is not set
-# CONFIG_WL1251 is not set
-# CONFIG_WL12XX_MENU is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_MWIFIEX is not set
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_HSO is not set
-# CONFIG_USB_IPHETH is not set
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-# CONFIG_PCMCIA_PCNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_WAN is not set
-
-#
-# CAIF transport drivers
-#
-CONFIG_FDDI=y
-# CONFIG_DEFXX is not set
-# CONFIG_SKFP is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-CONFIG_NETCONSOLE=y
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-# CONFIG_VMXNET3 is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=y
-CONFIG_INPUT_POLLDEV=y
-CONFIG_INPUT_SPARSEKMAP=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_MAX7359 is not set
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-# CONFIG_MOUSE_PS2_SENTELIC is not set
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-CONFIG_INPUT_JOYSTICK=y
-# CONFIG_JOYSTICK_ANALOG is not set
-# CONFIG_JOYSTICK_A3D is not set
-# CONFIG_JOYSTICK_ADI is not set
-# CONFIG_JOYSTICK_COBRA is not set
-# CONFIG_JOYSTICK_GF2K is not set
-# CONFIG_JOYSTICK_GRIP is not set
-# CONFIG_JOYSTICK_GRIP_MP is not set
-# CONFIG_JOYSTICK_GUILLEMOT is not set
-# CONFIG_JOYSTICK_INTERACT is not set
-# CONFIG_JOYSTICK_SIDEWINDER is not set
-# CONFIG_JOYSTICK_TMDC is not set
-# CONFIG_JOYSTICK_IFORCE is not set
-# CONFIG_JOYSTICK_WARRIOR is not set
-# CONFIG_JOYSTICK_MAGELLAN is not set
-# CONFIG_JOYSTICK_SPACEORB is not set
-# CONFIG_JOYSTICK_SPACEBALL is not set
-# CONFIG_JOYSTICK_STINGER is not set
-# CONFIG_JOYSTICK_TWIDJOY is not set
-# CONFIG_JOYSTICK_ZHENHUA is not set
-# CONFIG_JOYSTICK_AS5011 is not set
-# CONFIG_JOYSTICK_JOYDUMP is not set
-# CONFIG_JOYSTICK_XPAD is not set
-CONFIG_INPUT_TABLET=y
-# CONFIG_TABLET_USB_ACECAD is not set
-# CONFIG_TABLET_USB_AIPTEK is not set
-# CONFIG_TABLET_USB_GTCO is not set
-# CONFIG_TABLET_USB_HANWANG is not set
-# CONFIG_TABLET_USB_KBTAB is not set
-# CONFIG_TABLET_USB_WACOM is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_AD7879 is not set
-# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
-# CONFIG_TOUCHSCREEN_BU21013 is not set
-# CONFIG_TOUCHSCREEN_DYNAPRO is not set
-# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
-# CONFIG_TOUCHSCREEN_EETI is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-# CONFIG_TOUCHSCREEN_MAX11801 is not set
-# CONFIG_TOUCHSCREEN_MCS5000 is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-# CONFIG_TOUCHSCREEN_TSC2007 is not set
-# CONFIG_TOUCHSCREEN_ST1232 is not set
-# CONFIG_TOUCHSCREEN_TPS6507X is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_AD714X is not set
-# CONFIG_INPUT_PCSPKR is not set
-# CONFIG_INPUT_MMA8450 is not set
-# CONFIG_INPUT_MPU3050 is not set
-# CONFIG_INPUT_APANEL is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_KXTJ9 is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_INPUT_CM109 is not set
-# CONFIG_INPUT_UINPUT is not set
-# CONFIG_INPUT_PCF8574 is not set
-# CONFIG_INPUT_ADXL34X is not set
-# CONFIG_INPUT_CMA3000 is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_SYNCLINK is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_SYNCLINK_GT is not set
-# CONFIG_NOZOMI is not set
-# CONFIG_ISI is not set
-# CONFIG_N_HDLC is not set
-# CONFIG_N_GSM is not set
-# CONFIG_TRACE_SINK is not set
-# CONFIG_DEVKMEM is not set
-# CONFIG_STALDRV is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-# CONFIG_SERIAL_8250_CS is not set
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_MFD_HSU is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_PCH_UART is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-# CONFIG_HW_RANDOM_INTEL is not set
-# CONFIG_HW_RANDOM_AMD is not set
-CONFIG_HW_RANDOM_VIA=y
-CONFIG_NVRAM=y
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_IPWIRELESS is not set
-# CONFIG_MWAVE is not set
-# CONFIG_RAW_DRIVER is not set
-CONFIG_HPET=y
-# CONFIG_HPET_MMAP is not set
-# CONFIG_HANGCHECK_TIMER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_DEVPORT=y
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-# CONFIG_I2C_CHARDEV is not set
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=y
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-CONFIG_I2C_I801=y
-# CONFIG_I2C_ISCH is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-
-#
-# ACPI drivers
-#
-# CONFIG_I2C_SCMI is not set
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_INTEL_MID is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-# CONFIG_I2C_EG20T is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_DIOLAN_U2C is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_SPI is not set
-
-#
-# PPS support
-#
-# CONFIG_PPS is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-
-#
-# Enable Device Drivers -> PPS to see the PTP clock options.
-#
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-# CONFIG_GPIOLIB is not set
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_TEST_POWER is not set
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_MAX17040 is not set
-# CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_MAX8903 is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ABITUGURU3 is not set
-# CONFIG_SENSORS_AD7414 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ADT7411 is not set
-# CONFIG_SENSORS_ADT7462 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7475 is not set
-# CONFIG_SENSORS_ASC7621 is not set
-# CONFIG_SENSORS_K8TEMP is not set
-# CONFIG_SENSORS_K10TEMP is not set
-# CONFIG_SENSORS_FAM15H_POWER is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS620 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_I5K_AMB is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_FSCHMD is not set
-# CONFIG_SENSORS_G760A is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_CORETEMP is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_JC42 is not set
-# CONFIG_SENSORS_LINEAGE is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM73 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_LTC4151 is not set
-# CONFIG_SENSORS_LTC4215 is not set
-# CONFIG_SENSORS_LTC4245 is not set
-# CONFIG_SENSORS_LTC4261 is not set
-# CONFIG_SENSORS_LM95241 is not set
-# CONFIG_SENSORS_LM95245 is not set
-# CONFIG_SENSORS_MAX16065 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX1668 is not set
-# CONFIG_SENSORS_MAX6639 is not set
-# CONFIG_SENSORS_MAX6642 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_NTC_THERMISTOR is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_PMBUS is not set
-# CONFIG_SENSORS_SHT21 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMM665 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_EMC1403 is not set
-# CONFIG_SENSORS_EMC2103 is not set
-# CONFIG_SENSORS_EMC6W201 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_SCH56XX_COMMON is not set
-# CONFIG_SENSORS_SCH5627 is not set
-# CONFIG_SENSORS_SCH5636 is not set
-# CONFIG_SENSORS_ADS1015 is not set
-# CONFIG_SENSORS_ADS7828 is not set
-# CONFIG_SENSORS_AMC6821 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_TMP102 is not set
-# CONFIG_SENSORS_TMP401 is not set
-# CONFIG_SENSORS_TMP421 is not set
-# CONFIG_SENSORS_VIA_CPUTEMP is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83795 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83L786NG is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_SENSORS_APPLESMC is not set
-
-#
-# ACPI drivers
-#
-# CONFIG_SENSORS_ACPI_POWER is not set
-# CONFIG_SENSORS_ATK0110 is not set
-CONFIG_THERMAL=y
-CONFIG_THERMAL_HWMON=y
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_CORE is not set
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM1535_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_F71808E_WDT is not set
-# CONFIG_SP5100_TCO is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_SBC_FITPC2_WATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_IBMASR is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_ITCO_WDT is not set
-# CONFIG_IT8712F_WDT is not set
-# CONFIG_IT87_WDT is not set
-# CONFIG_HP_WATCHDOG is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_PC87413_WDT is not set
-# CONFIG_NV_TCO is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_CPU5_WDT is not set
-# CONFIG_SMSC_SCH311X_WDT is not set
-# CONFIG_SMSC37B787_WDT is not set
-# CONFIG_W83627HF_WDT is not set
-# CONFIG_W83697HF_WDT is not set
-# CONFIG_W83697UG_WDT is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_W83977F_WDT is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-# CONFIG_SSB is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-CONFIG_MFD_SUPPORT=y
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_CS5535 is not set
-# CONFIG_LPC_SCH is not set
-# CONFIG_MFD_RDC321X is not set
-# CONFIG_MFD_JANZ_CMODIO is not set
-# CONFIG_MFD_VX855 is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_REGULATOR is not set
-# CONFIG_MEDIA_SUPPORT is not set
-
-#
-# Graphics support
-#
-CONFIG_AGP=y
-CONFIG_AGP_AMD64=y
-CONFIG_AGP_INTEL=y
-# CONFIG_AGP_SIS is not set
-# CONFIG_AGP_VIA is not set
-CONFIG_VGA_ARB=y
-CONFIG_VGA_ARB_MAX_GPUS=16
-# CONFIG_VGA_SWITCHEROO is not set
-CONFIG_DRM=y
-CONFIG_DRM_KMS_HELPER=y
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-CONFIG_DRM_I915=y
-CONFIG_DRM_I915_KMS=y
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE is not set
-# CONFIG_STUB_POULSBO is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=y
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_WMT_GE_ROPS is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_UVESA is not set
-# CONFIG_FB_VESA is not set
-CONFIG_FB_EFI=y
-# CONFIG_FB_N411 is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_LE80578 is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_VIA is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_CARMINE is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_UDL is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_MB862XX is not set
-# CONFIG_FB_BROADSHEET is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=y
-# CONFIG_BACKLIGHT_PROGEAR is not set
-# CONFIG_BACKLIGHT_APPLE is not set
-# CONFIG_BACKLIGHT_SAHARA is not set
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-CONFIG_VGACON_SOFT_SCROLLBACK=y
-CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=y
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=y
-CONFIG_SND_SEQUENCER=y
-CONFIG_SND_SEQ_DUMMY=y
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_HRTIMER=y
-CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
-CONFIG_SND_DYNAMIC_MINORS=y
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_VMASTER=y
-CONFIG_SND_DMA_SGBUF=y
-# CONFIG_SND_RAWMIDI_SEQ is not set
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_PCSP is not set
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_ALOOP is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-CONFIG_SND_PCI=y
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ASIHPI is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AW2 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_OXYGEN is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5530 is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_CTXFI is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_INDIGOIOX is not set
-# CONFIG_SND_INDIGODJX is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-CONFIG_SND_HDA_INTEL=y
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_HDA_HWDEP=y
-# CONFIG_SND_HDA_RECONFIG is not set
-# CONFIG_SND_HDA_INPUT_BEEP is not set
-# CONFIG_SND_HDA_INPUT_JACK is not set
-# CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_HDMI=y
-CONFIG_SND_HDA_CODEC_CIRRUS=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CA0110=y
-CONFIG_SND_HDA_CODEC_CA0132=y
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
-# CONFIG_SND_HDA_POWER_SAVE is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_LOLA is not set
-# CONFIG_SND_LX6464ES is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VIRTUOSO is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-CONFIG_SND_USB=y
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_UA101 is not set
-# CONFIG_SND_USB_USX2Y is not set
-# CONFIG_SND_USB_CAIAQ is not set
-# CONFIG_SND_USB_US122L is not set
-# CONFIG_SND_USB_6FIRE is not set
-CONFIG_SND_PCMCIA=y
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-# CONFIG_SND_SOC is not set
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-CONFIG_HIDRAW=y
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-
-#
-# Special HID drivers
-#
-CONFIG_HID_A4TECH=y
-# CONFIG_HID_ACRUX is not set
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-# CONFIG_HID_PRODIKEYS is not set
-CONFIG_HID_CYPRESS=y
-# CONFIG_HID_DRAGONRISE is not set
-# CONFIG_HID_EMS_FF is not set
-CONFIG_HID_EZKEY=y
-# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_KEYTOUCH is not set
-CONFIG_HID_KYE=y
-# CONFIG_HID_UCLOGIC is not set
-# CONFIG_HID_WALTOP is not set
-CONFIG_HID_GYRATION=y
-# CONFIG_HID_TWINHAN is not set
-CONFIG_HID_KENSINGTON=y
-# CONFIG_HID_LCPOWER is not set
-CONFIG_HID_LOGITECH=y
-CONFIG_LOGITECH_FF=y
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-# CONFIG_LOGIG940_FF is not set
-# CONFIG_LOGIWII_FF is not set
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-# CONFIG_HID_MULTITOUCH is not set
-CONFIG_HID_NTRIG=y
-# CONFIG_HID_ORTEK is not set
-CONFIG_HID_PANTHERLORD=y
-CONFIG_PANTHERLORD_FF=y
-CONFIG_HID_PETALYNX=y
-# CONFIG_HID_PICOLCD is not set
-# CONFIG_HID_QUANTA is not set
-# CONFIG_HID_ROCCAT is not set
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SONY=y
-# CONFIG_HID_SPEEDLINK is not set
-CONFIG_HID_SUNPLUS=y
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-CONFIG_HID_TOPSEED=y
-# CONFIG_HID_THRUSTMASTER is not set
-# CONFIG_HID_ZEROPLUS is not set
-# CONFIG_HID_ZYDACRON is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-CONFIG_USB_DEBUG=y
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_MON=y
-# CONFIG_USB_WUSB is not set
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-# CONFIG_USB_XHCI_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_WHCI_HCD is not set
-# CONFIG_USB_HWA_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=y
-# CONFIG_USB_WDM is not set
-# CONFIG_USB_TMC is not set
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_REALTEK is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-# CONFIG_USB_STORAGE_ENE_UB6250 is not set
-# CONFIG_USB_UAS is not set
-CONFIG_USB_LIBUSUAL=y
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_YUREX is not set
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-# CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_UWB is not set
-# CONFIG_MMC is not set
-# CONFIG_MEMSTICK is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LM3530 is not set
-# CONFIG_LEDS_ALIX2 is not set
-# CONFIG_LEDS_PCA9532 is not set
-# CONFIG_LEDS_LP3944 is not set
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-# CONFIG_LEDS_CLEVO_MAIL is not set
-# CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_BD2802 is not set
-# CONFIG_LEDS_INTEL_SS4200 is not set
-CONFIG_LEDS_TRIGGERS=y
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGER_TIMER is not set
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-# CONFIG_ACCESSIBILITY is not set
-# CONFIG_INFINIBAND is not set
-CONFIG_EDAC=y
-
-#
-# Reporting subsystems
-#
-# CONFIG_EDAC_DEBUG is not set
-CONFIG_EDAC_DECODE_MCE=y
-# CONFIG_EDAC_MCE_INJ is not set
-# CONFIG_EDAC_MM_EDAC is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-# CONFIG_RTC_HCTOSYS is not set
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS3232 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_ISL12022 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-# CONFIG_RTC_DRV_BQ32K is not set
-# CONFIG_RTC_DRV_S35390A is not set
-# CONFIG_RTC_DRV_FM3130 is not set
-# CONFIG_RTC_DRV_RX8581 is not set
-# CONFIG_RTC_DRV_RX8025 is not set
-# CONFIG_RTC_DRV_EM3027 is not set
-# CONFIG_RTC_DRV_RV3029C2 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=y
-# CONFIG_RTC_DRV_DS1286 is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T35 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_MSM6242 is not set
-# CONFIG_RTC_DRV_BQ4802 is not set
-# CONFIG_RTC_DRV_RP5C01 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_DMADEVICES=y
-# CONFIG_DMADEVICES_DEBUG is not set
-
-#
-# DMA Devices
-#
-# CONFIG_INTEL_MID_DMAC is not set
-# CONFIG_INTEL_IOATDMA is not set
-# CONFIG_TIMB_DMA is not set
-# CONFIG_PCH_DMA is not set
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_UIO is not set
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_PCI is not set
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_STAGING is not set
-CONFIG_X86_PLATFORM_DEVICES=y
-# CONFIG_ACERHDF is not set
-# CONFIG_ASUS_LAPTOP is not set
-# CONFIG_FUJITSU_LAPTOP is not set
-# CONFIG_HP_ACCEL is not set
-# CONFIG_MSI_LAPTOP is not set
-# CONFIG_PANASONIC_LAPTOP is not set
-# CONFIG_COMPAL_LAPTOP is not set
-# CONFIG_SONY_LAPTOP is not set
-# CONFIG_IDEAPAD_LAPTOP is not set
-# CONFIG_THINKPAD_ACPI is not set
-# CONFIG_SENSORS_HDAPS is not set
-# CONFIG_INTEL_MENLOW is not set
-CONFIG_EEEPC_LAPTOP=y
-# CONFIG_ACPI_WMI is not set
-# CONFIG_ACPI_ASUS is not set
-# CONFIG_TOPSTAR_LAPTOP is not set
-# CONFIG_ACPI_TOSHIBA is not set
-# CONFIG_TOSHIBA_BT_RFKILL is not set
-# CONFIG_ACPI_CMPC is not set
-# CONFIG_INTEL_IPS is not set
-# CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
-# CONFIG_SAMSUNG_LAPTOP is not set
-# CONFIG_INTEL_OAKTRAIL is not set
-# CONFIG_SAMSUNG_Q10 is not set
-CONFIG_CLKEVT_I8253=y
-CONFIG_I8253_LOCK=y
-CONFIG_CLKBLD_I8253=y
-CONFIG_IOMMU_API=y
-CONFIG_IOMMU_SUPPORT=y
-CONFIG_AMD_IOMMU=y
-CONFIG_AMD_IOMMU_STATS=y
-CONFIG_DMAR=y
-# CONFIG_DMAR_DEFAULT_ON is not set
-CONFIG_DMAR_FLOPPY_WA=y
-# CONFIG_INTR_REMAP is not set
-# CONFIG_VIRT_DRIVERS is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-CONFIG_FIRMWARE_MEMMAP=y
-CONFIG_EFI_VARS=y
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_DMIID=y
-# CONFIG_DMI_SYSFS is not set
-# CONFIG_ISCSI_IBFT_FIND is not set
-# CONFIG_SIGMA is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_FANOTIFY is not set
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-# CONFIG_PRINT_QUOTA_WARNING is not set
-# CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-CONFIG_QUOTACTL_COMPAT=y
-CONFIG_AUTOFS4_FS=y
-# CONFIG_FUSE_FS is not set
-CONFIG_GENERIC_ACL=y
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-# CONFIG_PROC_VMCORE is not set
-CONFIG_PROC_SYSCTL=y
-# CONFIG_PROC_PAGE_MONITOR is not set
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_TMPFS_XATTR=y
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
-# CONFIG_CONFIGFS_FS is not set
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_ECRYPT_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_LOGFS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
-CONFIG_ROOT_NFS=y
-# CONFIG_NFS_USE_LEGACY_DNS is not set
-CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_ACL_SUPPORT=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_CEPH_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-CONFIG_OSF_PARTITION=y
-CONFIG_AMIGA_PARTITION=y
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-CONFIG_MINIX_SUBPARTITION=y
-CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_UNIXWARE_DISKLABEL=y
-# CONFIG_LDM_PARTITION is not set
-CONFIG_SGI_PARTITION=y
-# CONFIG_ULTRIX_PARTITION is not set
-CONFIG_SUN_PARTITION=y
-CONFIG_KARMA_PARTITION=y
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_PRINTK_TIME=y
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=2048
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-# CONFIG_DETECT_HUNG_TASK is not set
-# CONFIG_SCHED_DEBUG is not set
-CONFIG_SCHEDSTATS=y
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-CONFIG_STACKTRACE=y
-CONFIG_DEBUG_STACK_USAGE=y
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_VIRTUAL is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_KPROBES_SANITY_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_LKDTM is not set
-# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-CONFIG_SYSCTL_SYSCALL_CHECK=y
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_USER_STACKTRACE_SUPPORT=y
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_RING_BUFFER=y
-CONFIG_EVENT_TRACING=y
-CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
-CONFIG_CONTEXT_SWITCH_TRACER=y
-CONFIG_TRACING=y
-CONFIG_GENERIC_TRACER=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_FTRACE_SYSCALLS is not set
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-# CONFIG_STACK_TRACER is not set
-CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_KPROBE_EVENT=y
-# CONFIG_FTRACE_STARTUP_TEST is not set
-# CONFIG_MMIOTRACE is not set
-# CONFIG_RING_BUFFER_BENCHMARK is not set
-CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-CONFIG_HAVE_ARCH_KMEMCHECK=y
-# CONFIG_KMEMCHECK is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_X86_VERBOSE_BOOTUP=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_EARLY_PRINTK_DBGP=y
-CONFIG_DEBUG_STACKOVERFLOW=y
-# CONFIG_X86_PTDUMP is not set
-CONFIG_DEBUG_NX_TEST=m
-# CONFIG_IOMMU_DEBUG is not set
-# CONFIG_IOMMU_STRESS is not set
-CONFIG_HAVE_MMIOTRACE_SUPPORT=y
-# CONFIG_X86_DECODER_SELFTEST is not set
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-CONFIG_DEBUG_BOOT_PARAMS=y
-# CONFIG_CPA_DEBUG is not set
-CONFIG_OPTIMIZE_INLINING=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
-
-#
-# Security options
-#
-
-#
-# Grsecurity
-#
-# CONFIG_GRKERNSEC is not set
-
-#
-# PaX
-#
-CONFIG_TASK_SIZE_MAX_SHIFT=47
-
-#
-# Miscellaneous hardening features
-#
-# CONFIG_PAX_MEMORY_SANITIZE is not set
-# CONFIG_PAX_MEMORY_STACKLEAK is not set
-# CONFIG_PAX_MEMORY_UDEREF is not set
-CONFIG_KEYS=y
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-CONFIG_SECURITY=y
-# CONFIG_SECURITYFS is not set
-CONFIG_SECURITY_NETWORK=y
-# CONFIG_SECURITY_NETWORK_XFRM is not set
-# CONFIG_SECURITY_PATH is not set
-# CONFIG_INTEL_TXT is not set
-CONFIG_LSM_MMAP_MIN_ADDR=65536
-CONFIG_SECURITY_SELINUX=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
-CONFIG_SECURITY_SELINUX_DISABLE=y
-CONFIG_SECURITY_SELINUX_DEVELOP=y
-CONFIG_SECURITY_SELINUX_AVC_STATS=y
-CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
-# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
-# CONFIG_SECURITY_SMACK is not set
-# CONFIG_SECURITY_TOMOYO is not set
-# CONFIG_SECURITY_APPARMOR is not set
-# CONFIG_IMA is not set
-CONFIG_DEFAULT_SECURITY_SELINUX=y
-# CONFIG_DEFAULT_SECURITY_DAC is not set
-CONFIG_DEFAULT_SECURITY="selinux"
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=y
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_PCRYPT is not set
-CONFIG_CRYPTO_WORKQUEUE=y
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_AUTHENC=y
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-# CONFIG_CRYPTO_ECB is not set
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_VMAC is not set
-
-#
-# Digest
-#
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CRC32C_INTEL is not set
-# CONFIG_CRYPTO_GHASH is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-CONFIG_CRYPTO_SHA1=y
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-# CONFIG_CRYPTO_AES_X86_64 is not set
-# CONFIG_CRYPTO_AES_NI_INTEL is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=y
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SALSA20_X86_64 is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
-
-#
-# Compression
-#
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_ZLIB is not set
-# CONFIG_CRYPTO_LZO is not set
-
-#
-# Random Number Generation
-#
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-CONFIG_CRYPTO_HW=y
-# CONFIG_CRYPTO_DEV_PADLOCK is not set
-# CONFIG_CRYPTO_DEV_HIFN_795X is not set
-CONFIG_HAVE_KVM=y
-CONFIG_VIRTUALIZATION=y
-# CONFIG_KVM is not set
-# CONFIG_VHOST_NET is not set
-CONFIG_BINARY_PRINTF=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-CONFIG_CRC_T10DIF=y
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-# CONFIG_LIBCRC32C is not set
-# CONFIG_CRC8 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CHECK_SIGNATURE=y
-CONFIG_CPU_RMAP=y
-CONFIG_NLATTR=y
-CONFIG_AVERAGE=y
-# CONFIG_CORDIC is not set
index e266e41d558bd51afb0b97d04d56c969012eb30f..ed507e43a065ed277e70defa7961e8cc932a8e90 100644 (file)
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = kernel
 ###############################################################################
 
 name       = kernel
-version    = 3.1.5
-release    = 4
+version    = 3.2.12
+release    = 1
 thisapp    = linux-%{version}
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
 thisapp    = linux-%{version}
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
@@ -15,9 +15,9 @@ license    = GPLv2
 summary    = The Linux kernel.
 
 description
 summary    = The Linux kernel.
 
 description
-       The kernel package contains the Linux kernel (vmlinuz), the core of any \
-       Linux operating system. The kernel handles the basic functions \
-       of the operating system: memory allocation, process allocation, device \
+       The kernel package contains the Linux kernel (vmlinuz), the core of any
+       Linux operating system. The kernel handles the basic functions
+       of the operating system: memory allocation, process allocation, device
        input and output, etc.
 end
 
        input and output, etc.
 end
 
@@ -40,13 +40,14 @@ build
                elfutils-devel
                gcc-plugin-devel
                gettext
                elfutils-devel
                gcc-plugin-devel
                gettext
-               module-init-tools
                ncurses-devel
                net-tools
                perl
                python-devel
                xmlto
                xz-lzma-compat
                ncurses-devel
                net-tools
                perl
                python-devel
                xmlto
                xz-lzma-compat
+
+               /sbin/depmod
        end
 
        tools_cpupower_requires
        end
 
        tools_cpupower_requires
@@ -81,8 +82,14 @@ build
        end
 
        if "%{DISTRO_ARCH}" == "armv5tel"
        end
 
        if "%{DISTRO_ARCH}" == "armv5tel"
+               # ERROR Currently all kernel images are disabled, because they
+               # won't build with the grsecurity patch.
+
                # Build versatile kernel.
                # Build versatile kernel.
-               build_kernel_versatile = 1
+               #build_kernel_versatile = 1
+
+               # Build a kernel for Marvell Kirkwood-based devices.
+               #build_kernel_kirkwood = 1
 
                kernel_arch  = arm
                kernel_image = arch/%{kernel_arch}/boot/zImage
 
                kernel_arch  = arm
                kernel_image = arch/%{kernel_arch}/boot/zImage
@@ -92,9 +99,11 @@ build
        end
 
        if "%{DISTRO_ARCH}" == "armv7hl"
        end
 
        if "%{DISTRO_ARCH}" == "armv7hl"
-               # Currently build no kernel images.
+               # Build a kernel for TI OMAP SoCs.
+               build_kernel_omap = 1
 
                kernel_arch  = arm
 
                kernel_arch  = arm
+               kernel_image = arch/%{kernel_arch}/boot/zImage
 
                # ARM does not support cpupower.
                build_cpupower = 0
 
                # ARM does not support cpupower.
                build_cpupower = 0
@@ -115,6 +124,16 @@ build
                kernels += versatile
        end
 
                kernels += versatile
        end
 
+       # Build ARM kirkwood kernel.
+       if "%{build_kernel_kirkwood}" == "1"
+               kernels += kirkwood
+       end
+
+       # Build ARM omap kernel.
+       if "%{build_kernel_omap}" == "1"
+               kernels += omap
+       end
+
        # Add tools' build requirements if build is requested.
        if "%{build_cpupower}" == "1"
                requires += %{tools_cpupower_requires}
        # Add tools' build requirements if build is requested.
        if "%{build_cpupower}" == "1"
                requires += %{tools_cpupower_requires}
@@ -138,6 +157,8 @@ build
                touch .scmversion
 
                mkdir -pv configs
                touch .scmversion
 
                mkdir -pv configs
+
+               cd %{DIR_SOURCE}
                configure_kernel() {
                        local flavour=${1}
                        local suffix
                configure_kernel() {
                        local flavour=${1}
                        local suffix
@@ -145,13 +166,8 @@ build
                                suffix="-${flavour}"
                        fi
 
                                suffix="-${flavour}"
                        fi
 
-                       # This is the place, where the configuration files
-                       # should be dynamically generated.
-                       # For now, we just copy pregenerated ones.
-                       cp %{DIR_SOURCE}/config.%{arch}${suffix} .config
-
-                       make ARCH=%{kernel_arch} oldnoconfig
-                       mv .config configs/config.${flavour}
+                       scripts/configure --kernel-dir=%{DIR_APP} \
+                               merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
                }
 
                # Generate configuration files for all kernels we are going to
                }
 
                # Generate configuration files for all kernels we are going to
@@ -276,6 +292,10 @@ build
        end
 
        install
        end
 
        install
+               # When no kernels are configured, we create a default config
+               # which enables us to install at least the header files.
+               [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
+
                # Install the header files
                make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
                mkdir -pv %{BUILDROOT}/usr/include
                # Install the header files
                make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
                mkdir -pv %{BUILDROOT}/usr/include
@@ -317,9 +337,7 @@ packages
                summary = The Linux kernel %{kernel_release}.
 
                prerequires
                summary = The Linux kernel %{kernel_release}.
 
                prerequires
-                       dracut
-                       grubby
-                       module-init-tools
+                       /sbin/depmod
                end
 
                provides
                end
 
                provides
@@ -327,7 +345,8 @@ packages
                end
 
                requires
                end
 
                requires
-                       %{prerequires}
+                       dracut
+                       grubby
                        linux-firmware
                end
 
                        linux-firmware
                end
 
@@ -428,13 +447,45 @@ packages
                end
 
                package kernel-versatile-devel
                end
 
                package kernel-versatile-devel
-                       kernel KERNELDEVEL
+                       template KERNELDEVEL
 
                        kernel_name = kernel-versatile
                        kernel_release = %{fullver}.versatile
                end
        end
 
 
                        kernel_name = kernel-versatile
                        kernel_release = %{fullver}.versatile
                end
        end
 
+       if "%{build_kernel_kirkwood}" == "1"
+               package kernel-kirkwood
+                       template KERNEL
+
+                       kernel_name = kernel-kirkwood
+                       kernel_release = %{fullver}.kirkwood
+               end
+
+               package kernel-kirkwood-devel
+                       template KERNELDEVEL
+
+                       kernel_name = kernel-kirkwood
+                       kernel_release = %{fullver}.kirkwood
+               end
+       end
+
+       if "%{build_kernel_omap}" == "1"
+               package kernel-omap
+                       template KERNEL
+
+                       kernel_name = kernel-omap
+                       kernel_release = %{fullver}.omap
+               end
+
+               package kernel-omap-devel
+                       template KERNELDEVEL
+
+                       kernel_name = kernel-omap
+                       kernel_release = %{fullver}.omap
+               end
+       end
+
        package kernel-headers
                summary = Header files of the kernel release %{fullver}.
                desciption = %{summary}
        package kernel-headers
                summary = Header files of the kernel release %{fullver}.
                desciption = %{summary}
diff --git a/kernel/patches/arm-smsc-support-reading-mac-address-from-device-tree.patch b/kernel/patches/arm-smsc-support-reading-mac-address-from-device-tree.patch
new file mode 100644 (file)
index 0000000..a36c683
--- /dev/null
@@ -0,0 +1,92 @@
+From 0b608345e114681f66ca0a3cf9d9434728da62ce Mon Sep 17 00:00:00 2001
+From: Ken Cox <ken@coxcampers.net>
+Date: Thu, 23 Jun 2011 10:36:43 -0500
+Subject: [PATCH] Support reading mac address from device tree.
+
+If CONFIG_OF is enabled, we will try to read the mac address from the device tree.  This enables us the ability to have a "static" mac address on arm boards such as the pandaboard and beagleboard which generate random mac addresses.
+---
+ drivers/net/usb/smsc75xx.c |   17 +++++++++++++++++
+ drivers/net/usb/smsc95xx.c |   18 +++++++++++++++++-
+ 2 files changed, 34 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
+index 753ee6e..ac0a200 100644
+--- a/drivers/net/usb/smsc75xx.c
++++ b/drivers/net/usb/smsc75xx.c
+@@ -29,6 +29,7 @@
+ #include <linux/crc32.h>
+ #include <linux/usb/usbnet.h>
+ #include <linux/slab.h>
++#include <linux/of_device.h>
+ #include "smsc75xx.h"
+ #define SMSC_CHIPNAME                 "smsc75xx"
+@@ -658,6 +659,22 @@ static int smsc75xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
+ static void smsc75xx_init_mac_address(struct usbnet *dev)
+ {
++      void *address;
++#ifdef CONFIG_OF
++      struct device_node *np;
++
++      /* try the device tree */
++      np = of_find_node_by_name(NULL, "smsc75xx");
++      if (np) {
++              address = of_get_property(np, "local-mac-address", NULL);
++              if (address) {
++                      memcpy(dev->net->dev_addr, address, ETH_ALEN);
++                      netif_dbg(dev, ifup, dev->net, "MAC address read from device tree\n");
++                      return;
++              }
++      }
++#endif
++
+       /* try reading mac address from EEPROM */
+       if (smsc75xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
+                       dev->net->dev_addr) == 0) {
+diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
+index bc86f4b..c83942d 100644
+--- a/drivers/net/usb/smsc95xx.c
++++ b/drivers/net/usb/smsc95xx.c
+@@ -29,6 +29,7 @@
+ #include <linux/crc32.h>
+ #include <linux/usb/usbnet.h>
+ #include <linux/slab.h>
++#include <linux/of_device.h>
+ #include "smsc95xx.h"
+ #define SMSC_CHIPNAME                 "smsc95xx"
+@@ -639,6 +640,22 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
+ static void smsc95xx_init_mac_address(struct usbnet *dev)
+ {
++      void *address;
++#ifdef CONFIG_OF
++      struct device_node *np;
++
++      /* try the device tree */
++      np = of_find_node_by_name(NULL, "smsc95xx");
++      if (np) {
++              address = of_get_property(np, "local-mac-address", NULL);
++              if (address) {
++                      memcpy(dev->net->dev_addr, address, ETH_ALEN);
++                      netif_dbg(dev, ifup, dev->net, "MAC address read from device tree\n");
++                      return;
++              }
++      }
++#endif
++
+       /* try reading mac address from EEPROM */
+       if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
+                       dev->net->dev_addr) == 0) {
+@@ -648,7 +665,6 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
+                       return;
+               }
+       }
+-
+       /* no eeprom, or eeprom values are invalid. generate random MAC */
+       random_ether_addr(dev->net->dev_addr);
+       netif_dbg(dev, ifup, dev->net, "MAC address set to random_ether_addr\n");
+-- 
+1.7.2.3
+
similarity index 84%
rename from kernel/patches/grsecurity-2.2.2-3.1.5-201112101853.patch
rename to kernel/patches/grsecurity-2.9-3.2.12-201203221944.patch
index 67dea054b37ff74d726909bf957a1144ae082d1f..94d7e91d26bbfad01d801a1e13fcf73c2d8369bf 100644 (file)
@@ -1,8 +1,12 @@
 diff --git a/Documentation/dontdiff b/Documentation/dontdiff
 diff --git a/Documentation/dontdiff b/Documentation/dontdiff
-index dfa6fc6..0095943 100644
+index dfa6fc6..df93044 100644
 --- a/Documentation/dontdiff
 +++ b/Documentation/dontdiff
 --- a/Documentation/dontdiff
 +++ b/Documentation/dontdiff
-@@ -5,6 +5,7 @@
+@@ -2,9 +2,11 @@
+ *.aux
+ *.bin
+ *.bz2
++*.c.[012]*.*
  *.cis
  *.cpio
  *.csp
  *.cis
  *.cpio
  *.csp
@@ -10,7 +14,7 @@ index dfa6fc6..0095943 100644
  *.dsp
  *.dvi
  *.elf
  *.dsp
  *.dvi
  *.elf
-@@ -14,6 +15,7 @@
+@@ -14,6 +16,7 @@
  *.gcov
  *.gen.S
  *.gif
  *.gcov
  *.gen.S
  *.gif
@@ -18,7 +22,7 @@ index dfa6fc6..0095943 100644
  *.grep
  *.grp
  *.gz
  *.grep
  *.grp
  *.gz
-@@ -48,9 +50,11 @@
+@@ -48,9 +51,11 @@
  *.tab.h
  *.tex
  *.ver
  *.tab.h
  *.tex
  *.ver
@@ -30,7 +34,7 @@ index dfa6fc6..0095943 100644
  *_vga16.c
  *~
  \#*#
  *_vga16.c
  *~
  \#*#
-@@ -70,6 +74,7 @@ Kerntypes
+@@ -70,6 +75,7 @@ Kerntypes
  Module.markers
  Module.symvers
  PENDING
  Module.markers
  Module.symvers
  PENDING
@@ -38,7 +42,7 @@ index dfa6fc6..0095943 100644
  SCCS
  System.map*
  TAGS
  SCCS
  System.map*
  TAGS
-@@ -93,19 +98,24 @@ bounds.h
+@@ -93,19 +99,24 @@ bounds.h
  bsetup
  btfixupprep
  build
  bsetup
  btfixupprep
  build
@@ -63,7 +67,11 @@ index dfa6fc6..0095943 100644
  conmakehash
  consolemap_deftbl.c*
  cpustr.h
  conmakehash
  consolemap_deftbl.c*
  cpustr.h
-@@ -119,6 +129,7 @@ dslm
+@@ -116,9 +127,11 @@ devlist.h*
+ dnotify_test
+ docproc
+ dslm
++dtc-lexer.lex.c
  elf2ecoff
  elfconfig.h*
  evergreen_reg_safe.h
  elf2ecoff
  elfconfig.h*
  evergreen_reg_safe.h
@@ -71,7 +79,7 @@ index dfa6fc6..0095943 100644
  fixdep
  flask.h
  fore200e_mkfirm
  fixdep
  flask.h
  fore200e_mkfirm
-@@ -126,12 +137,15 @@ fore200e_pca_fw.c*
+@@ -126,12 +139,15 @@ fore200e_pca_fw.c*
  gconf
  gconf.glade.h
  gen-devlist
  gconf
  gconf.glade.h
  gen-devlist
@@ -87,7 +95,7 @@ index dfa6fc6..0095943 100644
  hpet_example
  hugepage-mmap
  hugepage-shm
  hpet_example
  hugepage-mmap
  hugepage-shm
-@@ -146,7 +160,7 @@ int32.c
+@@ -146,7 +162,7 @@ int32.c
  int4.c
  int8.c
  kallsyms
  int4.c
  int8.c
  kallsyms
@@ -96,15 +104,16 @@ index dfa6fc6..0095943 100644
  keywords.c
  ksym.c*
  ksym.h*
  keywords.c
  ksym.c*
  ksym.h*
-@@ -154,7 +168,6 @@ kxgettext
+@@ -154,7 +170,7 @@ kxgettext
  lkc_defs.h
  lex.c
  lex.*.c
 -linux
  lkc_defs.h
  lex.c
  lex.*.c
 -linux
++lib1funcs.S
  logo_*.c
  logo_*_clut224.c
  logo_*_mono.c
  logo_*.c
  logo_*_clut224.c
  logo_*_mono.c
-@@ -166,14 +179,15 @@ machtypes.h
+@@ -166,14 +182,15 @@ machtypes.h
  map
  map_hugetlb
  maui_boot.h
  map
  map_hugetlb
  maui_boot.h
@@ -121,7 +130,7 @@ index dfa6fc6..0095943 100644
  mkprep
  mkregtable
  mktables
  mkprep
  mkregtable
  mktables
-@@ -209,6 +223,7 @@ r300_reg_safe.h
+@@ -209,6 +226,7 @@ r300_reg_safe.h
  r420_reg_safe.h
  r600_reg_safe.h
  recordmcount
  r420_reg_safe.h
  r600_reg_safe.h
  recordmcount
@@ -129,7 +138,7 @@ index dfa6fc6..0095943 100644
  relocs
  rlim_names.h
  rn50_reg_safe.h
  relocs
  rlim_names.h
  rn50_reg_safe.h
-@@ -219,6 +234,7 @@ setup
+@@ -219,6 +237,7 @@ setup
  setup.bin
  setup.elf
  sImage
  setup.bin
  setup.elf
  sImage
@@ -137,7 +146,7 @@ index dfa6fc6..0095943 100644
  sm_tbl*
  split-include
  syscalltab.h
  sm_tbl*
  split-include
  syscalltab.h
-@@ -229,6 +245,7 @@ tftpboot.img
+@@ -229,6 +248,7 @@ tftpboot.img
  timeconst.h
  times.h*
  trix_boot.h
  timeconst.h
  times.h*
  trix_boot.h
@@ -145,7 +154,7 @@ index dfa6fc6..0095943 100644
  utsrelease.h*
  vdso-syms.lds
  vdso.lds
  utsrelease.h*
  vdso-syms.lds
  vdso.lds
-@@ -246,7 +263,9 @@ vmlinux
+@@ -246,7 +266,9 @@ vmlinux
  vmlinux-*
  vmlinux.aout
  vmlinux.bin.all
  vmlinux-*
  vmlinux.aout
  vmlinux.bin.all
@@ -155,7 +164,7 @@ index dfa6fc6..0095943 100644
  vmlinuz
  voffset.h
  vsyscall.lds
  vmlinuz
  voffset.h
  vsyscall.lds
-@@ -254,9 +273,11 @@ vsyscall_32.lds
+@@ -254,9 +276,11 @@ vsyscall_32.lds
  wanxlfw.inc
  uImage
  unifdef
  wanxlfw.inc
  uImage
  unifdef
@@ -168,10 +177,10 @@ index dfa6fc6..0095943 100644
 +zconf.lex.c
  zoffset.h
 diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
 +zconf.lex.c
  zoffset.h
 diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
-index d6e6724..a024ce8 100644
+index 81c287f..d456d02 100644
 --- a/Documentation/kernel-parameters.txt
 +++ b/Documentation/kernel-parameters.txt
 --- a/Documentation/kernel-parameters.txt
 +++ b/Documentation/kernel-parameters.txt
-@@ -1898,6 +1898,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
+@@ -1935,6 +1935,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        the specified number of seconds.  This is to be used if
                        your oopses keep scrolling off the screen.
  
                        the specified number of seconds.  This is to be used if
                        your oopses keep scrolling off the screen.
  
@@ -186,7 +195,7 @@ index d6e6724..a024ce8 100644
  
        pcd.            [PARIDE]
 diff --git a/Makefile b/Makefile
  
        pcd.            [PARIDE]
 diff --git a/Makefile b/Makefile
-index 94ab2ad..1e4a6e8 100644
+index 15e80f1..4fb87db 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
 --- a/Makefile
 +++ b/Makefile
 @@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -212,36 +221,47 @@ index 94ab2ad..1e4a6e8 100644
        $(Q)$(MAKE) $(build)=scripts/basic
        $(Q)rm -f .tmp_quiet_recordmcount
  
        $(Q)$(MAKE) $(build)=scripts/basic
        $(Q)rm -f .tmp_quiet_recordmcount
  
-@@ -564,6 +565,42 @@ else
+@@ -564,6 +565,53 @@ else
  KBUILD_CFLAGS += -O2
  endif
  
 +ifndef DISABLE_PAX_PLUGINS
 +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh "$(HOSTCC)" "$(CC)"), y)
 +ifndef DISABLE_PAX_CONSTIFY_PLUGIN
  KBUILD_CFLAGS += -O2
  endif
  
 +ifndef DISABLE_PAX_PLUGINS
 +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh "$(HOSTCC)" "$(CC)"), y)
 +ifndef DISABLE_PAX_CONSTIFY_PLUGIN
-+CONSTIFY_PLUGIN := -fplugin=$(objtree)/tools/gcc/constify_plugin.so -DCONSTIFY_PLUGIN
++CONSTIFY_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/constify_plugin.so -DCONSTIFY_PLUGIN
 +endif
 +ifdef CONFIG_PAX_MEMORY_STACKLEAK
 +endif
 +ifdef CONFIG_PAX_MEMORY_STACKLEAK
-+STACKLEAK_PLUGIN := -fplugin=$(objtree)/tools/gcc/stackleak_plugin.so -DSTACKLEAK_PLUGIN
-+STACKLEAK_PLUGIN += -fplugin-arg-stackleak_plugin-track-lowest-sp=100
++STACKLEAK_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/stackleak_plugin.so -DSTACKLEAK_PLUGIN
++STACKLEAK_PLUGIN_CFLAGS += -fplugin-arg-stackleak_plugin-track-lowest-sp=100
 +endif
 +ifdef CONFIG_KALLOCSTAT_PLUGIN
 +endif
 +ifdef CONFIG_KALLOCSTAT_PLUGIN
-+KALLOCSTAT_PLUGIN := -fplugin=$(objtree)/tools/gcc/kallocstat_plugin.so
++KALLOCSTAT_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/kallocstat_plugin.so
 +endif
 +ifdef CONFIG_PAX_KERNEXEC_PLUGIN
 +endif
 +ifdef CONFIG_PAX_KERNEXEC_PLUGIN
-+KERNEXEC_PLUGIN := -fplugin=$(objtree)/tools/gcc/kernexec_plugin.so
-+KERNEXEC_PLUGIN += -fplugin-arg-kernexec_plugin-method=$(CONFIG_PAX_KERNEXEC_PLUGIN_METHOD)
++KERNEXEC_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/kernexec_plugin.so
++KERNEXEC_PLUGIN_CFLAGS += -fplugin-arg-kernexec_plugin-method=$(CONFIG_PAX_KERNEXEC_PLUGIN_METHOD) -DKERNEXEC_PLUGIN
++KERNEXEC_PLUGIN_AFLAGS := -DKERNEXEC_PLUGIN
 +endif
 +ifdef CONFIG_CHECKER_PLUGIN
 +ifeq ($(call cc-ifversion, -ge, 0406, y), y)
 +endif
 +ifdef CONFIG_CHECKER_PLUGIN
 +ifeq ($(call cc-ifversion, -ge, 0406, y), y)
-+CHECKER_PLUGIN := -fplugin=$(objtree)/tools/gcc/checker_plugin.so -DCHECKER_PLUGIN
++CHECKER_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/checker_plugin.so -DCHECKER_PLUGIN
++endif
 +endif
 +endif
++COLORIZE_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/colorize_plugin.so
++ifdef CONFIG_PAX_SIZE_OVERFLOW
++SIZE_OVERFLOW_PLUGIN_CFLAGS := -fplugin=$(objtree)/tools/gcc/size_overflow_plugin.so -DSIZE_OVERFLOW_PLUGIN
 +endif
 +endif
-+GCC_PLUGINS := $(CONSTIFY_PLUGIN) $(STACKLEAK_PLUGIN) $(KALLOCSTAT_PLUGIN) $(KERNEXEC_PLUGIN) $(CHECKER_PLUGIN)
-+export CONSTIFY_PLUGIN STACKLEAK_PLUGIN KERNEXEC_PLUGIN CHECKER_PLUGIN
++GCC_PLUGINS_CFLAGS := $(CONSTIFY_PLUGIN_CFLAGS) $(STACKLEAK_PLUGIN_CFLAGS) $(KALLOCSTAT_PLUGIN_CFLAGS)
++GCC_PLUGINS_CFLAGS += $(KERNEXEC_PLUGIN_CFLAGS) $(CHECKER_PLUGIN_CFLAGS) $(COLORIZE_PLUGIN_CFLAGS) $(SIZE_OVERFLOW_PLUGIN_CFLAGS)
++GCC_PLUGINS_AFLAGS := $(KERNEXEC_PLUGIN_AFLAGS)
++export CONSTIFY_PLUGIN STACKLEAK_PLUGIN KERNEXEC_PLUGIN CHECKER_PLUGIN SIZE_OVERFLOW_PLUGIN
++ifeq ($(KBUILD_EXTMOD),)
 +gcc-plugins:
 +      $(Q)$(MAKE) $(build)=tools/gcc
 +else
 +gcc-plugins:
 +      $(Q)$(MAKE) $(build)=tools/gcc
 +else
++gcc-plugins: ;
++endif
++else
 +gcc-plugins:
 +ifeq ($(call cc-ifversion, -ge, 0405, y), y)
 +      $(error Your gcc installation does not support plugins.  If the necessary headers for plugin support are missing, they should be installed.  On Debian, apt-get install gcc-<ver>-plugin-dev.  If you choose to ignore this error and lessen the improvements provided by this patch, re-run make with the DISABLE_PAX_PLUGINS=y argument.))
 +gcc-plugins:
 +ifeq ($(call cc-ifversion, -ge, 0405, y), y)
 +      $(error Your gcc installation does not support plugins.  If the necessary headers for plugin support are missing, they should be installed.  On Debian, apt-get install gcc-<ver>-plugin-dev.  If you choose to ignore this error and lessen the improvements provided by this patch, re-run make with the DISABLE_PAX_PLUGINS=y argument.))
@@ -255,7 +275,7 @@ index 94ab2ad..1e4a6e8 100644
  include $(srctree)/arch/$(SRCARCH)/Makefile
  
  ifneq ($(CONFIG_FRAME_WARN),0)
  include $(srctree)/arch/$(SRCARCH)/Makefile
  
  ifneq ($(CONFIG_FRAME_WARN),0)
-@@ -708,7 +745,7 @@ export mod_strip_cmd
+@@ -708,7 +756,7 @@ export mod_strip_cmd
  
  
  ifeq ($(KBUILD_EXTMOD),)
  
  
  ifeq ($(KBUILD_EXTMOD),)
@@ -264,15 +284,16 @@ index 94ab2ad..1e4a6e8 100644
  
  vmlinux-dirs  := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
                     $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
  
  vmlinux-dirs  := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
                     $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
-@@ -932,6 +969,7 @@ vmlinux.o: $(modpost-init) $(vmlinux-main) FORCE
+@@ -932,6 +980,8 @@ vmlinux.o: $(modpost-init) $(vmlinux-main) FORCE
  
  # The actual objects are generated when descending, 
  # make sure no implicit rule kicks in
  
  # The actual objects are generated when descending, 
  # make sure no implicit rule kicks in
-+$(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): KBUILD_CFLAGS += $(GCC_PLUGINS)
++$(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
++$(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
  $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
  
  # Handle descending into subdirectories listed in $(vmlinux-dirs)
  $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
  
  # Handle descending into subdirectories listed in $(vmlinux-dirs)
-@@ -941,7 +979,7 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
+@@ -941,7 +991,7 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
  # Error messages still appears in the original language
  
  PHONY += $(vmlinux-dirs)
  # Error messages still appears in the original language
  
  PHONY += $(vmlinux-dirs)
@@ -281,23 +302,24 @@ index 94ab2ad..1e4a6e8 100644
        $(Q)$(MAKE) $(build)=$@
  
  # Store (new) KERNELRELASE string in include/config/kernel.release
        $(Q)$(MAKE) $(build)=$@
  
  # Store (new) KERNELRELASE string in include/config/kernel.release
-@@ -986,6 +1024,7 @@ prepare0: archprepare FORCE
-       $(Q)$(MAKE) $(build)=. missing-syscalls
+@@ -985,6 +1035,7 @@ prepare0: archprepare FORCE
+       $(Q)$(MAKE) $(build)=.
  
  # All the preparing..
  
  # All the preparing..
-+prepare: KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS),$(KBUILD_CFLAGS))
++prepare: KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
  prepare: prepare0
  
  # Generate some files
  prepare: prepare0
  
  # Generate some files
-@@ -1087,6 +1126,7 @@ all: modules
+@@ -1086,6 +1137,8 @@ all: modules
  #     using awk while concatenating to the final file.
  
  PHONY += modules
  #     using awk while concatenating to the final file.
  
  PHONY += modules
-+modules: KBUILD_CFLAGS += $(GCC_PLUGINS)
++modules: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
++modules: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
  modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
        $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
        @$(kecho) '  Building modules, stage 2.';
  modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
        $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
        @$(kecho) '  Building modules, stage 2.';
-@@ -1102,7 +1142,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
+@@ -1101,7 +1154,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
  
  # Target to prepare building external modules
  PHONY += modules_prepare
  
  # Target to prepare building external modules
  PHONY += modules_prepare
@@ -306,35 +328,37 @@ index 94ab2ad..1e4a6e8 100644
  
  # Target to install modules
  PHONY += modules_install
  
  # Target to install modules
  PHONY += modules_install
-@@ -1198,7 +1238,7 @@ distclean: mrproper
-       @find $(srctree) $(RCS_FIND_IGNORE) \
+@@ -1198,6 +1251,7 @@ distclean: mrproper
                \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
                -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
                \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
                -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
--              -o -name '.*.rej' -o -size 0 \
-+              -o -name '.*.rej' -o -name '*.so' -o -size 0 \
+               -o -name '.*.rej' \
++              -o -name '.*.rej' -o -name '*.so' \
                -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
                -type f -print | xargs rm -f
  
                -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
                -type f -print | xargs rm -f
  
-@@ -1360,6 +1400,7 @@ PHONY += $(module-dirs) modules
+@@ -1358,6 +1412,8 @@ PHONY += $(module-dirs) modules
  $(module-dirs): crmodverdir $(objtree)/Module.symvers
        $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
  
  $(module-dirs): crmodverdir $(objtree)/Module.symvers
        $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
  
-+modules: KBUILD_CFLAGS += $(GCC_PLUGINS)
++modules: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
++modules: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
  modules: $(module-dirs)
        @$(kecho) '  Building modules, stage 2.';
        $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
  modules: $(module-dirs)
        @$(kecho) '  Building modules, stage 2.';
        $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
-@@ -1486,17 +1527,19 @@ else
+@@ -1484,17 +1540,21 @@ else
          target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
  endif
  
 -%.s: %.c prepare scripts FORCE
          target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
  endif
  
 -%.s: %.c prepare scripts FORCE
-+%.s: KBUILD_CFLAGS += $(GCC_PLUGINS)
++%.s: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
++%.s: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
 +%.s: %.c gcc-plugins prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  %.i: %.c prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
 -%.o: %.c prepare scripts FORCE
 +%.s: %.c gcc-plugins prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  %.i: %.c prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
 -%.o: %.c prepare scripts FORCE
-+%.o: KBUILD_CFLAGS += $(GCC_PLUGINS)
++%.o: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
++%.o: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
 +%.o: %.c gcc-plugins prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  %.lst: %.c prepare scripts FORCE
 +%.o: %.c gcc-plugins prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  %.lst: %.c prepare scripts FORCE
@@ -347,22 +371,71 @@ index 94ab2ad..1e4a6e8 100644
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  %.symtypes: %.c prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  %.symtypes: %.c prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
-@@ -1506,11 +1549,13 @@ endif
+@@ -1504,11 +1564,15 @@ endif
        $(cmd_crmodverdir)
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
        $(build)=$(build-dir)
 -%/: prepare scripts FORCE
        $(cmd_crmodverdir)
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
        $(build)=$(build-dir)
 -%/: prepare scripts FORCE
-+%/: KBUILD_CFLAGS += $(GCC_PLUGINS)
++%/: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
++%/: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
 +%/: gcc-plugins prepare scripts FORCE
        $(cmd_crmodverdir)
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
        $(build)=$(build-dir)
 -%.ko: prepare scripts FORCE
 +%/: gcc-plugins prepare scripts FORCE
        $(cmd_crmodverdir)
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
        $(build)=$(build-dir)
 -%.ko: prepare scripts FORCE
-+%.ko: KBUILD_CFLAGS += $(GCC_PLUGINS)
++%.ko: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
++%.ko: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
 +%.ko: gcc-plugins prepare scripts FORCE
        $(cmd_crmodverdir)
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)   \
        $(build)=$(build-dir) $(@:.ko=.o)
 +%.ko: gcc-plugins prepare scripts FORCE
        $(cmd_crmodverdir)
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)   \
        $(build)=$(build-dir) $(@:.ko=.o)
+diff --git a/arch/alpha/include/asm/atomic.h b/arch/alpha/include/asm/atomic.h
+index 640f909..48b6597 100644
+--- a/arch/alpha/include/asm/atomic.h
++++ b/arch/alpha/include/asm/atomic.h
+@@ -250,6 +250,16 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+ #define atomic_dec(v) atomic_sub(1,(v))
+ #define atomic64_dec(v) atomic64_sub(1,(v))
++#define atomic64_read_unchecked(v)            atomic64_read(v)
++#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
++#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
++#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
++#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
++#define atomic64_inc_unchecked(v)             atomic64_inc(v)
++#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
++#define atomic64_dec_unchecked(v)             atomic64_dec(v)
++#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++
+ #define smp_mb__before_atomic_dec()   smp_mb()
+ #define smp_mb__after_atomic_dec()    smp_mb()
+ #define smp_mb__before_atomic_inc()   smp_mb()
+diff --git a/arch/alpha/include/asm/cache.h b/arch/alpha/include/asm/cache.h
+index ad368a9..fbe0f25 100644
+--- a/arch/alpha/include/asm/cache.h
++++ b/arch/alpha/include/asm/cache.h
+@@ -4,19 +4,19 @@
+ #ifndef __ARCH_ALPHA_CACHE_H
+ #define __ARCH_ALPHA_CACHE_H
++#include <linux/const.h>
+ /* Bytes per L1 (data) cache line. */
+ #if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_EV6)
+-# define L1_CACHE_BYTES     64
+ # define L1_CACHE_SHIFT     6
+ #else
+ /* Both EV4 and EV5 are write-through, read-allocate,
+    direct-mapped, physical.
+ */
+-# define L1_CACHE_BYTES     32
+ # define L1_CACHE_SHIFT     5
+ #endif
++#define L1_CACHE_BYTES     (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define SMP_CACHE_BYTES    L1_CACHE_BYTES
+ #endif
 diff --git a/arch/alpha/include/asm/elf.h b/arch/alpha/include/asm/elf.h
 index da5449e..7418343 100644
 --- a/arch/alpha/include/asm/elf.h
 diff --git a/arch/alpha/include/asm/elf.h b/arch/alpha/include/asm/elf.h
 index da5449e..7418343 100644
 --- a/arch/alpha/include/asm/elf.h
@@ -612,10 +685,248 @@ index fadd5f8..904e73a 100644
                /* Allow reads even for write-only mappings */
                if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
 diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h
                /* Allow reads even for write-only mappings */
                if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
 diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h
-index 86976d0..8a57797 100644
+index 86976d0..683de93 100644
 --- a/arch/arm/include/asm/atomic.h
 +++ b/arch/arm/include/asm/atomic.h
 --- a/arch/arm/include/asm/atomic.h
 +++ b/arch/arm/include/asm/atomic.h
-@@ -239,6 +239,14 @@ typedef struct {
+@@ -15,6 +15,10 @@
+ #include <linux/types.h>
+ #include <asm/system.h>
++#ifdef CONFIG_GENERIC_ATOMIC64
++#include <asm-generic/atomic64.h>
++#endif
++
+ #define ATOMIC_INIT(i)        { (i) }
+ #ifdef __KERNEL__
+@@ -25,7 +29,15 @@
+  * atomic_set() is the clrex or dummy strex done on every exception return.
+  */
+ #define atomic_read(v)        (*(volatile int *)&(v)->counter)
++static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
++{
++      return v->counter;
++}
+ #define atomic_set(v,i)       (((v)->counter) = (i))
++static inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
++{
++      v->counter = i;
++}
+ #if __LINUX_ARM_ARCH__ >= 6
+@@ -40,6 +52,35 @@ static inline void atomic_add(int i, atomic_t *v)
+       int result;
+       __asm__ __volatile__("@ atomic_add\n"
++"1:   ldrex   %1, [%3]\n"
++"     adds    %0, %1, %4\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
++"     strex   %1, %0, [%3]\n"
++"     teq     %1, #0\n"
++"     bne     1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
++      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
++      : "r" (&v->counter), "Ir" (i)
++      : "cc");
++}
++
++static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
++{
++      unsigned long tmp;
++      int result;
++
++      __asm__ __volatile__("@ atomic_add_unchecked\n"
+ "1:   ldrex   %0, [%3]\n"
+ "     add     %0, %0, %4\n"
+ "     strex   %1, %0, [%3]\n"
+@@ -58,6 +99,42 @@ static inline int atomic_add_return(int i, atomic_t *v)
+       smp_mb();
+       __asm__ __volatile__("@ atomic_add_return\n"
++"1:   ldrex   %1, [%3]\n"
++"     adds    %0, %1, %4\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"     mov     %0, %1\n"
++"2:   bkpt 0xf103\n"
++"3:\n"
++#endif
++
++"     strex   %1, %0, [%3]\n"
++"     teq     %1, #0\n"
++"     bne     1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
++      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
++      : "r" (&v->counter), "Ir" (i)
++      : "cc");
++
++      smp_mb();
++
++      return result;
++}
++
++static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
++{
++      unsigned long tmp;
++      int result;
++
++      smp_mb();
++
++      __asm__ __volatile__("@ atomic_add_return_unchecked\n"
+ "1:   ldrex   %0, [%3]\n"
+ "     add     %0, %0, %4\n"
+ "     strex   %1, %0, [%3]\n"
+@@ -78,6 +155,35 @@ static inline void atomic_sub(int i, atomic_t *v)
+       int result;
+       __asm__ __volatile__("@ atomic_sub\n"
++"1:   ldrex   %1, [%3]\n"
++"     subs    %0, %1, %4\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
++"     strex   %1, %0, [%3]\n"
++"     teq     %1, #0\n"
++"     bne     1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
++      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
++      : "r" (&v->counter), "Ir" (i)
++      : "cc");
++}
++
++static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
++{
++      unsigned long tmp;
++      int result;
++
++      __asm__ __volatile__("@ atomic_sub_unchecked\n"
+ "1:   ldrex   %0, [%3]\n"
+ "     sub     %0, %0, %4\n"
+ "     strex   %1, %0, [%3]\n"
+@@ -96,11 +202,25 @@ static inline int atomic_sub_return(int i, atomic_t *v)
+       smp_mb();
+       __asm__ __volatile__("@ atomic_sub_return\n"
+-"1:   ldrex   %0, [%3]\n"
+-"     sub     %0, %0, %4\n"
++"1:   ldrex   %1, [%3]\n"
++"     sub     %0, %1, %4\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"     mov     %0, %1\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
+ "     strex   %1, %0, [%3]\n"
+ "     teq     %1, #0\n"
+ "     bne     1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
+       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
+       : "r" (&v->counter), "Ir" (i)
+       : "cc");
+@@ -132,6 +252,28 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
+       return oldval;
+ }
++static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *ptr, int old, int new)
++{
++      unsigned long oldval, res;
++
++      smp_mb();
++
++      do {
++              __asm__ __volatile__("@ atomic_cmpxchg_unchecked\n"
++              "ldrex  %1, [%3]\n"
++              "mov    %0, #0\n"
++              "teq    %1, %4\n"
++              "strexeq %0, %5, [%3]\n"
++                  : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter)
++                  : "r" (&ptr->counter), "Ir" (old), "r" (new)
++                  : "cc");
++      } while (res);
++
++      smp_mb();
++
++      return oldval;
++}
++
+ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
+ {
+       unsigned long tmp, tmp2;
+@@ -207,6 +349,10 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
+ #endif /* __LINUX_ARM_ARCH__ */
+ #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
++static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
++{
++      return xchg(&v->counter, new);
++}
+ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
+ {
+@@ -219,11 +365,27 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
+ }
+ #define atomic_inc(v)         atomic_add(1, v)
++static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
++{
++      atomic_add_unchecked(1, v);
++}
+ #define atomic_dec(v)         atomic_sub(1, v)
++static inline void atomic_dec_unchecked(atomic_unchecked_t *v)
++{
++      atomic_sub_unchecked(1, v);
++}
+ #define atomic_inc_and_test(v)        (atomic_add_return(1, v) == 0)
++static inline int atomic_inc_and_test_unchecked(atomic_unchecked_t *v)
++{
++      return atomic_add_return_unchecked(1, v) == 0;
++}
+ #define atomic_dec_and_test(v)        (atomic_sub_return(1, v) == 0)
+ #define atomic_inc_return(v)    (atomic_add_return(1, v))
++static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
++{
++      return atomic_add_return_unchecked(1, v);
++}
+ #define atomic_dec_return(v)    (atomic_sub_return(1, v))
+ #define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
+@@ -239,6 +401,14 @@ typedef struct {
        u64 __aligned(8) counter;
  } atomic64_t;
  
        u64 __aligned(8) counter;
  } atomic64_t;
  
@@ -630,6 +941,355 @@ index 86976d0..8a57797 100644
  #define ATOMIC64_INIT(i) { (i) }
  
  static inline u64 atomic64_read(atomic64_t *v)
  #define ATOMIC64_INIT(i) { (i) }
  
  static inline u64 atomic64_read(atomic64_t *v)
+@@ -254,6 +424,19 @@ static inline u64 atomic64_read(atomic64_t *v)
+       return result;
+ }
++static inline u64 atomic64_read_unchecked(atomic64_unchecked_t *v)
++{
++      u64 result;
++
++      __asm__ __volatile__("@ atomic64_read_unchecked\n"
++"     ldrexd  %0, %H0, [%1]"
++      : "=&r" (result)
++      : "r" (&v->counter), "Qo" (v->counter)
++      );
++
++      return result;
++}
++
+ static inline void atomic64_set(atomic64_t *v, u64 i)
+ {
+       u64 tmp;
+@@ -268,6 +451,20 @@ static inline void atomic64_set(atomic64_t *v, u64 i)
+       : "cc");
+ }
++static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, u64 i)
++{
++      u64 tmp;
++
++      __asm__ __volatile__("@ atomic64_set_unchecked\n"
++"1:   ldrexd  %0, %H0, [%2]\n"
++"     strexd  %0, %3, %H3, [%2]\n"
++"     teq     %0, #0\n"
++"     bne     1b"
++      : "=&r" (tmp), "=Qo" (v->counter)
++      : "r" (&v->counter), "r" (i)
++      : "cc");
++}
++
+ static inline void atomic64_add(u64 i, atomic64_t *v)
+ {
+       u64 result;
+@@ -276,6 +473,36 @@ static inline void atomic64_add(u64 i, atomic64_t *v)
+       __asm__ __volatile__("@ atomic64_add\n"
+ "1:   ldrexd  %0, %H0, [%3]\n"
+ "     adds    %0, %0, %4\n"
++"     adcs    %H0, %H0, %H4\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
++"     strexd  %1, %0, %H0, [%3]\n"
++"     teq     %1, #0\n"
++"     bne     1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
++      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
++      : "r" (&v->counter), "r" (i)
++      : "cc");
++}
++
++static inline void atomic64_add_unchecked(u64 i, atomic64_unchecked_t *v)
++{
++      u64 result;
++      unsigned long tmp;
++
++      __asm__ __volatile__("@ atomic64_add_unchecked\n"
++"1:   ldrexd  %0, %H0, [%3]\n"
++"     adds    %0, %0, %4\n"
+ "     adc     %H0, %H0, %H4\n"
+ "     strexd  %1, %0, %H0, [%3]\n"
+ "     teq     %1, #0\n"
+@@ -287,12 +514,49 @@ static inline void atomic64_add(u64 i, atomic64_t *v)
+ static inline u64 atomic64_add_return(u64 i, atomic64_t *v)
+ {
+-      u64 result;
+-      unsigned long tmp;
++      u64 result, tmp;
+       smp_mb();
+       __asm__ __volatile__("@ atomic64_add_return\n"
++"1:   ldrexd  %1, %H1, [%3]\n"
++"     adds    %0, %1, %4\n"
++"     adcs    %H0, %H1, %H4\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"     mov     %0, %1\n"
++"     mov     %H0, %H1\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
++"     strexd  %1, %0, %H0, [%3]\n"
++"     teq     %1, #0\n"
++"     bne     1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
++      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
++      : "r" (&v->counter), "r" (i)
++      : "cc");
++
++      smp_mb();
++
++      return result;
++}
++
++static inline u64 atomic64_add_return_unchecked(u64 i, atomic64_unchecked_t *v)
++{
++      u64 result;
++      unsigned long tmp;
++
++      smp_mb();
++
++      __asm__ __volatile__("@ atomic64_add_return_unchecked\n"
+ "1:   ldrexd  %0, %H0, [%3]\n"
+ "     adds    %0, %0, %4\n"
+ "     adc     %H0, %H0, %H4\n"
+@@ -316,6 +580,36 @@ static inline void atomic64_sub(u64 i, atomic64_t *v)
+       __asm__ __volatile__("@ atomic64_sub\n"
+ "1:   ldrexd  %0, %H0, [%3]\n"
+ "     subs    %0, %0, %4\n"
++"     sbcs    %H0, %H0, %H4\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
++"     strexd  %1, %0, %H0, [%3]\n"
++"     teq     %1, #0\n"
++"     bne     1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
++      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
++      : "r" (&v->counter), "r" (i)
++      : "cc");
++}
++
++static inline void atomic64_sub_unchecked(u64 i, atomic64_unchecked_t *v)
++{
++      u64 result;
++      unsigned long tmp;
++
++      __asm__ __volatile__("@ atomic64_sub_unchecked\n"
++"1:   ldrexd  %0, %H0, [%3]\n"
++"     subs    %0, %0, %4\n"
+ "     sbc     %H0, %H0, %H4\n"
+ "     strexd  %1, %0, %H0, [%3]\n"
+ "     teq     %1, #0\n"
+@@ -327,18 +621,32 @@ static inline void atomic64_sub(u64 i, atomic64_t *v)
+ static inline u64 atomic64_sub_return(u64 i, atomic64_t *v)
+ {
+-      u64 result;
+-      unsigned long tmp;
++      u64 result, tmp;
+       smp_mb();
+       __asm__ __volatile__("@ atomic64_sub_return\n"
+-"1:   ldrexd  %0, %H0, [%3]\n"
+-"     subs    %0, %0, %4\n"
+-"     sbc     %H0, %H0, %H4\n"
++"1:   ldrexd  %1, %H1, [%3]\n"
++"     subs    %0, %1, %4\n"
++"     sbc     %H0, %H1, %H4\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"     mov     %0, %1\n"
++"     mov     %H0, %H1\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
+ "     strexd  %1, %0, %H0, [%3]\n"
+ "     teq     %1, #0\n"
+ "     bne     1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
+       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
+       : "r" (&v->counter), "r" (i)
+       : "cc");
+@@ -372,6 +680,30 @@ static inline u64 atomic64_cmpxchg(atomic64_t *ptr, u64 old, u64 new)
+       return oldval;
+ }
++static inline u64 atomic64_cmpxchg_unchecked(atomic64_unchecked_t *ptr, u64 old, u64 new)
++{
++      u64 oldval;
++      unsigned long res;
++
++      smp_mb();
++
++      do {
++              __asm__ __volatile__("@ atomic64_cmpxchg_unchecked\n"
++              "ldrexd         %1, %H1, [%3]\n"
++              "mov            %0, #0\n"
++              "teq            %1, %4\n"
++              "teqeq          %H1, %H4\n"
++              "strexdeq       %0, %5, %H5, [%3]"
++              : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter)
++              : "r" (&ptr->counter), "r" (old), "r" (new)
++              : "cc");
++      } while (res);
++
++      smp_mb();
++
++      return oldval;
++}
++
+ static inline u64 atomic64_xchg(atomic64_t *ptr, u64 new)
+ {
+       u64 result;
+@@ -395,21 +727,34 @@ static inline u64 atomic64_xchg(atomic64_t *ptr, u64 new)
+ static inline u64 atomic64_dec_if_positive(atomic64_t *v)
+ {
+-      u64 result;
+-      unsigned long tmp;
++      u64 result, tmp;
+       smp_mb();
+       __asm__ __volatile__("@ atomic64_dec_if_positive\n"
+-"1:   ldrexd  %0, %H0, [%3]\n"
+-"     subs    %0, %0, #1\n"
+-"     sbc     %H0, %H0, #0\n"
++"1:   ldrexd  %1, %H1, [%3]\n"
++"     subs    %0, %1, #1\n"
++"     sbc     %H0, %H1, #0\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"     mov     %0, %1\n"
++"     mov     %H0, %H1\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
+ "     teq     %H0, #0\n"
+-"     bmi     2f\n"
++"     bmi     4f\n"
+ "     strexd  %1, %0, %H0, [%3]\n"
+ "     teq     %1, #0\n"
+ "     bne     1b\n"
+-"2:"
++"4:\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
+       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
+       : "r" (&v->counter)
+       : "cc");
+@@ -432,13 +777,25 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u)
+ "     teq     %0, %5\n"
+ "     teqeq   %H0, %H5\n"
+ "     moveq   %1, #0\n"
+-"     beq     2f\n"
++"     beq     4f\n"
+ "     adds    %0, %0, %6\n"
+ "     adc     %H0, %H0, %H6\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     bvc     3f\n"
++"2:   bkpt    0xf103\n"
++"3:\n"
++#endif
++
+ "     strexd  %2, %0, %H0, [%4]\n"
+ "     teq     %2, #0\n"
+ "     bne     1b\n"
+-"2:"
++"4:\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
+       : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter)
+       : "r" (&v->counter), "r" (u), "r" (a)
+       : "cc");
+@@ -451,10 +808,13 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u)
+ #define atomic64_add_negative(a, v)   (atomic64_add_return((a), (v)) < 0)
+ #define atomic64_inc(v)                       atomic64_add(1LL, (v))
++#define atomic64_inc_unchecked(v)     atomic64_add_unchecked(1LL, (v))
+ #define atomic64_inc_return(v)                atomic64_add_return(1LL, (v))
++#define atomic64_inc_return_unchecked(v)      atomic64_add_return_unchecked(1LL, (v))
+ #define atomic64_inc_and_test(v)      (atomic64_inc_return(v) == 0)
+ #define atomic64_sub_and_test(a, v)   (atomic64_sub_return((a), (v)) == 0)
+ #define atomic64_dec(v)                       atomic64_sub(1LL, (v))
++#define atomic64_dec_unchecked(v)     atomic64_sub_unchecked(1LL, (v))
+ #define atomic64_dec_return(v)                atomic64_sub_return(1LL, (v))
+ #define atomic64_dec_and_test(v)      (atomic64_dec_return((v)) == 0)
+ #define atomic64_inc_not_zero(v)      atomic64_add_unless((v), 1LL, 0LL)
+diff --git a/arch/arm/include/asm/cache.h b/arch/arm/include/asm/cache.h
+index 75fe66b..2255c86 100644
+--- a/arch/arm/include/asm/cache.h
++++ b/arch/arm/include/asm/cache.h
+@@ -4,8 +4,10 @@
+ #ifndef __ASMARM_CACHE_H
+ #define __ASMARM_CACHE_H
++#include <linux/const.h>
++
+ #define L1_CACHE_SHIFT                CONFIG_ARM_L1_CACHE_SHIFT
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ /*
+  * Memory returned by kmalloc() may be used for DMA, so we must make
+diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
+index d5d8d5c..ad92c96 100644
+--- a/arch/arm/include/asm/cacheflush.h
++++ b/arch/arm/include/asm/cacheflush.h
+@@ -108,7 +108,7 @@ struct cpu_cache_fns {
+       void (*dma_unmap_area)(const void *, size_t, int);
+       void (*dma_flush_range)(const void *, const void *);
+-};
++} __no_const;
+ /*
+  * Select the calling method
 diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
 index 0e9ce8d..6ef1e03 100644
 --- a/arch/arm/include/asm/elf.h
 diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
 index 0e9ce8d..6ef1e03 100644
 --- a/arch/arm/include/asm/elf.h
@@ -673,6 +1333,68 @@ index e51b1e8..32a3113 100644
        KM_TYPE_NR
  };
  
        KM_TYPE_NR
  };
  
+diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h
+index 53426c6..c7baff3 100644
+--- a/arch/arm/include/asm/outercache.h
++++ b/arch/arm/include/asm/outercache.h
+@@ -35,7 +35,7 @@ struct outer_cache_fns {
+ #endif
+       void (*set_debug)(unsigned long);
+       void (*resume)(void);
+-};
++} __no_const;
+ #ifdef CONFIG_OUTER_CACHE
+diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h
+index ca94653..6ac0d56 100644
+--- a/arch/arm/include/asm/page.h
++++ b/arch/arm/include/asm/page.h
+@@ -123,7 +123,7 @@ struct cpu_user_fns {
+       void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr);
+       void (*cpu_copy_user_highpage)(struct page *to, struct page *from,
+                       unsigned long vaddr, struct vm_area_struct *vma);
+-};
++} __no_const;
+ #ifdef MULTI_USER
+ extern struct cpu_user_fns cpu_user;
+diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
+index 984014b..a6d914f 100644
+--- a/arch/arm/include/asm/system.h
++++ b/arch/arm/include/asm/system.h
+@@ -90,6 +90,8 @@ void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int,
+ #define xchg(ptr,x) \
+       ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
++#define xchg_unchecked(ptr,x) \
++      ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
+ extern asmlinkage void c_backtrace(unsigned long fp, int pmode);
+@@ -101,7 +103,7 @@ extern int __pure cpu_architecture(void);
+ extern void cpu_init(void);
+ void arm_machine_restart(char mode, const char *cmd);
+-extern void (*arm_pm_restart)(char str, const char *cmd);
++extern void (*arm_pm_restart)(char str, const char *cmd) __noreturn;
+ #define UDBG_UNDEFINED        (1 << 0)
+ #define UDBG_SYSCALL  (1 << 1)
+@@ -526,6 +528,13 @@ static inline unsigned long long __cmpxchg64_mb(volatile void *ptr,
+ #endif        /* __LINUX_ARM_ARCH__ >= 6 */
++#define _ASM_EXTABLE(from, to)                \
++"     .pushsection __ex_table,\"a\"\n"\
++"     .align  3\n"                    \
++"     .long   " #from ", " #to"\n"    \
++"     .popsection"
++
++
+ #endif /* __ASSEMBLY__ */
+ #define arch_align_stack(x) (x)
 diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
 index b293616..96310e5 100644
 --- a/arch/arm/include/asm/uaccess.h
 diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
 index b293616..96310e5 100644
 --- a/arch/arm/include/asm/uaccess.h
@@ -733,10 +1455,10 @@ index b293616..96310e5 100644
                n = __copy_to_user(to, from, n);
        return n;
 diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
                n = __copy_to_user(to, from, n);
        return n;
 diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
-index aeef960..2966009 100644
+index 5b0bce6..becd81c 100644
 --- a/arch/arm/kernel/armksyms.c
 +++ b/arch/arm/kernel/armksyms.c
 --- a/arch/arm/kernel/armksyms.c
 +++ b/arch/arm/kernel/armksyms.c
-@@ -98,8 +98,8 @@ EXPORT_SYMBOL(__strncpy_from_user);
+@@ -95,8 +95,8 @@ EXPORT_SYMBOL(__strncpy_from_user);
  #ifdef CONFIG_MMU
  EXPORT_SYMBOL(copy_page);
  
  #ifdef CONFIG_MMU
  EXPORT_SYMBOL(copy_page);
  
@@ -748,7 +1470,7 @@ index aeef960..2966009 100644
  
  EXPORT_SYMBOL(__get_user_1);
 diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
  
  EXPORT_SYMBOL(__get_user_1);
 diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
-index c9d11ea..5078081 100644
+index 3d0c6fb..9d326fa 100644
 --- a/arch/arm/kernel/process.c
 +++ b/arch/arm/kernel/process.c
 @@ -28,7 +28,6 @@
 --- a/arch/arm/kernel/process.c
 +++ b/arch/arm/kernel/process.c
 @@ -28,7 +28,6 @@
@@ -759,7 +1481,33 @@ index c9d11ea..5078081 100644
  #include <linux/hw_breakpoint.h>
  #include <linux/cpuidle.h>
  
  #include <linux/hw_breakpoint.h>
  #include <linux/cpuidle.h>
  
-@@ -484,12 +483,6 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -92,7 +91,7 @@ static int __init hlt_setup(char *__unused)
+ __setup("nohlt", nohlt_setup);
+ __setup("hlt", hlt_setup);
+-void arm_machine_restart(char mode, const char *cmd)
++__noreturn void arm_machine_restart(char mode, const char *cmd)
+ {
+       /* Disable interrupts first */
+       local_irq_disable();
+@@ -134,7 +133,7 @@ void arm_machine_restart(char mode, const char *cmd)
+ void (*pm_power_off)(void);
+ EXPORT_SYMBOL(pm_power_off);
+-void (*arm_pm_restart)(char str, const char *cmd) = arm_machine_restart;
++void (*arm_pm_restart)(char str, const char *cmd) __noreturn = arm_machine_restart;
+ EXPORT_SYMBOL_GPL(arm_pm_restart);
+ static void do_nothing(void *unused)
+@@ -248,6 +247,7 @@ void machine_power_off(void)
+       machine_shutdown();
+       if (pm_power_off)
+               pm_power_off();
++      BUG();
+ }
+ void machine_restart(char *cmd)
+@@ -484,12 +484,6 @@ unsigned long get_wchan(struct task_struct *p)
        return 0;
  }
  
        return 0;
  }
  
@@ -772,20 +1520,41 @@ index c9d11ea..5078081 100644
  #ifdef CONFIG_MMU
  /*
   * The vectors page is always readable from user space for the
  #ifdef CONFIG_MMU
  /*
   * The vectors page is always readable from user space for the
+diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
+index 8fc2c8f..064c150 100644
+--- a/arch/arm/kernel/setup.c
++++ b/arch/arm/kernel/setup.c
+@@ -108,13 +108,13 @@ struct processor processor __read_mostly;
+ struct cpu_tlb_fns cpu_tlb __read_mostly;
+ #endif
+ #ifdef MULTI_USER
+-struct cpu_user_fns cpu_user __read_mostly;
++struct cpu_user_fns cpu_user __read_only;
+ #endif
+ #ifdef MULTI_CACHE
+-struct cpu_cache_fns cpu_cache __read_mostly;
++struct cpu_cache_fns cpu_cache __read_only;
+ #endif
+ #ifdef CONFIG_OUTER_CACHE
+-struct outer_cache_fns outer_cache __read_mostly;
++struct outer_cache_fns outer_cache __read_only;
+ EXPORT_SYMBOL(outer_cache);
+ #endif
 diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
 diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
-index bc9f9da..c75d826 100644
+index 99a5727..a3d5bb1 100644
 --- a/arch/arm/kernel/traps.c
 +++ b/arch/arm/kernel/traps.c
 --- a/arch/arm/kernel/traps.c
 +++ b/arch/arm/kernel/traps.c
-@@ -257,6 +257,8 @@ static int __die(const char *str, int err, struct thread_info *thread, struct pt
+@@ -259,6 +259,8 @@ static int __die(const char *str, int err, struct thread_info *thread, struct pt
  
  
- static DEFINE_SPINLOCK(die_lock);
+ static DEFINE_RAW_SPINLOCK(die_lock);
  
 +extern void gr_handle_kernel_exploit(void);
 +
  /*
   * This function is protected against re-entrancy.
   */
  
 +extern void gr_handle_kernel_exploit(void);
 +
  /*
   * This function is protected against re-entrancy.
   */
-@@ -284,6 +286,9 @@ void die(const char *str, struct pt_regs *regs, int err)
+@@ -288,6 +290,9 @@ void die(const char *str, struct pt_regs *regs, int err)
                panic("Fatal exception in interrupt");
        if (panic_on_oops)
                panic("Fatal exception");
                panic("Fatal exception in interrupt");
        if (panic_on_oops)
                panic("Fatal exception");
@@ -822,6 +1591,18 @@ index 66a477a..bee61d3 100644
  
        .pushsection .fixup,"ax"
        .align 0
  
        .pushsection .fixup,"ax"
        .align 0
+diff --git a/arch/arm/lib/copy_page.S b/arch/arm/lib/copy_page.S
+index 6ee2f67..d1cce76 100644
+--- a/arch/arm/lib/copy_page.S
++++ b/arch/arm/lib/copy_page.S
+@@ -10,6 +10,7 @@
+  *  ASM optimised string functions
+  */
+ #include <linux/linkage.h>
++#include <linux/const.h>
+ #include <asm/assembler.h>
+ #include <asm/asm-offsets.h>
+ #include <asm/cache.h>
 diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S
 index d066df6..df28194 100644
 --- a/arch/arm/lib/copy_to_user.S
 diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S
 index d066df6..df28194 100644
 --- a/arch/arm/lib/copy_to_user.S
@@ -907,10 +1688,10 @@ index d0ece2a..5ae2f39 100644
                .pushsection .fixup,"ax"
                .align  0
 diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
                .pushsection .fixup,"ax"
                .align  0
 diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
-index 8b9b136..70d5100 100644
+index 025f742..8432b08 100644
 --- a/arch/arm/lib/uaccess_with_memcpy.c
 +++ b/arch/arm/lib/uaccess_with_memcpy.c
 --- a/arch/arm/lib/uaccess_with_memcpy.c
 +++ b/arch/arm/lib/uaccess_with_memcpy.c
-@@ -103,7 +103,7 @@ out:
+@@ -104,7 +104,7 @@ out:
  }
  
  unsigned long
  }
  
  unsigned long
@@ -919,6 +1700,19 @@ index 8b9b136..70d5100 100644
  {
        /*
         * This test is stubbed out of the main function above to keep
  {
        /*
         * This test is stubbed out of the main function above to keep
+diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
+index e9d5f4a..f099699 100644
+--- a/arch/arm/mach-omap2/board-n8x0.c
++++ b/arch/arm/mach-omap2/board-n8x0.c
+@@ -593,7 +593,7 @@ static int n8x0_menelaus_late_init(struct device *dev)
+ }
+ #endif
+-static struct menelaus_platform_data n8x0_menelaus_platform_data __initdata = {
++static struct menelaus_platform_data n8x0_menelaus_platform_data __initconst = {
+       .late_init = n8x0_menelaus_late_init,
+ };
 diff --git a/arch/arm/mach-ux500/mbox-db5500.c b/arch/arm/mach-ux500/mbox-db5500.c
 index 2b2d51c..0127490 100644
 --- a/arch/arm/mach-ux500/mbox-db5500.c
 diff --git a/arch/arm/mach-ux500/mbox-db5500.c b/arch/arm/mach-ux500/mbox-db5500.c
 index 2b2d51c..0127490 100644
 --- a/arch/arm/mach-ux500/mbox-db5500.c
@@ -933,10 +1727,10 @@ index 2b2d51c..0127490 100644
  static int mbox_show(struct seq_file *s, void *data)
  {
 diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
  static int mbox_show(struct seq_file *s, void *data)
  {
 diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
-index 3b5ea68..42fc9af 100644
+index aa33949..d366075 100644
 --- a/arch/arm/mm/fault.c
 +++ b/arch/arm/mm/fault.c
 --- a/arch/arm/mm/fault.c
 +++ b/arch/arm/mm/fault.c
-@@ -182,6 +182,13 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,
+@@ -183,6 +183,13 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,
        }
  #endif
  
        }
  #endif
  
@@ -950,7 +1744,7 @@ index 3b5ea68..42fc9af 100644
        tsk->thread.address = addr;
        tsk->thread.error_code = fsr;
        tsk->thread.trap_no = 14;
        tsk->thread.address = addr;
        tsk->thread.error_code = fsr;
        tsk->thread.trap_no = 14;
-@@ -383,6 +390,33 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
+@@ -384,6 +391,33 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
  }
  #endif                                        /* CONFIG_MMU */
  
  }
  #endif                                        /* CONFIG_MMU */
  
@@ -984,11 +1778,32 @@ index 3b5ea68..42fc9af 100644
  /*
   * First Level Translation Fault Handler
   *
  /*
   * First Level Translation Fault Handler
   *
+@@ -628,6 +662,20 @@ do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs)
+       const struct fsr_info *inf = ifsr_info + fsr_fs(ifsr);
+       struct siginfo info;
++#ifdef CONFIG_PAX_REFCOUNT
++      if (fsr_fs(ifsr) == 2) {
++              unsigned int bkpt;
++
++              if (!probe_kernel_address((unsigned int *)addr, bkpt) && bkpt == 0xe12f1073) {
++                      current->thread.error_code = ifsr;
++                      current->thread.trap_no = 0;
++                      pax_report_refcount_overflow(regs);
++                      fixup_exception(regs);
++                      return;
++              }
++      }
++#endif
++
+       if (!inf->fn(addr, ifsr | FSR_LNX_PF, regs))
+               return;
 diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
 diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
-index 74be05f..f605b8c 100644
+index 44b628e..623ee2a 100644
 --- a/arch/arm/mm/mmap.c
 +++ b/arch/arm/mm/mmap.c
 --- a/arch/arm/mm/mmap.c
 +++ b/arch/arm/mm/mmap.c
-@@ -65,6 +65,10 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -54,6 +54,10 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
        if (len > TASK_SIZE)
                return -ENOMEM;
  
        if (len > TASK_SIZE)
                return -ENOMEM;
  
@@ -999,7 +1814,7 @@ index 74be05f..f605b8c 100644
        if (addr) {
                if (do_align)
                        addr = COLOUR_ALIGN(addr, pgoff);
        if (addr) {
                if (do_align)
                        addr = COLOUR_ALIGN(addr, pgoff);
-@@ -72,15 +76,14 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -61,15 +65,14 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
                        addr = PAGE_ALIGN(addr);
  
                vma = find_vma(mm, addr);
                        addr = PAGE_ALIGN(addr);
  
                vma = find_vma(mm, addr);
@@ -1019,7 +1834,7 @@ index 74be05f..f605b8c 100644
        }
        /* 8 bits of randomness in 20 address space bits */
        if ((current->flags & PF_RANDOMIZE) &&
        }
        /* 8 bits of randomness in 20 address space bits */
        if ((current->flags & PF_RANDOMIZE) &&
-@@ -100,14 +103,14 @@ full_search:
+@@ -89,14 +92,14 @@ full_search:
                         * Start a new search - just in case we missed
                         * some holes.
                         */
                         * Start a new search - just in case we missed
                         * some holes.
                         */
@@ -1037,6 +1852,48 @@ index 74be05f..f605b8c 100644
                        /*
                         * Remember the place where we stopped the search:
                         */
                        /*
                         * Remember the place where we stopped the search:
                         */
+diff --git a/arch/arm/plat-samsung/include/plat/dma-ops.h b/arch/arm/plat-samsung/include/plat/dma-ops.h
+index 4c1a363..df311d0 100644
+--- a/arch/arm/plat-samsung/include/plat/dma-ops.h
++++ b/arch/arm/plat-samsung/include/plat/dma-ops.h
+@@ -41,7 +41,7 @@ struct samsung_dma_ops {
+       int (*started)(unsigned ch);
+       int (*flush)(unsigned ch);
+       int (*stop)(unsigned ch);
+-};
++} __no_const;
+ extern void *samsung_dmadev_get_ops(void);
+ extern void *s3c_dma_get_ops(void);
+diff --git a/arch/arm/plat-samsung/include/plat/ehci.h b/arch/arm/plat-samsung/include/plat/ehci.h
+index 5f28cae..3d23723 100644
+--- a/arch/arm/plat-samsung/include/plat/ehci.h
++++ b/arch/arm/plat-samsung/include/plat/ehci.h
+@@ -14,7 +14,7 @@
+ struct s5p_ehci_platdata {
+       int (*phy_init)(struct platform_device *pdev, int type);
+       int (*phy_exit)(struct platform_device *pdev, int type);
+-};
++} __no_const;
+ extern void s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd);
+diff --git a/arch/avr32/include/asm/cache.h b/arch/avr32/include/asm/cache.h
+index c3a58a1..78fbf54 100644
+--- a/arch/avr32/include/asm/cache.h
++++ b/arch/avr32/include/asm/cache.h
+@@ -1,8 +1,10 @@
+ #ifndef __ASM_AVR32_CACHE_H
+ #define __ASM_AVR32_CACHE_H
++#include <linux/const.h>
++
+ #define L1_CACHE_SHIFT 5
+-#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
+ /*
+  * Memory returned by kmalloc() may be used for DMA, so we must make
 diff --git a/arch/avr32/include/asm/elf.h b/arch/avr32/include/asm/elf.h
 index 3b3159b..425ea94 100644
 --- a/arch/avr32/include/asm/elf.h
 diff --git a/arch/avr32/include/asm/elf.h b/arch/avr32/include/asm/elf.h
 index 3b3159b..425ea94 100644
 --- a/arch/avr32/include/asm/elf.h
@@ -1116,6 +1973,98 @@ index f7040a1..db9f300 100644
                if (exception_trace && printk_ratelimit())
                        printk("%s%s[%d]: segfault at %08lx pc %08lx "
                               "sp %08lx ecr %lu\n",
                if (exception_trace && printk_ratelimit())
                        printk("%s%s[%d]: segfault at %08lx pc %08lx "
                               "sp %08lx ecr %lu\n",
+diff --git a/arch/blackfin/include/asm/cache.h b/arch/blackfin/include/asm/cache.h
+index 568885a..f8008df 100644
+--- a/arch/blackfin/include/asm/cache.h
++++ b/arch/blackfin/include/asm/cache.h
+@@ -7,6 +7,7 @@
+ #ifndef __ARCH_BLACKFIN_CACHE_H
+ #define __ARCH_BLACKFIN_CACHE_H
++#include <linux/const.h>
+ #include <linux/linkage.h>    /* for asmlinkage */
+ /*
+@@ -14,7 +15,7 @@
+  * Blackfin loads 32 bytes for cache
+  */
+ #define L1_CACHE_SHIFT        5
+-#define L1_CACHE_BYTES        (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES        (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define SMP_CACHE_BYTES       L1_CACHE_BYTES
+ #define ARCH_DMA_MINALIGN     L1_CACHE_BYTES
+diff --git a/arch/cris/include/arch-v10/arch/cache.h b/arch/cris/include/arch-v10/arch/cache.h
+index aea2718..3639a60 100644
+--- a/arch/cris/include/arch-v10/arch/cache.h
++++ b/arch/cris/include/arch-v10/arch/cache.h
+@@ -1,8 +1,9 @@
+ #ifndef _ASM_ARCH_CACHE_H
+ #define _ASM_ARCH_CACHE_H
++#include <linux/const.h>
+ /* Etrax 100LX have 32-byte cache-lines. */
+-#define L1_CACHE_BYTES 32
+ #define L1_CACHE_SHIFT 5
++#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
+ #endif /* _ASM_ARCH_CACHE_H */
+diff --git a/arch/cris/include/arch-v32/arch/cache.h b/arch/cris/include/arch-v32/arch/cache.h
+index 1de779f..336fad3 100644
+--- a/arch/cris/include/arch-v32/arch/cache.h
++++ b/arch/cris/include/arch-v32/arch/cache.h
+@@ -1,11 +1,12 @@
+ #ifndef _ASM_CRIS_ARCH_CACHE_H
+ #define _ASM_CRIS_ARCH_CACHE_H
++#include <linux/const.h>
+ #include <arch/hwregs/dma.h>
+ /* A cache-line is 32 bytes. */
+-#define L1_CACHE_BYTES 32
+ #define L1_CACHE_SHIFT 5
++#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define __read_mostly __attribute__((__section__(".data.read_mostly")))
+diff --git a/arch/frv/include/asm/atomic.h b/arch/frv/include/asm/atomic.h
+index 0d8a7d6..d0c9ff5 100644
+--- a/arch/frv/include/asm/atomic.h
++++ b/arch/frv/include/asm/atomic.h
+@@ -241,6 +241,16 @@ extern uint32_t __xchg_32(uint32_t i, volatile void *v);
+ #define atomic64_cmpxchg(v, old, new) (__cmpxchg_64(old, new, &(v)->counter))
+ #define atomic64_xchg(v, new)         (__xchg_64(new, &(v)->counter))
++#define atomic64_read_unchecked(v)            atomic64_read(v)
++#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
++#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
++#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
++#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
++#define atomic64_inc_unchecked(v)             atomic64_inc(v)
++#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
++#define atomic64_dec_unchecked(v)             atomic64_dec(v)
++#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++
+ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
+ {
+       int c, old;
+diff --git a/arch/frv/include/asm/cache.h b/arch/frv/include/asm/cache.h
+index 2797163..c2a401d 100644
+--- a/arch/frv/include/asm/cache.h
++++ b/arch/frv/include/asm/cache.h
+@@ -12,10 +12,11 @@
+ #ifndef __ASM_CACHE_H
+ #define __ASM_CACHE_H
++#include <linux/const.h>
+ /* bytes per L1 cache line */
+ #define L1_CACHE_SHIFT                (CONFIG_FRV_L1_CACHE_SHIFT)
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define __cacheline_aligned   __attribute__((aligned(L1_CACHE_BYTES)))
+ #define ____cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES)))
 diff --git a/arch/frv/include/asm/kmap_types.h b/arch/frv/include/asm/kmap_types.h
 index f8e16b2..c73ff79 100644
 --- a/arch/frv/include/asm/kmap_types.h
 diff --git a/arch/frv/include/asm/kmap_types.h b/arch/frv/include/asm/kmap_types.h
 index f8e16b2..c73ff79 100644
 --- a/arch/frv/include/asm/kmap_types.h
@@ -1160,6 +2109,82 @@ index 385fd30..6c3d97e 100644
                                goto success;
                        addr = vma->vm_end;
                }
                                goto success;
                        addr = vma->vm_end;
                }
+diff --git a/arch/h8300/include/asm/cache.h b/arch/h8300/include/asm/cache.h
+index c635028..6d9445a 100644
+--- a/arch/h8300/include/asm/cache.h
++++ b/arch/h8300/include/asm/cache.h
+@@ -1,8 +1,10 @@
+ #ifndef __ARCH_H8300_CACHE_H
+ #define __ARCH_H8300_CACHE_H
++#include <linux/const.h>
++
+ /* bytes per L1 cache line */
+-#define        L1_CACHE_BYTES  4
++#define        L1_CACHE_BYTES  _AC(4,UL)
+ /* m68k-elf-gcc  2.95.2 doesn't like these */
+diff --git a/arch/hexagon/include/asm/cache.h b/arch/hexagon/include/asm/cache.h
+index 0f01de2..d37d309 100644
+--- a/arch/hexagon/include/asm/cache.h
++++ b/arch/hexagon/include/asm/cache.h
+@@ -21,9 +21,11 @@
+ #ifndef __ASM_CACHE_H
+ #define __ASM_CACHE_H
++#include <linux/const.h>
++
+ /* Bytes per L1 cache line */
+-#define L1_CACHE_SHIFT                (5)
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_SHIFT                5
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define __cacheline_aligned   __aligned(L1_CACHE_BYTES)
+ #define ____cacheline_aligned __aligned(L1_CACHE_BYTES)
+diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h
+index 3fad89e..3047da5 100644
+--- a/arch/ia64/include/asm/atomic.h
++++ b/arch/ia64/include/asm/atomic.h
+@@ -209,6 +209,16 @@ atomic64_add_negative (__s64 i, atomic64_t *v)
+ #define atomic64_inc(v)                       atomic64_add(1, (v))
+ #define atomic64_dec(v)                       atomic64_sub(1, (v))
++#define atomic64_read_unchecked(v)            atomic64_read(v)
++#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
++#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
++#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
++#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
++#define atomic64_inc_unchecked(v)             atomic64_inc(v)
++#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
++#define atomic64_dec_unchecked(v)             atomic64_dec(v)
++#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++
+ /* Atomic operations are already serializing */
+ #define smp_mb__before_atomic_dec()   barrier()
+ #define smp_mb__after_atomic_dec()    barrier()
+diff --git a/arch/ia64/include/asm/cache.h b/arch/ia64/include/asm/cache.h
+index 988254a..e1ee885 100644
+--- a/arch/ia64/include/asm/cache.h
++++ b/arch/ia64/include/asm/cache.h
+@@ -1,6 +1,7 @@
+ #ifndef _ASM_IA64_CACHE_H
+ #define _ASM_IA64_CACHE_H
++#include <linux/const.h>
+ /*
+  * Copyright (C) 1998-2000 Hewlett-Packard Co
+@@ -9,7 +10,7 @@
+ /* Bytes per L1 (data) cache line.  */
+ #define L1_CACHE_SHIFT                CONFIG_IA64_L1_CACHE_SHIFT
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ #ifdef CONFIG_SMP
+ # define SMP_CACHE_SHIFT      L1_CACHE_SHIFT
 diff --git a/arch/ia64/include/asm/elf.h b/arch/ia64/include/asm/elf.h
 index b5298eb..67c6e62 100644
 --- a/arch/ia64/include/asm/elf.h
 diff --git a/arch/ia64/include/asm/elf.h b/arch/ia64/include/asm/elf.h
 index b5298eb..67c6e62 100644
 --- a/arch/ia64/include/asm/elf.h
@@ -1475,6 +2500,22 @@ index 00cb0e2..2ad8024 100644
                vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
                down_write(&current->mm->mmap_sem);
                if (insert_vm_struct(current->mm, vma)) {
                vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
                down_write(&current->mm->mmap_sem);
                if (insert_vm_struct(current->mm, vma)) {
+diff --git a/arch/m32r/include/asm/cache.h b/arch/m32r/include/asm/cache.h
+index 40b3ee9..8c2c112 100644
+--- a/arch/m32r/include/asm/cache.h
++++ b/arch/m32r/include/asm/cache.h
+@@ -1,8 +1,10 @@
+ #ifndef _ASM_M32R_CACHE_H
+ #define _ASM_M32R_CACHE_H
++#include <linux/const.h>
++
+ /* L1 cache line size */
+ #define L1_CACHE_SHIFT                4
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ #endif  /* _ASM_M32R_CACHE_H */
 diff --git a/arch/m32r/lib/usercopy.c b/arch/m32r/lib/usercopy.c
 index 82abd15..d95ae5d 100644
 --- a/arch/m32r/lib/usercopy.c
 diff --git a/arch/m32r/lib/usercopy.c b/arch/m32r/lib/usercopy.c
 index 82abd15..d95ae5d 100644
 --- a/arch/m32r/lib/usercopy.c
@@ -1499,6 +2540,90 @@ index 82abd15..d95ae5d 100644
        prefetchw(to);
        if (access_ok(VERIFY_READ, from, n))
                __copy_user_zeroing(to,from,n);
        prefetchw(to);
        if (access_ok(VERIFY_READ, from, n))
                __copy_user_zeroing(to,from,n);
+diff --git a/arch/m68k/include/asm/cache.h b/arch/m68k/include/asm/cache.h
+index 0395c51..5f26031 100644
+--- a/arch/m68k/include/asm/cache.h
++++ b/arch/m68k/include/asm/cache.h
+@@ -4,9 +4,11 @@
+ #ifndef __ARCH_M68K_CACHE_H
+ #define __ARCH_M68K_CACHE_H
++#include <linux/const.h>
++
+ /* bytes per L1 cache line */
+ #define        L1_CACHE_SHIFT  4
+-#define        L1_CACHE_BYTES  (1<< L1_CACHE_SHIFT)
++#define        L1_CACHE_BYTES  (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define ARCH_DMA_MINALIGN     L1_CACHE_BYTES
+diff --git a/arch/microblaze/include/asm/cache.h b/arch/microblaze/include/asm/cache.h
+index 4efe96a..60e8699 100644
+--- a/arch/microblaze/include/asm/cache.h
++++ b/arch/microblaze/include/asm/cache.h
+@@ -13,11 +13,12 @@
+ #ifndef _ASM_MICROBLAZE_CACHE_H
+ #define _ASM_MICROBLAZE_CACHE_H
++#include <linux/const.h>
+ #include <asm/registers.h>
+ #define L1_CACHE_SHIFT 5
+ /* word-granular cache in microblaze */
+-#define L1_CACHE_BYTES        (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES        (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define SMP_CACHE_BYTES       L1_CACHE_BYTES
+diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h
+index 1d93f81..67794d0 100644
+--- a/arch/mips/include/asm/atomic.h
++++ b/arch/mips/include/asm/atomic.h
+@@ -21,6 +21,10 @@
+ #include <asm/war.h>
+ #include <asm/system.h>
++#ifdef CONFIG_GENERIC_ATOMIC64
++#include <asm-generic/atomic64.h>
++#endif
++
+ #define ATOMIC_INIT(i)    { (i) }
+ /*
+@@ -765,6 +769,16 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+  */
+ #define atomic64_add_negative(i, v) (atomic64_add_return(i, (v)) < 0)
++#define atomic64_read_unchecked(v)            atomic64_read(v)
++#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
++#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
++#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
++#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
++#define atomic64_inc_unchecked(v)             atomic64_inc(v)
++#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
++#define atomic64_dec_unchecked(v)             atomic64_dec(v)
++#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++
+ #endif /* CONFIG_64BIT */
+ /*
+diff --git a/arch/mips/include/asm/cache.h b/arch/mips/include/asm/cache.h
+index b4db69f..8f3b093 100644
+--- a/arch/mips/include/asm/cache.h
++++ b/arch/mips/include/asm/cache.h
+@@ -9,10 +9,11 @@
+ #ifndef _ASM_CACHE_H
+ #define _ASM_CACHE_H
++#include <linux/const.h>
+ #include <kmalloc.h>
+ #define L1_CACHE_SHIFT                CONFIG_MIPS_L1_CACHE_SHIFT
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define SMP_CACHE_SHIFT               L1_CACHE_SHIFT
+ #define SMP_CACHE_BYTES               L1_CACHE_BYTES
 diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
 index 455c0ac..ad65fbe 100644
 --- a/arch/mips/include/asm/elf.h
 diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
 index 455c0ac..ad65fbe 100644
 --- a/arch/mips/include/asm/elf.h
@@ -1586,7 +2711,7 @@ index ff44823..97f8906 100644
  
  /*
 diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
  
  /*
 diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
-index b30cb25..454c0a9 100644
+index c47f96e..661d418 100644
 --- a/arch/mips/kernel/process.c
 +++ b/arch/mips/kernel/process.c
 @@ -481,15 +481,3 @@ unsigned long get_wchan(struct task_struct *task)
 --- a/arch/mips/kernel/process.c
 +++ b/arch/mips/kernel/process.c
 @@ -481,15 +481,3 @@ unsigned long get_wchan(struct task_struct *task)
@@ -1717,6 +2842,115 @@ index 302d779..7d35bf8 100644
 -
 -      return ret;
 -}
 -
 -      return ret;
 -}
+diff --git a/arch/mn10300/proc-mn103e010/include/proc/cache.h b/arch/mn10300/proc-mn103e010/include/proc/cache.h
+index 967d144..db12197 100644
+--- a/arch/mn10300/proc-mn103e010/include/proc/cache.h
++++ b/arch/mn10300/proc-mn103e010/include/proc/cache.h
+@@ -11,12 +11,14 @@
+ #ifndef _ASM_PROC_CACHE_H
+ #define _ASM_PROC_CACHE_H
++#include <linux/const.h>
++
+ /* L1 cache */
+ #define L1_CACHE_NWAYS                4       /* number of ways in caches */
+ #define L1_CACHE_NENTRIES     256     /* number of entries in each way */
+-#define L1_CACHE_BYTES                16      /* bytes per entry */
+ #define L1_CACHE_SHIFT                4       /* shift for bytes per entry */
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)   /* bytes per entry */
+ #define L1_CACHE_WAYDISP      0x1000  /* displacement of one way from the next */
+ #define L1_CACHE_TAG_VALID    0x00000001      /* cache tag valid bit */
+diff --git a/arch/mn10300/proc-mn2ws0050/include/proc/cache.h b/arch/mn10300/proc-mn2ws0050/include/proc/cache.h
+index bcb5df2..84fabd2 100644
+--- a/arch/mn10300/proc-mn2ws0050/include/proc/cache.h
++++ b/arch/mn10300/proc-mn2ws0050/include/proc/cache.h
+@@ -16,13 +16,15 @@
+ #ifndef _ASM_PROC_CACHE_H
+ #define _ASM_PROC_CACHE_H
++#include <linux/const.h>
++
+ /*
+  * L1 cache
+  */
+ #define L1_CACHE_NWAYS                4               /* number of ways in caches */
+ #define L1_CACHE_NENTRIES     128             /* number of entries in each way */
+-#define L1_CACHE_BYTES                32              /* bytes per entry */
+ #define L1_CACHE_SHIFT                5               /* shift for bytes per entry */
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)   /* bytes per entry */
+ #define L1_CACHE_WAYDISP      0x1000          /* distance from one way to the next */
+ #define L1_CACHE_TAG_VALID    0x00000001      /* cache tag valid bit */
+diff --git a/arch/openrisc/include/asm/cache.h b/arch/openrisc/include/asm/cache.h
+index 4ce7a01..449202a 100644
+--- a/arch/openrisc/include/asm/cache.h
++++ b/arch/openrisc/include/asm/cache.h
+@@ -19,11 +19,13 @@
+ #ifndef __ASM_OPENRISC_CACHE_H
+ #define __ASM_OPENRISC_CACHE_H
++#include <linux/const.h>
++
+ /* FIXME: How can we replace these with values from the CPU...
+  * they shouldn't be hard-coded!
+  */
+-#define L1_CACHE_BYTES 16
+ #define L1_CACHE_SHIFT 4
++#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
+ #endif /* __ASM_OPENRISC_CACHE_H */
+diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h
+index 4054b31..a10c105 100644
+--- a/arch/parisc/include/asm/atomic.h
++++ b/arch/parisc/include/asm/atomic.h
+@@ -335,6 +335,16 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+ #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
++#define atomic64_read_unchecked(v)            atomic64_read(v)
++#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
++#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
++#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
++#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
++#define atomic64_inc_unchecked(v)             atomic64_inc(v)
++#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
++#define atomic64_dec_unchecked(v)             atomic64_dec(v)
++#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++
+ #endif /* !CONFIG_64BIT */
+diff --git a/arch/parisc/include/asm/cache.h b/arch/parisc/include/asm/cache.h
+index 47f11c7..3420df2 100644
+--- a/arch/parisc/include/asm/cache.h
++++ b/arch/parisc/include/asm/cache.h
+@@ -5,6 +5,7 @@
+ #ifndef __ARCH_PARISC_CACHE_H
+ #define __ARCH_PARISC_CACHE_H
++#include <linux/const.h>
+ /*
+  * PA 2.0 processors have 64-byte cachelines; PA 1.1 processors have
+@@ -15,13 +16,13 @@
+  * just ruin performance.
+  */
+ #ifdef CONFIG_PA20
+-#define L1_CACHE_BYTES 64
+ #define L1_CACHE_SHIFT 6
+ #else
+-#define L1_CACHE_BYTES 32
+ #define L1_CACHE_SHIFT 5
+ #endif
++#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
++
+ #ifndef __ASSEMBLY__
+ #define SMP_CACHE_BYTES L1_CACHE_BYTES
 diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h
 index 19f6cb1..6c78cf2 100644
 --- a/arch/parisc/include/asm/elf.h
 diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h
 index 19f6cb1..6c78cf2 100644
 --- a/arch/parisc/include/asm/elf.h
@@ -2079,6 +3313,48 @@ index 18162ce..94de376 100644
  
        /*
         * If for any reason at all we couldn't handle the fault, make
  
        /*
         * If for any reason at all we couldn't handle the fault, make
+diff --git a/arch/powerpc/include/asm/atomic.h b/arch/powerpc/include/asm/atomic.h
+index 02e41b5..ec6e26c 100644
+--- a/arch/powerpc/include/asm/atomic.h
++++ b/arch/powerpc/include/asm/atomic.h
+@@ -469,6 +469,16 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+ #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
++#define atomic64_read_unchecked(v)            atomic64_read(v)
++#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
++#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
++#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
++#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
++#define atomic64_inc_unchecked(v)             atomic64_inc(v)
++#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
++#define atomic64_dec_unchecked(v)             atomic64_dec(v)
++#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++
+ #endif /* __powerpc64__ */
+ #endif /* __KERNEL__ */
+diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
+index 4b50941..5605819 100644
+--- a/arch/powerpc/include/asm/cache.h
++++ b/arch/powerpc/include/asm/cache.h
+@@ -3,6 +3,7 @@
+ #ifdef __KERNEL__
++#include <linux/const.h>
+ /* bytes per L1 cache line */
+ #if defined(CONFIG_8xx) || defined(CONFIG_403GCX)
+@@ -22,7 +23,7 @@
+ #define L1_CACHE_SHIFT                7
+ #endif
+-#define       L1_CACHE_BYTES          (1 << L1_CACHE_SHIFT)
++#define       L1_CACHE_BYTES          (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define       SMP_CACHE_BYTES         L1_CACHE_BYTES
 diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
 index 3bf9cca..e7457d0 100644
 --- a/arch/powerpc/include/asm/elf.h
 diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
 index 3bf9cca..e7457d0 100644
 --- a/arch/powerpc/include/asm/elf.h
@@ -2141,10 +3417,10 @@ index d4a7f64..451de1c 100644
        return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0);
  }
 diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
        return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0);
  }
 diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
-index 2cd664e..1d2e8a7 100644
+index dd9c4fd..a2ced87 100644
 --- a/arch/powerpc/include/asm/page.h
 +++ b/arch/powerpc/include/asm/page.h
 --- a/arch/powerpc/include/asm/page.h
 +++ b/arch/powerpc/include/asm/page.h
-@@ -129,8 +129,9 @@ extern phys_addr_t kernstart_addr;
+@@ -141,8 +141,9 @@ extern phys_addr_t kernstart_addr;
   * and needs to be executable.  This means the whole heap ends
   * up being executable.
   */
   * and needs to be executable.  This means the whole heap ends
   * up being executable.
   */
@@ -2156,21 +3432,21 @@ index 2cd664e..1d2e8a7 100644
  
  #define VM_DATA_DEFAULT_FLAGS64       (VM_READ | VM_WRITE | \
                                 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
  
  #define VM_DATA_DEFAULT_FLAGS64       (VM_READ | VM_WRITE | \
                                 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
-@@ -158,6 +159,9 @@ extern phys_addr_t kernstart_addr;
+@@ -170,6 +171,9 @@ extern phys_addr_t kernstart_addr;
  #define is_kernel_addr(x)     ((x) >= PAGE_OFFSET)
  #endif
  
 +#define ktla_ktva(addr)               (addr)
 +#define ktva_ktla(addr)               (addr)
 +
  #define is_kernel_addr(x)     ((x) >= PAGE_OFFSET)
  #endif
  
 +#define ktla_ktva(addr)               (addr)
 +#define ktva_ktla(addr)               (addr)
 +
- #ifndef __ASSEMBLY__
- #undef STRICT_MM_TYPECHECKS
+ /*
+  * Use the top bit of the higher-level page table entries to indicate whether
+  * the entries we point to contain hugepages.  This works because we know that
 diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h
 diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h
-index 9356262..ea96148 100644
+index fb40ede..d3ce956 100644
 --- a/arch/powerpc/include/asm/page_64.h
 +++ b/arch/powerpc/include/asm/page_64.h
 --- a/arch/powerpc/include/asm/page_64.h
 +++ b/arch/powerpc/include/asm/page_64.h
-@@ -155,15 +155,18 @@ do {                                             \
+@@ -144,15 +144,18 @@ do {                                             \
   * stack by default, so in the absence of a PT_GNU_STACK program header
   * we turn execute permission off.
   */
   * stack by default, so in the absence of a PT_GNU_STACK program header
   * we turn execute permission off.
   */
@@ -2444,10 +3720,10 @@ index 429983c..7af363b 100644
        ld      r4,_DAR(r1)
        bl      .bad_page_fault
 diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
        ld      r4,_DAR(r1)
        bl      .bad_page_fault
 diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
-index 41b02c7..05e76fb 100644
+index cf9c69b..ebc9640 100644
 --- a/arch/powerpc/kernel/exceptions-64s.S
 +++ b/arch/powerpc/kernel/exceptions-64s.S
 --- a/arch/powerpc/kernel/exceptions-64s.S
 +++ b/arch/powerpc/kernel/exceptions-64s.S
-@@ -1014,10 +1014,10 @@ handle_page_fault:
+@@ -1004,10 +1004,10 @@ handle_page_fault:
  11:   ld      r4,_DAR(r1)
        ld      r5,_DSISR(r1)
        addi    r3,r1,STACK_FRAME_OVERHEAD
  11:   ld      r4,_DAR(r1)
        ld      r5,_DSISR(r1)
        addi    r3,r1,STACK_FRAME_OVERHEAD
@@ -2459,6 +3735,34 @@ index 41b02c7..05e76fb 100644
        mr      r5,r3
        addi    r3,r1,STACK_FRAME_OVERHEAD
        lwz     r4,_DAR(r1)
        mr      r5,r3
        addi    r3,r1,STACK_FRAME_OVERHEAD
        lwz     r4,_DAR(r1)
+diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
+index 745c1e7..59d97a6 100644
+--- a/arch/powerpc/kernel/irq.c
++++ b/arch/powerpc/kernel/irq.c
+@@ -547,9 +547,6 @@ struct irq_host *irq_alloc_host(struct device_node *of_node,
+       host->ops = ops;
+       host->of_node = of_node_get(of_node);
+-      if (host->ops->match == NULL)
+-              host->ops->match = default_irq_host_match;
+-
+       raw_spin_lock_irqsave(&irq_big_lock, flags);
+       /* If it's a legacy controller, check for duplicates and
+@@ -622,7 +619,12 @@ struct irq_host *irq_find_host(struct device_node *node)
+        */
+       raw_spin_lock_irqsave(&irq_big_lock, flags);
+       list_for_each_entry(h, &irq_hosts, link)
+-              if (h->ops->match(h, node)) {
++              if (h->ops->match) {
++                      if (h->ops->match(h, node)) {
++                              found = h;
++                              break;
++                      }
++              } else if (default_irq_host_match(h, node)) {
+                       found = h;
+                       break;
+               }
 diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c
 index 0b6d796..d760ddb 100644
 --- a/arch/powerpc/kernel/module_32.c
 diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c
 index 0b6d796..d760ddb 100644
 --- a/arch/powerpc/kernel/module_32.c
@@ -2493,10 +3797,10 @@ index 0b6d796..d760ddb 100644
        /* Find this entry, or if that fails, the next avail. entry */
        while (entry->jump[0]) {
 diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
        /* Find this entry, or if that fails, the next avail. entry */
        while (entry->jump[0]) {
 diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
-index 8f53954..a704ad6 100644
+index 6457574..08b28d3 100644
 --- a/arch/powerpc/kernel/process.c
 +++ b/arch/powerpc/kernel/process.c
 --- a/arch/powerpc/kernel/process.c
 +++ b/arch/powerpc/kernel/process.c
-@@ -682,8 +682,8 @@ void show_regs(struct pt_regs * regs)
+@@ -660,8 +660,8 @@ void show_regs(struct pt_regs * regs)
         * Lookup NIP late so we have the best change of getting the
         * above info out without failing
         */
         * Lookup NIP late so we have the best change of getting the
         * above info out without failing
         */
@@ -2507,7 +3811,7 @@ index 8f53954..a704ad6 100644
  #endif
        show_stack(current, (unsigned long *) regs->gpr[1]);
        if (!user_mode(regs))
  #endif
        show_stack(current, (unsigned long *) regs->gpr[1]);
        if (!user_mode(regs))
-@@ -1187,10 +1187,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
+@@ -1165,10 +1165,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
                newsp = stack[0];
                ip = stack[STACK_FRAME_LR_SAVE];
                if (!firstframe || ip != lr) {
                newsp = stack[0];
                ip = stack[STACK_FRAME_LR_SAVE];
                if (!firstframe || ip != lr) {
@@ -2520,7 +3824,7 @@ index 8f53954..a704ad6 100644
                                       (void *)current->ret_stack[curr_frame].ret);
                                curr_frame--;
                        }
                                       (void *)current->ret_stack[curr_frame].ret);
                                curr_frame--;
                        }
-@@ -1210,7 +1210,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
+@@ -1188,7 +1188,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
                        struct pt_regs *regs = (struct pt_regs *)
                                (sp + STACK_FRAME_OVERHEAD);
                        lr = regs->link;
                        struct pt_regs *regs = (struct pt_regs *)
                                (sp + STACK_FRAME_OVERHEAD);
                        lr = regs->link;
@@ -2529,7 +3833,7 @@ index 8f53954..a704ad6 100644
                               regs->trap, (void *)regs->nip, (void *)lr);
                        firstframe = 1;
                }
                               regs->trap, (void *)regs->nip, (void *)lr);
                        firstframe = 1;
                }
-@@ -1285,58 +1285,3 @@ void thread_info_cache_init(void)
+@@ -1263,58 +1263,3 @@ void thread_info_cache_init(void)
  }
  
  #endif /* THREAD_SHIFT < PAGE_SHIFT */
  }
  
  #endif /* THREAD_SHIFT < PAGE_SHIFT */
@@ -2589,7 +3893,7 @@ index 8f53954..a704ad6 100644
 -      return ret;
 -}
 diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
 -      return ret;
 -}
 diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
-index 78b76dc..7f232ef 100644
+index 836a5a1..27289a3 100644
 --- a/arch/powerpc/kernel/signal_32.c
 +++ b/arch/powerpc/kernel/signal_32.c
 @@ -859,7 +859,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
 --- a/arch/powerpc/kernel/signal_32.c
 +++ b/arch/powerpc/kernel/signal_32.c
 @@ -859,7 +859,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
@@ -2602,10 +3906,10 @@ index 78b76dc..7f232ef 100644
                        goto badframe;
                regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp;
 diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
                        goto badframe;
                regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp;
 diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
-index e91c736..742ec06 100644
+index a50b5ec..547078a 100644
 --- a/arch/powerpc/kernel/signal_64.c
 +++ b/arch/powerpc/kernel/signal_64.c
 --- a/arch/powerpc/kernel/signal_64.c
 +++ b/arch/powerpc/kernel/signal_64.c
-@@ -430,7 +430,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info,
+@@ -429,7 +429,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info,
        current->thread.fpscr.val = 0;
  
        /* Set up to return from userspace. */
        current->thread.fpscr.val = 0;
  
        /* Set up to return from userspace. */
@@ -2615,7 +3919,7 @@ index e91c736..742ec06 100644
        } else {
                err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
 diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
        } else {
                err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
 diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
-index f19d977..8ac286e 100644
+index 5459d14..10f8070 100644
 --- a/arch/powerpc/kernel/traps.c
 +++ b/arch/powerpc/kernel/traps.c
 @@ -98,6 +98,8 @@ static void pmac_backlight_unblank(void)
 --- a/arch/powerpc/kernel/traps.c
 +++ b/arch/powerpc/kernel/traps.c
 @@ -98,6 +98,8 @@ static void pmac_backlight_unblank(void)
@@ -2637,10 +3941,10 @@ index f19d977..8ac286e 100644
        do_exit(err);
  
 diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
        do_exit(err);
  
 diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
-index 142ab10..236e61a 100644
+index 7d14bb6..1305601 100644
 --- a/arch/powerpc/kernel/vdso.c
 +++ b/arch/powerpc/kernel/vdso.c
 --- a/arch/powerpc/kernel/vdso.c
 +++ b/arch/powerpc/kernel/vdso.c
-@@ -36,6 +36,7 @@
+@@ -35,6 +35,7 @@
  #include <asm/firmware.h>
  #include <asm/vdso.h>
  #include <asm/vdso_datapage.h>
  #include <asm/firmware.h>
  #include <asm/vdso.h>
  #include <asm/vdso_datapage.h>
@@ -2648,7 +3952,7 @@ index 142ab10..236e61a 100644
  
  #include "setup.h"
  
  
  #include "setup.h"
  
-@@ -220,7 +221,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
+@@ -219,7 +220,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
        vdso_base = VDSO32_MBASE;
  #endif
  
        vdso_base = VDSO32_MBASE;
  #endif
  
@@ -2657,7 +3961,7 @@ index 142ab10..236e61a 100644
  
        /* vDSO has a problem and was disabled, just don't "enable" it for the
         * process
  
        /* vDSO has a problem and was disabled, just don't "enable" it for the
         * process
-@@ -240,7 +241,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
+@@ -239,7 +240,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
        vdso_base = get_unmapped_area(NULL, vdso_base,
                                      (vdso_pages << PAGE_SHIFT) +
                                      ((VDSO_ALIGNMENT - 1) & PAGE_MASK),
        vdso_base = get_unmapped_area(NULL, vdso_base,
                                      (vdso_pages << PAGE_SHIFT) +
                                      ((VDSO_ALIGNMENT - 1) & PAGE_MASK),
@@ -2837,7 +4141,7 @@ index 5a783d8..c23e14b 100644
                mm->unmap_area = arch_unmap_area_topdown;
        }
 diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
                mm->unmap_area = arch_unmap_area_topdown;
        }
 diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
-index ba51948..23009d9 100644
+index 73709f7..6b90313 100644
 --- a/arch/powerpc/mm/slice.c
 +++ b/arch/powerpc/mm/slice.c
 @@ -98,7 +98,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
 --- a/arch/powerpc/mm/slice.c
 +++ b/arch/powerpc/mm/slice.c
 @@ -98,7 +98,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
@@ -2906,8 +4210,45 @@ index ba51948..23009d9 100644
        /* If hint, make sure it matches our alignment restrictions */
        if (!fixed && addr) {
                addr = _ALIGN_UP(addr, 1ul << pshift);
        /* If hint, make sure it matches our alignment restrictions */
        if (!fixed && addr) {
                addr = _ALIGN_UP(addr, 1ul << pshift);
+diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h
+index 8517d2a..d2738d4 100644
+--- a/arch/s390/include/asm/atomic.h
++++ b/arch/s390/include/asm/atomic.h
+@@ -326,6 +326,16 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v)
+ #define atomic64_dec_and_test(_v)     (atomic64_sub_return(1, _v) == 0)
+ #define atomic64_inc_not_zero(v)      atomic64_add_unless((v), 1, 0)
++#define atomic64_read_unchecked(v)            atomic64_read(v)
++#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
++#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
++#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
++#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
++#define atomic64_inc_unchecked(v)             atomic64_inc(v)
++#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
++#define atomic64_dec_unchecked(v)             atomic64_dec(v)
++#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++
+ #define smp_mb__before_atomic_dec()   smp_mb()
+ #define smp_mb__after_atomic_dec()    smp_mb()
+ #define smp_mb__before_atomic_inc()   smp_mb()
+diff --git a/arch/s390/include/asm/cache.h b/arch/s390/include/asm/cache.h
+index 2a30d5a..5e5586f 100644
+--- a/arch/s390/include/asm/cache.h
++++ b/arch/s390/include/asm/cache.h
+@@ -11,8 +11,10 @@
+ #ifndef __ARCH_S390_CACHE_H
+ #define __ARCH_S390_CACHE_H
+-#define L1_CACHE_BYTES     256
++#include <linux/const.h>
++
+ #define L1_CACHE_SHIFT     8
++#define L1_CACHE_BYTES     (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define NET_SKB_PAD      32
+ #define __read_mostly __attribute__((__section__(".data..read_mostly")))
 diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
 diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
-index 547f1a6..3fff354 100644
+index 547f1a6..0b22b53 100644
 --- a/arch/s390/include/asm/elf.h
 +++ b/arch/s390/include/asm/elf.h
 @@ -162,8 +162,14 @@ extern unsigned int vdso_enabled;
 --- a/arch/s390/include/asm/elf.h
 +++ b/arch/s390/include/asm/elf.h
 @@ -162,8 +162,14 @@ extern unsigned int vdso_enabled;
@@ -2921,8 +4262,8 @@ index 547f1a6..3fff354 100644
 +#ifdef CONFIG_PAX_ASLR
 +#define PAX_ELF_ET_DYN_BASE   (test_thread_flag(TIF_31BIT) ? 0x10000UL : 0x80000000UL)
 +
 +#ifdef CONFIG_PAX_ASLR
 +#define PAX_ELF_ET_DYN_BASE   (test_thread_flag(TIF_31BIT) ? 0x10000UL : 0x80000000UL)
 +
-+#define PAX_DELTA_MMAP_LEN    (test_thread_flag(TIF_31BIT) ? 15 : 26 )
-+#define PAX_DELTA_STACK_LEN   (test_thread_flag(TIF_31BIT) ? 15 : 26 )
++#define PAX_DELTA_MMAP_LEN    (test_thread_flag(TIF_31BIT) ? 15 : 26)
++#define PAX_DELTA_STACK_LEN   (test_thread_flag(TIF_31BIT) ? 15 : 26)
 +#endif
  
  /* This yields a mask that user programs can use to figure out what
 +#endif
  
  /* This yields a mask that user programs can use to figure out what
@@ -2936,10 +4277,10 @@ index 547f1a6..3fff354 100644
 -
  #endif
 diff --git a/arch/s390/include/asm/system.h b/arch/s390/include/asm/system.h
 -
  #endif
 diff --git a/arch/s390/include/asm/system.h b/arch/s390/include/asm/system.h
-index 6582f69..b69906f 100644
+index ef573c1..75a1ce6 100644
 --- a/arch/s390/include/asm/system.h
 +++ b/arch/s390/include/asm/system.h
 --- a/arch/s390/include/asm/system.h
 +++ b/arch/s390/include/asm/system.h
-@@ -256,7 +256,7 @@ extern void (*_machine_restart)(char *command);
+@@ -262,7 +262,7 @@ extern void (*_machine_restart)(char *command);
  extern void (*_machine_halt)(void);
  extern void (*_machine_power_off)(void);
  
  extern void (*_machine_halt)(void);
  extern void (*_machine_power_off)(void);
  
@@ -3060,10 +4401,10 @@ index dfcb343..eda788a 100644
                if (r_type == R_390_GOTPC)
                        *(unsigned int *) loc = val;
 diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
                if (r_type == R_390_GOTPC)
                        *(unsigned int *) loc = val;
 diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
-index 541a750..8739853 100644
+index 53088e2..9f44a36 100644
 --- a/arch/s390/kernel/process.c
 +++ b/arch/s390/kernel/process.c
 --- a/arch/s390/kernel/process.c
 +++ b/arch/s390/kernel/process.c
-@@ -319,39 +319,3 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -320,39 +320,3 @@ unsigned long get_wchan(struct task_struct *p)
        }
        return 0;
  }
        }
        return 0;
  }
@@ -3103,24 +4444,11 @@ index 541a750..8739853 100644
 -              return base;
 -      return ret;
 -}
 -              return base;
 -      return ret;
 -}
-diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
-index 7b371c3..ad06cf1 100644
---- a/arch/s390/kernel/setup.c
-+++ b/arch/s390/kernel/setup.c
-@@ -271,7 +271,7 @@ static int __init early_parse_mem(char *p)
- }
- early_param("mem", early_parse_mem);
--unsigned int user_mode = HOME_SPACE_MODE;
-+unsigned int user_mode = SECONDARY_SPACE_MODE;
- EXPORT_SYMBOL_GPL(user_mode);
- static int set_amode_and_uaccess(unsigned long user_amode,
 diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
 diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
-index c9a9f7f..60d0315 100644
+index a0155c0..34cc491 100644
 --- a/arch/s390/mm/mmap.c
 +++ b/arch/s390/mm/mmap.c
 --- a/arch/s390/mm/mmap.c
 +++ b/arch/s390/mm/mmap.c
-@@ -91,10 +91,22 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
+@@ -92,10 +92,22 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
         */
        if (mmap_is_legacy()) {
                mm->mmap_base = TASK_UNMAPPED_BASE;
         */
        if (mmap_is_legacy()) {
                mm->mmap_base = TASK_UNMAPPED_BASE;
@@ -3143,7 +4471,7 @@ index c9a9f7f..60d0315 100644
                mm->get_unmapped_area = arch_get_unmapped_area_topdown;
                mm->unmap_area = arch_unmap_area_topdown;
        }
                mm->get_unmapped_area = arch_get_unmapped_area_topdown;
                mm->unmap_area = arch_unmap_area_topdown;
        }
-@@ -166,10 +178,22 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
+@@ -167,10 +179,22 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
         */
        if (mmap_is_legacy()) {
                mm->mmap_base = TASK_UNMAPPED_BASE;
         */
        if (mmap_is_legacy()) {
                mm->mmap_base = TASK_UNMAPPED_BASE;
@@ -3166,6 +4494,21 @@ index c9a9f7f..60d0315 100644
                mm->get_unmapped_area = s390_get_unmapped_area_topdown;
                mm->unmap_area = arch_unmap_area_topdown;
        }
                mm->get_unmapped_area = s390_get_unmapped_area_topdown;
                mm->unmap_area = arch_unmap_area_topdown;
        }
+diff --git a/arch/score/include/asm/cache.h b/arch/score/include/asm/cache.h
+index ae3d59f..f65f075 100644
+--- a/arch/score/include/asm/cache.h
++++ b/arch/score/include/asm/cache.h
+@@ -1,7 +1,9 @@
+ #ifndef _ASM_SCORE_CACHE_H
+ #define _ASM_SCORE_CACHE_H
++#include <linux/const.h>
++
+ #define L1_CACHE_SHIFT                4
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ #endif /* _ASM_SCORE_CACHE_H */
 diff --git a/arch/score/include/asm/system.h b/arch/score/include/asm/system.h
 index 589d5c7..669e274 100644
 --- a/arch/score/include/asm/system.h
 diff --git a/arch/score/include/asm/system.h b/arch/score/include/asm/system.h
 index 589d5c7..669e274 100644
 --- a/arch/score/include/asm/system.h
@@ -3192,6 +4535,23 @@ index 25d0803..d6c8e36 100644
 -{
 -      return sp;
 -}
 -{
 -      return sp;
 -}
+diff --git a/arch/sh/include/asm/cache.h b/arch/sh/include/asm/cache.h
+index ef9e555..331bd29 100644
+--- a/arch/sh/include/asm/cache.h
++++ b/arch/sh/include/asm/cache.h
+@@ -9,10 +9,11 @@
+ #define __ASM_SH_CACHE_H
+ #ifdef __KERNEL__
++#include <linux/const.h>
+ #include <linux/init.h>
+ #include <cpu/cache.h>
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ #define __read_mostly __attribute__((__section__(".data..read_mostly")))
 diff --git a/arch/sh/mm/mmap.c b/arch/sh/mm/mmap.c
 index afeb710..d1d1289 100644
 --- a/arch/sh/mm/mmap.c
 diff --git a/arch/sh/mm/mmap.c b/arch/sh/mm/mmap.c
 index afeb710..d1d1289 100644
 --- a/arch/sh/mm/mmap.c
@@ -3270,8 +4630,20 @@ index afeb710..d1d1289 100644
  
  bottomup:
        /*
  
  bottomup:
        /*
+diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
+index f92602e..27060b2 100644
+--- a/arch/sparc/Kconfig
++++ b/arch/sparc/Kconfig
+@@ -31,6 +31,7 @@ config SPARC
+ config SPARC32
+       def_bool !64BIT
++      select GENERIC_ATOMIC64
+ config SPARC64
+       def_bool 64BIT
 diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
 diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
-index ad1fb5d..fc5315b 100644
+index eddcfb3..b117d90 100644
 --- a/arch/sparc/Makefile
 +++ b/arch/sparc/Makefile
 @@ -75,7 +75,7 @@ drivers-$(CONFIG_OPROFILE)   += arch/sparc/oprofile/
 --- a/arch/sparc/Makefile
 +++ b/arch/sparc/Makefile
 @@ -75,7 +75,7 @@ drivers-$(CONFIG_OPROFILE)   += arch/sparc/oprofile/
@@ -3283,6 +4655,19 @@ index ad1fb5d..fc5315b 100644
  VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y)
  VMLINUX_MAIN += $(drivers-y) $(net-y)
  
  VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y)
  VMLINUX_MAIN += $(drivers-y) $(net-y)
  
+diff --git a/arch/sparc/include/asm/atomic_32.h b/arch/sparc/include/asm/atomic_32.h
+index 5c3c8b6..ba822fa 100644
+--- a/arch/sparc/include/asm/atomic_32.h
++++ b/arch/sparc/include/asm/atomic_32.h
+@@ -13,6 +13,8 @@
+ #include <linux/types.h>
++#include <asm-generic/atomic64.h>
++
+ #ifdef __KERNEL__
+ #include <asm/system.h>
 diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h
 index 9f421df..b81fc12 100644
 --- a/arch/sparc/include/asm/atomic_64.h
 diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h
 index 9f421df..b81fc12 100644
 --- a/arch/sparc/include/asm/atomic_64.h
@@ -3474,15 +4859,20 @@ index 9f421df..b81fc12 100644
  
  #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
 diff --git a/arch/sparc/include/asm/cache.h b/arch/sparc/include/asm/cache.h
  
  #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
 diff --git a/arch/sparc/include/asm/cache.h b/arch/sparc/include/asm/cache.h
-index 69358b5..17b4745 100644
+index 69358b5..9d0d492 100644
 --- a/arch/sparc/include/asm/cache.h
 +++ b/arch/sparc/include/asm/cache.h
 --- a/arch/sparc/include/asm/cache.h
 +++ b/arch/sparc/include/asm/cache.h
-@@ -10,7 +10,7 @@
+@@ -7,10 +7,12 @@
+ #ifndef _SPARC_CACHE_H
+ #define _SPARC_CACHE_H
++#include <linux/const.h>
++
  #define ARCH_SLAB_MINALIGN    __alignof__(unsigned long long)
  
  #define L1_CACHE_SHIFT 5
 -#define L1_CACHE_BYTES 32
  #define ARCH_SLAB_MINALIGN    __alignof__(unsigned long long)
  
  #define L1_CACHE_SHIFT 5
 -#define L1_CACHE_BYTES 32
-+#define L1_CACHE_BYTES 32UL
++#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
  
  #ifdef CONFIG_SPARC32
  #define SMP_CACHE_BYTES_SHIFT 5
  
  #ifdef CONFIG_SPARC32
  #define SMP_CACHE_BYTES_SHIFT 5
@@ -3522,8 +4912,21 @@ index 7df8b7f..4946269 100644
  extern unsigned long sparc64_elf_hwcap;
  #define ELF_HWCAP     sparc64_elf_hwcap
  
  extern unsigned long sparc64_elf_hwcap;
  #define ELF_HWCAP     sparc64_elf_hwcap
  
+diff --git a/arch/sparc/include/asm/page_32.h b/arch/sparc/include/asm/page_32.h
+index 156707b..aefa786 100644
+--- a/arch/sparc/include/asm/page_32.h
++++ b/arch/sparc/include/asm/page_32.h
+@@ -8,6 +8,8 @@
+ #ifndef _SPARC_PAGE_H
+ #define _SPARC_PAGE_H
++#include <linux/const.h>
++
+ #define PAGE_SHIFT   12
+ #ifndef __ASSEMBLY__
 diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h
 diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h
-index 5b31a8e..1d92567 100644
+index a790cc6..091ed94 100644
 --- a/arch/sparc/include/asm/pgtable_32.h
 +++ b/arch/sparc/include/asm/pgtable_32.h
 @@ -45,6 +45,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd)
 --- a/arch/sparc/include/asm/pgtable_32.h
 +++ b/arch/sparc/include/asm/pgtable_32.h
 @@ -45,6 +45,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd)
@@ -3874,7 +5277,7 @@ index f793742..4d880af 100644
        } while (++count < 16);
        printk("\n");
 diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
        } while (++count < 16);
        printk("\n");
 diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
-index d959cd0..7b42812 100644
+index 3739a06..48b2ff0 100644
 --- a/arch/sparc/kernel/process_64.c
 +++ b/arch/sparc/kernel/process_64.c
 @@ -180,14 +180,14 @@ static void show_regwindow(struct pt_regs *regs)
 --- a/arch/sparc/kernel/process_64.c
 +++ b/arch/sparc/kernel/process_64.c
 @@ -180,14 +180,14 @@ static void show_regwindow(struct pt_regs *regs)
@@ -3935,7 +5338,7 @@ index 42b282f..28ce9f2 100644
                addr = vmm->vm_end;
                if (flags & MAP_SHARED)
 diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
                addr = vmm->vm_end;
                if (flags & MAP_SHARED)
 diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
-index 908b47a..aa9e584 100644
+index 441521a..b767073 100644
 --- a/arch/sparc/kernel/sys_sparc_64.c
 +++ b/arch/sparc/kernel/sys_sparc_64.c
 @@ -124,7 +124,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
 --- a/arch/sparc/kernel/sys_sparc_64.c
 +++ b/arch/sparc/kernel/sys_sparc_64.c
 @@ -124,7 +124,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
@@ -4086,10 +5489,10 @@ index 908b47a..aa9e584 100644
                mm->unmap_area = arch_unmap_area_topdown;
        }
 diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c
                mm->unmap_area = arch_unmap_area_topdown;
        }
 diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c
-index c0490c7..84959d1 100644
+index 591f20c..0f1b925 100644
 --- a/arch/sparc/kernel/traps_32.c
 +++ b/arch/sparc/kernel/traps_32.c
 --- a/arch/sparc/kernel/traps_32.c
 +++ b/arch/sparc/kernel/traps_32.c
-@@ -44,6 +44,8 @@ static void instruction_dump(unsigned long *pc)
+@@ -45,6 +45,8 @@ static void instruction_dump(unsigned long *pc)
  #define __SAVE __asm__ __volatile__("save %sp, -0x40, %sp\n\t")
  #define __RESTORE __asm__ __volatile__("restore %g0, %g0, %g0\n\t")
  
  #define __SAVE __asm__ __volatile__("save %sp, -0x40, %sp\n\t")
  #define __RESTORE __asm__ __volatile__("restore %g0, %g0, %g0\n\t")
  
@@ -4098,7 +5501,7 @@ index c0490c7..84959d1 100644
  void die_if_kernel(char *str, struct pt_regs *regs)
  {
        static int die_counter;
  void die_if_kernel(char *str, struct pt_regs *regs)
  {
        static int die_counter;
-@@ -76,15 +78,17 @@ void die_if_kernel(char *str, struct pt_regs *regs)
+@@ -77,15 +79,17 @@ void die_if_kernel(char *str, struct pt_regs *regs)
                      count++ < 30                              &&
                        (((unsigned long) rw) >= PAGE_OFFSET)   &&
                      !(((unsigned long) rw) & 0x7)) {
                      count++ < 30                              &&
                        (((unsigned long) rw) >= PAGE_OFFSET)   &&
                      !(((unsigned long) rw) & 0x7)) {
@@ -4547,7 +5950,7 @@ index 1b30bb3..b4a16c7 100644
  
  /* Atomic bit operations. */
 diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile
  
  /* Atomic bit operations. */
 diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile
-index e3cda21..a68e4cb 100644
+index 301421c..e2535d1 100644
 --- a/arch/sparc/mm/Makefile
 +++ b/arch/sparc/mm/Makefile
 @@ -2,7 +2,7 @@
 --- a/arch/sparc/mm/Makefile
 +++ b/arch/sparc/mm/Makefile
 @@ -2,7 +2,7 @@
@@ -4560,12 +5963,12 @@ index e3cda21..a68e4cb 100644
  obj-$(CONFIG_SPARC64)   += ultra.o tlb.o tsb.o gup.o
  obj-y                   += fault_$(BITS).o
 diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
  obj-$(CONFIG_SPARC64)   += ultra.o tlb.o tsb.o gup.o
  obj-y                   += fault_$(BITS).o
 diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
-index aa1c1b1..f93e28f 100644
+index 8023fd7..c8e89e9 100644
 --- a/arch/sparc/mm/fault_32.c
 +++ b/arch/sparc/mm/fault_32.c
 --- a/arch/sparc/mm/fault_32.c
 +++ b/arch/sparc/mm/fault_32.c
-@@ -22,6 +22,9 @@
+@@ -21,6 +21,9 @@
+ #include <linux/perf_event.h>
  #include <linux/interrupt.h>
  #include <linux/interrupt.h>
- #include <linux/module.h>
  #include <linux/kdebug.h>
 +#include <linux/slab.h>
 +#include <linux/pagemap.h>
  #include <linux/kdebug.h>
 +#include <linux/slab.h>
 +#include <linux/pagemap.h>
@@ -4573,7 +5976,7 @@ index aa1c1b1..f93e28f 100644
  
  #include <asm/system.h>
  #include <asm/page.h>
  
  #include <asm/system.h>
  #include <asm/page.h>
-@@ -209,6 +212,268 @@ static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault)
+@@ -208,6 +211,268 @@ static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault)
        return safe_compute_effective_address(regs, insn);
  }
  
        return safe_compute_effective_address(regs, insn);
  }
  
@@ -4842,7 +6245,7 @@ index aa1c1b1..f93e28f 100644
  static noinline void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
                                      int text_fault)
  {
  static noinline void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
                                      int text_fault)
  {
-@@ -281,6 +546,24 @@ good_area:
+@@ -280,6 +545,24 @@ good_area:
                if(!(vma->vm_flags & VM_WRITE))
                        goto bad_area;
        } else {
                if(!(vma->vm_flags & VM_WRITE))
                        goto bad_area;
        } else {
@@ -5379,10 +6782,10 @@ index 504c062..6fcb9c6 100644
         * load/store/atomic was a write or not, it only says that there
         * was no match.  So in such a case we (carefully) read the
 diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c
         * load/store/atomic was a write or not, it only says that there
         * was no match.  So in such a case we (carefully) read the
 diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c
-index f4e9764..5682724 100644
+index 07e1453..0a7d9e9 100644
 --- a/arch/sparc/mm/hugetlbpage.c
 +++ b/arch/sparc/mm/hugetlbpage.c
 --- a/arch/sparc/mm/hugetlbpage.c
 +++ b/arch/sparc/mm/hugetlbpage.c
-@@ -68,7 +68,7 @@ full_search:
+@@ -67,7 +67,7 @@ full_search:
                        }
                        return -ENOMEM;
                }
                        }
                        return -ENOMEM;
                }
@@ -5391,7 +6794,7 @@ index f4e9764..5682724 100644
                        /*
                         * Remember the place where we stopped the search:
                         */
                        /*
                         * Remember the place where we stopped the search:
                         */
-@@ -107,7 +107,7 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -106,7 +106,7 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        /* make sure it can fit in the remaining address space */
        if (likely(addr > len)) {
                vma = find_vma(mm, addr-len);
        /* make sure it can fit in the remaining address space */
        if (likely(addr > len)) {
                vma = find_vma(mm, addr-len);
@@ -5400,7 +6803,7 @@ index f4e9764..5682724 100644
                        /* remember the address as a hint for next time */
                        return (mm->free_area_cache = addr-len);
                }
                        /* remember the address as a hint for next time */
                        return (mm->free_area_cache = addr-len);
                }
-@@ -116,16 +116,17 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -115,16 +115,17 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        if (unlikely(mm->mmap_base < len))
                goto bottomup;
  
        if (unlikely(mm->mmap_base < len))
                goto bottomup;
  
@@ -5420,7 +6823,7 @@ index f4e9764..5682724 100644
                        /* remember the address as a hint for next time */
                        return (mm->free_area_cache = addr);
                }
                        /* remember the address as a hint for next time */
                        return (mm->free_area_cache = addr);
                }
-@@ -135,8 +136,8 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -134,8 +135,8 @@ hugetlb_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                        mm->cached_hole_size = vma->vm_start - addr;
  
                /* try just below the current vma->vm_start */
                        mm->cached_hole_size = vma->vm_start - addr;
  
                /* try just below the current vma->vm_start */
@@ -5431,7 +6834,7 @@ index f4e9764..5682724 100644
  
  bottomup:
        /*
  
  bottomup:
        /*
-@@ -182,8 +183,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
+@@ -181,8 +182,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
        if (addr) {
                addr = ALIGN(addr, HPAGE_SIZE);
                vma = find_vma(mm, addr);
        if (addr) {
                addr = ALIGN(addr, HPAGE_SIZE);
                vma = find_vma(mm, addr);
@@ -5497,21 +6900,80 @@ index cbef74e..c38fead 100644
        BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL));
        page_kernel = pgprot_val(SRMMU_PAGE_KERNEL);
  
        BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL));
        page_kernel = pgprot_val(SRMMU_PAGE_KERNEL);
  
+diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h
+index 27fe667..36d474c 100644
+--- a/arch/tile/include/asm/atomic_64.h
++++ b/arch/tile/include/asm/atomic_64.h
+@@ -142,6 +142,16 @@ static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
+ #define atomic64_inc_not_zero(v)      atomic64_add_unless((v), 1, 0)
++#define atomic64_read_unchecked(v)            atomic64_read(v)
++#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
++#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
++#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
++#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
++#define atomic64_inc_unchecked(v)             atomic64_inc(v)
++#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
++#define atomic64_dec_unchecked(v)             atomic64_dec(v)
++#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++
+ /* Atomic dec and inc don't implement barrier, so provide them if needed. */
+ #define smp_mb__before_atomic_dec()   smp_mb()
+ #define smp_mb__after_atomic_dec()    smp_mb()
+diff --git a/arch/tile/include/asm/cache.h b/arch/tile/include/asm/cache.h
+index 392e533..536b092 100644
+--- a/arch/tile/include/asm/cache.h
++++ b/arch/tile/include/asm/cache.h
+@@ -15,11 +15,12 @@
+ #ifndef _ASM_TILE_CACHE_H
+ #define _ASM_TILE_CACHE_H
++#include <linux/const.h>
+ #include <arch/chip.h>
+ /* bytes per L1 data cache line */
+ #define L1_CACHE_SHIFT                CHIP_L1D_LOG_LINE_SIZE()
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ /* bytes per L2 cache line */
+ #define L2_CACHE_SHIFT                CHIP_L2_LOG_LINE_SIZE()
 diff --git a/arch/um/Makefile b/arch/um/Makefile
 diff --git a/arch/um/Makefile b/arch/um/Makefile
-index c0f712c..3a5c4c9 100644
+index 7730af6..cce5b19 100644
 --- a/arch/um/Makefile
 +++ b/arch/um/Makefile
 --- a/arch/um/Makefile
 +++ b/arch/um/Makefile
-@@ -49,6 +49,10 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -D__KERNEL__,,\
+@@ -61,6 +61,10 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -D__KERNEL__,,\
        $(patsubst -I%,,$(KBUILD_CFLAGS)))) $(ARCH_INCLUDE) $(MODE_INCLUDE) \
        $(patsubst -I%,,$(KBUILD_CFLAGS)))) $(ARCH_INCLUDE) $(MODE_INCLUDE) \
-       $(filter -I%,$(CFLAGS)) -D_FILE_OFFSET_BITS=64
+       $(filter -I%,$(CFLAGS)) -D_FILE_OFFSET_BITS=64 -idirafter include
  
 +ifdef CONSTIFY_PLUGIN
 +USER_CFLAGS   += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
 +endif
 +
  
 +ifdef CONSTIFY_PLUGIN
 +USER_CFLAGS   += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
 +endif
 +
- include $(srctree)/$(ARCH_DIR)/Makefile-$(SUBARCH)
  #This will adjust *FLAGS accordingly to the platform.
  #This will adjust *FLAGS accordingly to the platform.
+ include $(srctree)/$(ARCH_DIR)/Makefile-os-$(OS)
+diff --git a/arch/um/include/asm/cache.h b/arch/um/include/asm/cache.h
+index 19e1bdd..3665b77 100644
+--- a/arch/um/include/asm/cache.h
++++ b/arch/um/include/asm/cache.h
+@@ -1,6 +1,7 @@
+ #ifndef __UM_CACHE_H
+ #define __UM_CACHE_H
++#include <linux/const.h>
+ #if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
+ # define L1_CACHE_SHIFT               (CONFIG_X86_L1_CACHE_SHIFT)
+@@ -12,6 +13,6 @@
+ # define L1_CACHE_SHIFT               5
+ #endif
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
+ #endif
 diff --git a/arch/um/include/asm/kmap_types.h b/arch/um/include/asm/kmap_types.h
 index 6c03acd..a5e0215 100644
 --- a/arch/um/include/asm/kmap_types.h
 diff --git a/arch/um/include/asm/kmap_types.h b/arch/um/include/asm/kmap_types.h
 index 6c03acd..a5e0215 100644
 --- a/arch/um/include/asm/kmap_types.h
@@ -5525,7 +6987,7 @@ index 6c03acd..a5e0215 100644
  };
  
 diff --git a/arch/um/include/asm/page.h b/arch/um/include/asm/page.h
  };
  
 diff --git a/arch/um/include/asm/page.h b/arch/um/include/asm/page.h
-index 4cc9b6c..02e5029 100644
+index 7cfc3ce..cbd1a58 100644
 --- a/arch/um/include/asm/page.h
 +++ b/arch/um/include/asm/page.h
 @@ -14,6 +14,9 @@
 --- a/arch/um/include/asm/page.h
 +++ b/arch/um/include/asm/page.h
 @@ -14,6 +14,9 @@
@@ -5539,10 +7001,10 @@ index 4cc9b6c..02e5029 100644
  
  struct page;
 diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
  
  struct page;
 diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
-index 21c1ae7..4640aaa 100644
+index c533835..84db18e 100644
 --- a/arch/um/kernel/process.c
 +++ b/arch/um/kernel/process.c
 --- a/arch/um/kernel/process.c
 +++ b/arch/um/kernel/process.c
-@@ -404,22 +404,6 @@ int singlestepping(void * t)
+@@ -406,22 +406,6 @@ int singlestepping(void * t)
        return 2;
  }
  
        return 2;
  }
  
@@ -5565,63 +7027,28 @@ index 21c1ae7..4640aaa 100644
  unsigned long get_wchan(struct task_struct *p)
  {
        unsigned long stack_page, sp, ip;
  unsigned long get_wchan(struct task_struct *p)
  {
        unsigned long stack_page, sp, ip;
-diff --git a/arch/um/sys-i386/shared/sysdep/system.h b/arch/um/sys-i386/shared/sysdep/system.h
-index d1b93c4..ae1b7fd 100644
---- a/arch/um/sys-i386/shared/sysdep/system.h
-+++ b/arch/um/sys-i386/shared/sysdep/system.h
-@@ -17,7 +17,7 @@
- # define AT_VECTOR_SIZE_ARCH 1
- #endif
--extern unsigned long arch_align_stack(unsigned long sp);
-+#define arch_align_stack(x) ((x) & ~0xfUL)
- void default_idle(void);
-diff --git a/arch/um/sys-i386/syscalls.c b/arch/um/sys-i386/syscalls.c
-index 70ca357..728d1cc 100644
---- a/arch/um/sys-i386/syscalls.c
-+++ b/arch/um/sys-i386/syscalls.c
-@@ -11,6 +11,21 @@
- #include "asm/uaccess.h"
- #include "asm/unistd.h"
-+int i386_mmap_check(unsigned long addr, unsigned long len, unsigned long flags)
-+{
-+      unsigned long pax_task_size = TASK_SIZE;
-+
-+#ifdef CONFIG_PAX_SEGMEXEC
-+      if (current->mm->pax_flags & MF_PAX_SEGMEXEC)
-+              pax_task_size = SEGMEXEC_TASK_SIZE;
-+#endif
-+
-+      if (len > pax_task_size || addr > pax_task_size - len)
-+              return -EINVAL;
-+
-+      return 0;
-+}
+diff --git a/arch/unicore32/include/asm/cache.h b/arch/unicore32/include/asm/cache.h
+index ad8f795..2c7eec6 100644
+--- a/arch/unicore32/include/asm/cache.h
++++ b/arch/unicore32/include/asm/cache.h
+@@ -12,8 +12,10 @@
+ #ifndef __UNICORE_CACHE_H__
+ #define __UNICORE_CACHE_H__
+-#define L1_CACHE_SHIFT                (5)
+-#define L1_CACHE_BYTES                (1 << L1_CACHE_SHIFT)
++#include <linux/const.h>
 +
 +
- /*
-  * The prototype on i386 is:
-  *
-diff --git a/arch/um/sys-x86_64/shared/sysdep/system.h b/arch/um/sys-x86_64/shared/sysdep/system.h
-index d1b93c4..ae1b7fd 100644
---- a/arch/um/sys-x86_64/shared/sysdep/system.h
-+++ b/arch/um/sys-x86_64/shared/sysdep/system.h
-@@ -17,7 +17,7 @@
- # define AT_VECTOR_SIZE_ARCH 1
- #endif
--extern unsigned long arch_align_stack(unsigned long sp);
-+#define arch_align_stack(x) ((x) & ~0xfUL)
- void default_idle(void);
++#define L1_CACHE_SHIFT                5
++#define L1_CACHE_BYTES                (_AC(1,UL) << L1_CACHE_SHIFT)
  
  
+ /*
+  * Memory returned by kmalloc() may be used for DMA, so we must make
 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 6a47bb2..dc9a868 100644
+index efb4294..61bc18c 100644
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
-@@ -236,7 +236,7 @@ config X86_HT
+@@ -235,7 +235,7 @@ config X86_HT
  
  config X86_32_LAZY_GS
        def_bool y
  
  config X86_32_LAZY_GS
        def_bool y
@@ -5630,7 +7057,7 @@ index 6a47bb2..dc9a868 100644
  
  config ARCH_HWEIGHT_CFLAGS
        string
  
  config ARCH_HWEIGHT_CFLAGS
        string
-@@ -1019,7 +1019,7 @@ choice
+@@ -1022,7 +1022,7 @@ choice
  
  config NOHIGHMEM
        bool "off"
  
  config NOHIGHMEM
        bool "off"
@@ -5639,7 +7066,7 @@ index 6a47bb2..dc9a868 100644
        ---help---
          Linux can use up to 64 Gigabytes of physical memory on x86 systems.
          However, the address space of 32-bit x86 processors is only 4
        ---help---
          Linux can use up to 64 Gigabytes of physical memory on x86 systems.
          However, the address space of 32-bit x86 processors is only 4
-@@ -1056,7 +1056,7 @@ config NOHIGHMEM
+@@ -1059,7 +1059,7 @@ config NOHIGHMEM
  
  config HIGHMEM4G
        bool "4GB"
  
  config HIGHMEM4G
        bool "4GB"
@@ -5648,7 +7075,7 @@ index 6a47bb2..dc9a868 100644
        ---help---
          Select this if you have a 32-bit processor and between 1 and 4
          gigabytes of physical RAM.
        ---help---
          Select this if you have a 32-bit processor and between 1 and 4
          gigabytes of physical RAM.
-@@ -1110,7 +1110,7 @@ config PAGE_OFFSET
+@@ -1113,7 +1113,7 @@ config PAGE_OFFSET
        hex
        default 0xB0000000 if VMSPLIT_3G_OPT
        default 0x80000000 if VMSPLIT_2G
        hex
        default 0xB0000000 if VMSPLIT_3G_OPT
        default 0x80000000 if VMSPLIT_2G
@@ -5657,7 +7084,7 @@ index 6a47bb2..dc9a868 100644
        default 0x40000000 if VMSPLIT_1G
        default 0xC0000000
        depends on X86_32
        default 0x40000000 if VMSPLIT_1G
        default 0xC0000000
        depends on X86_32
-@@ -1484,6 +1484,7 @@ config SECCOMP
+@@ -1496,6 +1496,7 @@ config SECCOMP
  
  config CC_STACKPROTECTOR
        bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
  
  config CC_STACKPROTECTOR
        bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
@@ -5665,7 +7092,7 @@ index 6a47bb2..dc9a868 100644
        ---help---
          This option turns on the -fstack-protector GCC feature. This
          feature puts, at the beginning of functions, a canary value on
        ---help---
          This option turns on the -fstack-protector GCC feature. This
          feature puts, at the beginning of functions, a canary value on
-@@ -1541,6 +1542,7 @@ config KEXEC_JUMP
+@@ -1553,6 +1554,7 @@ config KEXEC_JUMP
  config PHYSICAL_START
        hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
        default "0x1000000"
  config PHYSICAL_START
        hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
        default "0x1000000"
@@ -5673,7 +7100,7 @@ index 6a47bb2..dc9a868 100644
        ---help---
          This gives the physical address where the kernel is loaded.
  
        ---help---
          This gives the physical address where the kernel is loaded.
  
-@@ -1604,6 +1606,7 @@ config X86_NEED_RELOCS
+@@ -1616,6 +1618,7 @@ config X86_NEED_RELOCS
  config PHYSICAL_ALIGN
        hex "Alignment value to which kernel should be aligned" if X86_32
        default "0x1000000"
  config PHYSICAL_ALIGN
        hex "Alignment value to which kernel should be aligned" if X86_32
        default "0x1000000"
@@ -5681,7 +7108,7 @@ index 6a47bb2..dc9a868 100644
        range 0x2000 0x1000000
        ---help---
          This value puts the alignment restrictions on physical address
        range 0x2000 0x1000000
        ---help---
          This value puts the alignment restrictions on physical address
-@@ -1635,9 +1638,10 @@ config HOTPLUG_CPU
+@@ -1647,9 +1650,10 @@ config HOTPLUG_CPU
          Say N if you want to disable CPU hotplug.
  
  config COMPAT_VDSO
          Say N if you want to disable CPU hotplug.
  
  config COMPAT_VDSO
@@ -5725,7 +7152,7 @@ index e3ca7e0..b30b28a 100644
  config X86_MINIMUM_CPU_FAMILY
        int
 diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
  config X86_MINIMUM_CPU_FAMILY
        int
 diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
-index c0f8a5c..6404f61 100644
+index bf56e17..05f9891 100644
 --- a/arch/x86/Kconfig.debug
 +++ b/arch/x86/Kconfig.debug
 @@ -81,7 +81,7 @@ config X86_PTDUMP
 --- a/arch/x86/Kconfig.debug
 +++ b/arch/x86/Kconfig.debug
 @@ -81,7 +81,7 @@ config X86_PTDUMP
@@ -6215,7 +7642,7 @@ index 4d3ff03..e4972ff 100644
                err = check_flags();
        }
 diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
                err = check_flags();
        }
 diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
-index 93e689f..504ba09 100644
+index bdb4d45..0476680 100644
 --- a/arch/x86/boot/header.S
 +++ b/arch/x86/boot/header.S
 @@ -224,7 +224,7 @@ setup_data:                .quad 0                 # 64-bit physical pointer to
 --- a/arch/x86/boot/header.S
 +++ b/arch/x86/boot/header.S
 @@ -224,7 +224,7 @@ setup_data:                .quad 0                 # 64-bit physical pointer to
@@ -6477,6 +7904,62 @@ index be6d9e3..21fbbca 100644
        ret
 +ENDPROC(aesni_ctr_enc)
  #endif
        ret
 +ENDPROC(aesni_ctr_enc)
  #endif
+diff --git a/arch/x86/crypto/blowfish-x86_64-asm_64.S b/arch/x86/crypto/blowfish-x86_64-asm_64.S
+index 391d245..67f35c2 100644
+--- a/arch/x86/crypto/blowfish-x86_64-asm_64.S
++++ b/arch/x86/crypto/blowfish-x86_64-asm_64.S
+@@ -20,6 +20,8 @@
+  *
+  */
++#include <asm/alternative-asm.h>
++
+ .file "blowfish-x86_64-asm.S"
+ .text
+@@ -151,9 +153,11 @@ __blowfish_enc_blk:
+       jnz __enc_xor;
+       write_block();
++      pax_force_retaddr 0, 1
+       ret;
+ __enc_xor:
+       xor_block();
++      pax_force_retaddr 0, 1
+       ret;
+ .align 8
+@@ -188,6 +192,7 @@ blowfish_dec_blk:
+       movq %r11, %rbp;
++      pax_force_retaddr 0, 1
+       ret;
+ /**********************************************************************
+@@ -342,6 +347,7 @@ __blowfish_enc_blk_4way:
+       popq %rbx;
+       popq %rbp;
++      pax_force_retaddr 0, 1
+       ret;
+ __enc_xor4:
+@@ -349,6 +355,7 @@ __enc_xor4:
+       popq %rbx;
+       popq %rbp;
++      pax_force_retaddr 0, 1
+       ret;
+ .align 8
+@@ -386,5 +393,6 @@ blowfish_dec_blk_4way:
+       popq %rbx;
+       popq %rbp;
++      pax_force_retaddr 0, 1
+       ret;
 diff --git a/arch/x86/crypto/salsa20-x86_64-asm_64.S b/arch/x86/crypto/salsa20-x86_64-asm_64.S
 index 6214a9b..1f4fc9a 100644
 --- a/arch/x86/crypto/salsa20-x86_64-asm_64.S
 diff --git a/arch/x86/crypto/salsa20-x86_64-asm_64.S b/arch/x86/crypto/salsa20-x86_64-asm_64.S
 index 6214a9b..1f4fc9a 100644
 --- a/arch/x86/crypto/salsa20-x86_64-asm_64.S
@@ -6509,8 +7992,65 @@ index 6214a9b..1f4fc9a 100644
        mov     %rsi,%rdx
 +      pax_force_retaddr
        ret
        mov     %rsi,%rdx
 +      pax_force_retaddr
        ret
+diff --git a/arch/x86/crypto/sha1_ssse3_asm.S b/arch/x86/crypto/sha1_ssse3_asm.S
+index b2c2f57..8470cab 100644
+--- a/arch/x86/crypto/sha1_ssse3_asm.S
++++ b/arch/x86/crypto/sha1_ssse3_asm.S
+@@ -28,6 +28,8 @@
+  * (at your option) any later version.
+  */
++#include <asm/alternative-asm.h>
++
+ #define CTX   %rdi    // arg1
+ #define BUF   %rsi    // arg2
+ #define CNT   %rdx    // arg3
+@@ -104,6 +106,7 @@
+       pop     %r12
+       pop     %rbp
+       pop     %rbx
++      pax_force_retaddr 0, 1
+       ret
+       .size   \name, .-\name
+diff --git a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
+index 5b012a2..36d5364 100644
+--- a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
++++ b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
+@@ -20,6 +20,8 @@
+  *
+  */
++#include <asm/alternative-asm.h>
++
+ .file "twofish-x86_64-asm-3way.S"
+ .text
+@@ -260,6 +262,7 @@ __twofish_enc_blk_3way:
+       popq %r13;
+       popq %r14;
+       popq %r15;
++      pax_force_retaddr 0, 1
+       ret;
+ __enc_xor3:
+@@ -271,6 +274,7 @@ __enc_xor3:
+       popq %r13;
+       popq %r14;
+       popq %r15;
++      pax_force_retaddr 0, 1
+       ret;
+ .global twofish_dec_blk_3way
+@@ -312,5 +316,6 @@ twofish_dec_blk_3way:
+       popq %r13;
+       popq %r14;
+       popq %r15;
++      pax_force_retaddr 0, 1
+       ret;
 diff --git a/arch/x86/crypto/twofish-x86_64-asm_64.S b/arch/x86/crypto/twofish-x86_64-asm_64.S
 diff --git a/arch/x86/crypto/twofish-x86_64-asm_64.S b/arch/x86/crypto/twofish-x86_64-asm_64.S
-index 573aa10..b73ad89 100644
+index 7bcf3fc..f53832f 100644
 --- a/arch/x86/crypto/twofish-x86_64-asm_64.S
 +++ b/arch/x86/crypto/twofish-x86_64-asm_64.S
 @@ -21,6 +21,7 @@
 --- a/arch/x86/crypto/twofish-x86_64-asm_64.S
 +++ b/arch/x86/crypto/twofish-x86_64-asm_64.S
 @@ -21,6 +21,7 @@
@@ -6521,7 +8061,7 @@ index 573aa10..b73ad89 100644
  
  #define a_offset      0
  #define b_offset      4
  
  #define a_offset      0
  #define b_offset      4
-@@ -269,6 +270,7 @@ twofish_enc_blk:
+@@ -268,6 +269,7 @@ twofish_enc_blk:
  
        popq    R1
        movq    $1,%rax
  
        popq    R1
        movq    $1,%rax
@@ -6529,14 +8069,14 @@ index 573aa10..b73ad89 100644
        ret
  
  twofish_dec_blk:
        ret
  
  twofish_dec_blk:
-@@ -321,4 +323,5 @@ twofish_dec_blk:
+@@ -319,4 +321,5 @@ twofish_dec_blk:
  
        popq    R1
        movq    $1,%rax
 +      pax_force_retaddr 0, 1
        ret
 diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
  
        popq    R1
        movq    $1,%rax
 +      pax_force_retaddr 0, 1
        ret
 diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
-index fd84387..0b4af7d 100644
+index fd84387..887aa7e 100644
 --- a/arch/x86/ia32/ia32_aout.c
 +++ b/arch/x86/ia32/ia32_aout.c
 @@ -162,6 +162,8 @@ static int aout_core_dump(long signr, struct pt_regs *regs, struct file *file,
 --- a/arch/x86/ia32/ia32_aout.c
 +++ b/arch/x86/ia32/ia32_aout.c
 @@ -162,6 +162,8 @@ static int aout_core_dump(long signr, struct pt_regs *regs, struct file *file,
@@ -6548,6 +8088,34 @@ index fd84387..0b4af7d 100644
        fs = get_fs();
        set_fs(KERNEL_DS);
        has_dumped = 1;
        fs = get_fs();
        set_fs(KERNEL_DS);
        has_dumped = 1;
+@@ -315,6 +317,13 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs)
+       current->mm->free_area_cache = TASK_UNMAPPED_BASE;
+       current->mm->cached_hole_size = 0;
++      retval = setup_arg_pages(bprm, IA32_STACK_TOP, EXSTACK_DEFAULT);
++      if (retval < 0) {
++              /* Someone check-me: is this error path enough? */
++              send_sig(SIGKILL, current, 0);
++              return retval;
++      }
++
+       install_exec_creds(bprm);
+       current->flags &= ~PF_FORKNOEXEC;
+@@ -410,13 +419,6 @@ beyond_if:
+       set_brk(current->mm->start_brk, current->mm->brk);
+-      retval = setup_arg_pages(bprm, IA32_STACK_TOP, EXSTACK_DEFAULT);
+-      if (retval < 0) {
+-              /* Someone check-me: is this error path enough? */
+-              send_sig(SIGKILL, current, 0);
+-              return retval;
+-      }
+-
+       current->mm->start_stack =
+               (unsigned long)create_aout_tables((char __user *)bprm->p, bprm);
+       /* start thread */
 diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
 index 6557769..ef6ae89 100644
 --- a/arch/x86/ia32/ia32_signal.c
 diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
 index 6557769..ef6ae89 100644
 --- a/arch/x86/ia32/ia32_signal.c
@@ -6629,7 +8197,7 @@ index 6557769..ef6ae89 100644
  
        if (err)
 diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
  
        if (err)
 diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
-index 54edb207..9335b5f 100644
+index a6253ec..4ad2120 100644
 --- a/arch/x86/ia32/ia32entry.S
 +++ b/arch/x86/ia32/ia32entry.S
 @@ -13,7 +13,9 @@
 --- a/arch/x86/ia32/ia32entry.S
 +++ b/arch/x86/ia32/ia32entry.S
 @@ -13,7 +13,9 @@
@@ -6642,7 +8210,7 @@ index 54edb207..9335b5f 100644
  
  /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this.  */
  #include <linux/elf-em.h>
  
  /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this.  */
  #include <linux/elf-em.h>
-@@ -95,6 +97,30 @@ ENTRY(native_irq_enable_sysexit)
+@@ -95,6 +97,32 @@ ENTRY(native_irq_enable_sysexit)
  ENDPROC(native_irq_enable_sysexit)
  #endif
  
  ENDPROC(native_irq_enable_sysexit)
  #endif
  
@@ -6659,7 +8227,9 @@ index 54edb207..9335b5f 100644
 +#endif
 +#ifdef CONFIG_PAX_RANDKSTACK
 +      pushq %rax
 +#endif
 +#ifdef CONFIG_PAX_RANDKSTACK
 +      pushq %rax
++      pushq %r11
 +      call pax_randomize_kstack
 +      call pax_randomize_kstack
++      popq %r11
 +      popq %rax
 +#endif
 +      .endm
 +      popq %rax
 +#endif
 +      .endm
@@ -6673,7 +8243,7 @@ index 54edb207..9335b5f 100644
  /*
   * 32bit SYSENTER instruction entry.
   *
  /*
   * 32bit SYSENTER instruction entry.
   *
-@@ -121,12 +147,6 @@ ENTRY(ia32_sysenter_target)
+@@ -121,12 +149,6 @@ ENTRY(ia32_sysenter_target)
        CFI_REGISTER    rsp,rbp
        SWAPGS_UNSAFE_STACK
        movq    PER_CPU_VAR(kernel_stack), %rsp
        CFI_REGISTER    rsp,rbp
        SWAPGS_UNSAFE_STACK
        movq    PER_CPU_VAR(kernel_stack), %rsp
@@ -6686,12 +8256,13 @@ index 54edb207..9335b5f 100644
        movl    %ebp,%ebp               /* zero extension */
        pushq_cfi $__USER32_DS
        /*CFI_REL_OFFSET ss,0*/
        movl    %ebp,%ebp               /* zero extension */
        pushq_cfi $__USER32_DS
        /*CFI_REL_OFFSET ss,0*/
-@@ -134,25 +154,38 @@ ENTRY(ia32_sysenter_target)
+@@ -134,25 +156,39 @@ ENTRY(ia32_sysenter_target)
        CFI_REL_OFFSET rsp,0
        pushfq_cfi
        /*CFI_REL_OFFSET rflags,0*/
 -      movl    8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d
 -      CFI_REGISTER rip,r10
        CFI_REL_OFFSET rsp,0
        pushfq_cfi
        /*CFI_REL_OFFSET rflags,0*/
 -      movl    8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d
 -      CFI_REGISTER rip,r10
++      orl     $X86_EFLAGS_IF,(%rsp)
 +      GET_THREAD_INFO(%r11)
 +      movl    TI_sysenter_return(%r11), %r11d
 +      CFI_REGISTER rip,r11
 +      GET_THREAD_INFO(%r11)
 +      movl    TI_sysenter_return(%r11), %r11d
 +      CFI_REGISTER rip,r11
@@ -6731,7 +8302,7 @@ index 54edb207..9335b5f 100644
        CFI_REMEMBER_STATE
        jnz  sysenter_tracesys
        cmpq    $(IA32_NR_syscalls-1),%rax
        CFI_REMEMBER_STATE
        jnz  sysenter_tracesys
        cmpq    $(IA32_NR_syscalls-1),%rax
-@@ -162,13 +195,15 @@ sysenter_do_call:
+@@ -162,13 +198,15 @@ sysenter_do_call:
  sysenter_dispatch:
        call    *ia32_sys_call_table(,%rax,8)
        movq    %rax,RAX-ARGOFFSET(%rsp)
  sysenter_dispatch:
        call    *ia32_sys_call_table(,%rax,8)
        movq    %rax,RAX-ARGOFFSET(%rsp)
@@ -6750,7 +8321,7 @@ index 54edb207..9335b5f 100644
        /* clear IF, that popfq doesn't enable interrupts early */
        andl  $~0x200,EFLAGS-R11(%rsp) 
        movl    RIP-R11(%rsp),%edx              /* User %eip */
        /* clear IF, that popfq doesn't enable interrupts early */
        andl  $~0x200,EFLAGS-R11(%rsp) 
        movl    RIP-R11(%rsp),%edx              /* User %eip */
-@@ -194,6 +229,9 @@ sysexit_from_sys_call:
+@@ -194,6 +232,9 @@ sysexit_from_sys_call:
        movl %eax,%esi                  /* 2nd arg: syscall number */
        movl $AUDIT_ARCH_I386,%edi      /* 1st arg: audit arch */
        call audit_syscall_entry
        movl %eax,%esi                  /* 2nd arg: syscall number */
        movl $AUDIT_ARCH_I386,%edi      /* 1st arg: audit arch */
        call audit_syscall_entry
@@ -6760,7 +8331,7 @@ index 54edb207..9335b5f 100644
        movl RAX-ARGOFFSET(%rsp),%eax   /* reload syscall number */
        cmpq $(IA32_NR_syscalls-1),%rax
        ja ia32_badsys
        movl RAX-ARGOFFSET(%rsp),%eax   /* reload syscall number */
        cmpq $(IA32_NR_syscalls-1),%rax
        ja ia32_badsys
-@@ -205,7 +243,7 @@ sysexit_from_sys_call:
+@@ -205,7 +246,7 @@ sysexit_from_sys_call:
        .endm
  
        .macro auditsys_exit exit
        .endm
  
        .macro auditsys_exit exit
@@ -6769,7 +8340,7 @@ index 54edb207..9335b5f 100644
        jnz ia32_ret_from_sys_call
        TRACE_IRQS_ON
        sti
        jnz ia32_ret_from_sys_call
        TRACE_IRQS_ON
        sti
-@@ -215,12 +253,12 @@ sysexit_from_sys_call:
+@@ -215,12 +256,12 @@ sysexit_from_sys_call:
        movzbl %al,%edi         /* zero-extend that into %edi */
        inc %edi /* first arg, 0->1(AUDITSC_SUCCESS), 1->2(AUDITSC_FAILURE) */
        call audit_syscall_exit
        movzbl %al,%edi         /* zero-extend that into %edi */
        inc %edi /* first arg, 0->1(AUDITSC_SUCCESS), 1->2(AUDITSC_FAILURE) */
        call audit_syscall_exit
@@ -6784,7 +8355,7 @@ index 54edb207..9335b5f 100644
        jz \exit
        CLEAR_RREGS -ARGOFFSET
        jmp int_with_check
        jz \exit
        CLEAR_RREGS -ARGOFFSET
        jmp int_with_check
-@@ -238,7 +276,7 @@ sysexit_audit:
+@@ -238,7 +279,7 @@ sysexit_audit:
  
  sysenter_tracesys:
  #ifdef CONFIG_AUDITSYSCALL
  
  sysenter_tracesys:
  #ifdef CONFIG_AUDITSYSCALL
@@ -6793,7 +8364,7 @@ index 54edb207..9335b5f 100644
        jz      sysenter_auditsys
  #endif
        SAVE_REST
        jz      sysenter_auditsys
  #endif
        SAVE_REST
-@@ -246,6 +284,9 @@ sysenter_tracesys:
+@@ -246,6 +287,9 @@ sysenter_tracesys:
        movq    $-ENOSYS,RAX(%rsp)/* ptrace can change this for a bad syscall */
        movq    %rsp,%rdi        /* &pt_regs -> arg1 */
        call    syscall_trace_enter
        movq    $-ENOSYS,RAX(%rsp)/* ptrace can change this for a bad syscall */
        movq    %rsp,%rdi        /* &pt_regs -> arg1 */
        call    syscall_trace_enter
@@ -6803,7 +8374,7 @@ index 54edb207..9335b5f 100644
        LOAD_ARGS32 ARGOFFSET  /* reload args from stack in case ptrace changed it */
        RESTORE_REST
        cmpq    $(IA32_NR_syscalls-1),%rax
        LOAD_ARGS32 ARGOFFSET  /* reload args from stack in case ptrace changed it */
        RESTORE_REST
        cmpq    $(IA32_NR_syscalls-1),%rax
-@@ -277,19 +318,20 @@ ENDPROC(ia32_sysenter_target)
+@@ -277,19 +321,20 @@ ENDPROC(ia32_sysenter_target)
  ENTRY(ia32_cstar_target)
        CFI_STARTPROC32 simple
        CFI_SIGNAL_FRAME
  ENTRY(ia32_cstar_target)
        CFI_STARTPROC32 simple
        CFI_SIGNAL_FRAME
@@ -6826,7 +8397,7 @@ index 54edb207..9335b5f 100644
        movl    %eax,%eax       /* zero extension */
        movq    %rax,ORIG_RAX-ARGOFFSET(%rsp)
        movq    %rcx,RIP-ARGOFFSET(%rsp)
        movl    %eax,%eax       /* zero extension */
        movq    %rax,ORIG_RAX-ARGOFFSET(%rsp)
        movq    %rcx,RIP-ARGOFFSET(%rsp)
-@@ -305,13 +347,19 @@ ENTRY(ia32_cstar_target)
+@@ -305,13 +350,19 @@ ENTRY(ia32_cstar_target)
        /* no need to do an access_ok check here because r8 has been
           32bit zero extended */ 
        /* hardware stack frame is complete now */      
        /* no need to do an access_ok check here because r8 has been
           32bit zero extended */ 
        /* hardware stack frame is complete now */      
@@ -6849,7 +8420,7 @@ index 54edb207..9335b5f 100644
        CFI_REMEMBER_STATE
        jnz   cstar_tracesys
        cmpq $IA32_NR_syscalls-1,%rax
        CFI_REMEMBER_STATE
        jnz   cstar_tracesys
        cmpq $IA32_NR_syscalls-1,%rax
-@@ -321,13 +369,15 @@ cstar_do_call:
+@@ -321,13 +372,15 @@ cstar_do_call:
  cstar_dispatch:
        call *ia32_sys_call_table(,%rax,8)
        movq %rax,RAX-ARGOFFSET(%rsp)
  cstar_dispatch:
        call *ia32_sys_call_table(,%rax,8)
        movq %rax,RAX-ARGOFFSET(%rsp)
@@ -6868,7 +8439,7 @@ index 54edb207..9335b5f 100644
        RESTORE_ARGS 0,-ARG_SKIP,0,0,0
        movl RIP-ARGOFFSET(%rsp),%ecx
        CFI_REGISTER rip,rcx
        RESTORE_ARGS 0,-ARG_SKIP,0,0,0
        movl RIP-ARGOFFSET(%rsp),%ecx
        CFI_REGISTER rip,rcx
-@@ -355,7 +405,7 @@ sysretl_audit:
+@@ -355,7 +408,7 @@ sysretl_audit:
  
  cstar_tracesys:
  #ifdef CONFIG_AUDITSYSCALL
  
  cstar_tracesys:
  #ifdef CONFIG_AUDITSYSCALL
@@ -6877,7 +8448,7 @@ index 54edb207..9335b5f 100644
        jz cstar_auditsys
  #endif
        xchgl %r9d,%ebp
        jz cstar_auditsys
  #endif
        xchgl %r9d,%ebp
-@@ -364,6 +414,9 @@ cstar_tracesys:
+@@ -364,6 +417,9 @@ cstar_tracesys:
        movq $-ENOSYS,RAX(%rsp) /* ptrace can change this for a bad syscall */
        movq %rsp,%rdi        /* &pt_regs -> arg1 */
        call syscall_trace_enter
        movq $-ENOSYS,RAX(%rsp) /* ptrace can change this for a bad syscall */
        movq %rsp,%rdi        /* &pt_regs -> arg1 */
        call syscall_trace_enter
@@ -6887,7 +8458,7 @@ index 54edb207..9335b5f 100644
        LOAD_ARGS32 ARGOFFSET, 1  /* reload args from stack in case ptrace changed it */
        RESTORE_REST
        xchgl %ebp,%r9d
        LOAD_ARGS32 ARGOFFSET, 1  /* reload args from stack in case ptrace changed it */
        RESTORE_REST
        xchgl %ebp,%r9d
-@@ -409,20 +462,21 @@ ENTRY(ia32_syscall)
+@@ -409,20 +465,21 @@ ENTRY(ia32_syscall)
        CFI_REL_OFFSET  rip,RIP-RIP
        PARAVIRT_ADJUST_EXCEPTION_FRAME
        SWAPGS
        CFI_REL_OFFSET  rip,RIP-RIP
        PARAVIRT_ADJUST_EXCEPTION_FRAME
        SWAPGS
@@ -6917,7 +8488,7 @@ index 54edb207..9335b5f 100644
        jnz ia32_tracesys
        cmpq $(IA32_NR_syscalls-1),%rax
        ja ia32_badsys
        jnz ia32_tracesys
        cmpq $(IA32_NR_syscalls-1),%rax
        ja ia32_badsys
-@@ -441,6 +495,9 @@ ia32_tracesys:
+@@ -441,6 +498,9 @@ ia32_tracesys:
        movq $-ENOSYS,RAX(%rsp) /* ptrace can change this for a bad syscall */
        movq %rsp,%rdi        /* &pt_regs -> arg1 */
        call syscall_trace_enter
        movq $-ENOSYS,RAX(%rsp) /* ptrace can change this for a bad syscall */
        movq %rsp,%rdi        /* &pt_regs -> arg1 */
        call syscall_trace_enter
@@ -6927,7 +8498,7 @@ index 54edb207..9335b5f 100644
        LOAD_ARGS32 ARGOFFSET  /* reload args from stack in case ptrace changed it */
        RESTORE_REST
        cmpq $(IA32_NR_syscalls-1),%rax
        LOAD_ARGS32 ARGOFFSET  /* reload args from stack in case ptrace changed it */
        RESTORE_REST
        cmpq $(IA32_NR_syscalls-1),%rax
-@@ -455,6 +512,7 @@ ia32_badsys:
+@@ -455,6 +515,7 @@ ia32_badsys:
  
  quiet_ni_syscall:
        movq $-ENOSYS,%rax
  
  quiet_ni_syscall:
        movq $-ENOSYS,%rax
@@ -7007,14 +8578,27 @@ index f6f5c53..b358b28 100644
        set_fs(old_fs);
  
 diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h
        set_fs(old_fs);
  
 diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h
-index 091508b..0ee32ec 100644
+index 091508b..7692c6f 100644
 --- a/arch/x86/include/asm/alternative-asm.h
 +++ b/arch/x86/include/asm/alternative-asm.h
 --- a/arch/x86/include/asm/alternative-asm.h
 +++ b/arch/x86/include/asm/alternative-asm.h
+@@ -4,10 +4,10 @@
+ #ifdef CONFIG_SMP
+       .macro LOCK_PREFIX
+-1:    lock
++672:  lock
+       .section .smp_locks,"a"
+       .balign 4
+-      .long 1b - .
++      .long 672b - .
+       .previous
+       .endm
+ #else
 @@ -15,6 +15,45 @@
        .endm
  #endif
  
 @@ -15,6 +15,45 @@
        .endm
  #endif
  
-+#ifdef CONFIG_PAX_KERNEXEC_PLUGIN
++#ifdef KERNEXEC_PLUGIN
 +      .macro pax_force_retaddr_bts rip=0
 +      btsq $63,\rip(%rsp)
 +      .endm
 +      .macro pax_force_retaddr_bts rip=0
 +      btsq $63,\rip(%rsp)
 +      .endm
@@ -7070,7 +8654,7 @@ index 37ad100..7d47faa 100644
        ".previous"
  
 diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
        ".previous"
  
 diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
-index 9b7273c..e9fcc24 100644
+index 1a6c09a..fec2432 100644
 --- a/arch/x86/include/asm/apic.h
 +++ b/arch/x86/include/asm/apic.h
 @@ -45,7 +45,7 @@ static inline void generic_apic_probe(void)
 --- a/arch/x86/include/asm/apic.h
 +++ b/arch/x86/include/asm/apic.h
 @@ -45,7 +45,7 @@ static inline void generic_apic_probe(void)
@@ -7105,7 +8689,7 @@ index 20370c6..a2eb9b0 100644
                "popl %%ebp\n\t"
                "popl %%edi\n\t"
 diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
                "popl %%ebp\n\t"
                "popl %%edi\n\t"
 diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
-index 10572e3..2618d91 100644
+index 58cb6d4..ca9010d 100644
 --- a/arch/x86/include/asm/atomic.h
 +++ b/arch/x86/include/asm/atomic.h
 @@ -22,7 +22,18 @@
 --- a/arch/x86/include/asm/atomic.h
 +++ b/arch/x86/include/asm/atomic.h
 @@ -22,7 +22,18 @@
@@ -7358,54 +8942,51 @@ index 10572e3..2618d91 100644
                     : "+m" (v->counter), "=qm" (c)
                     : "ir" (i) : "memory");
        return c;
                     : "+m" (v->counter), "=qm" (c)
                     : "ir" (i) : "memory");
        return c;
-@@ -180,6 +342,46 @@ static inline int atomic_add_return(int i, atomic_t *v)
+@@ -179,7 +341,7 @@ static inline int atomic_add_return(int i, atomic_t *v)
+               goto no_xadd;
  #endif
        /* Modern 486+ processor */
  #endif
        /* Modern 486+ processor */
-       __i = i;
-+      asm volatile(LOCK_PREFIX "xaddl %0, %1\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+                   "jno 0f\n"
-+                   "movl %0, %1\n"
-+                   "int $4\n0:\n"
-+                   _ASM_EXTABLE(0b, 0b)
-+#endif
-+
-+                   : "+r" (i), "+m" (v->counter)
-+                   : : "memory");
-+      return i + __i;
-+
-+#ifdef CONFIG_M386
-+no_xadd: /* Legacy 386 processor */
-+      local_irq_save(flags);
-+      __i = atomic_read(v);
-+      atomic_set(v, i + __i);
-+      local_irq_restore(flags);
-+      return i + __i;
-+#endif
-+}
-+
-+/**
+-      return i + xadd(&v->counter, i);
++      return i + xadd_check_overflow(&v->counter, i);
+ #ifdef CONFIG_M386
+ no_xadd: /* Legacy 386 processor */
+@@ -192,6 +354,34 @@ no_xadd: /* Legacy 386 processor */
+ }
+ /**
 + * atomic_add_return_unchecked - add integer and return
 + * atomic_add_return_unchecked - add integer and return
-+ * @v: pointer of type atomic_unchecked_t
 + * @i: integer value to add
 + * @i: integer value to add
++ * @v: pointer of type atomic_unchecked_t
 + *
 + * Atomically adds @i to @v and returns @i + @v
 + */
 +static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
 +{
 + *
 + * Atomically adds @i to @v and returns @i + @v
 + */
 +static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
 +{
-+      int __i;
 +#ifdef CONFIG_M386
 +#ifdef CONFIG_M386
++      int __i;
 +      unsigned long flags;
 +      if (unlikely(boot_cpu_data.x86 <= 3))
 +              goto no_xadd;
 +#endif
 +      /* Modern 486+ processor */
 +      unsigned long flags;
 +      if (unlikely(boot_cpu_data.x86 <= 3))
 +              goto no_xadd;
 +#endif
 +      /* Modern 486+ processor */
-+      __i = i;
-       asm volatile(LOCK_PREFIX "xaddl %0, %1"
-                    : "+r" (i), "+m" (v->counter)
-                    : : "memory");
-@@ -208,6 +410,10 @@ static inline int atomic_sub_return(int i, atomic_t *v)
++      return i + xadd(&v->counter, i);
++
++#ifdef CONFIG_M386
++no_xadd: /* Legacy 386 processor */
++      raw_local_irq_save(flags);
++      __i = atomic_read_unchecked(v);
++      atomic_set_unchecked(v, i + __i);
++      raw_local_irq_restore(flags);
++      return i + __i;
++#endif
++}
++
++/**
+  * atomic_sub_return - subtract integer and return
+  * @v: pointer of type atomic_t
+  * @i: integer value to subtract
+@@ -204,6 +394,10 @@ static inline int atomic_sub_return(int i, atomic_t *v)
  }
  
  #define atomic_inc_return(v)  (atomic_add_return(1, v))
  }
  
  #define atomic_inc_return(v)  (atomic_add_return(1, v))
@@ -7416,7 +8997,7 @@ index 10572e3..2618d91 100644
  #define atomic_dec_return(v)  (atomic_sub_return(1, v))
  
  static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
  #define atomic_dec_return(v)  (atomic_sub_return(1, v))
  
  static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
-@@ -215,11 +421,21 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
+@@ -211,11 +405,21 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
        return cmpxchg(&v->counter, old, new);
  }
  
        return cmpxchg(&v->counter, old, new);
  }
  
@@ -7438,7 +9019,7 @@ index 10572e3..2618d91 100644
  /**
   * __atomic_add_unless - add unless the number is already a given value
   * @v: pointer of type atomic_t
  /**
   * __atomic_add_unless - add unless the number is already a given value
   * @v: pointer of type atomic_t
-@@ -231,12 +447,25 @@ static inline int atomic_xchg(atomic_t *v, int new)
+@@ -227,12 +431,25 @@ static inline int atomic_xchg(atomic_t *v, int new)
   */
  static inline int __atomic_add_unless(atomic_t *v, int a, int u)
  {
   */
  static inline int __atomic_add_unless(atomic_t *v, int a, int u)
  {
@@ -7467,7 +9048,7 @@ index 10572e3..2618d91 100644
                if (likely(old == c))
                        break;
                c = old;
                if (likely(old == c))
                        break;
                c = old;
-@@ -244,6 +473,48 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -240,6 +457,48 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
        return c;
  }
  
        return c;
  }
  
@@ -7670,7 +9251,7 @@ index 24098aa..1e37723 100644
   * @i: integer value to subtract
   * @v: pointer to type atomic64_t
 diff --git a/arch/x86/include/asm/atomic64_64.h b/arch/x86/include/asm/atomic64_64.h
   * @i: integer value to subtract
   * @v: pointer to type atomic64_t
 diff --git a/arch/x86/include/asm/atomic64_64.h b/arch/x86/include/asm/atomic64_64.h
-index 017594d..d3fcf72 100644
+index 0e1cbfc..5623683 100644
 --- a/arch/x86/include/asm/atomic64_64.h
 +++ b/arch/x86/include/asm/atomic64_64.h
 @@ -18,7 +18,19 @@
 --- a/arch/x86/include/asm/atomic64_64.h
 +++ b/arch/x86/include/asm/atomic64_64.h
 @@ -18,7 +18,19 @@
@@ -7903,23 +9484,11 @@ index 017594d..d3fcf72 100644
                     : "=m" (v->counter), "=qm" (c)
                     : "er" (i), "m" (v->counter) : "memory");
        return c;
                     : "=m" (v->counter), "=qm" (c)
                     : "er" (i), "m" (v->counter) : "memory");
        return c;
-@@ -171,7 +317,31 @@ static inline int atomic64_add_negative(long i, atomic64_t *v)
+@@ -170,6 +316,18 @@ static inline int atomic64_add_negative(long i, atomic64_t *v)
+  */
  static inline long atomic64_add_return(long i, atomic64_t *v)
  {
  static inline long atomic64_add_return(long i, atomic64_t *v)
  {
-       long __i = i;
--      asm volatile(LOCK_PREFIX "xaddq %0, %1;"
-+      asm volatile(LOCK_PREFIX "xaddq %0, %1\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+                   "jno 0f\n"
-+                   "movq %0, %1\n"
-+                   "int $4\n0:\n"
-+                   _ASM_EXTABLE(0b, 0b)
-+#endif
-+
-+                   : "+r" (i), "+m" (v->counter)
-+                   : : "memory");
-+      return i + __i;
++      return i + xadd_check_overflow(&v->counter, i);
 +}
 +
 +/**
 +}
 +
 +/**
@@ -7931,12 +9500,10 @@ index 017594d..d3fcf72 100644
 + */
 +static inline long atomic64_add_return_unchecked(long i, atomic64_unchecked_t *v)
 +{
 + */
 +static inline long atomic64_add_return_unchecked(long i, atomic64_unchecked_t *v)
 +{
-+      long __i = i;
-+      asm volatile(LOCK_PREFIX "xaddq %0, %1"
-                    : "+r" (i), "+m" (v->counter)
-                    : : "memory");
-       return i + __i;
-@@ -183,6 +353,10 @@ static inline long atomic64_sub_return(long i, atomic64_t *v)
+       return i + xadd(&v->counter, i);
+ }
+@@ -179,6 +337,10 @@ static inline long atomic64_sub_return(long i, atomic64_t *v)
  }
  
  #define atomic64_inc_return(v)  (atomic64_add_return(1, (v)))
  }
  
  #define atomic64_inc_return(v)  (atomic64_add_return(1, (v)))
@@ -7947,7 +9514,7 @@ index 017594d..d3fcf72 100644
  #define atomic64_dec_return(v)  (atomic64_sub_return(1, (v)))
  
  static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
  #define atomic64_dec_return(v)  (atomic64_sub_return(1, (v)))
  
  static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
-@@ -190,6 +364,11 @@ static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
+@@ -186,6 +348,11 @@ static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
        return cmpxchg(&v->counter, old, new);
  }
  
        return cmpxchg(&v->counter, old, new);
  }
  
@@ -7959,7 +9526,7 @@ index 017594d..d3fcf72 100644
  static inline long atomic64_xchg(atomic64_t *v, long new)
  {
        return xchg(&v->counter, new);
  static inline long atomic64_xchg(atomic64_t *v, long new)
  {
        return xchg(&v->counter, new);
-@@ -206,17 +385,30 @@ static inline long atomic64_xchg(atomic64_t *v, long new)
+@@ -202,17 +369,30 @@ static inline long atomic64_xchg(atomic64_t *v, long new)
   */
  static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
  {
   */
  static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
  {
@@ -8098,11 +9665,66 @@ index 46fc474..b02b0f9 100644
                                                 len, sum, NULL, err_ptr);
  
        if (len)
                                                 len, sum, NULL, err_ptr);
  
        if (len)
+diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h
+index 5d3acdf..6447a02 100644
+--- a/arch/x86/include/asm/cmpxchg.h
++++ b/arch/x86/include/asm/cmpxchg.h
+@@ -14,6 +14,8 @@ extern void __cmpxchg_wrong_size(void)
+       __compiletime_error("Bad argument size for cmpxchg");
+ extern void __xadd_wrong_size(void)
+       __compiletime_error("Bad argument size for xadd");
++extern void __xadd_check_overflow_wrong_size(void)
++      __compiletime_error("Bad argument size for xadd_check_overflow");
+ /*
+  * Constants for operation sizes. On 32-bit, the 64-bit size it set to
+@@ -195,6 +197,34 @@ extern void __xadd_wrong_size(void)
+               __ret;                                                  \
+       })
++#define __xadd_check_overflow(ptr, inc, lock)                         \
++      ({                                                              \
++              __typeof__ (*(ptr)) __ret = (inc);                      \
++              switch (sizeof(*(ptr))) {                               \
++              case __X86_CASE_L:                                      \
++                      asm volatile (lock "xaddl %0, %1\n"             \
++                                    "jno 0f\n"                        \
++                                    "mov %0,%1\n"                     \
++                                    "int $4\n0:\n"                    \
++                                    _ASM_EXTABLE(0b, 0b)              \
++                                    : "+r" (__ret), "+m" (*(ptr))     \
++                                    : : "memory", "cc");              \
++                      break;                                          \
++              case __X86_CASE_Q:                                      \
++                      asm volatile (lock "xaddq %q0, %1\n"            \
++                                    "jno 0f\n"                        \
++                                    "mov %0,%1\n"                     \
++                                    "int $4\n0:\n"                    \
++                                    _ASM_EXTABLE(0b, 0b)              \
++                                    : "+r" (__ret), "+m" (*(ptr))     \
++                                    : : "memory", "cc");              \
++                      break;                                          \
++              default:                                                \
++                      __xadd_check_overflow_wrong_size();             \
++              }                                                       \
++              __ret;                                                  \
++      })
++
+ /*
+  * xadd() adds "inc" to "*ptr" and atomically returns the previous
+  * value of "*ptr".
+@@ -207,4 +237,6 @@ extern void __xadd_wrong_size(void)
+ #define xadd_sync(ptr, inc)   __xadd((ptr), (inc), "lock; ")
+ #define xadd_local(ptr, inc)  __xadd((ptr), (inc), "")
++#define xadd_check_overflow(ptr, inc) __xadd_check_overflow((ptr), (inc), LOCK_PREFIX)
++
+ #endif        /* ASM_X86_CMPXCHG_H */
 diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
 diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
-index 88b23a4..d2e5f9f 100644
+index f3444f7..051a196 100644
 --- a/arch/x86/include/asm/cpufeature.h
 +++ b/arch/x86/include/asm/cpufeature.h
 --- a/arch/x86/include/asm/cpufeature.h
 +++ b/arch/x86/include/asm/cpufeature.h
-@@ -358,7 +358,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
+@@ -363,7 +363,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
                             ".section .discard,\"aw\",@progbits\n"
                             " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
                             ".previous\n"
                             ".section .discard,\"aw\",@progbits\n"
                             " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
                             ".previous\n"
@@ -8324,10 +9946,10 @@ index 908b969..a1f4eb4 100644
  
  #define BIOS_ROM_BASE         0xffe00000
 diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
  
  #define BIOS_ROM_BASE         0xffe00000
 diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
-index f2ad216..eb24c96 100644
+index 5f962df..7289f09 100644
 --- a/arch/x86/include/asm/elf.h
 +++ b/arch/x86/include/asm/elf.h
 --- a/arch/x86/include/asm/elf.h
 +++ b/arch/x86/include/asm/elf.h
-@@ -237,7 +237,25 @@ extern int force_personality32;
+@@ -238,7 +238,25 @@ extern int force_personality32;
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
  
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
  
@@ -8353,7 +9975,7 @@ index f2ad216..eb24c96 100644
  
  /* This yields a mask that user programs can use to figure out what
     instruction set this CPU supports.  This could be done in user space,
  
  /* This yields a mask that user programs can use to figure out what
     instruction set this CPU supports.  This could be done in user space,
-@@ -290,9 +308,7 @@ do {                                                                       \
+@@ -291,9 +309,7 @@ do {                                                                       \
  
  #define ARCH_DLINFO                                                   \
  do {                                                                  \
  
  #define ARCH_DLINFO                                                   \
  do {                                                                  \
@@ -8364,7 +9986,7 @@ index f2ad216..eb24c96 100644
  } while (0)
  
  #define AT_SYSINFO            32
  } while (0)
  
  #define AT_SYSINFO            32
-@@ -303,7 +319,7 @@ do {                                                                       \
+@@ -304,7 +320,7 @@ do {                                                                       \
  
  #endif /* !CONFIG_X86_32 */
  
  
  #endif /* !CONFIG_X86_32 */
  
@@ -8373,14 +9995,16 @@ index f2ad216..eb24c96 100644
  
  #define VDSO_ENTRY                                                    \
        ((unsigned long)VDSO32_SYMBOL(VDSO_CURRENT_BASE, vsyscall))
  
  #define VDSO_ENTRY                                                    \
        ((unsigned long)VDSO32_SYMBOL(VDSO_CURRENT_BASE, vsyscall))
-@@ -317,7 +333,4 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
+@@ -318,9 +334,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
  extern int syscall32_setup_pages(struct linux_binprm *, int exstack);
  #define compat_arch_setup_additional_pages    syscall32_setup_pages
  
 -extern unsigned long arch_randomize_brk(struct mm_struct *mm);
 -#define arch_randomize_brk arch_randomize_brk
 -
  extern int syscall32_setup_pages(struct linux_binprm *, int exstack);
  #define compat_arch_setup_additional_pages    syscall32_setup_pages
  
 -extern unsigned long arch_randomize_brk(struct mm_struct *mm);
 -#define arch_randomize_brk arch_randomize_brk
 -
- #endif /* _ASM_X86_ELF_H */
+ /*
+  * True on X86_32 or when emulating IA32 on X86_64
+  */
 diff --git a/arch/x86/include/asm/emergency-restart.h b/arch/x86/include/asm/emergency-restart.h
 index cc70c1c..d96d011 100644
 --- a/arch/x86/include/asm/emergency-restart.h
 diff --git a/arch/x86/include/asm/emergency-restart.h b/arch/x86/include/asm/emergency-restart.h
 index cc70c1c..d96d011 100644
 --- a/arch/x86/include/asm/emergency-restart.h
@@ -8393,6 +10017,18 @@ index cc70c1c..d96d011 100644
 +extern void machine_emergency_restart(void) __noreturn;
  
  #endif /* _ASM_X86_EMERGENCY_RESTART_H */
 +extern void machine_emergency_restart(void) __noreturn;
  
  #endif /* _ASM_X86_EMERGENCY_RESTART_H */
+diff --git a/arch/x86/include/asm/floppy.h b/arch/x86/include/asm/floppy.h
+index dbe82a5..c6d8a00 100644
+--- a/arch/x86/include/asm/floppy.h
++++ b/arch/x86/include/asm/floppy.h
+@@ -157,6 +157,7 @@ static unsigned long dma_mem_alloc(unsigned long size)
+ }
++static unsigned long vdma_mem_alloc(unsigned long size) __size_overflow(1);
+ static unsigned long vdma_mem_alloc(unsigned long size)
+ {
+       return (unsigned long)vmalloc(size);
 diff --git a/arch/x86/include/asm/futex.h b/arch/x86/include/asm/futex.h
 index d09bb03..4ea4194 100644
 --- a/arch/x86/include/asm/futex.h
 diff --git a/arch/x86/include/asm/futex.h b/arch/x86/include/asm/futex.h
 index d09bb03..4ea4194 100644
 --- a/arch/x86/include/asm/futex.h
@@ -8456,7 +10092,7 @@ index d09bb03..4ea4194 100644
                     : "memory"
        );
 diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
                     : "memory"
        );
 diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
-index 0919905..2cf38d6 100644
+index eb92a6e..b98b2f4 100644
 --- a/arch/x86/include/asm/hw_irq.h
 +++ b/arch/x86/include/asm/hw_irq.h
 @@ -136,8 +136,8 @@ extern void setup_ioapic_dest(void);
 --- a/arch/x86/include/asm/hw_irq.h
 +++ b/arch/x86/include/asm/hw_irq.h
 @@ -136,8 +136,8 @@ extern void setup_ioapic_dest(void);
@@ -8471,7 +10107,7 @@ index 0919905..2cf38d6 100644
  /* EISA */
  extern void eisa_set_level_irq(unsigned int irq);
 diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
  /* EISA */
  extern void eisa_set_level_irq(unsigned int irq);
 diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index c9e09ea..73888df 100644
+index a850b4d..bae26dc 100644
 --- a/arch/x86/include/asm/i387.h
 +++ b/arch/x86/include/asm/i387.h
 @@ -92,6 +92,11 @@ static inline int fxrstor_checking(struct i387_fxsave_struct *fx)
 --- a/arch/x86/include/asm/i387.h
 +++ b/arch/x86/include/asm/i387.h
 @@ -92,6 +92,11 @@ static inline int fxrstor_checking(struct i387_fxsave_struct *fx)
@@ -8498,31 +10134,15 @@ index c9e09ea..73888df 100644
        /*
         * Clear the bytes not touched by the fxsave and reserved
         * for the SW usage.
        /*
         * Clear the bytes not touched by the fxsave and reserved
         * for the SW usage.
-@@ -213,13 +223,8 @@ static inline void fpu_fxsave(struct fpu *fpu)
- #endif        /* CONFIG_X86_64 */
- /* We need a safe address that is cheap to find and that is already
--   in L1 during context switch. The best choices are unfortunately
--   different for UP and SMP */
--#ifdef CONFIG_SMP
--#define safe_address (__per_cpu_offset[0])
--#else
--#define safe_address (kstat_cpu(0).cpustat.user)
--#endif
-+   in L1 during context switch. */
-+#define safe_address (init_tss[smp_processor_id()].x86_tss.sp0)
+@@ -424,7 +434,7 @@ static inline bool interrupted_kernel_fpu_idle(void)
+ static inline bool interrupted_user_mode(void)
+ {
+       struct pt_regs *regs = get_irq_regs();
+-      return regs && user_mode_vm(regs);
++      return regs && user_mode(regs);
+ }
  
  /*
  
  /*
-  * These must be called with preempt disabled
-@@ -312,7 +317,7 @@ static inline void kernel_fpu_begin(void)
-       struct thread_info *me = current_thread_info();
-       preempt_disable();
-       if (me->status & TS_USEDFPU)
--              __save_init_fpu(me->task);
-+              __save_init_fpu(current);
-       else
-               clts();
- }
 diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
 index d8e8eef..99f81ae 100644
 --- a/arch/x86/include/asm/io.h
 diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
 index d8e8eef..99f81ae 100644
 --- a/arch/x86/include/asm/io.h
@@ -8582,10 +10202,10 @@ index 5478825..839e88c 100644
  #define flush_insn_slot(p)    do { } while (0)
  
 diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
  #define flush_insn_slot(p)    do { } while (0)
  
 diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
-index dd51c83..66cbfac 100644
+index b4973f4..a42170a 100644
 --- a/arch/x86/include/asm/kvm_host.h
 +++ b/arch/x86/include/asm/kvm_host.h
 --- a/arch/x86/include/asm/kvm_host.h
 +++ b/arch/x86/include/asm/kvm_host.h
-@@ -456,7 +456,7 @@ struct kvm_arch {
+@@ -459,7 +459,7 @@ struct kvm_arch {
        unsigned int n_requested_mmu_pages;
        unsigned int n_max_mmu_pages;
        unsigned int indirect_shadow_pages;
        unsigned int n_requested_mmu_pages;
        unsigned int n_max_mmu_pages;
        unsigned int indirect_shadow_pages;
@@ -8594,15 +10214,45 @@ index dd51c83..66cbfac 100644
        struct hlist_head mmu_page_hash[KVM_NUM_MMU_PAGES];
        /*
         * Hash table of struct kvm_mmu_page.
        struct hlist_head mmu_page_hash[KVM_NUM_MMU_PAGES];
        /*
         * Hash table of struct kvm_mmu_page.
-@@ -636,7 +636,7 @@ struct kvm_x86_ops {
+@@ -638,7 +638,7 @@ struct kvm_x86_ops {
+       int (*check_intercept)(struct kvm_vcpu *vcpu,
+                              struct x86_instruction_info *info,
                               enum x86_intercept_stage stage);
                               enum x86_intercept_stage stage);
-       const struct trace_print_flags *exit_reasons_str;
 -};
 +} __do_const;
  
  struct kvm_arch_async_pf {
        u32 token;
 -};
 +} __do_const;
  
  struct kvm_arch_async_pf {
        u32 token;
+@@ -667,9 +667,9 @@ void kvm_mmu_change_mmu_pages(struct kvm *kvm, unsigned int kvm_nr_mmu_pages);
+ int load_pdptrs(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu, unsigned long cr3);
+ int emulator_write_phys(struct kvm_vcpu *vcpu, gpa_t gpa,
+-                        const void *val, int bytes);
++                        const void *val, int bytes) __size_overflow(2);
+ int kvm_pv_mmu_op(struct kvm_vcpu *vcpu, unsigned long bytes,
+-                gpa_t addr, unsigned long *ret);
++                gpa_t addr, unsigned long *ret) __size_overflow(2,3);
+ u8 kvm_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn);
+ extern bool tdp_enabled;
+@@ -730,7 +730,7 @@ void kvm_get_cs_db_l_bits(struct kvm_vcpu *vcpu, int *db, int *l);
+ int kvm_set_xcr(struct kvm_vcpu *vcpu, u32 index, u64 xcr);
+ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata);
+-int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data);
++int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data) __size_overflow(3);
+ unsigned long kvm_get_rflags(struct kvm_vcpu *vcpu);
+ void kvm_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags);
+@@ -755,7 +755,7 @@ int fx_init(struct kvm_vcpu *vcpu);
+ void kvm_mmu_flush_tlb(struct kvm_vcpu *vcpu);
+ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
+                      const u8 *new, int bytes,
+-                     bool guest_initiated);
++                     bool guest_initiated) __size_overflow(2);
+ int kvm_mmu_unprotect_page_virt(struct kvm_vcpu *vcpu, gva_t gva);
+ void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu);
+ int kvm_mmu_load(struct kvm_vcpu *vcpu);
 diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h
 index 9cdae5d..300d20f 100644
 --- a/arch/x86/include/asm/local.h
 diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h
 index 9cdae5d..300d20f 100644
 --- a/arch/x86/include/asm/local.h
@@ -9626,10 +11276,10 @@ index 013286a..8b42f4f 100644
  #define pgprot_writecombine   pgprot_writecombine
  extern pgprot_t pgprot_writecombine(pgprot_t prot);
 diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
  #define pgprot_writecombine   pgprot_writecombine
  extern pgprot_t pgprot_writecombine(pgprot_t prot);
 diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
-index 0d1171c..36571a9 100644
+index bb3ee36..781a6b8 100644
 --- a/arch/x86/include/asm/processor.h
 +++ b/arch/x86/include/asm/processor.h
 --- a/arch/x86/include/asm/processor.h
 +++ b/arch/x86/include/asm/processor.h
-@@ -266,7 +266,7 @@ struct tss_struct {
+@@ -268,7 +268,7 @@ struct tss_struct {
  
  } ____cacheline_aligned;
  
  
  } ____cacheline_aligned;
  
@@ -9638,7 +11288,7 @@ index 0d1171c..36571a9 100644
  
  /*
   * Save the original ist values for checking stack pointers during debugging
  
  /*
   * Save the original ist values for checking stack pointers during debugging
-@@ -858,11 +858,18 @@ static inline void spin_lock_prefetch(const void *x)
+@@ -861,11 +861,18 @@ static inline void spin_lock_prefetch(const void *x)
   */
  #define TASK_SIZE             PAGE_OFFSET
  #define TASK_SIZE_MAX         TASK_SIZE
   */
  #define TASK_SIZE             PAGE_OFFSET
  #define TASK_SIZE_MAX         TASK_SIZE
@@ -9659,7 +11309,7 @@ index 0d1171c..36571a9 100644
        .vm86_info              = NULL,                                   \
        .sysenter_cs            = __KERNEL_CS,                            \
        .io_bitmap_ptr          = NULL,                                   \
        .vm86_info              = NULL,                                   \
        .sysenter_cs            = __KERNEL_CS,                            \
        .io_bitmap_ptr          = NULL,                                   \
-@@ -876,7 +883,7 @@ static inline void spin_lock_prefetch(const void *x)
+@@ -879,7 +886,7 @@ static inline void spin_lock_prefetch(const void *x)
   */
  #define INIT_TSS  {                                                     \
        .x86_tss = {                                                      \
   */
  #define INIT_TSS  {                                                     \
        .x86_tss = {                                                      \
@@ -9668,7 +11318,7 @@ index 0d1171c..36571a9 100644
                .ss0            = __KERNEL_DS,                            \
                .ss1            = __KERNEL_CS,                            \
                .io_bitmap_base = INVALID_IO_BITMAP_OFFSET,               \
                .ss0            = __KERNEL_DS,                            \
                .ss1            = __KERNEL_CS,                            \
                .io_bitmap_base = INVALID_IO_BITMAP_OFFSET,               \
-@@ -887,11 +894,7 @@ static inline void spin_lock_prefetch(const void *x)
+@@ -890,11 +897,7 @@ static inline void spin_lock_prefetch(const void *x)
  extern unsigned long thread_saved_pc(struct task_struct *tsk);
  
  #define THREAD_SIZE_LONGS      (THREAD_SIZE/sizeof(unsigned long))
  extern unsigned long thread_saved_pc(struct task_struct *tsk);
  
  #define THREAD_SIZE_LONGS      (THREAD_SIZE/sizeof(unsigned long))
@@ -9681,7 +11331,7 @@ index 0d1171c..36571a9 100644
  
  /*
   * The below -8 is to reserve 8 bytes on top of the ring0 stack.
  
  /*
   * The below -8 is to reserve 8 bytes on top of the ring0 stack.
-@@ -906,7 +909,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
+@@ -909,7 +912,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
  #define task_pt_regs(task)                                             \
  ({                                                                     \
         struct pt_regs *__regs__;                                       \
  #define task_pt_regs(task)                                             \
  ({                                                                     \
         struct pt_regs *__regs__;                                       \
@@ -9690,7 +11340,7 @@ index 0d1171c..36571a9 100644
         __regs__ - 1;                                                   \
  })
  
         __regs__ - 1;                                                   \
  })
  
-@@ -916,13 +919,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
+@@ -919,13 +922,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
  /*
   * User space process size. 47bits minus one guard page.
   */
  /*
   * User space process size. 47bits minus one guard page.
   */
@@ -9706,7 +11356,7 @@ index 0d1171c..36571a9 100644
  
  #define TASK_SIZE             (test_thread_flag(TIF_IA32) ? \
                                        IA32_PAGE_OFFSET : TASK_SIZE_MAX)
  
  #define TASK_SIZE             (test_thread_flag(TIF_IA32) ? \
                                        IA32_PAGE_OFFSET : TASK_SIZE_MAX)
-@@ -933,11 +936,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
+@@ -936,11 +939,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
  #define STACK_TOP_MAX         TASK_SIZE_MAX
  
  #define INIT_THREAD  { \
  #define STACK_TOP_MAX         TASK_SIZE_MAX
  
  #define INIT_THREAD  { \
@@ -9720,7 +11370,7 @@ index 0d1171c..36571a9 100644
  }
  
  /*
  }
  
  /*
-@@ -959,6 +962,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
+@@ -962,6 +965,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
   */
  #define TASK_UNMAPPED_BASE    (PAGE_ALIGN(TASK_SIZE / 3))
  
   */
  #define TASK_UNMAPPED_BASE    (PAGE_ALIGN(TASK_SIZE / 3))
  
@@ -9791,7 +11441,7 @@ index 3566454..4bdfb8c 100644
  }
  #endif
 diff --git a/arch/x86/include/asm/reboot.h b/arch/x86/include/asm/reboot.h
  }
  #endif
 diff --git a/arch/x86/include/asm/reboot.h b/arch/x86/include/asm/reboot.h
-index 3250e3d..20db631 100644
+index 92f29706..a79cbbb 100644
 --- a/arch/x86/include/asm/reboot.h
 +++ b/arch/x86/include/asm/reboot.h
 @@ -6,19 +6,19 @@
 --- a/arch/x86/include/asm/reboot.h
 +++ b/arch/x86/include/asm/reboot.h
 @@ -6,19 +6,19 @@
@@ -9821,7 +11471,7 @@ index 3250e3d..20db631 100644
  #define MRR_BIOS      0
  #define MRR_APM               1
 diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h
  #define MRR_BIOS      0
  #define MRR_APM               1
 diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h
-index df4cd32..27ae072 100644
+index 2dbe4a7..ce1db00 100644
 --- a/arch/x86/include/asm/rwsem.h
 +++ b/arch/x86/include/asm/rwsem.h
 @@ -64,6 +64,14 @@ static inline void __down_read(struct rw_semaphore *sem)
 --- a/arch/x86/include/asm/rwsem.h
 +++ b/arch/x86/include/asm/rwsem.h
 @@ -64,6 +64,14 @@ static inline void __down_read(struct rw_semaphore *sem)
@@ -9931,23 +11581,15 @@ index df4cd32..27ae072 100644
                     : "+m" (sem->count)
                     : "er" (delta));
  }
                     : "+m" (sem->count)
                     : "er" (delta));
  }
-@@ -206,7 +262,15 @@ static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
+@@ -204,7 +260,7 @@ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
+  */
+ static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
  {
  {
-       long tmp = delta;
--      asm volatile(LOCK_PREFIX "xadd %0,%1"
-+      asm volatile(LOCK_PREFIX "xadd %0,%1\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+                   "jno 0f\n"
-+                   "mov %0,%1\n"
-+                   "int $4\n0:\n"
-+                   _ASM_EXTABLE(0b, 0b)
-+#endif
-+
-                    : "+r" (tmp), "+m" (sem->count)
-                    : : "memory");
+-      return delta + xadd(&sem->count, delta);
++      return delta + xadd_check_overflow(&sem->count, delta);
+ }
  
  
+ #endif /* __KERNEL__ */
 diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h
 index 5e64171..f58957e 100644
 --- a/arch/x86/include/asm/segment.h
 diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h
 index 5e64171..f58957e 100644
 --- a/arch/x86/include/asm/segment.h
@@ -10058,10 +11700,10 @@ index 73b11bc..d4a3b63 100644
  
  #endif
 diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h
  
  #endif
 diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h
-index ee67edf..49c796b 100644
+index 972c260..43ab1fd 100644
 --- a/arch/x86/include/asm/spinlock.h
 +++ b/arch/x86/include/asm/spinlock.h
 --- a/arch/x86/include/asm/spinlock.h
 +++ b/arch/x86/include/asm/spinlock.h
-@@ -248,6 +248,14 @@ static inline int arch_write_can_lock(arch_rwlock_t *lock)
+@@ -188,6 +188,14 @@ static inline int arch_write_can_lock(arch_rwlock_t *lock)
  static inline void arch_read_lock(arch_rwlock_t *rw)
  {
        asm volatile(LOCK_PREFIX READ_LOCK_SIZE(dec) " (%0)\n\t"
  static inline void arch_read_lock(arch_rwlock_t *rw)
  {
        asm volatile(LOCK_PREFIX READ_LOCK_SIZE(dec) " (%0)\n\t"
@@ -10076,7 +11718,7 @@ index ee67edf..49c796b 100644
                     "jns 1f\n"
                     "call __read_lock_failed\n\t"
                     "1:\n"
                     "jns 1f\n"
                     "call __read_lock_failed\n\t"
                     "1:\n"
-@@ -257,6 +265,14 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
+@@ -197,6 +205,14 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
  static inline void arch_write_lock(arch_rwlock_t *rw)
  {
        asm volatile(LOCK_PREFIX WRITE_LOCK_SUB(%1) "(%0)\n\t"
  static inline void arch_write_lock(arch_rwlock_t *rw)
  {
        asm volatile(LOCK_PREFIX WRITE_LOCK_SUB(%1) "(%0)\n\t"
@@ -10091,7 +11733,7 @@ index ee67edf..49c796b 100644
                     "jz 1f\n"
                     "call __write_lock_failed\n\t"
                     "1:\n"
                     "jz 1f\n"
                     "call __write_lock_failed\n\t"
                     "1:\n"
-@@ -286,13 +302,29 @@ static inline int arch_write_trylock(arch_rwlock_t *lock)
+@@ -226,13 +242,29 @@ static inline int arch_write_trylock(arch_rwlock_t *lock)
  
  static inline void arch_read_unlock(arch_rwlock_t *rw)
  {
  
  static inline void arch_read_unlock(arch_rwlock_t *rw)
  {
@@ -10211,8 +11853,21 @@ index cb23852..2dde194 100644
  asmlinkage long sys32_sysfs(int, u32, u32);
  
  asmlinkage long sys32_sched_rr_get_interval(compat_pid_t,
  asmlinkage long sys32_sysfs(int, u32, u32);
  
  asmlinkage long sys32_sched_rr_get_interval(compat_pid_t,
+diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h
+index f1d8b44..a4de8b7 100644
+--- a/arch/x86/include/asm/syscalls.h
++++ b/arch/x86/include/asm/syscalls.h
+@@ -30,7 +30,7 @@ long sys_clone(unsigned long, unsigned long, void __user *,
+              void __user *, struct pt_regs *);
+ /* kernel/ldt.c */
+-asmlinkage int sys_modify_ldt(int, void __user *, unsigned long);
++asmlinkage int sys_modify_ldt(int, void __user *, unsigned long) __size_overflow(3);
+ /* kernel/signal.c */
+ long sys_rt_sigreturn(struct pt_regs *);
 diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h
 diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h
-index c2ff2a1..4349184 100644
+index 2d2f01c..f985723 100644
 --- a/arch/x86/include/asm/system.h
 +++ b/arch/x86/include/asm/system.h
 @@ -129,7 +129,7 @@ do {                                                                       \
 --- a/arch/x86/include/asm/system.h
 +++ b/arch/x86/include/asm/system.h
 @@ -129,7 +129,7 @@ do {                                                                       \
@@ -10242,7 +11897,7 @@ index c2ff2a1..4349184 100644
  }
  
  static inline void native_clts(void)
  }
  
  static inline void native_clts(void)
-@@ -397,12 +397,12 @@ void enable_hlt(void);
+@@ -397,13 +397,13 @@ void enable_hlt(void);
  
  void cpu_idle_wait(void);
  
  
  void cpu_idle_wait(void);
  
@@ -10251,6 +11906,7 @@ index c2ff2a1..4349184 100644
  extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
  
  void default_idle(void);
  extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
  
  void default_idle(void);
+ bool set_pm_idle_to_default(void);
  
 -void stop_this_cpu(void *dummy);
 +void stop_this_cpu(void *dummy) __noreturn;
  
 -void stop_this_cpu(void *dummy);
 +void stop_this_cpu(void *dummy) __noreturn;
@@ -10258,7 +11914,7 @@ index c2ff2a1..4349184 100644
  /*
   * Force strict CPU ordering.
 diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
  /*
   * Force strict CPU ordering.
 diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
-index a1fe5c1..ee326d8 100644
+index d7ef849..6af292e 100644
 --- a/arch/x86/include/asm/thread_info.h
 +++ b/arch/x86/include/asm/thread_info.h
 @@ -10,6 +10,7 @@
 --- a/arch/x86/include/asm/thread_info.h
 +++ b/arch/x86/include/asm/thread_info.h
 @@ -10,6 +10,7 @@
@@ -10402,7 +12058,7 @@ index a1fe5c1..ee326d8 100644
  #endif
  
  #endif /* !X86_32 */
  #endif
  
  #endif /* !X86_32 */
-@@ -266,5 +242,16 @@ extern void arch_task_cache_init(void);
+@@ -264,5 +240,16 @@ extern void arch_task_cache_init(void);
  extern void free_thread_info(struct thread_info *ti);
  extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
  #define arch_task_cache_init arch_task_cache_init
  extern void free_thread_info(struct thread_info *ti);
  extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
  #define arch_task_cache_init arch_task_cache_init
@@ -10643,15 +12299,38 @@ index 36361bf..324f262 100644
  
  #ifdef CONFIG_X86_WP_WORKS_OK
 diff --git a/arch/x86/include/asm/uaccess_32.h b/arch/x86/include/asm/uaccess_32.h
  
  #ifdef CONFIG_X86_WP_WORKS_OK
 diff --git a/arch/x86/include/asm/uaccess_32.h b/arch/x86/include/asm/uaccess_32.h
-index 566e803..89f1e60 100644
+index 566e803..7183d0b 100644
 --- a/arch/x86/include/asm/uaccess_32.h
 +++ b/arch/x86/include/asm/uaccess_32.h
 --- a/arch/x86/include/asm/uaccess_32.h
 +++ b/arch/x86/include/asm/uaccess_32.h
-@@ -43,6 +43,11 @@ unsigned long __must_check __copy_from_user_ll_nocache_nozero
+@@ -11,15 +11,15 @@
+ #include <asm/page.h>
+ unsigned long __must_check __copy_to_user_ll
+-              (void __user *to, const void *from, unsigned long n);
++              (void __user *to, const void *from, unsigned long n) __size_overflow(3);
+ unsigned long __must_check __copy_from_user_ll
+-              (void *to, const void __user *from, unsigned long n);
++              (void *to, const void __user *from, unsigned long n) __size_overflow(3);
+ unsigned long __must_check __copy_from_user_ll_nozero
+-              (void *to, const void __user *from, unsigned long n);
++              (void *to, const void __user *from, unsigned long n) __size_overflow(3);
+ unsigned long __must_check __copy_from_user_ll_nocache
+-              (void *to, const void __user *from, unsigned long n);
++              (void *to, const void __user *from, unsigned long n) __size_overflow(3);
+ unsigned long __must_check __copy_from_user_ll_nocache_nozero
+-              (void *to, const void __user *from, unsigned long n);
++              (void *to, const void __user *from, unsigned long n) __size_overflow(3);
+ /**
+  * __copy_to_user_inatomic: - Copy a block of data into user space, with less checking.
+@@ -41,8 +41,13 @@ unsigned long __must_check __copy_from_user_ll_nocache_nozero
+  */
  static __always_inline unsigned long __must_check
  static __always_inline unsigned long __must_check
++__copy_to_user_inatomic(void __user *to, const void *from, unsigned long n) __size_overflow(3);
++static __always_inline unsigned long __must_check
  __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
  {
  __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
  {
-+      pax_track_stack();
-+
 +      if ((long)n < 0)
 +              return n;
 +
 +      if ((long)n < 0)
 +              return n;
 +
@@ -10667,7 +12346,12 @@ index 566e803..89f1e60 100644
        return __copy_to_user_ll(to, from, n);
  }
  
        return __copy_to_user_ll(to, from, n);
  }
  
-@@ -82,12 +89,16 @@ static __always_inline unsigned long __must_check
+@@ -79,15 +86,23 @@ __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
+  * On success, this will be zero.
+  */
+ static __always_inline unsigned long __must_check
++__copy_to_user(void __user *to, const void *from, unsigned long n) __size_overflow(3);
++static __always_inline unsigned long __must_check
  __copy_to_user(void __user *to, const void *from, unsigned long n)
  {
        might_fault();
  __copy_to_user(void __user *to, const void *from, unsigned long n)
  {
        might_fault();
@@ -10676,6 +12360,8 @@ index 566e803..89f1e60 100644
  }
  
  static __always_inline unsigned long
  }
  
  static __always_inline unsigned long
++__copy_from_user_inatomic(void *to, const void __user *from, unsigned long n) __size_overflow(3);
++static __always_inline unsigned long
  __copy_from_user_inatomic(void *to, const void __user *from, unsigned long n)
  {
 +      if ((long)n < 0)
  __copy_from_user_inatomic(void *to, const void __user *from, unsigned long n)
  {
 +      if ((long)n < 0)
@@ -10684,20 +12370,23 @@ index 566e803..89f1e60 100644
        /* Avoid zeroing the tail if the copy fails..
         * If 'n' is constant and 1, 2, or 4, we do still zero on a failure,
         * but as the zeroing behaviour is only significant when n is not
        /* Avoid zeroing the tail if the copy fails..
         * If 'n' is constant and 1, 2, or 4, we do still zero on a failure,
         * but as the zeroing behaviour is only significant when n is not
-@@ -137,6 +148,12 @@ static __always_inline unsigned long
+@@ -134,9 +149,15 @@ __copy_from_user_inatomic(void *to, const void __user *from, unsigned long n)
+  * for explanation of why this is needed.
+  */
+ static __always_inline unsigned long
++__copy_from_user(void *to, const void __user *from, unsigned long n) __size_overflow(3);
++static __always_inline unsigned long
  __copy_from_user(void *to, const void __user *from, unsigned long n)
  {
        might_fault();
 +
  __copy_from_user(void *to, const void __user *from, unsigned long n)
  {
        might_fault();
 +
-+      pax_track_stack();
-+
 +      if ((long)n < 0)
 +              return n;
 +
        if (__builtin_constant_p(n)) {
                unsigned long ret;
  
 +      if ((long)n < 0)
 +              return n;
 +
        if (__builtin_constant_p(n)) {
                unsigned long ret;
  
-@@ -152,6 +169,8 @@ __copy_from_user(void *to, const void __user *from, unsigned long n)
+@@ -152,13 +173,21 @@ __copy_from_user(void *to, const void __user *from, unsigned long n)
                        return ret;
                }
        }
                        return ret;
                }
        }
@@ -10706,7 +12395,9 @@ index 566e803..89f1e60 100644
        return __copy_from_user_ll(to, from, n);
  }
  
        return __copy_from_user_ll(to, from, n);
  }
  
-@@ -159,6 +178,10 @@ static __always_inline unsigned long __copy_from_user_nocache(void *to,
+ static __always_inline unsigned long __copy_from_user_nocache(void *to,
++                              const void __user *from, unsigned long n) __size_overflow(3);
++static __always_inline unsigned long __copy_from_user_nocache(void *to,
                                const void __user *from, unsigned long n)
  {
        might_fault();
                                const void __user *from, unsigned long n)
  {
        might_fault();
@@ -10717,8 +12408,13 @@ index 566e803..89f1e60 100644
        if (__builtin_constant_p(n)) {
                unsigned long ret;
  
        if (__builtin_constant_p(n)) {
                unsigned long ret;
  
-@@ -181,15 +204,19 @@ static __always_inline unsigned long
+@@ -179,17 +208,24 @@ static __always_inline unsigned long __copy_from_user_nocache(void *to,
+ static __always_inline unsigned long
  __copy_from_user_inatomic_nocache(void *to, const void __user *from,
  __copy_from_user_inatomic_nocache(void *to, const void __user *from,
++                                unsigned long n) __size_overflow(3);
++static __always_inline unsigned long
++__copy_from_user_inatomic_nocache(void *to, const void __user *from,
                                  unsigned long n)
  {
 -       return __copy_from_user_ll_nocache_nozero(to, from, n);
                                  unsigned long n)
  {
 -       return __copy_from_user_ll_nocache_nozero(to, from, n);
@@ -10744,7 +12440,7 @@ index 566e803..89f1e60 100644
  
  extern void copy_from_user_overflow(void)
  #ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
  
  extern void copy_from_user_overflow(void)
  #ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
-@@ -199,17 +226,61 @@ extern void copy_from_user_overflow(void)
+@@ -199,17 +235,65 @@ extern void copy_from_user_overflow(void)
  #endif
  ;
  
  #endif
  ;
  
@@ -10765,6 +12461,8 @@ index 566e803..89f1e60 100644
 + * On success, this will be zero.
 + */
 +static inline unsigned long __must_check
 + * On success, this will be zero.
 + */
 +static inline unsigned long __must_check
++copy_to_user(void __user *to, const void *from, unsigned long n) __size_overflow(3);
++static inline unsigned long __must_check
 +copy_to_user(void __user *to, const void *from, unsigned long n)
 +{
 +      int sz = __compiletime_object_size(from);
 +copy_to_user(void __user *to, const void *from, unsigned long n)
 +{
 +      int sz = __compiletime_object_size(from);
@@ -10793,6 +12491,8 @@ index 566e803..89f1e60 100644
 + * data to the requested size using zero bytes.
 + */
 +static inline unsigned long __must_check
 + * data to the requested size using zero bytes.
 + */
 +static inline unsigned long __must_check
++copy_from_user(void *to, const void __user *from, unsigned long n) __size_overflow(3);
++static inline unsigned long __must_check
 +copy_from_user(void *to, const void __user *from, unsigned long n)
  {
        int sz = __compiletime_object_size(to);
 +copy_from_user(void *to, const void __user *from, unsigned long n)
  {
        int sz = __compiletime_object_size(to);
@@ -10813,8 +12513,18 @@ index 566e803..89f1e60 100644
        return n;
  }
  
        return n;
  }
  
+@@ -235,7 +319,7 @@ long __must_check __strncpy_from_user(char *dst,
+ #define strlen_user(str) strnlen_user(str, LONG_MAX)
+ long strnlen_user(const char __user *str, long n);
+-unsigned long __must_check clear_user(void __user *mem, unsigned long len);
+-unsigned long __must_check __clear_user(void __user *mem, unsigned long len);
++unsigned long __must_check clear_user(void __user *mem, unsigned long len) __size_overflow(2);
++unsigned long __must_check __clear_user(void __user *mem, unsigned long len) __size_overflow(2);
+ #endif /* _ASM_X86_UACCESS_32_H */
 diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h
 diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h
-index 1c66d30..59bd7d4 100644
+index 1c66d30..e294b5f 100644
 --- a/arch/x86/include/asm/uaccess_64.h
 +++ b/arch/x86/include/asm/uaccess_64.h
 @@ -10,6 +10,9 @@
 --- a/arch/x86/include/asm/uaccess_64.h
 +++ b/arch/x86/include/asm/uaccess_64.h
 @@ -10,6 +10,9 @@
@@ -10827,42 +12537,51 @@ index 1c66d30..59bd7d4 100644
  
  /*
   * Copy To/From Userspace
  
  /*
   * Copy To/From Userspace
-@@ -17,12 +20,12 @@
+@@ -17,12 +20,14 @@
  
  /* Handles exceptions in both to and from, but doesn't do access_ok */
  __must_check unsigned long
 -copy_user_generic_string(void *to, const void *from, unsigned len);
  
  /* Handles exceptions in both to and from, but doesn't do access_ok */
  __must_check unsigned long
 -copy_user_generic_string(void *to, const void *from, unsigned len);
-+copy_user_generic_string(void *to, const void *from, unsigned long len);
++copy_user_generic_string(void *to, const void *from, unsigned long len) __size_overflow(3);
  __must_check unsigned long
 -copy_user_generic_unrolled(void *to, const void *from, unsigned len);
  __must_check unsigned long
 -copy_user_generic_unrolled(void *to, const void *from, unsigned len);
-+copy_user_generic_unrolled(void *to, const void *from, unsigned long len);
++copy_user_generic_unrolled(void *to, const void *from, unsigned long len) __size_overflow(3);
  
  static __always_inline __must_check unsigned long
 -copy_user_generic(void *to, const void *from, unsigned len)
  
  static __always_inline __must_check unsigned long
 -copy_user_generic(void *to, const void *from, unsigned len)
++copy_user_generic(void *to, const void *from, unsigned long len) __size_overflow(3);
++static __always_inline __must_check unsigned long
 +copy_user_generic(void *to, const void *from, unsigned long len)
  {
        unsigned ret;
  
 +copy_user_generic(void *to, const void *from, unsigned long len)
  {
        unsigned ret;
  
-@@ -36,138 +39,226 @@ copy_user_generic(void *to, const void *from, unsigned len)
+@@ -32,142 +37,237 @@ copy_user_generic(void *to, const void *from, unsigned len)
+                        ASM_OUTPUT2("=a" (ret), "=D" (to), "=S" (from),
+                                    "=d" (len)),
+                        "1" (to), "2" (from), "3" (len)
+-                       : "memory", "rcx", "r8", "r9", "r10", "r11");
++                       : "memory", "rcx", "r8", "r9", "r11");
        return ret;
  }
  
 +static __always_inline __must_check unsigned long
        return ret;
  }
  
 +static __always_inline __must_check unsigned long
-+__copy_to_user(void __user *to, const void *from, unsigned long len);
++__copy_to_user(void __user *to, const void *from, unsigned long len) __size_overflow(3);
 +static __always_inline __must_check unsigned long
 +static __always_inline __must_check unsigned long
-+__copy_from_user(void *to, const void __user *from, unsigned long len);
++__copy_from_user(void *to, const void __user *from, unsigned long len) __size_overflow(3);
  __must_check unsigned long
 -_copy_to_user(void __user *to, const void *from, unsigned len);
 -__must_check unsigned long
 -_copy_from_user(void *to, const void __user *from, unsigned len);
 -__must_check unsigned long
 -copy_in_user(void __user *to, const void __user *from, unsigned len);
  __must_check unsigned long
 -_copy_to_user(void __user *to, const void *from, unsigned len);
 -__must_check unsigned long
 -_copy_from_user(void *to, const void __user *from, unsigned len);
 -__must_check unsigned long
 -copy_in_user(void __user *to, const void __user *from, unsigned len);
-+copy_in_user(void __user *to, const void __user *from, unsigned long len);
++copy_in_user(void __user *to, const void __user *from, unsigned long len) __size_overflow(3);
  
  static inline unsigned long __must_check copy_from_user(void *to,
                                          const void __user *from,
  
  static inline unsigned long __must_check copy_from_user(void *to,
                                          const void __user *from,
--                                        unsigned long n)
-+                                        unsigned n)
++                                        unsigned long n) __size_overflow(3);
++static inline unsigned long __must_check copy_from_user(void *to,
++                                        const void __user *from,
+                                         unsigned long n)
  {
 -      int sz = __compiletime_object_size(to);
 -
  {
 -      int sz = __compiletime_object_size(to);
 -
@@ -10886,6 +12605,8 @@ index 1c66d30..59bd7d4 100644
  
  static __always_inline __must_check
 -int copy_to_user(void __user *dst, const void *src, unsigned size)
  
  static __always_inline __must_check
 -int copy_to_user(void __user *dst, const void *src, unsigned size)
++int copy_to_user(void __user *dst, const void *src, unsigned long size) __size_overflow(3);
++static __always_inline __must_check
 +int copy_to_user(void __user *dst, const void *src, unsigned long size)
  {
        might_fault();
 +int copy_to_user(void __user *dst, const void *src, unsigned long size)
  {
        might_fault();
@@ -10898,6 +12619,8 @@ index 1c66d30..59bd7d4 100644
  
  static __always_inline __must_check
 -int __copy_from_user(void *dst, const void __user *src, unsigned size)
  
  static __always_inline __must_check
 -int __copy_from_user(void *dst, const void __user *src, unsigned size)
++unsigned long __copy_from_user(void *dst, const void __user *src, unsigned long size) __size_overflow(3);
++static __always_inline __must_check
 +unsigned long __copy_from_user(void *dst, const void __user *src, unsigned long size)
  {
 -      int ret = 0;
 +unsigned long __copy_from_user(void *dst, const void __user *src, unsigned long size)
  {
 -      int ret = 0;
@@ -10908,8 +12631,6 @@ index 1c66d30..59bd7d4 100644
 -      if (!__builtin_constant_p(size))
 -              return copy_user_generic(dst, (__force void *)src, size);
 +
 -      if (!__builtin_constant_p(size))
 -              return copy_user_generic(dst, (__force void *)src, size);
 +
-+      pax_track_stack();
-+
 +      if (size > INT_MAX)
 +              return size;
 +
 +      if (size > INT_MAX)
 +              return size;
 +
@@ -10988,6 +12709,8 @@ index 1c66d30..59bd7d4 100644
  
  static __always_inline __must_check
 -int __copy_to_user(void __user *dst, const void *src, unsigned size)
  
  static __always_inline __must_check
 -int __copy_to_user(void __user *dst, const void *src, unsigned size)
++unsigned long __copy_to_user(void __user *dst, const void *src, unsigned long size) __size_overflow(3);
++static __always_inline __must_check
 +unsigned long __copy_to_user(void __user *dst, const void *src, unsigned long size)
  {
 -      int ret = 0;
 +unsigned long __copy_to_user(void __user *dst, const void *src, unsigned long size)
  {
 -      int ret = 0;
@@ -10998,8 +12721,6 @@ index 1c66d30..59bd7d4 100644
 -      if (!__builtin_constant_p(size))
 -              return copy_user_generic((__force void *)dst, src, size);
 +
 -      if (!__builtin_constant_p(size))
 -              return copy_user_generic((__force void *)dst, src, size);
 +
-+      pax_track_stack();
-+
 +      if (size > INT_MAX)
 +              return size;
 +
 +      if (size > INT_MAX)
 +              return size;
 +
@@ -11078,6 +12799,8 @@ index 1c66d30..59bd7d4 100644
  
  static __always_inline __must_check
 -int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
  
  static __always_inline __must_check
 -int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
++unsigned long __copy_in_user(void __user *dst, const void __user *src, unsigned long size) __size_overflow(3);
++static __always_inline __must_check
 +unsigned long __copy_in_user(void __user *dst, const void __user *src, unsigned long size)
  {
 -      int ret = 0;
 +unsigned long __copy_in_user(void __user *dst, const void __user *src, unsigned long size)
  {
 -      int ret = 0;
@@ -11118,7 +12841,7 @@ index 1c66d30..59bd7d4 100644
                               ret, "b", "b", "=q", 1);
                if (likely(!ret))
                        __put_user_asm(tmp, (u8 __user *)dst,
                               ret, "b", "b", "=q", 1);
                if (likely(!ret))
                        __put_user_asm(tmp, (u8 __user *)dst,
-@@ -176,7 +267,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
+@@ -176,7 +276,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
        }
        case 2: {
                u16 tmp;
        }
        case 2: {
                u16 tmp;
@@ -11127,7 +12850,7 @@ index 1c66d30..59bd7d4 100644
                               ret, "w", "w", "=r", 2);
                if (likely(!ret))
                        __put_user_asm(tmp, (u16 __user *)dst,
                               ret, "w", "w", "=r", 2);
                if (likely(!ret))
                        __put_user_asm(tmp, (u16 __user *)dst,
-@@ -186,7 +277,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
+@@ -186,7 +286,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
  
        case 4: {
                u32 tmp;
  
        case 4: {
                u32 tmp;
@@ -11136,7 +12859,7 @@ index 1c66d30..59bd7d4 100644
                               ret, "l", "k", "=r", 4);
                if (likely(!ret))
                        __put_user_asm(tmp, (u32 __user *)dst,
                               ret, "l", "k", "=r", 4);
                if (likely(!ret))
                        __put_user_asm(tmp, (u32 __user *)dst,
-@@ -195,7 +286,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
+@@ -195,7 +295,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
        }
        case 8: {
                u64 tmp;
        }
        case 8: {
                u64 tmp;
@@ -11145,7 +12868,7 @@ index 1c66d30..59bd7d4 100644
                               ret, "q", "", "=r", 8);
                if (likely(!ret))
                        __put_user_asm(tmp, (u64 __user *)dst,
                               ret, "q", "", "=r", 8);
                if (likely(!ret))
                        __put_user_asm(tmp, (u64 __user *)dst,
-@@ -203,8 +294,16 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
+@@ -203,8 +303,16 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
                return ret;
        }
        default:
                return ret;
        }
        default:
@@ -11164,16 +12887,22 @@ index 1c66d30..59bd7d4 100644
        }
  }
  
        }
  }
  
-@@ -219,35 +318,74 @@ __must_check unsigned long clear_user(void __user *mem, unsigned long len);
- __must_check unsigned long __clear_user(void __user *mem, unsigned long len);
+@@ -215,39 +323,83 @@ __strncpy_from_user(char *dst, const char __user *src, long count);
+ __must_check long strnlen_user(const char __user *str, long n);
+ __must_check long __strnlen_user(const char __user *str, long n);
+ __must_check long strlen_user(const char __user *str);
+-__must_check unsigned long clear_user(void __user *mem, unsigned long len);
+-__must_check unsigned long __clear_user(void __user *mem, unsigned long len);
++__must_check unsigned long clear_user(void __user *mem, unsigned long len) __size_overflow(2);
++__must_check unsigned long __clear_user(void __user *mem, unsigned long len) __size_overflow(2);
  
  static __must_check __always_inline int
 -__copy_from_user_inatomic(void *dst, const void __user *src, unsigned size)
  
  static __must_check __always_inline int
 -__copy_from_user_inatomic(void *dst, const void __user *src, unsigned size)
++__copy_from_user_inatomic(void *dst, const void __user *src, unsigned long size) __size_overflow(3);
++static __must_check __always_inline int
 +__copy_from_user_inatomic(void *dst, const void __user *src, unsigned long size)
  {
 -      return copy_user_generic(dst, (__force const void *)src, size);
 +__copy_from_user_inatomic(void *dst, const void __user *src, unsigned long size)
  {
 -      return copy_user_generic(dst, (__force const void *)src, size);
-+      pax_track_stack();
-+
 +      if (size > INT_MAX)
 +              return size;
 +
 +      if (size > INT_MAX)
 +              return size;
 +
@@ -11191,6 +12920,8 @@ index 1c66d30..59bd7d4 100644
 -static __must_check __always_inline int
 -__copy_to_user_inatomic(void __user *dst, const void *src, unsigned size)
 +static __must_check __always_inline unsigned long
 -static __must_check __always_inline int
 -__copy_to_user_inatomic(void __user *dst, const void *src, unsigned size)
 +static __must_check __always_inline unsigned long
++__copy_to_user_inatomic(void __user *dst, const void *src, unsigned long size) __size_overflow(3);
++static __must_check __always_inline unsigned long
 +__copy_to_user_inatomic(void __user *dst, const void *src, unsigned long size)
  {
 -      return copy_user_generic((__force void *)dst, src, size);
 +__copy_to_user_inatomic(void __user *dst, const void *src, unsigned long size)
  {
 -      return copy_user_generic((__force void *)dst, src, size);
@@ -11211,10 +12942,11 @@ index 1c66d30..59bd7d4 100644
 -extern long __copy_user_nocache(void *dst, const void __user *src,
 -                              unsigned size, int zerorest);
 +extern unsigned long __copy_user_nocache(void *dst, const void __user *src,
 -extern long __copy_user_nocache(void *dst, const void __user *src,
 -                              unsigned size, int zerorest);
 +extern unsigned long __copy_user_nocache(void *dst, const void __user *src,
-+                              unsigned long size, int zerorest);
++                              unsigned long size, int zerorest) __size_overflow(3);
  
 -static inline int
 -__copy_from_user_nocache(void *dst, const void __user *src, unsigned size)
  
 -static inline int
 -__copy_from_user_nocache(void *dst, const void __user *src, unsigned size)
++static inline unsigned long __copy_from_user_nocache(void *dst, const void __user *src, unsigned long size) __size_overflow(3);
 +static inline unsigned long __copy_from_user_nocache(void *dst, const void __user *src, unsigned long size)
  {
        might_sleep();
 +static inline unsigned long __copy_from_user_nocache(void *dst, const void __user *src, unsigned long size)
  {
        might_sleep();
@@ -11234,6 +12966,8 @@ index 1c66d30..59bd7d4 100644
 -__copy_from_user_inatomic_nocache(void *dst, const void __user *src,
 -                                unsigned size)
 +static inline unsigned long __copy_from_user_inatomic_nocache(void *dst, const void __user *src,
 -__copy_from_user_inatomic_nocache(void *dst, const void __user *src,
 -                                unsigned size)
 +static inline unsigned long __copy_from_user_inatomic_nocache(void *dst, const void __user *src,
++                                unsigned long size) __size_overflow(3);
++static inline unsigned long __copy_from_user_inatomic_nocache(void *dst, const void __user *src,
 +                                unsigned long size)
  {
 +      if (size > INT_MAX)
 +                                unsigned long size)
  {
 +      if (size > INT_MAX)
@@ -11250,7 +12984,7 @@ index 1c66d30..59bd7d4 100644
 -unsigned long
 -copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest);
 +extern unsigned long
 -unsigned long
 -copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest);
 +extern unsigned long
-+copy_user_handle_tail(char __user *to, char __user *from, unsigned long len, unsigned zerorest);
++copy_user_handle_tail(char __user *to, char __user *from, unsigned long len, unsigned zerorest) __size_overflow(3);
  
  #endif /* _ASM_X86_UACCESS_64_H */
 diff --git a/arch/x86/include/asm/vdso.h b/arch/x86/include/asm/vdso.h
  
  #endif /* _ASM_X86_UACCESS_64_H */
 diff --git a/arch/x86/include/asm/vdso.h b/arch/x86/include/asm/vdso.h
@@ -11267,7 +13001,7 @@ index bb05228..d763d5b 100644
  #endif
  
 diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
  #endif
  
 diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
-index d3d8590..d296b5f 100644
+index 1971e65..1e3559b 100644
 --- a/arch/x86/include/asm/x86_init.h
 +++ b/arch/x86/include/asm/x86_init.h
 @@ -28,7 +28,7 @@ struct x86_init_mpparse {
 --- a/arch/x86/include/asm/x86_init.h
 +++ b/arch/x86/include/asm/x86_init.h
 @@ -28,7 +28,7 @@ struct x86_init_mpparse {
@@ -11369,16 +13103,16 @@ index d3d8590..d296b5f 100644
  
  /**
   * struct x86_platform_ops - platform specific runtime functions
  
  /**
   * struct x86_platform_ops - platform specific runtime functions
-@@ -166,7 +166,7 @@ struct x86_platform_ops {
-       bool (*is_untracked_pat_range)(u64 start, u64 end);
+@@ -169,7 +169,7 @@ struct x86_platform_ops {
        void (*nmi_init)(void);
        void (*nmi_init)(void);
+       unsigned char (*get_nmi_reason)(void);
        int (*i8042_detect)(void);
 -};
 +} __no_const;
  
  struct pci_dev;
  
        int (*i8042_detect)(void);
 -};
 +} __no_const;
  
  struct pci_dev;
  
-@@ -174,7 +174,7 @@ struct x86_msi_ops {
+@@ -177,7 +177,7 @@ struct x86_msi_ops {
        int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type);
        void (*teardown_msi_irq)(unsigned int irq);
        void (*teardown_msi_irqs)(struct pci_dev *dev);
        int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type);
        void (*teardown_msi_irq)(unsigned int irq);
        void (*teardown_msi_irqs)(struct pci_dev *dev);
@@ -11494,7 +13228,7 @@ index 13ab720..95d5442 100644
  bogus_magic:
        jmp     bogus_magic
 diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
  bogus_magic:
        jmp     bogus_magic
 diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
-index c638228..16dfa8d 100644
+index 1f84794..e23f862 100644
 --- a/arch/x86/kernel/alternative.c
 +++ b/arch/x86/kernel/alternative.c
 @@ -276,6 +276,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
 --- a/arch/x86/kernel/alternative.c
 +++ b/arch/x86/kernel/alternative.c
 @@ -276,6 +276,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
@@ -11631,7 +13365,7 @@ index c638228..16dfa8d 100644
  }
  
 diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
  }
  
 diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
-index 52fa563..5de9d9c 100644
+index f98d84c..e402a69 100644
 --- a/arch/x86/kernel/apic/apic.c
 +++ b/arch/x86/kernel/apic/apic.c
 @@ -174,7 +174,7 @@ int first_system_vector = 0xfe;
 --- a/arch/x86/kernel/apic/apic.c
 +++ b/arch/x86/kernel/apic/apic.c
 @@ -174,7 +174,7 @@ int first_system_vector = 0xfe;
@@ -11643,7 +13377,7 @@ index 52fa563..5de9d9c 100644
  
  int pic_mode;
  
  
  int pic_mode;
  
-@@ -1835,7 +1835,7 @@ void smp_error_interrupt(struct pt_regs *regs)
+@@ -1853,7 +1853,7 @@ void smp_error_interrupt(struct pt_regs *regs)
        apic_write(APIC_ESR, 0);
        v1 = apic_read(APIC_ESR);
        ack_APIC_irq();
        apic_write(APIC_ESR, 0);
        v1 = apic_read(APIC_ESR);
        ack_APIC_irq();
@@ -11652,20 +13386,11 @@ index 52fa563..5de9d9c 100644
  
        apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x(%02x)",
                    smp_processor_id(), v0 , v1);
  
        apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x(%02x)",
                    smp_processor_id(), v0 , v1);
-@@ -2209,6 +2209,8 @@ static int __cpuinit apic_cluster_num(void)
-       u16 *bios_cpu_apicid;
-       DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS);
-+      pax_track_stack();
-+
-       bios_cpu_apicid = early_per_cpu_ptr(x86_bios_cpu_apicid);
-       bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
 diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
 diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
-index 8eb863e..32e6934 100644
+index 6d939d7..0697fcc 100644
 --- a/arch/x86/kernel/apic/io_apic.c
 +++ b/arch/x86/kernel/apic/io_apic.c
 --- a/arch/x86/kernel/apic/io_apic.c
 +++ b/arch/x86/kernel/apic/io_apic.c
-@@ -1028,7 +1028,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin,
+@@ -1096,7 +1096,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin,
  }
  EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
  
  }
  EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
  
@@ -11674,7 +13399,7 @@ index 8eb863e..32e6934 100644
  {
        /* Used to the online set of cpus does not change
         * during assign_irq_vector.
  {
        /* Used to the online set of cpus does not change
         * during assign_irq_vector.
-@@ -1036,7 +1036,7 @@ void lock_vector_lock(void)
+@@ -1104,7 +1104,7 @@ void lock_vector_lock(void)
        raw_spin_lock(&vector_lock);
  }
  
        raw_spin_lock(&vector_lock);
  }
  
@@ -11683,16 +13408,16 @@ index 8eb863e..32e6934 100644
  {
        raw_spin_unlock(&vector_lock);
  }
  {
        raw_spin_unlock(&vector_lock);
  }
-@@ -2405,7 +2405,7 @@ static void ack_apic_edge(struct irq_data *data)
+@@ -2510,7 +2510,7 @@ static void ack_apic_edge(struct irq_data *data)
        ack_APIC_irq();
  }
  
 -atomic_t irq_mis_count;
 +atomic_unchecked_t irq_mis_count;
  
        ack_APIC_irq();
  }
  
 -atomic_t irq_mis_count;
 +atomic_unchecked_t irq_mis_count;
  
- /*
-  * IO-APIC versions below 0x20 don't support EOI register.
-@@ -2513,7 +2513,7 @@ static void ack_apic_level(struct irq_data *data)
+ static void ack_apic_level(struct irq_data *data)
+ {
+@@ -2576,7 +2576,7 @@ static void ack_apic_level(struct irq_data *data)
         * at the cpu.
         */
        if (!(v & (1 << (i & 0x1f)))) {
         * at the cpu.
         */
        if (!(v & (1 << (i & 0x1f)))) {
@@ -11702,10 +13427,10 @@ index 8eb863e..32e6934 100644
                eoi_ioapic_irq(irq, cfg);
        }
 diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
                eoi_ioapic_irq(irq, cfg);
        }
 diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
-index 0371c48..54cdf63 100644
+index a46bd38..6b906d7 100644
 --- a/arch/x86/kernel/apm_32.c
 +++ b/arch/x86/kernel/apm_32.c
 --- a/arch/x86/kernel/apm_32.c
 +++ b/arch/x86/kernel/apm_32.c
-@@ -413,7 +413,7 @@ static DEFINE_MUTEX(apm_mutex);
+@@ -411,7 +411,7 @@ static DEFINE_MUTEX(apm_mutex);
   * This is for buggy BIOS's that refer to (real mode) segment 0x40
   * even though they are called in protected mode.
   */
   * This is for buggy BIOS's that refer to (real mode) segment 0x40
   * even though they are called in protected mode.
   */
@@ -11714,7 +13439,7 @@ index 0371c48..54cdf63 100644
                        (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1);
  
  static const char driver_version[] = "1.16ac";        /* no spaces */
                        (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1);
  
  static const char driver_version[] = "1.16ac";        /* no spaces */
-@@ -591,7 +591,10 @@ static long __apm_bios_call(void *_call)
+@@ -589,7 +589,10 @@ static long __apm_bios_call(void *_call)
        BUG_ON(cpu != 0);
        gdt = get_cpu_gdt_table(cpu);
        save_desc_40 = gdt[0x40 / 8];
        BUG_ON(cpu != 0);
        gdt = get_cpu_gdt_table(cpu);
        save_desc_40 = gdt[0x40 / 8];
@@ -11725,7 +13450,7 @@ index 0371c48..54cdf63 100644
  
        apm_irq_save(flags);
        APM_DO_SAVE_SEGS;
  
        apm_irq_save(flags);
        APM_DO_SAVE_SEGS;
-@@ -600,7 +603,11 @@ static long __apm_bios_call(void *_call)
+@@ -598,7 +601,11 @@ static long __apm_bios_call(void *_call)
                          &call->esi);
        APM_DO_RESTORE_SEGS;
        apm_irq_restore(flags);
                          &call->esi);
        APM_DO_RESTORE_SEGS;
        apm_irq_restore(flags);
@@ -11737,7 +13462,7 @@ index 0371c48..54cdf63 100644
        put_cpu();
  
        return call->eax & 0xff;
        put_cpu();
  
        return call->eax & 0xff;
-@@ -667,7 +674,10 @@ static long __apm_bios_call_simple(void *_call)
+@@ -665,7 +672,10 @@ static long __apm_bios_call_simple(void *_call)
        BUG_ON(cpu != 0);
        gdt = get_cpu_gdt_table(cpu);
        save_desc_40 = gdt[0x40 / 8];
        BUG_ON(cpu != 0);
        gdt = get_cpu_gdt_table(cpu);
        save_desc_40 = gdt[0x40 / 8];
@@ -11748,7 +13473,7 @@ index 0371c48..54cdf63 100644
  
        apm_irq_save(flags);
        APM_DO_SAVE_SEGS;
  
        apm_irq_save(flags);
        APM_DO_SAVE_SEGS;
-@@ -675,7 +685,11 @@ static long __apm_bios_call_simple(void *_call)
+@@ -673,7 +683,11 @@ static long __apm_bios_call_simple(void *_call)
                                         &call->eax);
        APM_DO_RESTORE_SEGS;
        apm_irq_restore(flags);
                                         &call->eax);
        APM_DO_RESTORE_SEGS;
        apm_irq_restore(flags);
@@ -11760,7 +13485,7 @@ index 0371c48..54cdf63 100644
        put_cpu();
        return error;
  }
        put_cpu();
        return error;
  }
-@@ -2349,12 +2363,15 @@ static int __init apm_init(void)
+@@ -2347,12 +2361,15 @@ static int __init apm_init(void)
         * code to that CPU.
         */
        gdt = get_cpu_gdt_table(0);
         * code to that CPU.
         */
        gdt = get_cpu_gdt_table(0);
@@ -11829,7 +13554,7 @@ index e72a119..6e2955d 100644
        BLANK();
  
 diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
        BLANK();
  
 diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
-index 6042981..e638266 100644
+index 25f24dc..4094a7f 100644
 --- a/arch/x86/kernel/cpu/Makefile
 +++ b/arch/x86/kernel/cpu/Makefile
 @@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg
 --- a/arch/x86/kernel/cpu/Makefile
 +++ b/arch/x86/kernel/cpu/Makefile
 @@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg
@@ -11844,10 +13569,10 @@ index 6042981..e638266 100644
  obj-y                 += proc.o capflags.o powerflags.o common.o
  obj-y                 += vmware.o hypervisor.o sched.o mshyperv.o
 diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
  obj-y                 += proc.o capflags.o powerflags.o common.o
  obj-y                 += vmware.o hypervisor.o sched.o mshyperv.o
 diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
-index b13ed39..603286c 100644
+index 0bab2b1..d0a1bf8 100644
 --- a/arch/x86/kernel/cpu/amd.c
 +++ b/arch/x86/kernel/cpu/amd.c
 --- a/arch/x86/kernel/cpu/amd.c
 +++ b/arch/x86/kernel/cpu/amd.c
-@@ -647,7 +647,7 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c,
+@@ -664,7 +664,7 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c,
                                                        unsigned int size)
  {
        /* AMD errata T13 (order #21922) */
                                                        unsigned int size)
  {
        /* AMD errata T13 (order #21922) */
@@ -11857,10 +13582,10 @@ index b13ed39..603286c 100644
                if (c->x86_model == 3 && c->x86_mask == 0)
                        size = 64;
 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
                if (c->x86_model == 3 && c->x86_mask == 0)
                        size = 64;
 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
-index 6218439..0f1addc 100644
+index aa003b1..47ea638 100644
 --- a/arch/x86/kernel/cpu/common.c
 +++ b/arch/x86/kernel/cpu/common.c
 --- a/arch/x86/kernel/cpu/common.c
 +++ b/arch/x86/kernel/cpu/common.c
-@@ -83,60 +83,6 @@ static const struct cpu_dev __cpuinitconst default_cpu = {
+@@ -84,60 +84,6 @@ static const struct cpu_dev __cpuinitconst default_cpu = {
  
  static const struct cpu_dev *this_cpu __cpuinitdata = &default_cpu;
  
  
  static const struct cpu_dev *this_cpu __cpuinitdata = &default_cpu;
  
@@ -11921,7 +13646,7 @@ index 6218439..0f1addc 100644
  static int __init x86_xsave_setup(char *s)
  {
        setup_clear_cpu_cap(X86_FEATURE_XSAVE);
  static int __init x86_xsave_setup(char *s)
  {
        setup_clear_cpu_cap(X86_FEATURE_XSAVE);
-@@ -371,7 +317,7 @@ void switch_to_new_gdt(int cpu)
+@@ -372,7 +318,7 @@ void switch_to_new_gdt(int cpu)
  {
        struct desc_ptr gdt_descr;
  
  {
        struct desc_ptr gdt_descr;
  
@@ -11930,18 +13655,18 @@ index 6218439..0f1addc 100644
        gdt_descr.size = GDT_SIZE - 1;
        load_gdt(&gdt_descr);
        /* Reload the per-cpu base */
        gdt_descr.size = GDT_SIZE - 1;
        load_gdt(&gdt_descr);
        /* Reload the per-cpu base */
-@@ -840,6 +786,10 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
+@@ -844,6 +790,10 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
        /* Filter out anything that depends on CPUID levels we don't have */
        filter_cpuid_features(c, true);
  
        /* Filter out anything that depends on CPUID levels we don't have */
        filter_cpuid_features(c, true);
  
-+#if defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_KERNEXEC) || (defined(CONFIG_PAX_MEMORY_UDEREF) && defined(CONFIG_X86_32))
++#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF))
 +      setup_clear_cpu_cap(X86_FEATURE_SEP);
 +#endif
 +
        /* If the model name is still unset, do table lookup. */
        if (!c->x86_model_id[0]) {
                const char *p;
 +      setup_clear_cpu_cap(X86_FEATURE_SEP);
 +#endif
 +
        /* If the model name is still unset, do table lookup. */
        if (!c->x86_model_id[0]) {
                const char *p;
-@@ -1019,6 +969,9 @@ static __init int setup_disablecpuid(char *arg)
+@@ -1024,6 +974,9 @@ static __init int setup_disablecpuid(char *arg)
  }
  __setup("clearcpuid=", setup_disablecpuid);
  
  }
  __setup("clearcpuid=", setup_disablecpuid);
  
@@ -11951,7 +13676,7 @@ index 6218439..0f1addc 100644
  #ifdef CONFIG_X86_64
  struct desc_ptr idt_descr = { NR_VECTORS * 16 - 1, (unsigned long) idt_table };
  
  #ifdef CONFIG_X86_64
  struct desc_ptr idt_descr = { NR_VECTORS * 16 - 1, (unsigned long) idt_table };
  
-@@ -1034,7 +987,7 @@ DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned =
+@@ -1039,7 +992,7 @@ DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned =
  EXPORT_PER_CPU_SYMBOL(current_task);
  
  DEFINE_PER_CPU(unsigned long, kernel_stack) =
  EXPORT_PER_CPU_SYMBOL(current_task);
  
  DEFINE_PER_CPU(unsigned long, kernel_stack) =
@@ -11960,7 +13685,7 @@ index 6218439..0f1addc 100644
  EXPORT_PER_CPU_SYMBOL(kernel_stack);
  
  DEFINE_PER_CPU(char *, irq_stack_ptr) =
  EXPORT_PER_CPU_SYMBOL(kernel_stack);
  
  DEFINE_PER_CPU(char *, irq_stack_ptr) =
-@@ -1099,7 +1052,7 @@ struct pt_regs * __cpuinit idle_regs(struct pt_regs *regs)
+@@ -1104,7 +1057,7 @@ struct pt_regs * __cpuinit idle_regs(struct pt_regs *regs)
  {
        memset(regs, 0, sizeof(struct pt_regs));
        regs->fs = __KERNEL_PERCPU;
  {
        memset(regs, 0, sizeof(struct pt_regs));
        regs->fs = __KERNEL_PERCPU;
@@ -11969,7 +13694,7 @@ index 6218439..0f1addc 100644
  
        return regs;
  }
  
        return regs;
  }
-@@ -1154,7 +1107,7 @@ void __cpuinit cpu_init(void)
+@@ -1159,7 +1112,7 @@ void __cpuinit cpu_init(void)
        int i;
  
        cpu = stack_smp_processor_id();
        int i;
  
        cpu = stack_smp_processor_id();
@@ -11978,7 +13703,7 @@ index 6218439..0f1addc 100644
        oist = &per_cpu(orig_ist, cpu);
  
  #ifdef CONFIG_NUMA
        oist = &per_cpu(orig_ist, cpu);
  
  #ifdef CONFIG_NUMA
-@@ -1180,7 +1133,7 @@ void __cpuinit cpu_init(void)
+@@ -1185,7 +1138,7 @@ void __cpuinit cpu_init(void)
        switch_to_new_gdt(cpu);
        loadsegment(fs, 0);
  
        switch_to_new_gdt(cpu);
        loadsegment(fs, 0);
  
@@ -11987,7 +13712,7 @@ index 6218439..0f1addc 100644
  
        memset(me->thread.tls_array, 0, GDT_ENTRY_TLS_ENTRIES * 8);
        syscall_init();
  
        memset(me->thread.tls_array, 0, GDT_ENTRY_TLS_ENTRIES * 8);
        syscall_init();
-@@ -1189,7 +1142,6 @@ void __cpuinit cpu_init(void)
+@@ -1194,7 +1147,6 @@ void __cpuinit cpu_init(void)
        wrmsrl(MSR_KERNEL_GS_BASE, 0);
        barrier();
  
        wrmsrl(MSR_KERNEL_GS_BASE, 0);
        barrier();
  
@@ -11995,7 +13720,7 @@ index 6218439..0f1addc 100644
        if (cpu != 0)
                enable_x2apic();
  
        if (cpu != 0)
                enable_x2apic();
  
-@@ -1243,7 +1195,7 @@ void __cpuinit cpu_init(void)
+@@ -1248,7 +1200,7 @@ void __cpuinit cpu_init(void)
  {
        int cpu = smp_processor_id();
        struct task_struct *curr = current;
  {
        int cpu = smp_processor_id();
        struct task_struct *curr = current;
@@ -12005,10 +13730,10 @@ index 6218439..0f1addc 100644
  
        if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
 diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
  
        if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
 diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
-index ed6086e..a1dcf29 100644
+index 5231312..a78a987 100644
 --- a/arch/x86/kernel/cpu/intel.c
 +++ b/arch/x86/kernel/cpu/intel.c
 --- a/arch/x86/kernel/cpu/intel.c
 +++ b/arch/x86/kernel/cpu/intel.c
-@@ -172,7 +172,7 @@ static void __cpuinit trap_init_f00f_bug(void)
+@@ -174,7 +174,7 @@ static void __cpuinit trap_init_f00f_bug(void)
         * Update the IDT descriptor and reload the IDT so that
         * it uses the read-only mapped virtual address.
         */
         * Update the IDT descriptor and reload the IDT so that
         * it uses the read-only mapped virtual address.
         */
@@ -12018,22 +13743,20 @@ index ed6086e..a1dcf29 100644
  }
  #endif
 diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c b/arch/x86/kernel/cpu/mcheck/mce-inject.c
  }
  #endif
 diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c b/arch/x86/kernel/cpu/mcheck/mce-inject.c
-index 0ed633c..82cef2a 100644
+index 319882e..993534e 100644
 --- a/arch/x86/kernel/cpu/mcheck/mce-inject.c
 +++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c
 --- a/arch/x86/kernel/cpu/mcheck/mce-inject.c
 +++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c
-@@ -215,7 +215,9 @@ static int inject_init(void)
-       if (!alloc_cpumask_var(&mce_inject_cpumask, GFP_KERNEL))
-               return -ENOMEM;
-       printk(KERN_INFO "Machine check injector initialized\n");
--      mce_chrdev_ops.write = mce_write;
-+      pax_open_kernel();
-+      *(void **)&mce_chrdev_ops.write = mce_write;
-+      pax_close_kernel();
-       register_die_notifier(&mce_raise_nb);
-       return 0;
- }
+@@ -173,6 +173,8 @@ static void raise_mce(struct mce *m)
+ /* Error injection interface */
+ static ssize_t mce_write(struct file *filp, const char __user *ubuf,
++                       size_t usize, loff_t *off) __size_overflow(3);
++static ssize_t mce_write(struct file *filp, const char __user *ubuf,
+                        size_t usize, loff_t *off)
+ {
+       struct mce m;
 diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
 diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
-index 08363b0..ee26113 100644
+index 2af127d..8ff7ac0 100644
 --- a/arch/x86/kernel/cpu/mcheck/mce.c
 +++ b/arch/x86/kernel/cpu/mcheck/mce.c
 @@ -42,6 +42,7 @@
 --- a/arch/x86/kernel/cpu/mcheck/mce.c
 +++ b/arch/x86/kernel/cpu/mcheck/mce.c
 @@ -42,6 +42,7 @@
@@ -12044,7 +13767,7 @@ index 08363b0..ee26113 100644
  
  #include "mce-internal.h"
  
  
  #include "mce-internal.h"
  
-@@ -205,7 +206,7 @@ static void print_mce(struct mce *m)
+@@ -202,7 +203,7 @@ static void print_mce(struct mce *m)
                        !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "",
                                m->cs, m->ip);
  
                        !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "",
                                m->cs, m->ip);
  
@@ -12053,7 +13776,7 @@ index 08363b0..ee26113 100644
                        print_symbol("{%s}", m->ip);
                pr_cont("\n");
        }
                        print_symbol("{%s}", m->ip);
                pr_cont("\n");
        }
-@@ -233,10 +234,10 @@ static void print_mce(struct mce *m)
+@@ -235,10 +236,10 @@ static void print_mce(struct mce *m)
  
  #define PANIC_TIMEOUT 5 /* 5 seconds */
  
  
  #define PANIC_TIMEOUT 5 /* 5 seconds */
  
@@ -12066,7 +13789,7 @@ index 08363b0..ee26113 100644
  
  /* Panic in progress. Enable interrupts and wait for final IPI */
  static void wait_for_panic(void)
  
  /* Panic in progress. Enable interrupts and wait for final IPI */
  static void wait_for_panic(void)
-@@ -260,7 +261,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
+@@ -262,7 +263,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
                /*
                 * Make sure only one CPU runs in machine check panic
                 */
                /*
                 * Make sure only one CPU runs in machine check panic
                 */
@@ -12075,7 +13798,7 @@ index 08363b0..ee26113 100644
                        wait_for_panic();
                barrier();
  
                        wait_for_panic();
                barrier();
  
-@@ -268,7 +269,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
+@@ -270,7 +271,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
                console_verbose();
        } else {
                /* Don't log too much for fake panic */
                console_verbose();
        } else {
                /* Don't log too much for fake panic */
@@ -12093,7 +13816,7 @@ index 08363b0..ee26113 100644
                wait_for_panic();
        if (!monarch_timeout)
                goto out;
                wait_for_panic();
        if (!monarch_timeout)
                goto out;
-@@ -1392,7 +1393,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
+@@ -1398,7 +1399,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
  }
  
  /* Call the installed machine check handler for this CPU setup. */
  }
  
  /* Call the installed machine check handler for this CPU setup. */
@@ -12102,7 +13825,7 @@ index 08363b0..ee26113 100644
                                                unexpected_machine_check;
  
  /*
                                                unexpected_machine_check;
  
  /*
-@@ -1415,7 +1416,9 @@ void __cpuinit mcheck_cpu_init(struct cpuinfo_x86 *c)
+@@ -1421,7 +1422,9 @@ void __cpuinit mcheck_cpu_init(struct cpuinfo_x86 *c)
                return;
        }
  
                return;
        }
  
@@ -12112,7 +13835,7 @@ index 08363b0..ee26113 100644
  
        __mcheck_cpu_init_generic();
        __mcheck_cpu_init_vendor(c);
  
        __mcheck_cpu_init_generic();
        __mcheck_cpu_init_vendor(c);
-@@ -1429,7 +1432,7 @@ void __cpuinit mcheck_cpu_init(struct cpuinfo_x86 *c)
+@@ -1435,7 +1438,7 @@ void __cpuinit mcheck_cpu_init(struct cpuinfo_x86 *c)
   */
  
  static DEFINE_SPINLOCK(mce_chrdev_state_lock);
   */
  
  static DEFINE_SPINLOCK(mce_chrdev_state_lock);
@@ -12121,7 +13844,7 @@ index 08363b0..ee26113 100644
  static int mce_chrdev_open_exclu;     /* already open exclusive? */
  
  static int mce_chrdev_open(struct inode *inode, struct file *file)
  static int mce_chrdev_open_exclu;     /* already open exclusive? */
  
  static int mce_chrdev_open(struct inode *inode, struct file *file)
-@@ -1437,7 +1440,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
+@@ -1443,7 +1446,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
        spin_lock(&mce_chrdev_state_lock);
  
        if (mce_chrdev_open_exclu ||
        spin_lock(&mce_chrdev_state_lock);
  
        if (mce_chrdev_open_exclu ||
@@ -12130,7 +13853,7 @@ index 08363b0..ee26113 100644
                spin_unlock(&mce_chrdev_state_lock);
  
                return -EBUSY;
                spin_unlock(&mce_chrdev_state_lock);
  
                return -EBUSY;
-@@ -1445,7 +1448,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
+@@ -1451,7 +1454,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
  
        if (file->f_flags & O_EXCL)
                mce_chrdev_open_exclu = 1;
  
        if (file->f_flags & O_EXCL)
                mce_chrdev_open_exclu = 1;
@@ -12139,7 +13862,7 @@ index 08363b0..ee26113 100644
  
        spin_unlock(&mce_chrdev_state_lock);
  
  
        spin_unlock(&mce_chrdev_state_lock);
  
-@@ -1456,7 +1459,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file)
+@@ -1462,7 +1465,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file)
  {
        spin_lock(&mce_chrdev_state_lock);
  
  {
        spin_lock(&mce_chrdev_state_lock);
  
@@ -12148,7 +13871,7 @@ index 08363b0..ee26113 100644
        mce_chrdev_open_exclu = 0;
  
        spin_unlock(&mce_chrdev_state_lock);
        mce_chrdev_open_exclu = 0;
  
        spin_unlock(&mce_chrdev_state_lock);
-@@ -2147,7 +2150,7 @@ struct dentry *mce_get_debugfs_dir(void)
+@@ -2171,7 +2174,7 @@ struct dentry *mce_get_debugfs_dir(void)
  static void mce_reset(void)
  {
        cpu_missing = 0;
  static void mce_reset(void)
  {
        cpu_missing = 0;
@@ -12158,10 +13881,18 @@ index 08363b0..ee26113 100644
        atomic_set(&mce_callin, 0);
        atomic_set(&global_nwo, 0);
 diff --git a/arch/x86/kernel/cpu/mcheck/p5.c b/arch/x86/kernel/cpu/mcheck/p5.c
        atomic_set(&mce_callin, 0);
        atomic_set(&global_nwo, 0);
 diff --git a/arch/x86/kernel/cpu/mcheck/p5.c b/arch/x86/kernel/cpu/mcheck/p5.c
-index 5c0e653..1e82c7c 100644
+index 5c0e653..0882b0a 100644
 --- a/arch/x86/kernel/cpu/mcheck/p5.c
 +++ b/arch/x86/kernel/cpu/mcheck/p5.c
 --- a/arch/x86/kernel/cpu/mcheck/p5.c
 +++ b/arch/x86/kernel/cpu/mcheck/p5.c
-@@ -50,7 +50,9 @@ void intel_p5_mcheck_init(struct cpuinfo_x86 *c)
+@@ -12,6 +12,7 @@
+ #include <asm/system.h>
+ #include <asm/mce.h>
+ #include <asm/msr.h>
++#include <asm/pgtable.h>
+ /* By default disabled */
+ int mce_p5_enabled __read_mostly;
+@@ -50,7 +51,9 @@ void intel_p5_mcheck_init(struct cpuinfo_x86 *c)
        if (!cpu_has(c, X86_FEATURE_MCE))
                return;
  
        if (!cpu_has(c, X86_FEATURE_MCE))
                return;
  
@@ -12172,10 +13903,18 @@ index 5c0e653..1e82c7c 100644
        wmb();
  
 diff --git a/arch/x86/kernel/cpu/mcheck/winchip.c b/arch/x86/kernel/cpu/mcheck/winchip.c
        wmb();
  
 diff --git a/arch/x86/kernel/cpu/mcheck/winchip.c b/arch/x86/kernel/cpu/mcheck/winchip.c
-index 54060f5..e6ba93d 100644
+index 54060f5..c1a7577 100644
 --- a/arch/x86/kernel/cpu/mcheck/winchip.c
 +++ b/arch/x86/kernel/cpu/mcheck/winchip.c
 --- a/arch/x86/kernel/cpu/mcheck/winchip.c
 +++ b/arch/x86/kernel/cpu/mcheck/winchip.c
-@@ -24,7 +24,9 @@ void winchip_mcheck_init(struct cpuinfo_x86 *c)
+@@ -11,6 +11,7 @@
+ #include <asm/system.h>
+ #include <asm/mce.h>
+ #include <asm/msr.h>
++#include <asm/pgtable.h>
+ /* Machine check handler for WinChip C6: */
+ static void winchip_machine_check(struct pt_regs *regs, long error_code)
+@@ -24,7 +25,9 @@ void winchip_mcheck_init(struct cpuinfo_x86 *c)
  {
        u32 lo, hi;
  
  {
        u32 lo, hi;
  
@@ -12185,6 +13924,19 @@ index 54060f5..e6ba93d 100644
        /* Make sure the vector pointer is visible before we enable MCEs: */
        wmb();
  
        /* Make sure the vector pointer is visible before we enable MCEs: */
        wmb();
  
+diff --git a/arch/x86/kernel/cpu/mtrr/if.c b/arch/x86/kernel/cpu/mtrr/if.c
+index 7928963..1b16001 100644
+--- a/arch/x86/kernel/cpu/mtrr/if.c
++++ b/arch/x86/kernel/cpu/mtrr/if.c
+@@ -91,6 +91,8 @@ mtrr_file_del(unsigned long base, unsigned long size,
+  *    "base=%Lx size=%Lx type=%s" or "disable=%d"
+  */
+ static ssize_t
++mtrr_write(struct file *file, const char __user *buf, size_t len, loff_t * ppos) __size_overflow(3);
++static ssize_t
+ mtrr_write(struct file *file, const char __user *buf, size_t len, loff_t * ppos)
+ {
+       int i, err;
 diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
 index 6b96110..0da73eb 100644
 --- a/arch/x86/kernel/cpu/mtrr/main.c
 diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
 index 6b96110..0da73eb 100644
 --- a/arch/x86/kernel/cpu/mtrr/main.c
@@ -12212,19 +13964,10 @@ index df5e41f..816c719 100644
  extern int generic_get_free_region(unsigned long base, unsigned long size,
                                   int replace_reg);
 diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
  extern int generic_get_free_region(unsigned long base, unsigned long size,
                                   int replace_reg);
 diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
-index cfa62ec..9250dd7 100644
+index 2bda212..78cc605 100644
 --- a/arch/x86/kernel/cpu/perf_event.c
 +++ b/arch/x86/kernel/cpu/perf_event.c
 --- a/arch/x86/kernel/cpu/perf_event.c
 +++ b/arch/x86/kernel/cpu/perf_event.c
-@@ -795,6 +795,8 @@ static int x86_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign)
-       int i, j, w, wmax, num = 0;
-       struct hw_perf_event *hwc;
-+      pax_track_stack();
-+
-       bitmap_zero(used_mask, X86_PMC_IDX_MAX);
-       for (i = 0; i < n; i++) {
-@@ -1919,7 +1921,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
+@@ -1529,7 +1529,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
                        break;
  
                perf_callchain_store(entry, frame.return_address);
                        break;
  
                perf_callchain_store(entry, frame.return_address);
@@ -12234,13 +13977,16 @@ index cfa62ec..9250dd7 100644
  }
  
 diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
  }
  
 diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
-index 764c7c2..c5d9c7b 100644
+index 13ad899..f642b9a 100644
 --- a/arch/x86/kernel/crash.c
 +++ b/arch/x86/kernel/crash.c
 --- a/arch/x86/kernel/crash.c
 +++ b/arch/x86/kernel/crash.c
-@@ -42,7 +42,7 @@ static void kdump_nmi_callback(int cpu, struct die_args *args)
-       regs = args->regs;
+@@ -36,10 +36,8 @@ static void kdump_nmi_callback(int cpu, struct pt_regs *regs)
+ {
  #ifdef CONFIG_X86_32
  #ifdef CONFIG_X86_32
+       struct pt_regs fixed_regs;
+-#endif
+-#ifdef CONFIG_X86_32
 -      if (!user_mode_vm(regs)) {
 +      if (!user_mode(regs)) {
                crash_fixup_ss_esp(&fixed_regs, regs);
 -      if (!user_mode_vm(regs)) {
 +      if (!user_mode(regs)) {
                crash_fixup_ss_esp(&fixed_regs, regs);
@@ -12429,7 +14175,7 @@ index 1aae78f..aab3a3d 100644
  
        if (__die(str, regs, err))
 diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
  
        if (__die(str, regs, err))
 diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
-index 3b97a80..667ce7a 100644
+index c99f9ed..2a15d80 100644
 --- a/arch/x86/kernel/dumpstack_32.c
 +++ b/arch/x86/kernel/dumpstack_32.c
 @@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
 --- a/arch/x86/kernel/dumpstack_32.c
 +++ b/arch/x86/kernel/dumpstack_32.c
 @@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
@@ -12479,14 +14225,14 @@ index 3b97a80..667ce7a 100644
                }
                for (i = 0; i < code_len; i++, ip++) {
 @@ -119,7 +118,7 @@ void show_registers(struct pt_regs *regs)
                }
                for (i = 0; i < code_len; i++, ip++) {
 @@ -119,7 +118,7 @@ void show_registers(struct pt_regs *regs)
-                               printk(" Bad EIP value.");
+                               printk(KERN_CONT " Bad EIP value.");
                                break;
                        }
 -                      if (ip == (u8 *)regs->ip)
 +                      if (ip == (u8 *)regs->ip + cs_base)
                                break;
                        }
 -                      if (ip == (u8 *)regs->ip)
 +                      if (ip == (u8 *)regs->ip + cs_base)
-                               printk("<%02x> ", c);
+                               printk(KERN_CONT "<%02x> ", c);
                        else
                        else
-                               printk("%02x ", c);
+                               printk(KERN_CONT "%02x ", c);
 @@ -132,6 +131,7 @@ int is_valid_bugaddr(unsigned long ip)
  {
        unsigned short ud2;
 @@ -132,6 +131,7 @@ int is_valid_bugaddr(unsigned long ip)
  {
        unsigned short ud2;
@@ -12512,7 +14258,7 @@ index 3b97a80..667ce7a 100644
 +EXPORT_SYMBOL(pax_check_alloca);
 +#endif
 diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
 +EXPORT_SYMBOL(pax_check_alloca);
 +#endif
 diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
-index 19853ad..508ca79 100644
+index 6d728d9..279514e 100644
 --- a/arch/x86/kernel/dumpstack_64.c
 +++ b/arch/x86/kernel/dumpstack_64.c
 @@ -119,9 +119,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
 --- a/arch/x86/kernel/dumpstack_64.c
 +++ b/arch/x86/kernel/dumpstack_64.c
 @@ -119,9 +119,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
@@ -12618,7 +14364,7 @@ index 19853ad..508ca79 100644
 +EXPORT_SYMBOL(pax_check_alloca);
 +#endif
 diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
 +EXPORT_SYMBOL(pax_check_alloca);
 +#endif
 diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
-index cd28a35..2601699 100644
+index cd28a35..c72ed9a 100644
 --- a/arch/x86/kernel/early_printk.c
 +++ b/arch/x86/kernel/early_printk.c
 @@ -7,6 +7,7 @@
 --- a/arch/x86/kernel/early_printk.c
 +++ b/arch/x86/kernel/early_printk.c
 @@ -7,6 +7,7 @@
@@ -12629,15 +14375,6 @@ index cd28a35..2601699 100644
  #include <asm/io.h>
  #include <asm/processor.h>
  #include <asm/fcntl.h>
  #include <asm/io.h>
  #include <asm/processor.h>
  #include <asm/fcntl.h>
-@@ -179,6 +180,8 @@ asmlinkage void early_printk(const char *fmt, ...)
-       int n;
-       va_list ap;
-+      pax_track_stack();
-+
-       va_start(ap, fmt);
-       n = vscnprintf(buf, sizeof(buf), fmt, ap);
-       early_console->write(early_console, buf, n);
 diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
 index f3f6f53..0841b66 100644
 --- a/arch/x86/kernel/entry_32.S
 diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
 index f3f6f53..0841b66 100644
 --- a/arch/x86/kernel/entry_32.S
@@ -13420,7 +15157,7 @@ index f3f6f53..0841b66 100644
  
  /*
 diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
  
  /*
 diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
-index 6419bb0..00440bf 100644
+index faf8d5e..4f16a68 100644
 --- a/arch/x86/kernel/entry_64.S
 +++ b/arch/x86/kernel/entry_64.S
 @@ -55,6 +55,8 @@
 --- a/arch/x86/kernel/entry_64.S
 +++ b/arch/x86/kernel/entry_64.S
 @@ -55,6 +55,8 @@
@@ -13604,9 +15341,9 @@ index 6419bb0..00440bf 100644
 +      call pax_exit_kernel_user
 +#endif
 +#ifdef CONFIG_PAX_RANDKSTACK
 +      call pax_exit_kernel_user
 +#endif
 +#ifdef CONFIG_PAX_RANDKSTACK
-+      push %rax
++      pushq %rax
 +      call pax_randomize_kstack
 +      call pax_randomize_kstack
-+      pop %rax
++      popq %rax
 +#endif
 +      .endm
 +
 +#endif
 +      .endm
 +
@@ -13799,7 +15536,7 @@ index 6419bb0..00440bf 100644
        je 1f
        SWAPGS
        /*
        je 1f
        SWAPGS
        /*
-@@ -350,9 +634,10 @@ ENTRY(save_rest)
+@@ -355,9 +639,10 @@ ENTRY(save_rest)
        movq_cfi r15, R15+16
        movq %r11, 8(%rsp)      /* return address */
        FIXUP_TOP_OF_STACK %r11, 16
        movq_cfi r15, R15+16
        movq %r11, 8(%rsp)      /* return address */
        FIXUP_TOP_OF_STACK %r11, 16
@@ -13811,7 +15548,7 @@ index 6419bb0..00440bf 100644
  
  /* save complete stack frame */
        .pushsection .kprobes.text, "ax"
  
  /* save complete stack frame */
        .pushsection .kprobes.text, "ax"
-@@ -381,9 +666,10 @@ ENTRY(save_paranoid)
+@@ -386,9 +671,10 @@ ENTRY(save_paranoid)
        js 1f   /* negative -> in kernel */
        SWAPGS
        xorl %ebx,%ebx
        js 1f   /* negative -> in kernel */
        SWAPGS
        xorl %ebx,%ebx
@@ -13824,7 +15561,7 @@ index 6419bb0..00440bf 100644
        .popsection
  
  /*
        .popsection
  
  /*
-@@ -405,7 +691,7 @@ ENTRY(ret_from_fork)
+@@ -410,7 +696,7 @@ ENTRY(ret_from_fork)
  
        RESTORE_REST
  
  
        RESTORE_REST
  
@@ -13833,7 +15570,7 @@ index 6419bb0..00440bf 100644
        je   int_ret_from_sys_call
  
        testl $_TIF_IA32, TI_flags(%rcx)        # 32-bit compat task needs IRET
        je   int_ret_from_sys_call
  
        testl $_TIF_IA32, TI_flags(%rcx)        # 32-bit compat task needs IRET
-@@ -415,7 +701,7 @@ ENTRY(ret_from_fork)
+@@ -420,7 +706,7 @@ ENTRY(ret_from_fork)
        jmp ret_from_sys_call                   # go to the SYSRET fastpath
  
        CFI_ENDPROC
        jmp ret_from_sys_call                   # go to the SYSRET fastpath
  
        CFI_ENDPROC
@@ -13842,7 +15579,7 @@ index 6419bb0..00440bf 100644
  
  /*
   * System call entry. Up to 6 arguments in registers are supported.
  
  /*
   * System call entry. Up to 6 arguments in registers are supported.
-@@ -451,7 +737,7 @@ END(ret_from_fork)
+@@ -456,7 +742,7 @@ END(ret_from_fork)
  ENTRY(system_call)
        CFI_STARTPROC   simple
        CFI_SIGNAL_FRAME
  ENTRY(system_call)
        CFI_STARTPROC   simple
        CFI_SIGNAL_FRAME
@@ -13851,7 +15588,7 @@ index 6419bb0..00440bf 100644
        CFI_REGISTER    rip,rcx
        /*CFI_REGISTER  rflags,r11*/
        SWAPGS_UNSAFE_STACK
        CFI_REGISTER    rip,rcx
        /*CFI_REGISTER  rflags,r11*/
        SWAPGS_UNSAFE_STACK
-@@ -464,12 +750,13 @@ ENTRY(system_call_after_swapgs)
+@@ -469,12 +755,13 @@ ENTRY(system_call_after_swapgs)
  
        movq    %rsp,PER_CPU_VAR(old_rsp)
        movq    PER_CPU_VAR(kernel_stack),%rsp
  
        movq    %rsp,PER_CPU_VAR(old_rsp)
        movq    PER_CPU_VAR(kernel_stack),%rsp
@@ -13866,7 +15603,7 @@ index 6419bb0..00440bf 100644
        movq  %rax,ORIG_RAX-ARGOFFSET(%rsp)
        movq  %rcx,RIP-ARGOFFSET(%rsp)
        CFI_REL_OFFSET rip,RIP-ARGOFFSET
        movq  %rax,ORIG_RAX-ARGOFFSET(%rsp)
        movq  %rcx,RIP-ARGOFFSET(%rsp)
        CFI_REL_OFFSET rip,RIP-ARGOFFSET
-@@ -479,7 +766,7 @@ ENTRY(system_call_after_swapgs)
+@@ -484,7 +771,7 @@ ENTRY(system_call_after_swapgs)
  system_call_fastpath:
        cmpq $__NR_syscall_max,%rax
        ja badsys
  system_call_fastpath:
        cmpq $__NR_syscall_max,%rax
        ja badsys
@@ -13875,7 +15612,7 @@ index 6419bb0..00440bf 100644
        call *sys_call_table(,%rax,8)  # XXX:    rip relative
        movq %rax,RAX-ARGOFFSET(%rsp)
  /*
        call *sys_call_table(,%rax,8)  # XXX:    rip relative
        movq %rax,RAX-ARGOFFSET(%rsp)
  /*
-@@ -498,6 +785,8 @@ sysret_check:
+@@ -503,6 +790,8 @@ sysret_check:
        andl %edi,%edx
        jnz  sysret_careful
        CFI_REMEMBER_STATE
        andl %edi,%edx
        jnz  sysret_careful
        CFI_REMEMBER_STATE
@@ -13884,7 +15621,7 @@ index 6419bb0..00440bf 100644
        /*
         * sysretq will re-enable interrupts:
         */
        /*
         * sysretq will re-enable interrupts:
         */
-@@ -549,14 +838,18 @@ badsys:
+@@ -554,14 +843,18 @@ badsys:
         * jump back to the normal fast path.
         */
  auditsys:
         * jump back to the normal fast path.
         */
  auditsys:
@@ -13904,7 +15641,7 @@ index 6419bb0..00440bf 100644
        jmp system_call_fastpath
  
        /*
        jmp system_call_fastpath
  
        /*
-@@ -586,16 +879,20 @@ tracesys:
+@@ -591,16 +884,20 @@ tracesys:
        FIXUP_TOP_OF_STACK %rdi
        movq %rsp,%rdi
        call syscall_trace_enter
        FIXUP_TOP_OF_STACK %rdi
        movq %rsp,%rdi
        call syscall_trace_enter
@@ -13926,7 +15663,7 @@ index 6419bb0..00440bf 100644
        call *sys_call_table(,%rax,8)
        movq %rax,RAX-ARGOFFSET(%rsp)
        /* Use IRET because user could have changed frame */
        call *sys_call_table(,%rax,8)
        movq %rax,RAX-ARGOFFSET(%rsp)
        /* Use IRET because user could have changed frame */
-@@ -607,7 +904,7 @@ tracesys:
+@@ -612,7 +909,7 @@ tracesys:
  GLOBAL(int_ret_from_sys_call)
        DISABLE_INTERRUPTS(CLBR_NONE)
        TRACE_IRQS_OFF
  GLOBAL(int_ret_from_sys_call)
        DISABLE_INTERRUPTS(CLBR_NONE)
        TRACE_IRQS_OFF
@@ -13935,7 +15672,15 @@ index 6419bb0..00440bf 100644
        je retint_restore_args
        movl $_TIF_ALLWORK_MASK,%edi
        /* edi: mask to check */
        je retint_restore_args
        movl $_TIF_ALLWORK_MASK,%edi
        /* edi: mask to check */
-@@ -664,7 +961,7 @@ int_restore_rest:
+@@ -623,6 +920,7 @@ GLOBAL(int_with_check)
+       andl %edi,%edx
+       jnz   int_careful
+       andl    $~TS_COMPAT,TI_status(%rcx)
++      pax_erase_kstack
+       jmp   retint_swapgs
+       /* Either reschedule or signal or syscall exit tracking needed. */
+@@ -669,7 +967,7 @@ int_restore_rest:
        TRACE_IRQS_OFF
        jmp int_with_check
        CFI_ENDPROC
        TRACE_IRQS_OFF
        jmp int_with_check
        CFI_ENDPROC
@@ -13944,7 +15689,7 @@ index 6419bb0..00440bf 100644
  
  /*
   * Certain special system calls that need to save a complete full stack frame.
  
  /*
   * Certain special system calls that need to save a complete full stack frame.
-@@ -680,7 +977,7 @@ ENTRY(\label)
+@@ -685,7 +983,7 @@ ENTRY(\label)
        call \func
        jmp ptregscall_common
        CFI_ENDPROC
        call \func
        jmp ptregscall_common
        CFI_ENDPROC
@@ -13953,7 +15698,7 @@ index 6419bb0..00440bf 100644
        .endm
  
        PTREGSCALL stub_clone, sys_clone, %r8
        .endm
  
        PTREGSCALL stub_clone, sys_clone, %r8
-@@ -698,9 +995,10 @@ ENTRY(ptregscall_common)
+@@ -703,9 +1001,10 @@ ENTRY(ptregscall_common)
        movq_cfi_restore R12+8, r12
        movq_cfi_restore RBP+8, rbp
        movq_cfi_restore RBX+8, rbx
        movq_cfi_restore R12+8, r12
        movq_cfi_restore RBP+8, rbp
        movq_cfi_restore RBX+8, rbx
@@ -13965,7 +15710,7 @@ index 6419bb0..00440bf 100644
  
  ENTRY(stub_execve)
        CFI_STARTPROC
  
  ENTRY(stub_execve)
        CFI_STARTPROC
-@@ -715,7 +1013,7 @@ ENTRY(stub_execve)
+@@ -720,7 +1019,7 @@ ENTRY(stub_execve)
        RESTORE_REST
        jmp int_ret_from_sys_call
        CFI_ENDPROC
        RESTORE_REST
        jmp int_ret_from_sys_call
        CFI_ENDPROC
@@ -13974,7 +15719,7 @@ index 6419bb0..00440bf 100644
  
  /*
   * sigreturn is special because it needs to restore all registers on return.
  
  /*
   * sigreturn is special because it needs to restore all registers on return.
-@@ -733,7 +1031,7 @@ ENTRY(stub_rt_sigreturn)
+@@ -738,7 +1037,7 @@ ENTRY(stub_rt_sigreturn)
        RESTORE_REST
        jmp int_ret_from_sys_call
        CFI_ENDPROC
        RESTORE_REST
        jmp int_ret_from_sys_call
        CFI_ENDPROC
@@ -13983,7 +15728,7 @@ index 6419bb0..00440bf 100644
  
  /*
   * Build the entry stubs and pointer table with some assembler magic.
  
  /*
   * Build the entry stubs and pointer table with some assembler magic.
-@@ -768,7 +1066,7 @@ vector=vector+1
+@@ -773,7 +1072,7 @@ vector=vector+1
  2:    jmp common_interrupt
  .endr
        CFI_ENDPROC
  2:    jmp common_interrupt
  .endr
        CFI_ENDPROC
@@ -13992,10 +15737,10 @@ index 6419bb0..00440bf 100644
  
  .previous
  END(interrupt)
  
  .previous
  END(interrupt)
-@@ -789,6 +1087,16 @@ END(interrupt)
+@@ -793,6 +1092,16 @@ END(interrupt)
+       subq $ORIG_RAX-RBP, %rsp
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-RBP
        SAVE_ARGS_IRQ
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-RBP
        SAVE_ARGS_IRQ
-       PARTIAL_FRAME 0
 +#ifdef CONFIG_PAX_MEMORY_UDEREF
 +      testb $3, CS(%rdi)
 +      jnz 1f
 +#ifdef CONFIG_PAX_MEMORY_UDEREF
 +      testb $3, CS(%rdi)
 +      jnz 1f
@@ -14009,7 +15754,7 @@ index 6419bb0..00440bf 100644
        call \func
        .endm
  
        call \func
        .endm
  
-@@ -820,7 +1128,7 @@ ret_from_intr:
+@@ -824,7 +1133,7 @@ ret_from_intr:
  
  exit_intr:
        GET_THREAD_INFO(%rcx)
  
  exit_intr:
        GET_THREAD_INFO(%rcx)
@@ -14018,12 +15763,11 @@ index 6419bb0..00440bf 100644
        je retint_kernel
  
        /* Interrupt came from user space */
        je retint_kernel
  
        /* Interrupt came from user space */
-@@ -842,12 +1150,16 @@ retint_swapgs:          /* return to user-space */
+@@ -846,12 +1155,15 @@ retint_swapgs:          /* return to user-space */
         * The iretq could re-enable interrupts:
         */
        DISABLE_INTERRUPTS(CLBR_ANY)
 +      pax_exit_kernel_user
         * The iretq could re-enable interrupts:
         */
        DISABLE_INTERRUPTS(CLBR_ANY)
 +      pax_exit_kernel_user
-+      pax_erase_kstack
        TRACE_IRQS_IRETQ
        SWAPGS
        jmp restore_args
        TRACE_IRQS_IRETQ
        SWAPGS
        jmp restore_args
@@ -14035,7 +15779,7 @@ index 6419bb0..00440bf 100644
        /*
         * The iretq could re-enable interrupts:
         */
        /*
         * The iretq could re-enable interrupts:
         */
-@@ -936,7 +1248,7 @@ ENTRY(retint_kernel)
+@@ -940,7 +1252,7 @@ ENTRY(retint_kernel)
  #endif
  
        CFI_ENDPROC
  #endif
  
        CFI_ENDPROC
@@ -14044,7 +15788,7 @@ index 6419bb0..00440bf 100644
  /*
   * End of kprobes section
   */
  /*
   * End of kprobes section
   */
-@@ -952,7 +1264,7 @@ ENTRY(\sym)
+@@ -956,7 +1268,7 @@ ENTRY(\sym)
        interrupt \do_sym
        jmp ret_from_intr
        CFI_ENDPROC
        interrupt \do_sym
        jmp ret_from_intr
        CFI_ENDPROC
@@ -14053,7 +15797,7 @@ index 6419bb0..00440bf 100644
  .endm
  
  #ifdef CONFIG_SMP
  .endm
  
  #ifdef CONFIG_SMP
-@@ -1017,12 +1329,22 @@ ENTRY(\sym)
+@@ -1021,12 +1333,22 @@ ENTRY(\sym)
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call error_entry
        DEFAULT_FRAME 0
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call error_entry
        DEFAULT_FRAME 0
@@ -14077,7 +15821,7 @@ index 6419bb0..00440bf 100644
  .endm
  
  .macro paranoidzeroentry sym do_sym
  .endm
  
  .macro paranoidzeroentry sym do_sym
-@@ -1034,15 +1356,25 @@ ENTRY(\sym)
+@@ -1038,15 +1360,25 @@ ENTRY(\sym)
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call save_paranoid
        TRACE_IRQS_OFF
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call save_paranoid
        TRACE_IRQS_OFF
@@ -14105,7 +15849,7 @@ index 6419bb0..00440bf 100644
  .macro paranoidzeroentry_ist sym do_sym ist
  ENTRY(\sym)
        INTR_FRAME
  .macro paranoidzeroentry_ist sym do_sym ist
  ENTRY(\sym)
        INTR_FRAME
-@@ -1052,14 +1384,30 @@ ENTRY(\sym)
+@@ -1056,14 +1388,30 @@ ENTRY(\sym)
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call save_paranoid
        TRACE_IRQS_OFF
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call save_paranoid
        TRACE_IRQS_OFF
@@ -14137,7 +15881,7 @@ index 6419bb0..00440bf 100644
  .endm
  
  .macro errorentry sym do_sym
  .endm
  
  .macro errorentry sym do_sym
-@@ -1070,13 +1418,23 @@ ENTRY(\sym)
+@@ -1074,13 +1422,23 @@ ENTRY(\sym)
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call error_entry
        DEFAULT_FRAME 0
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call error_entry
        DEFAULT_FRAME 0
@@ -14162,7 +15906,7 @@ index 6419bb0..00440bf 100644
  .endm
  
        /* error code is on the stack already */
  .endm
  
        /* error code is on the stack already */
-@@ -1089,13 +1447,23 @@ ENTRY(\sym)
+@@ -1093,13 +1451,23 @@ ENTRY(\sym)
        call save_paranoid
        DEFAULT_FRAME 0
        TRACE_IRQS_OFF
        call save_paranoid
        DEFAULT_FRAME 0
        TRACE_IRQS_OFF
@@ -14187,7 +15931,7 @@ index 6419bb0..00440bf 100644
  .endm
  
  zeroentry divide_error do_divide_error
  .endm
  
  zeroentry divide_error do_divide_error
-@@ -1125,9 +1493,10 @@ gs_change:
+@@ -1129,9 +1497,10 @@ gs_change:
  2:    mfence          /* workaround */
        SWAPGS
        popfq_cfi
  2:    mfence          /* workaround */
        SWAPGS
        popfq_cfi
@@ -14199,7 +15943,7 @@ index 6419bb0..00440bf 100644
  
        .section __ex_table,"a"
        .align 8
  
        .section __ex_table,"a"
        .align 8
-@@ -1149,13 +1518,14 @@ ENTRY(kernel_thread_helper)
+@@ -1153,13 +1522,14 @@ ENTRY(kernel_thread_helper)
         * Here we are in the child and the registers are set as they were
         * at kernel_thread() invocation in the parent.
         */
         * Here we are in the child and the registers are set as they were
         * at kernel_thread() invocation in the parent.
         */
@@ -14215,7 +15959,7 @@ index 6419bb0..00440bf 100644
  
  /*
   * execve(). This function needs to use IRET, not SYSRET, to set up all state properly.
  
  /*
   * execve(). This function needs to use IRET, not SYSRET, to set up all state properly.
-@@ -1182,11 +1552,11 @@ ENTRY(kernel_execve)
+@@ -1186,11 +1556,11 @@ ENTRY(kernel_execve)
        RESTORE_REST
        testq %rax,%rax
        je int_ret_from_sys_call
        RESTORE_REST
        testq %rax,%rax
        je int_ret_from_sys_call
@@ -14229,7 +15973,7 @@ index 6419bb0..00440bf 100644
  
  /* Call softirq on interrupt stack. Interrupts are off. */
  ENTRY(call_softirq)
  
  /* Call softirq on interrupt stack. Interrupts are off. */
  ENTRY(call_softirq)
-@@ -1204,9 +1574,10 @@ ENTRY(call_softirq)
+@@ -1208,9 +1578,10 @@ ENTRY(call_softirq)
        CFI_DEF_CFA_REGISTER    rsp
        CFI_ADJUST_CFA_OFFSET   -8
        decl PER_CPU_VAR(irq_count)
        CFI_DEF_CFA_REGISTER    rsp
        CFI_ADJUST_CFA_OFFSET   -8
        decl PER_CPU_VAR(irq_count)
@@ -14241,7 +15985,7 @@ index 6419bb0..00440bf 100644
  
  #ifdef CONFIG_XEN
  zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
  
  #ifdef CONFIG_XEN
  zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
-@@ -1244,7 +1615,7 @@ ENTRY(xen_do_hypervisor_callback)   # do_hypervisor_callback(struct *pt_regs)
+@@ -1248,7 +1619,7 @@ ENTRY(xen_do_hypervisor_callback)   # do_hypervisor_callback(struct *pt_regs)
        decl PER_CPU_VAR(irq_count)
        jmp  error_exit
        CFI_ENDPROC
        decl PER_CPU_VAR(irq_count)
        jmp  error_exit
        CFI_ENDPROC
@@ -14250,7 +15994,7 @@ index 6419bb0..00440bf 100644
  
  /*
   * Hypervisor uses this for application faults while it executes.
  
  /*
   * Hypervisor uses this for application faults while it executes.
-@@ -1303,7 +1674,7 @@ ENTRY(xen_failsafe_callback)
+@@ -1307,7 +1678,7 @@ ENTRY(xen_failsafe_callback)
        SAVE_ALL
        jmp error_exit
        CFI_ENDPROC
        SAVE_ALL
        jmp error_exit
        CFI_ENDPROC
@@ -14259,7 +16003,7 @@ index 6419bb0..00440bf 100644
  
  apicinterrupt XEN_HVM_EVTCHN_CALLBACK \
        xen_hvm_callback_vector xen_evtchn_do_upcall
  
  apicinterrupt XEN_HVM_EVTCHN_CALLBACK \
        xen_hvm_callback_vector xen_evtchn_do_upcall
-@@ -1352,16 +1723,31 @@ ENTRY(paranoid_exit)
+@@ -1356,16 +1727,31 @@ ENTRY(paranoid_exit)
        TRACE_IRQS_OFF
        testl %ebx,%ebx                         /* swapgs needed? */
        jnz paranoid_restore
        TRACE_IRQS_OFF
        testl %ebx,%ebx                         /* swapgs needed? */
        jnz paranoid_restore
@@ -14292,7 +16036,7 @@ index 6419bb0..00440bf 100644
        jmp irq_return
  paranoid_userspace:
        GET_THREAD_INFO(%rcx)
        jmp irq_return
  paranoid_userspace:
        GET_THREAD_INFO(%rcx)
-@@ -1390,7 +1776,7 @@ paranoid_schedule:
+@@ -1394,7 +1780,7 @@ paranoid_schedule:
        TRACE_IRQS_OFF
        jmp paranoid_userspace
        CFI_ENDPROC
        TRACE_IRQS_OFF
        jmp paranoid_userspace
        CFI_ENDPROC
@@ -14301,7 +16045,7 @@ index 6419bb0..00440bf 100644
  
  /*
   * Exception entry point. This expects an error code/orig_rax on the stack.
  
  /*
   * Exception entry point. This expects an error code/orig_rax on the stack.
-@@ -1417,12 +1803,13 @@ ENTRY(error_entry)
+@@ -1421,12 +1807,13 @@ ENTRY(error_entry)
        movq_cfi r14, R14+8
        movq_cfi r15, R15+8
        xorl %ebx,%ebx
        movq_cfi r14, R14+8
        movq_cfi r15, R15+8
        xorl %ebx,%ebx
@@ -14316,7 +16060,7 @@ index 6419bb0..00440bf 100644
        ret
  
  /*
        ret
  
  /*
-@@ -1449,7 +1836,7 @@ bstep_iret:
+@@ -1453,7 +1840,7 @@ bstep_iret:
        movq %rcx,RIP+8(%rsp)
        jmp error_swapgs
        CFI_ENDPROC
        movq %rcx,RIP+8(%rsp)
        jmp error_swapgs
        CFI_ENDPROC
@@ -14325,7 +16069,7 @@ index 6419bb0..00440bf 100644
  
  
  /* ebx:       no swapgs flag (1: don't need swapgs, 0: need it) */
  
  
  /* ebx:       no swapgs flag (1: don't need swapgs, 0: need it) */
-@@ -1469,7 +1856,7 @@ ENTRY(error_exit)
+@@ -1473,7 +1860,7 @@ ENTRY(error_exit)
        jnz retint_careful
        jmp retint_swapgs
        CFI_ENDPROC
        jnz retint_careful
        jmp retint_swapgs
        CFI_ENDPROC
@@ -14334,7 +16078,7 @@ index 6419bb0..00440bf 100644
  
  
        /* runs on exception stack */
  
  
        /* runs on exception stack */
-@@ -1481,6 +1868,16 @@ ENTRY(nmi)
+@@ -1485,6 +1872,16 @@ ENTRY(nmi)
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call save_paranoid
        DEFAULT_FRAME 0
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        call save_paranoid
        DEFAULT_FRAME 0
@@ -14351,7 +16095,7 @@ index 6419bb0..00440bf 100644
        /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
        movq %rsp,%rdi
        movq $-1,%rsi
        /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
        movq %rsp,%rdi
        movq $-1,%rsi
-@@ -1491,12 +1888,28 @@ ENTRY(nmi)
+@@ -1495,12 +1892,28 @@ ENTRY(nmi)
        DISABLE_INTERRUPTS(CLBR_NONE)
        testl %ebx,%ebx                         /* swapgs needed? */
        jnz nmi_restore
        DISABLE_INTERRUPTS(CLBR_NONE)
        testl %ebx,%ebx                         /* swapgs needed? */
        jnz nmi_restore
@@ -14381,7 +16125,7 @@ index 6419bb0..00440bf 100644
        jmp irq_return
  nmi_userspace:
        GET_THREAD_INFO(%rcx)
        jmp irq_return
  nmi_userspace:
        GET_THREAD_INFO(%rcx)
-@@ -1525,14 +1938,14 @@ nmi_schedule:
+@@ -1529,14 +1942,14 @@ nmi_schedule:
        jmp paranoid_exit
        CFI_ENDPROC
  #endif
        jmp paranoid_exit
        CFI_ENDPROC
  #endif
@@ -15236,6 +16980,79 @@ index 9c3bd4a..e1d9b35 100644
 +#ifdef CONFIG_PAX_KERNEXEC
 +EXPORT_SYMBOL(__LOAD_PHYSICAL_ADDR);
 +#endif
 +#ifdef CONFIG_PAX_KERNEXEC
 +EXPORT_SYMBOL(__LOAD_PHYSICAL_ADDR);
 +#endif
+diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
+index 739d859..d1d6be7 100644
+--- a/arch/x86/kernel/i387.c
++++ b/arch/x86/kernel/i387.c
+@@ -188,6 +188,9 @@ int xfpregs_active(struct task_struct *target, const struct user_regset *regset)
+ int xfpregs_get(struct task_struct *target, const struct user_regset *regset,
+               unsigned int pos, unsigned int count,
++              void *kbuf, void __user *ubuf) __size_overflow(4);
++int xfpregs_get(struct task_struct *target, const struct user_regset *regset,
++              unsigned int pos, unsigned int count,
+               void *kbuf, void __user *ubuf)
+ {
+       int ret;
+@@ -207,6 +210,9 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset,
+ int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
+               unsigned int pos, unsigned int count,
++              const void *kbuf, const void __user *ubuf) __size_overflow(4);
++int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
++              unsigned int pos, unsigned int count,
+               const void *kbuf, const void __user *ubuf)
+ {
+       int ret;
+@@ -240,6 +246,9 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
+ int xstateregs_get(struct task_struct *target, const struct user_regset *regset,
+               unsigned int pos, unsigned int count,
++              void *kbuf, void __user *ubuf) __size_overflow(4);
++int xstateregs_get(struct task_struct *target, const struct user_regset *regset,
++              unsigned int pos, unsigned int count,
+               void *kbuf, void __user *ubuf)
+ {
+       int ret;
+@@ -269,6 +278,9 @@ int xstateregs_get(struct task_struct *target, const struct user_regset *regset,
+ int xstateregs_set(struct task_struct *target, const struct user_regset *regset,
+                 unsigned int pos, unsigned int count,
++                const void *kbuf, const void __user *ubuf) __size_overflow(4);
++int xstateregs_set(struct task_struct *target, const struct user_regset *regset,
++                unsigned int pos, unsigned int count,
+                 const void *kbuf, const void __user *ubuf)
+ {
+       int ret;
+@@ -439,6 +451,9 @@ static void convert_to_fxsr(struct task_struct *tsk,
+ int fpregs_get(struct task_struct *target, const struct user_regset *regset,
+              unsigned int pos, unsigned int count,
++             void *kbuf, void __user *ubuf) __size_overflow(3,4);
++int fpregs_get(struct task_struct *target, const struct user_regset *regset,
++             unsigned int pos, unsigned int count,
+              void *kbuf, void __user *ubuf)
+ {
+       struct user_i387_ia32_struct env;
+@@ -471,6 +486,9 @@ int fpregs_get(struct task_struct *target, const struct user_regset *regset,
+ int fpregs_set(struct task_struct *target, const struct user_regset *regset,
+              unsigned int pos, unsigned int count,
++             const void *kbuf, const void __user *ubuf) __size_overflow(3,4);
++int fpregs_set(struct task_struct *target, const struct user_regset *regset,
++             unsigned int pos, unsigned int count,
+              const void *kbuf, const void __user *ubuf)
+ {
+       struct user_i387_ia32_struct env;
+@@ -619,6 +637,8 @@ static inline int restore_i387_fsave(struct _fpstate_ia32 __user *buf)
+ }
+ static int restore_i387_fxsave(struct _fpstate_ia32 __user *buf,
++                             unsigned int size) __size_overflow(2);
++static int restore_i387_fxsave(struct _fpstate_ia32 __user *buf,
+                              unsigned int size)
+ {
+       struct task_struct *tsk = current;
 diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
 index 6104852..6114160 100644
 --- a/arch/x86/kernel/i8259.c
 diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
 index 6104852..6114160 100644
 --- a/arch/x86/kernel/i8259.c
@@ -15319,10 +17136,10 @@ index 8c96897..be66bfa 100644
                        return -EPERM;
        }
 diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
                        return -EPERM;
        }
 diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
-index 6c0802e..bea25ae 100644
+index 429e0c9..17b3ece 100644
 --- a/arch/x86/kernel/irq.c
 +++ b/arch/x86/kernel/irq.c
 --- a/arch/x86/kernel/irq.c
 +++ b/arch/x86/kernel/irq.c
-@@ -17,7 +17,7 @@
+@@ -18,7 +18,7 @@
  #include <asm/mce.h>
  #include <asm/hw_irq.h>
  
  #include <asm/mce.h>
  #include <asm/hw_irq.h>
  
@@ -15331,7 +17148,7 @@ index 6c0802e..bea25ae 100644
  
  /* Function pointer for generic interrupt vector handling */
  void (*x86_platform_ipi_callback)(void) = NULL;
  
  /* Function pointer for generic interrupt vector handling */
  void (*x86_platform_ipi_callback)(void) = NULL;
-@@ -116,9 +116,9 @@ int arch_show_interrupts(struct seq_file *p, int prec)
+@@ -117,9 +117,9 @@ int arch_show_interrupts(struct seq_file *p, int prec)
                seq_printf(p, "%10u ", per_cpu(mce_poll_count, j));
        seq_printf(p, "  Machine check polls\n");
  #endif
                seq_printf(p, "%10u ", per_cpu(mce_poll_count, j));
        seq_printf(p, "  Machine check polls\n");
  #endif
@@ -15343,7 +17160,7 @@ index 6c0802e..bea25ae 100644
  #endif
        return 0;
  }
  #endif
        return 0;
  }
-@@ -158,10 +158,10 @@ u64 arch_irq_stat_cpu(unsigned int cpu)
+@@ -159,10 +159,10 @@ u64 arch_irq_stat_cpu(unsigned int cpu)
  
  u64 arch_irq_stat(void)
  {
  
  u64 arch_irq_stat(void)
  {
@@ -15499,8 +17316,21 @@ index 7209070..cbcd71a 100644
                /*
                 * Shouldn't happen, we returned above if in_interrupt():
                 */
                /*
                 * Shouldn't happen, we returned above if in_interrupt():
                 */
+diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
+index 69bca46..0bac999 100644
+--- a/arch/x86/kernel/irq_64.c
++++ b/arch/x86/kernel/irq_64.c
+@@ -38,7 +38,7 @@ static inline void stack_overflow_check(struct pt_regs *regs)
+ #ifdef CONFIG_DEBUG_STACKOVERFLOW
+       u64 curbase = (u64)task_stack_page(current);
+-      if (user_mode_vm(regs))
++      if (user_mode(regs))
+               return;
+       WARN_ONCE(regs->sp >= curbase &&
 diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
 diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
-index 00354d4..187ae44 100644
+index faba577..93b9e71 100644
 --- a/arch/x86/kernel/kgdb.c
 +++ b/arch/x86/kernel/kgdb.c
 @@ -124,11 +124,11 @@ char *dbg_get_reg(int regno, void *mem, struct pt_regs *regs)
 --- a/arch/x86/kernel/kgdb.c
 +++ b/arch/x86/kernel/kgdb.c
 @@ -124,11 +124,11 @@ char *dbg_get_reg(int regno, void *mem, struct pt_regs *regs)
@@ -15532,9 +17362,9 @@ index 00354d4..187ae44 100644
                                   raw_smp_processor_id());
                }
  
                                   raw_smp_processor_id());
                }
  
-@@ -534,7 +534,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd)
-               return NOTIFY_DONE;
+@@ -543,7 +543,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd)
  
  
+       switch (cmd) {
        case DIE_DEBUG:
 -              if (atomic_read(&kgdb_cpu_doing_single_step) != -1) {
 +              if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1) {
        case DIE_DEBUG:
 -              if (atomic_read(&kgdb_cpu_doing_single_step) != -1) {
 +              if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1) {
@@ -15542,10 +17372,10 @@ index 00354d4..187ae44 100644
                                return single_step_cont(regs, args);
                        break;
 diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
                                return single_step_cont(regs, args);
                        break;
 diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
-index 794bc95..c6e29e9 100644
+index 7da647d..56fe348 100644
 --- a/arch/x86/kernel/kprobes.c
 +++ b/arch/x86/kernel/kprobes.c
 --- a/arch/x86/kernel/kprobes.c
 +++ b/arch/x86/kernel/kprobes.c
-@@ -117,8 +117,11 @@ static void __kprobes __synthesize_relative_insn(void *from, void *to, u8 op)
+@@ -118,8 +118,11 @@ static void __kprobes __synthesize_relative_insn(void *from, void *to, u8 op)
        } __attribute__((packed)) *insn;
  
        insn = (struct __arch_relative_insn *)from;
        } __attribute__((packed)) *insn;
  
        insn = (struct __arch_relative_insn *)from;
@@ -15557,7 +17387,7 @@ index 794bc95..c6e29e9 100644
  }
  
  /* Insert a jump instruction at address 'from', which jumps to address 'to'.*/
  }
  
  /* Insert a jump instruction at address 'from', which jumps to address 'to'.*/
-@@ -155,7 +158,7 @@ static int __kprobes can_boost(kprobe_opcode_t *opcodes)
+@@ -156,7 +159,7 @@ static int __kprobes can_boost(kprobe_opcode_t *opcodes)
        kprobe_opcode_t opcode;
        kprobe_opcode_t *orig_opcodes = opcodes;
  
        kprobe_opcode_t opcode;
        kprobe_opcode_t *orig_opcodes = opcodes;
  
@@ -15566,7 +17396,7 @@ index 794bc95..c6e29e9 100644
                return 0;       /* Page fault may occur on this address. */
  
  retry:
                return 0;       /* Page fault may occur on this address. */
  
  retry:
-@@ -316,7 +319,9 @@ static int __kprobes __copy_instruction(u8 *dest, u8 *src, int recover)
+@@ -317,7 +320,9 @@ static int __kprobes __copy_instruction(u8 *dest, u8 *src, int recover)
                }
        }
        insn_get_length(&insn);
                }
        }
        insn_get_length(&insn);
@@ -15576,7 +17406,7 @@ index 794bc95..c6e29e9 100644
  
  #ifdef CONFIG_X86_64
        if (insn_rip_relative(&insn)) {
  
  #ifdef CONFIG_X86_64
        if (insn_rip_relative(&insn)) {
-@@ -340,7 +345,9 @@ static int __kprobes __copy_instruction(u8 *dest, u8 *src, int recover)
+@@ -341,7 +346,9 @@ static int __kprobes __copy_instruction(u8 *dest, u8 *src, int recover)
                          (u8 *) dest;
                BUG_ON((s64) (s32) newdisp != newdisp); /* Sanity check.  */
                disp = (u8 *) dest + insn_offset_displacement(&insn);
                          (u8 *) dest;
                BUG_ON((s64) (s32) newdisp != newdisp); /* Sanity check.  */
                disp = (u8 *) dest + insn_offset_displacement(&insn);
@@ -15586,7 +17416,7 @@ index 794bc95..c6e29e9 100644
        }
  #endif
        return insn.length;
        }
  #endif
        return insn.length;
-@@ -354,12 +361,12 @@ static void __kprobes arch_copy_kprobe(struct kprobe *p)
+@@ -355,12 +362,12 @@ static void __kprobes arch_copy_kprobe(struct kprobe *p)
         */
        __copy_instruction(p->ainsn.insn, p->addr, 0);
  
         */
        __copy_instruction(p->ainsn.insn, p->addr, 0);
  
@@ -15601,7 +17431,7 @@ index 794bc95..c6e29e9 100644
  }
  
  int __kprobes arch_prepare_kprobe(struct kprobe *p)
  }
  
  int __kprobes arch_prepare_kprobe(struct kprobe *p)
-@@ -476,7 +483,7 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
+@@ -477,7 +484,7 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
                 * nor set current_kprobe, because it doesn't use single
                 * stepping.
                 */
                 * nor set current_kprobe, because it doesn't use single
                 * stepping.
                 */
@@ -15610,7 +17440,7 @@ index 794bc95..c6e29e9 100644
                preempt_enable_no_resched();
                return;
        }
                preempt_enable_no_resched();
                return;
        }
-@@ -495,7 +502,7 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
+@@ -496,7 +503,7 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
        if (p->opcode == BREAKPOINT_INSTRUCTION)
                regs->ip = (unsigned long)p->addr;
        else
        if (p->opcode == BREAKPOINT_INSTRUCTION)
                regs->ip = (unsigned long)p->addr;
        else
@@ -15619,7 +17449,7 @@ index 794bc95..c6e29e9 100644
  }
  
  /*
  }
  
  /*
-@@ -574,7 +581,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
+@@ -575,7 +582,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
                                setup_singlestep(p, regs, kcb, 0);
                        return 1;
                }
                                setup_singlestep(p, regs, kcb, 0);
                        return 1;
                }
@@ -15628,17 +17458,17 @@ index 794bc95..c6e29e9 100644
                /*
                 * The breakpoint instruction was removed right
                 * after we hit it.  Another cpu has removed
                /*
                 * The breakpoint instruction was removed right
                 * after we hit it.  Another cpu has removed
-@@ -682,6 +689,9 @@ static void __used __kprobes kretprobe_trampoline_holder(void)
+@@ -683,6 +690,9 @@ static void __used __kprobes kretprobe_trampoline_holder(void)
                        "       movq %rax, 152(%rsp)\n"
                        RESTORE_REGS_STRING
                        "       popfq\n"
                        "       movq %rax, 152(%rsp)\n"
                        RESTORE_REGS_STRING
                        "       popfq\n"
-+#ifdef CONFIG_PAX_KERNEXEC_PLUGIN
++#ifdef KERNEXEC_PLUGIN
 +                      "       btsq $63,(%rsp)\n"
 +#endif
  #else
                        "       pushf\n"
                        SAVE_REGS_STRING
 +                      "       btsq $63,(%rsp)\n"
 +#endif
  #else
                        "       pushf\n"
                        SAVE_REGS_STRING
-@@ -819,7 +829,7 @@ static void __kprobes resume_execution(struct kprobe *p,
+@@ -820,7 +830,7 @@ static void __kprobes resume_execution(struct kprobe *p,
                struct pt_regs *regs, struct kprobe_ctlblk *kcb)
  {
        unsigned long *tos = stack_addr(regs);
                struct pt_regs *regs, struct kprobe_ctlblk *kcb)
  {
        unsigned long *tos = stack_addr(regs);
@@ -15647,7 +17477,7 @@ index 794bc95..c6e29e9 100644
        unsigned long orig_ip = (unsigned long)p->addr;
        kprobe_opcode_t *insn = p->ainsn.insn;
  
        unsigned long orig_ip = (unsigned long)p->addr;
        kprobe_opcode_t *insn = p->ainsn.insn;
  
-@@ -1001,7 +1011,7 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
+@@ -1002,7 +1012,7 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
        struct die_args *args = data;
        int ret = NOTIFY_DONE;
  
        struct die_args *args = data;
        int ret = NOTIFY_DONE;
  
@@ -15656,7 +17486,7 @@ index 794bc95..c6e29e9 100644
                return ret;
  
        switch (val) {
                return ret;
  
        switch (val) {
-@@ -1383,7 +1393,7 @@ int __kprobes arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
+@@ -1384,7 +1394,7 @@ int __kprobes arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
         * Verify if the address gap is in 2GB range, because this uses
         * a relative jump.
         */
         * Verify if the address gap is in 2GB range, because this uses
         * a relative jump.
         */
@@ -15665,7 +17495,7 @@ index 794bc95..c6e29e9 100644
        if (abs(rel) > 0x7fffffff)
                return -ERANGE;
  
        if (abs(rel) > 0x7fffffff)
                return -ERANGE;
  
-@@ -1404,11 +1414,11 @@ int __kprobes arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
+@@ -1405,11 +1415,11 @@ int __kprobes arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
        synthesize_set_arg1(buf + TMPL_MOVE_IDX, (unsigned long)op);
  
        /* Set probe function call */
        synthesize_set_arg1(buf + TMPL_MOVE_IDX, (unsigned long)op);
  
        /* Set probe function call */
@@ -15679,7 +17509,7 @@ index 794bc95..c6e29e9 100644
  
        flush_icache_range((unsigned long) buf,
                           (unsigned long) buf + TMPL_END_IDX +
  
        flush_icache_range((unsigned long) buf,
                           (unsigned long) buf + TMPL_END_IDX +
-@@ -1430,7 +1440,7 @@ static void __kprobes setup_optimize_kprobe(struct text_poke_param *tprm,
+@@ -1431,7 +1441,7 @@ static void __kprobes setup_optimize_kprobe(struct text_poke_param *tprm,
                        ((long)op->kp.addr + RELATIVEJUMP_SIZE));
  
        /* Backup instructions which will be replaced by jump address */
                        ((long)op->kp.addr + RELATIVEJUMP_SIZE));
  
        /* Backup instructions which will be replaced by jump address */
@@ -15701,7 +17531,7 @@ index a9c2116..a52d4fc 100644
  #endif
                pv_mmu_ops.flush_tlb_user = kvm_flush_tlb;
 diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
  #endif
                pv_mmu_ops.flush_tlb_user = kvm_flush_tlb;
 diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
-index ea69726..604d066 100644
+index ea69726..8b497c9 100644
 --- a/arch/x86/kernel/ldt.c
 +++ b/arch/x86/kernel/ldt.c
 @@ -67,13 +67,13 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload)
 --- a/arch/x86/kernel/ldt.c
 +++ b/arch/x86/kernel/ldt.c
 @@ -67,13 +67,13 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload)
@@ -15754,7 +17584,15 @@ index ea69726..604d066 100644
        return retval;
  }
  
        return retval;
  }
  
-@@ -230,6 +248,13 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
+@@ -141,6 +159,7 @@ void destroy_context(struct mm_struct *mm)
+       }
+ }
++static int read_ldt(void __user *ptr, unsigned long bytecount) __size_overflow(2);
+ static int read_ldt(void __user *ptr, unsigned long bytecount)
+ {
+       int err;
+@@ -230,6 +249,13 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
                }
        }
  
                }
        }
  
@@ -15800,11 +17638,14 @@ index a3fa43b..8966f4c 100644
        relocate_kernel_ptr = control_page;
        page_list[PA_CONTROL_PAGE] = __pa(control_page);
 diff --git a/arch/x86/kernel/microcode_intel.c b/arch/x86/kernel/microcode_intel.c
        relocate_kernel_ptr = control_page;
        page_list[PA_CONTROL_PAGE] = __pa(control_page);
 diff --git a/arch/x86/kernel/microcode_intel.c b/arch/x86/kernel/microcode_intel.c
-index 1a1b606..5c89b55 100644
+index 3ca42d0..79d24cd 100644
 --- a/arch/x86/kernel/microcode_intel.c
 +++ b/arch/x86/kernel/microcode_intel.c
 --- a/arch/x86/kernel/microcode_intel.c
 +++ b/arch/x86/kernel/microcode_intel.c
-@@ -440,13 +440,13 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device)
+@@ -434,15 +434,16 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device)
+       return ret;
+ }
  
  
++static int get_ucode_user(void *to, const void *from, size_t n) __size_overflow(3);
  static int get_ucode_user(void *to, const void *from, size_t n)
  {
 -      return copy_from_user(to, from, n);
  static int get_ucode_user(void *to, const void *from, size_t n)
  {
 -      return copy_from_user(to, from, n);
@@ -15820,7 +17661,7 @@ index 1a1b606..5c89b55 100644
  
  static void microcode_fini_cpu(int cpu)
 diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
  
  static void microcode_fini_cpu(int cpu)
 diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
-index 925179f..85bec6c 100644
+index 925179f..267ac7a 100644
 --- a/arch/x86/kernel/module.c
 +++ b/arch/x86/kernel/module.c
 @@ -36,15 +36,60 @@
 --- a/arch/x86/kernel/module.c
 +++ b/arch/x86/kernel/module.c
 @@ -36,15 +36,60 @@
@@ -15830,7 +17671,8 @@ index 925179f..85bec6c 100644
 -void *module_alloc(unsigned long size)
 +static inline void *__module_alloc(unsigned long size, pgprot_t prot)
  {
 -void *module_alloc(unsigned long size)
 +static inline void *__module_alloc(unsigned long size, pgprot_t prot)
  {
-       if (PAGE_ALIGN(size) > MODULES_LEN)
+-      if (PAGE_ALIGN(size) > MODULES_LEN)
++      if (size == 0 || PAGE_ALIGN(size) > MODULES_LEN)
                return NULL;
        return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END,
 -                              GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC,
                return NULL;
        return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END,
 -                              GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC,
@@ -15955,6 +17797,28 @@ index 925179f..85bec6c 100644
  #if 0
                        if ((s64)val != *(s32 *)loc)
                                goto overflow;
  #if 0
                        if ((s64)val != *(s32 *)loc)
                                goto overflow;
+diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
+index e88f37b..1353db6 100644
+--- a/arch/x86/kernel/nmi.c
++++ b/arch/x86/kernel/nmi.c
+@@ -408,6 +408,17 @@ static notrace __kprobes void default_do_nmi(struct pt_regs *regs)
+ dotraplinkage notrace __kprobes void
+ do_nmi(struct pt_regs *regs, long error_code)
+ {
++
++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
++      if (!user_mode(regs)) {
++              unsigned long cs = regs->cs & 0xFFFF;
++              unsigned long ip = ktva_ktla(regs->ip);
++
++              if ((cs == __KERNEL_CS || cs == __KERNEXEC_KERNEL_CS) && ip <= (unsigned long)_etext)
++                      regs->ip = ip;
++      }
++#endif
++
+       nmi_enter();
+       inc_irq_stat(__nmi_count);
 diff --git a/arch/x86/kernel/paravirt-spinlocks.c b/arch/x86/kernel/paravirt-spinlocks.c
 index 676b8c7..870ba04 100644
 --- a/arch/x86/kernel/paravirt-spinlocks.c
 diff --git a/arch/x86/kernel/paravirt-spinlocks.c b/arch/x86/kernel/paravirt-spinlocks.c
 index 676b8c7..870ba04 100644
 --- a/arch/x86/kernel/paravirt-spinlocks.c
@@ -15969,7 +17833,7 @@ index 676b8c7..870ba04 100644
        .spin_is_locked = __ticket_spin_is_locked,
        .spin_is_contended = __ticket_spin_is_contended,
 diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
        .spin_is_locked = __ticket_spin_is_locked,
        .spin_is_contended = __ticket_spin_is_contended,
 diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
-index d90272e..2d54e8e 100644
+index d90272e..6bb013b 100644
 --- a/arch/x86/kernel/paravirt.c
 +++ b/arch/x86/kernel/paravirt.c
 @@ -53,6 +53,9 @@ u64 _paravirt_ident_64(u64 x)
 --- a/arch/x86/kernel/paravirt.c
 +++ b/arch/x86/kernel/paravirt.c
 @@ -53,6 +53,9 @@ u64 _paravirt_ident_64(u64 x)
@@ -15982,17 +17846,7 @@ index d90272e..2d54e8e 100644
  
  void __init default_banner(void)
  {
  
  void __init default_banner(void)
  {
-@@ -133,6 +136,9 @@ static void *get_call_destination(u8 type)
-               .pv_lock_ops = pv_lock_ops,
- #endif
-       };
-+
-+      pax_track_stack();
-+
-       return *((void **)&tmpl + type);
- }
-@@ -145,15 +151,19 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
+@@ -145,15 +148,19 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
        if (opfunc == NULL)
                /* If there's no function, patch it with a ud2a (BUG) */
                ret = paravirt_patch_insns(insnbuf, len, ud2a, ud2a+sizeof(ud2a));
        if (opfunc == NULL)
                /* If there's no function, patch it with a ud2a (BUG) */
                ret = paravirt_patch_insns(insnbuf, len, ud2a, ud2a+sizeof(ud2a));
@@ -16015,7 +17869,7 @@ index d90272e..2d54e8e 100644
  
        else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) ||
                 type == PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit) ||
  
        else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) ||
                 type == PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit) ||
-@@ -178,7 +188,7 @@ unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
+@@ -178,7 +185,7 @@ unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
        if (insn_len > len || start == NULL)
                insn_len = len;
        else
        if (insn_len > len || start == NULL)
                insn_len = len;
        else
@@ -16024,7 +17878,7 @@ index d90272e..2d54e8e 100644
  
        return insn_len;
  }
  
        return insn_len;
  }
-@@ -302,7 +312,7 @@ void arch_flush_lazy_mmu_mode(void)
+@@ -302,7 +309,7 @@ void arch_flush_lazy_mmu_mode(void)
        preempt_enable();
  }
  
        preempt_enable();
  }
  
@@ -16033,7 +17887,7 @@ index d90272e..2d54e8e 100644
        .name = "bare hardware",
        .paravirt_enabled = 0,
        .kernel_rpl = 0,
        .name = "bare hardware",
        .paravirt_enabled = 0,
        .kernel_rpl = 0,
-@@ -313,16 +323,16 @@ struct pv_info pv_info = {
+@@ -313,16 +320,16 @@ struct pv_info pv_info = {
  #endif
  };
  
  #endif
  };
  
@@ -16053,7 +17907,7 @@ index d90272e..2d54e8e 100644
        .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
        .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
        .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
        .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
        .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
        .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
-@@ -334,7 +344,7 @@ struct pv_irq_ops pv_irq_ops = {
+@@ -334,7 +341,7 @@ struct pv_irq_ops pv_irq_ops = {
  #endif
  };
  
  #endif
  };
  
@@ -16062,7 +17916,7 @@ index d90272e..2d54e8e 100644
        .cpuid = native_cpuid,
        .get_debugreg = native_get_debugreg,
        .set_debugreg = native_set_debugreg,
        .cpuid = native_cpuid,
        .get_debugreg = native_get_debugreg,
        .set_debugreg = native_set_debugreg,
-@@ -395,21 +405,26 @@ struct pv_cpu_ops pv_cpu_ops = {
+@@ -395,21 +402,26 @@ struct pv_cpu_ops pv_cpu_ops = {
        .end_context_switch = paravirt_nop,
  };
  
        .end_context_switch = paravirt_nop,
  };
  
@@ -16092,7 +17946,7 @@ index d90272e..2d54e8e 100644
  
        .read_cr2 = native_read_cr2,
        .write_cr2 = native_write_cr2,
  
        .read_cr2 = native_read_cr2,
        .write_cr2 = native_write_cr2,
-@@ -459,6 +474,7 @@ struct pv_mmu_ops pv_mmu_ops = {
+@@ -459,6 +471,7 @@ struct pv_mmu_ops pv_mmu_ops = {
        .make_pud = PTE_IDENT,
  
        .set_pgd = native_set_pgd,
        .make_pud = PTE_IDENT,
  
        .set_pgd = native_set_pgd,
@@ -16100,7 +17954,7 @@ index d90272e..2d54e8e 100644
  #endif
  #endif /* PAGETABLE_LEVELS >= 3 */
  
  #endif
  #endif /* PAGETABLE_LEVELS >= 3 */
  
-@@ -478,6 +494,12 @@ struct pv_mmu_ops pv_mmu_ops = {
+@@ -478,6 +491,12 @@ struct pv_mmu_ops pv_mmu_ops = {
        },
  
        .set_fixmap = native_set_fixmap,
        },
  
        .set_fixmap = native_set_fixmap,
@@ -16114,7 +17968,7 @@ index d90272e..2d54e8e 100644
  
  EXPORT_SYMBOL_GPL(pv_time_ops);
 diff --git a/arch/x86/kernel/pci-iommu_table.c b/arch/x86/kernel/pci-iommu_table.c
  
  EXPORT_SYMBOL_GPL(pv_time_ops);
 diff --git a/arch/x86/kernel/pci-iommu_table.c b/arch/x86/kernel/pci-iommu_table.c
-index 35ccf75..67e7d4d 100644
+index 35ccf75..7a15747 100644
 --- a/arch/x86/kernel/pci-iommu_table.c
 +++ b/arch/x86/kernel/pci-iommu_table.c
 @@ -2,7 +2,7 @@
 --- a/arch/x86/kernel/pci-iommu_table.c
 +++ b/arch/x86/kernel/pci-iommu_table.c
 @@ -2,7 +2,7 @@
@@ -16126,17 +17980,8 @@ index 35ccf75..67e7d4d 100644
  
  #define DEBUG 1
  
  
  #define DEBUG 1
  
-@@ -51,6 +51,8 @@ void __init check_iommu_entries(struct iommu_table_entry *start,
- {
-       struct iommu_table_entry *p, *q, *x;
-+      pax_track_stack();
-+
-       /* Simple cyclic dependency checker. */
-       for (p = start; p < finish; p++) {
-               q = find_dependents_of(start, finish, p);
 diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
 diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
-index e7e3b01..43c5af3 100644
+index ee5d4fb..426649b 100644
 --- a/arch/x86/kernel/process.c
 +++ b/arch/x86/kernel/process.c
 @@ -48,16 +48,33 @@ void free_thread_xstate(struct task_struct *tsk)
 --- a/arch/x86/kernel/process.c
 +++ b/arch/x86/kernel/process.c
 @@ -48,16 +48,33 @@ void free_thread_xstate(struct task_struct *tsk)
@@ -16144,7 +17989,7 @@ index e7e3b01..43c5af3 100644
  void free_thread_info(struct thread_info *ti)
  {
 -      free_thread_xstate(ti->task);
  void free_thread_info(struct thread_info *ti)
  {
 -      free_thread_xstate(ti->task);
-       free_pages((unsigned long)ti, get_order(THREAD_SIZE));
+       free_pages((unsigned long)ti, THREAD_ORDER);
  }
  
 +static struct kmem_cache *task_struct_cachep;
  }
  
 +static struct kmem_cache *task_struct_cachep;
@@ -16219,16 +18064,16 @@ index e7e3b01..43c5af3 100644
  #else
        regs.ss = __KERNEL_DS;
  #endif
  #else
        regs.ss = __KERNEL_DS;
  #endif
-@@ -403,7 +423,7 @@ void default_idle(void)
- EXPORT_SYMBOL(default_idle);
- #endif
+@@ -411,7 +431,7 @@ bool set_pm_idle_to_default(void)
  
  
+       return ret;
+ }
 -void stop_this_cpu(void *dummy)
 +__noreturn void stop_this_cpu(void *dummy)
  {
        local_irq_disable();
        /*
 -void stop_this_cpu(void *dummy)
 +__noreturn void stop_this_cpu(void *dummy)
  {
        local_irq_disable();
        /*
-@@ -645,16 +665,37 @@ static int __init idle_setup(char *str)
+@@ -653,16 +673,37 @@ static int __init idle_setup(char *str)
  }
  early_param("idle", idle_setup);
  
  }
  early_param("idle", idle_setup);
  
@@ -16277,10 +18122,10 @@ index e7e3b01..43c5af3 100644
 +}
 +#endif
 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
 +}
 +#endif
 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 7a3b651..5a946f6 100644
+index 8598296..bfadef0 100644
 --- a/arch/x86/kernel/process_32.c
 +++ b/arch/x86/kernel/process_32.c
 --- a/arch/x86/kernel/process_32.c
 +++ b/arch/x86/kernel/process_32.c
-@@ -66,6 +66,7 @@ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
+@@ -67,6 +67,7 @@ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
  unsigned long thread_saved_pc(struct task_struct *tsk)
  {
        return ((unsigned long *)tsk->thread.sp)[3];
  unsigned long thread_saved_pc(struct task_struct *tsk)
  {
        return ((unsigned long *)tsk->thread.sp)[3];
@@ -16288,7 +18133,7 @@ index 7a3b651..5a946f6 100644
  }
  
  #ifndef CONFIG_SMP
  }
  
  #ifndef CONFIG_SMP
-@@ -128,15 +129,14 @@ void __show_regs(struct pt_regs *regs, int all)
+@@ -130,15 +131,14 @@ void __show_regs(struct pt_regs *regs, int all)
        unsigned long sp;
        unsigned short ss, gs;
  
        unsigned long sp;
        unsigned short ss, gs;
  
@@ -16306,7 +18151,7 @@ index 7a3b651..5a946f6 100644
  
        show_regs_common();
  
  
        show_regs_common();
  
-@@ -198,13 +198,14 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
+@@ -200,13 +200,14 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
        struct task_struct *tsk;
        int err;
  
        struct task_struct *tsk;
        int err;
  
@@ -16322,16 +18167,16 @@ index 7a3b651..5a946f6 100644
  
        p->thread.ip = (unsigned long) ret_from_fork;
  
  
        p->thread.ip = (unsigned long) ret_from_fork;
  
-@@ -294,7 +295,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -296,7 +297,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
        struct thread_struct *prev = &prev_p->thread,
                                 *next = &next_p->thread;
        int cpu = smp_processor_id();
 -      struct tss_struct *tss = &per_cpu(init_tss, cpu);
 +      struct tss_struct *tss = init_tss + cpu;
        struct thread_struct *prev = &prev_p->thread,
                                 *next = &next_p->thread;
        int cpu = smp_processor_id();
 -      struct tss_struct *tss = &per_cpu(init_tss, cpu);
 +      struct tss_struct *tss = init_tss + cpu;
-       bool preload_fpu;
+       fpu_switch_t fpu;
  
        /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
  
        /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
-@@ -329,6 +330,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -320,6 +321,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
         */
        lazy_save_gs(prev->gs);
  
         */
        lazy_save_gs(prev->gs);
  
@@ -16342,35 +18187,35 @@ index 7a3b651..5a946f6 100644
        /*
         * Load the per-thread Thread-Local Storage descriptor.
         */
        /*
         * Load the per-thread Thread-Local Storage descriptor.
         */
-@@ -364,6 +369,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -350,6 +355,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
         */
        arch_end_context_switch(next_p);
  
 +      percpu_write(current_task, next_p);
 +      percpu_write(current_tinfo, &next_p->tinfo);
 +
         */
        arch_end_context_switch(next_p);
  
 +      percpu_write(current_task, next_p);
 +      percpu_write(current_tinfo, &next_p->tinfo);
 +
-       if (preload_fpu)
-               __math_state_restore();
+       /*
+        * Restore %gs if needed (which is common)
+        */
+@@ -358,8 +366,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
  
  
-@@ -373,8 +381,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
-       if (prev->gs | next->gs)
-               lazy_load_gs(next->gs);
+       switch_fpu_finish(next_p, fpu);
  
 -      percpu_write(current_task, next_p);
 -
        return prev_p;
  }
  
  
 -      percpu_write(current_task, next_p);
 -
        return prev_p;
  }
  
-@@ -404,4 +410,3 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -389,4 +395,3 @@ unsigned long get_wchan(struct task_struct *p)
        } while (count++ < 16);
        return 0;
  }
 -
 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
        } while (count++ < 16);
        return 0;
  }
 -
 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
-index f693e44..3c979b2 100644
+index 6a364a6..b147d11 100644
 --- a/arch/x86/kernel/process_64.c
 +++ b/arch/x86/kernel/process_64.c
 --- a/arch/x86/kernel/process_64.c
 +++ b/arch/x86/kernel/process_64.c
-@@ -88,7 +88,7 @@ static void __exit_idle(void)
+@@ -89,7 +89,7 @@ static void __exit_idle(void)
  void exit_idle(void)
  {
        /* idle loop has pid 0 */
  void exit_idle(void)
  {
        /* idle loop has pid 0 */
@@ -16379,7 +18224,7 @@ index f693e44..3c979b2 100644
                return;
        __exit_idle();
  }
                return;
        __exit_idle();
  }
-@@ -262,8 +262,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
+@@ -264,8 +264,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
        struct pt_regs *childregs;
        struct task_struct *me = current;
  
        struct pt_regs *childregs;
        struct task_struct *me = current;
  
@@ -16389,7 +18234,7 @@ index f693e44..3c979b2 100644
        *childregs = *regs;
  
        childregs->ax = 0;
        *childregs = *regs;
  
        childregs->ax = 0;
-@@ -275,6 +274,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
+@@ -277,6 +276,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
        p->thread.sp = (unsigned long) childregs;
        p->thread.sp0 = (unsigned long) (childregs+1);
        p->thread.usersp = me->thread.usersp;
        p->thread.sp = (unsigned long) childregs;
        p->thread.sp0 = (unsigned long) (childregs+1);
        p->thread.usersp = me->thread.usersp;
@@ -16397,16 +18242,16 @@ index f693e44..3c979b2 100644
  
        set_tsk_thread_flag(p, TIF_FORK);
  
  
        set_tsk_thread_flag(p, TIF_FORK);
  
-@@ -377,7 +377,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -379,7 +379,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
        struct thread_struct *prev = &prev_p->thread;
        struct thread_struct *next = &next_p->thread;
        int cpu = smp_processor_id();
 -      struct tss_struct *tss = &per_cpu(init_tss, cpu);
 +      struct tss_struct *tss = init_tss + cpu;
        unsigned fsindex, gsindex;
        struct thread_struct *prev = &prev_p->thread;
        struct thread_struct *next = &next_p->thread;
        int cpu = smp_processor_id();
 -      struct tss_struct *tss = &per_cpu(init_tss, cpu);
 +      struct tss_struct *tss = init_tss + cpu;
        unsigned fsindex, gsindex;
-       bool preload_fpu;
+       fpu_switch_t fpu;
  
  
-@@ -473,10 +473,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -461,10 +461,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
        prev->usersp = percpu_read(old_rsp);
        percpu_write(old_rsp, next->usersp);
        percpu_write(current_task, next_p);
        prev->usersp = percpu_read(old_rsp);
        percpu_write(old_rsp, next->usersp);
        percpu_write(current_task, next_p);
@@ -16419,7 +18264,7 @@ index f693e44..3c979b2 100644
  
        /*
         * Now maybe reload the debug registers and handle I/O bitmaps
  
        /*
         * Now maybe reload the debug registers and handle I/O bitmaps
-@@ -538,12 +537,11 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -519,12 +518,11 @@ unsigned long get_wchan(struct task_struct *p)
        if (!p || p == current || p->state == TASK_RUNNING)
                return 0;
        stack = (unsigned long)task_stack_page(p);
        if (!p || p == current || p->state == TASK_RUNNING)
                return 0;
        stack = (unsigned long)task_stack_page(p);
@@ -16435,10 +18280,21 @@ index f693e44..3c979b2 100644
                ip = *(u64 *)(fp+8);
                if (!in_sched_functions(ip))
 diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
                ip = *(u64 *)(fp+8);
                if (!in_sched_functions(ip))
 diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
-index 8252879..d3219e0 100644
+index 8252879..f367ec9 100644
 --- a/arch/x86/kernel/ptrace.c
 +++ b/arch/x86/kernel/ptrace.c
 --- a/arch/x86/kernel/ptrace.c
 +++ b/arch/x86/kernel/ptrace.c
-@@ -822,7 +822,7 @@ long arch_ptrace(struct task_struct *child, long request,
+@@ -791,6 +791,10 @@ static int ioperm_active(struct task_struct *target,
+ static int ioperm_get(struct task_struct *target,
+                     const struct user_regset *regset,
+                     unsigned int pos, unsigned int count,
++                    void *kbuf, void __user *ubuf) __size_overflow(3,4);
++static int ioperm_get(struct task_struct *target,
++                    const struct user_regset *regset,
++                    unsigned int pos, unsigned int count,
+                     void *kbuf, void __user *ubuf)
+ {
+       if (!target->thread.io_bitmap_ptr)
+@@ -822,7 +826,7 @@ long arch_ptrace(struct task_struct *child, long request,
                 unsigned long addr, unsigned long data)
  {
        int ret;
                 unsigned long addr, unsigned long data)
  {
        int ret;
@@ -16447,7 +18303,7 @@ index 8252879..d3219e0 100644
  
        switch (request) {
        /* read the word at location addr in the USER area. */
  
        switch (request) {
        /* read the word at location addr in the USER area. */
-@@ -907,14 +907,14 @@ long arch_ptrace(struct task_struct *child, long request,
+@@ -907,14 +911,14 @@ long arch_ptrace(struct task_struct *child, long request,
                if ((int) addr < 0)
                        return -EIO;
                ret = do_get_thread_area(child, addr,
                if ((int) addr < 0)
                        return -EIO;
                ret = do_get_thread_area(child, addr,
@@ -16464,7 +18320,7 @@ index 8252879..d3219e0 100644
                break;
  #endif
  
                break;
  #endif
  
-@@ -1331,7 +1331,7 @@ static void fill_sigtrap_info(struct task_struct *tsk,
+@@ -1331,7 +1335,7 @@ static void fill_sigtrap_info(struct task_struct *tsk,
        memset(info, 0, sizeof(*info));
        info->si_signo = SIGTRAP;
        info->si_code = si_code;
        memset(info, 0, sizeof(*info));
        info->si_signo = SIGTRAP;
        info->si_code = si_code;
@@ -16506,7 +18362,7 @@ index 42eb330..139955c 100644
  
        return ret;
 diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
  
        return ret;
 diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
-index d4a705f..ef8f1a9 100644
+index 37a458b..e63d183 100644
 --- a/arch/x86/kernel/reboot.c
 +++ b/arch/x86/kernel/reboot.c
 @@ -35,7 +35,7 @@ void (*pm_power_off)(void);
 --- a/arch/x86/kernel/reboot.c
 +++ b/arch/x86/kernel/reboot.c
 @@ -35,7 +35,7 @@ void (*pm_power_off)(void);
@@ -16589,7 +18445,7 @@ index d4a705f..ef8f1a9 100644
  }
  #ifdef CONFIG_APM_MODULE
  EXPORT_SYMBOL(machine_real_restart);
  }
  #ifdef CONFIG_APM_MODULE
  EXPORT_SYMBOL(machine_real_restart);
-@@ -532,7 +562,7 @@ void __attribute__((weak)) mach_reboot_fixups(void)
+@@ -540,7 +570,7 @@ void __attribute__((weak)) mach_reboot_fixups(void)
   * try to force a triple fault and then cycle between hitting the keyboard
   * controller and doing that
   */
   * try to force a triple fault and then cycle between hitting the keyboard
   * controller and doing that
   */
@@ -16598,7 +18454,7 @@ index d4a705f..ef8f1a9 100644
  {
        int i;
        int attempt = 0;
  {
        int i;
        int attempt = 0;
-@@ -656,13 +686,13 @@ void native_machine_shutdown(void)
+@@ -664,13 +694,13 @@ void native_machine_shutdown(void)
  #endif
  }
  
  #endif
  }
  
@@ -16614,7 +18470,7 @@ index d4a705f..ef8f1a9 100644
  {
        printk("machine restart\n");
  
  {
        printk("machine restart\n");
  
-@@ -671,7 +701,7 @@ static void native_machine_restart(char *__unused)
+@@ -679,7 +709,7 @@ static void native_machine_restart(char *__unused)
        __machine_emergency_restart(0);
  }
  
        __machine_emergency_restart(0);
  }
  
@@ -16623,7 +18479,7 @@ index d4a705f..ef8f1a9 100644
  {
        /* stop other cpus and apics */
        machine_shutdown();
  {
        /* stop other cpus and apics */
        machine_shutdown();
-@@ -682,7 +712,7 @@ static void native_machine_halt(void)
+@@ -690,7 +720,7 @@ static void native_machine_halt(void)
        stop_this_cpu(NULL);
  }
  
        stop_this_cpu(NULL);
  }
  
@@ -16632,7 +18488,7 @@ index d4a705f..ef8f1a9 100644
  {
        if (pm_power_off) {
                if (!reboot_force)
  {
        if (pm_power_off) {
                if (!reboot_force)
-@@ -691,6 +721,7 @@ static void native_machine_power_off(void)
+@@ -699,6 +729,7 @@ static void native_machine_power_off(void)
        }
        /* a fallback in case there is no PM info available */
        tboot_shutdown(TB_SHUTDOWN_HALT);
        }
        /* a fallback in case there is no PM info available */
        tboot_shutdown(TB_SHUTDOWN_HALT);
@@ -16669,7 +18525,7 @@ index 7a6f3b3..bed145d7 100644
  
  1:
 diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
  
  1:
 diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index afaf384..1a101fe 100644
+index cf0ef98..e3f780b 100644
 --- a/arch/x86/kernel/setup.c
 +++ b/arch/x86/kernel/setup.c
 @@ -447,7 +447,7 @@ static void __init parse_setup_data(void)
 --- a/arch/x86/kernel/setup.c
 +++ b/arch/x86/kernel/setup.c
 @@ -447,7 +447,7 @@ static void __init parse_setup_data(void)
@@ -16711,7 +18567,7 @@ index afaf384..1a101fe 100644
        bss_resource.start = virt_to_phys(&__bss_start);
        bss_resource.end = virt_to_phys(&__bss_stop)-1;
 diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
        bss_resource.start = virt_to_phys(&__bss_start);
        bss_resource.end = virt_to_phys(&__bss_stop)-1;
 diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
-index 71f4727..16dc9f7 100644
+index 71f4727..217419b 100644
 --- a/arch/x86/kernel/setup_percpu.c
 +++ b/arch/x86/kernel/setup_percpu.c
 @@ -21,19 +21,17 @@
 --- a/arch/x86/kernel/setup_percpu.c
 +++ b/arch/x86/kernel/setup_percpu.c
 @@ -21,19 +21,17 @@
@@ -16738,7 +18594,25 @@ index 71f4727..16dc9f7 100644
        [0 ... NR_CPUS-1] = BOOT_PERCPU_OFFSET,
  };
  EXPORT_SYMBOL(__per_cpu_offset);
        [0 ... NR_CPUS-1] = BOOT_PERCPU_OFFSET,
  };
  EXPORT_SYMBOL(__per_cpu_offset);
-@@ -155,10 +153,10 @@ static inline void setup_percpu_segment(int cpu)
+@@ -96,6 +94,8 @@ static bool __init pcpu_need_numa(void)
+  * Pointer to the allocated area on success, NULL on failure.
+  */
+ static void * __init pcpu_alloc_bootmem(unsigned int cpu, unsigned long size,
++                                      unsigned long align) __size_overflow(2);
++static void * __init pcpu_alloc_bootmem(unsigned int cpu, unsigned long size,
+                                       unsigned long align)
+ {
+       const unsigned long goal = __pa(MAX_DMA_ADDRESS);
+@@ -124,6 +124,8 @@ static void * __init pcpu_alloc_bootmem(unsigned int cpu, unsigned long size,
+ /*
+  * Helpers for first chunk memory allocation
+  */
++static void * __init pcpu_fc_alloc(unsigned int cpu, size_t size, size_t align) __size_overflow(2);
++
+ static void * __init pcpu_fc_alloc(unsigned int cpu, size_t size, size_t align)
+ {
+       return pcpu_alloc_bootmem(cpu, size, align);
+@@ -155,10 +157,10 @@ static inline void setup_percpu_segment(int cpu)
  {
  #ifdef CONFIG_X86_32
        struct desc_struct gdt;
  {
  #ifdef CONFIG_X86_32
        struct desc_struct gdt;
@@ -16752,7 +18626,7 @@ index 71f4727..16dc9f7 100644
        write_gdt_entry(get_cpu_gdt_table(cpu),
                        GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S);
  #endif
        write_gdt_entry(get_cpu_gdt_table(cpu),
                        GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S);
  #endif
-@@ -207,6 +205,11 @@ void __init setup_per_cpu_areas(void)
+@@ -207,6 +209,11 @@ void __init setup_per_cpu_areas(void)
        /* alrighty, percpu areas up and running */
        delta = (unsigned long)pcpu_base_addr - (unsigned long)__per_cpu_start;
        for_each_possible_cpu(cpu) {
        /* alrighty, percpu areas up and running */
        delta = (unsigned long)pcpu_base_addr - (unsigned long)__per_cpu_start;
        for_each_possible_cpu(cpu) {
@@ -16764,7 +18638,7 @@ index 71f4727..16dc9f7 100644
                per_cpu_offset(cpu) = delta + pcpu_unit_offsets[cpu];
                per_cpu(this_cpu_off, cpu) = per_cpu_offset(cpu);
                per_cpu(cpu_number, cpu) = cpu;
                per_cpu_offset(cpu) = delta + pcpu_unit_offsets[cpu];
                per_cpu(this_cpu_off, cpu) = per_cpu_offset(cpu);
                per_cpu(cpu_number, cpu) = cpu;
-@@ -247,6 +250,12 @@ void __init setup_per_cpu_areas(void)
+@@ -247,6 +254,12 @@ void __init setup_per_cpu_areas(void)
                 */
                set_cpu_numa_node(cpu, early_cpu_to_node(cpu));
  #endif
                 */
                set_cpu_numa_node(cpu, early_cpu_to_node(cpu));
  #endif
@@ -16778,7 +18652,7 @@ index 71f4727..16dc9f7 100644
                 * Up to this point, the boot CPU has been using .init.data
                 * area.  Reload any changed state for the boot CPU.
 diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
                 * Up to this point, the boot CPU has been using .init.data
                 * area.  Reload any changed state for the boot CPU.
 diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
-index 54ddaeb2..a6aa4d2 100644
+index 54ddaeb2..22c3bdc 100644
 --- a/arch/x86/kernel/signal.c
 +++ b/arch/x86/kernel/signal.c
 @@ -198,7 +198,7 @@ static unsigned long align_sigframe(unsigned long sp)
 --- a/arch/x86/kernel/signal.c
 +++ b/arch/x86/kernel/signal.c
 @@ -198,7 +198,7 @@ static unsigned long align_sigframe(unsigned long sp)
@@ -16846,16 +18720,7 @@ index 54ddaeb2..a6aa4d2 100644
        } put_user_catch(err);
  
        if (err)
        } put_user_catch(err);
  
        if (err)
-@@ -762,6 +765,8 @@ static void do_signal(struct pt_regs *regs)
-       siginfo_t info;
-       int signr;
-+      pax_track_stack();
-+
-       /*
-        * We want the common case to go fast, which is why we may in certain
-        * cases get here from kernel mode. Just return without doing anything
-@@ -769,7 +774,7 @@ static void do_signal(struct pt_regs *regs)
+@@ -769,7 +772,7 @@ static void do_signal(struct pt_regs *regs)
         * X86_32: vm86 regs switched out by assembly code before reaching
         * here, so testing against kernel CS suffices.
         */
         * X86_32: vm86 regs switched out by assembly code before reaching
         * here, so testing against kernel CS suffices.
         */
@@ -17184,10 +19049,10 @@ index 0b0cb5f..db6b9ed 100644
 +      return addr;
  }
 diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c
 +      return addr;
  }
 diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c
-index ff14a50..35626c3 100644
+index 0514890..3dbebce 100644
 --- a/arch/x86/kernel/sys_x86_64.c
 +++ b/arch/x86/kernel/sys_x86_64.c
 --- a/arch/x86/kernel/sys_x86_64.c
 +++ b/arch/x86/kernel/sys_x86_64.c
-@@ -32,8 +32,8 @@ out:
+@@ -95,8 +95,8 @@ out:
        return error;
  }
  
        return error;
  }
  
@@ -17198,7 +19063,7 @@ index ff14a50..35626c3 100644
  {
        if (!test_thread_flag(TIF_IA32) && (flags & MAP_32BIT)) {
                unsigned long new_begin;
  {
        if (!test_thread_flag(TIF_IA32) && (flags & MAP_32BIT)) {
                unsigned long new_begin;
-@@ -52,7 +52,7 @@ static void find_start_end(unsigned long flags, unsigned long *begin,
+@@ -115,7 +115,7 @@ static void find_start_end(unsigned long flags, unsigned long *begin,
                                *begin = new_begin;
                }
        } else {
                                *begin = new_begin;
                }
        } else {
@@ -17207,7 +19072,7 @@ index ff14a50..35626c3 100644
                *end = TASK_SIZE;
        }
  }
                *end = TASK_SIZE;
        }
  }
-@@ -69,16 +69,19 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -132,16 +132,19 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
        if (flags & MAP_FIXED)
                return addr;
  
        if (flags & MAP_FIXED)
                return addr;
  
@@ -17230,7 +19095,7 @@ index ff14a50..35626c3 100644
                        return addr;
        }
        if (((flags & MAP_32BIT) || test_thread_flag(TIF_IA32))
                        return addr;
        }
        if (((flags & MAP_32BIT) || test_thread_flag(TIF_IA32))
-@@ -106,7 +109,7 @@ full_search:
+@@ -172,7 +175,7 @@ full_search:
                        }
                        return -ENOMEM;
                }
                        }
                        return -ENOMEM;
                }
@@ -17239,7 +19104,7 @@ index ff14a50..35626c3 100644
                        /*
                         * Remember the place where we stopped the search:
                         */
                        /*
                         * Remember the place where we stopped the search:
                         */
-@@ -128,7 +131,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -195,7 +198,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
  {
        struct vm_area_struct *vma;
        struct mm_struct *mm = current->mm;
  {
        struct vm_area_struct *vma;
        struct mm_struct *mm = current->mm;
@@ -17248,7 +19113,7 @@ index ff14a50..35626c3 100644
  
        /* requested length too big for entire address space */
        if (len > TASK_SIZE)
  
        /* requested length too big for entire address space */
        if (len > TASK_SIZE)
-@@ -141,13 +144,18 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -208,13 +211,18 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        if (!test_thread_flag(TIF_IA32) && (flags & MAP_32BIT))
                goto bottomup;
  
        if (!test_thread_flag(TIF_IA32) && (flags & MAP_32BIT))
                goto bottomup;
  
@@ -17271,16 +19136,16 @@ index ff14a50..35626c3 100644
        }
  
        /* check if free_area_cache is useful for us */
        }
  
        /* check if free_area_cache is useful for us */
-@@ -162,7 +170,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
-       /* make sure it can fit in the remaining address space */
-       if (addr > len) {
-               vma = find_vma(mm, addr-len);
--              if (!vma || addr <= vma->vm_start)
-+              if (check_heap_stack_gap(vma, addr - len, len))
+@@ -232,7 +240,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+                                                   ALIGN_TOPDOWN);
+               vma = find_vma(mm, tmp_addr);
+-              if (!vma || tmp_addr + len <= vma->vm_start)
++              if (check_heap_stack_gap(vma, tmp_addr, len))
                        /* remember the address as a hint for next time */
                        /* remember the address as a hint for next time */
-                       return mm->free_area_cache = addr-len;
+                       return mm->free_area_cache = tmp_addr;
        }
        }
-@@ -179,7 +187,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -251,7 +259,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                 * return with success:
                 */
                vma = find_vma(mm, addr);
                 * return with success:
                 */
                vma = find_vma(mm, addr);
@@ -17289,7 +19154,7 @@ index ff14a50..35626c3 100644
                        /* remember the address as a hint for next time */
                        return mm->free_area_cache = addr;
  
                        /* remember the address as a hint for next time */
                        return mm->free_area_cache = addr;
  
-@@ -188,8 +196,8 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -260,8 +268,8 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                        mm->cached_hole_size = vma->vm_start - addr;
  
                /* try just below the current vma->vm_start */
                        mm->cached_hole_size = vma->vm_start - addr;
  
                /* try just below the current vma->vm_start */
@@ -17300,7 +19165,7 @@ index ff14a50..35626c3 100644
  
  bottomup:
        /*
  
  bottomup:
        /*
-@@ -198,13 +206,21 @@ bottomup:
+@@ -270,13 +278,21 @@ bottomup:
         * can happen with large stack limits and large mmap()
         * allocations.
         */
         * can happen with large stack limits and large mmap()
         * allocations.
         */
@@ -17325,7 +19190,7 @@ index ff14a50..35626c3 100644
  
        return addr;
 diff --git a/arch/x86/kernel/syscall_table_32.S b/arch/x86/kernel/syscall_table_32.S
  
        return addr;
 diff --git a/arch/x86/kernel/syscall_table_32.S b/arch/x86/kernel/syscall_table_32.S
-index bc19be3..0f5fbf7 100644
+index 9a0e312..e6f66f2 100644
 --- a/arch/x86/kernel/syscall_table_32.S
 +++ b/arch/x86/kernel/syscall_table_32.S
 @@ -1,3 +1,4 @@
 --- a/arch/x86/kernel/syscall_table_32.S
 +++ b/arch/x86/kernel/syscall_table_32.S
 @@ -1,3 +1,4 @@
@@ -17334,10 +19199,10 @@ index bc19be3..0f5fbf7 100644
        .long sys_restart_syscall       /* 0 - old "setup()" system call, used for restarting */
        .long sys_exit
 diff --git a/arch/x86/kernel/tboot.c b/arch/x86/kernel/tboot.c
        .long sys_restart_syscall       /* 0 - old "setup()" system call, used for restarting */
        .long sys_exit
 diff --git a/arch/x86/kernel/tboot.c b/arch/x86/kernel/tboot.c
-index e07a2fc..db0369d 100644
+index e2410e2..4fe3fbc 100644
 --- a/arch/x86/kernel/tboot.c
 +++ b/arch/x86/kernel/tboot.c
 --- a/arch/x86/kernel/tboot.c
 +++ b/arch/x86/kernel/tboot.c
-@@ -218,7 +218,7 @@ static int tboot_setup_sleep(void)
+@@ -219,7 +219,7 @@ static int tboot_setup_sleep(void)
  
  void tboot_shutdown(u32 shutdown_type)
  {
  
  void tboot_shutdown(u32 shutdown_type)
  {
@@ -17346,7 +19211,7 @@ index e07a2fc..db0369d 100644
  
        if (!tboot_enabled())
                return;
  
        if (!tboot_enabled())
                return;
-@@ -240,7 +240,7 @@ void tboot_shutdown(u32 shutdown_type)
+@@ -241,7 +241,7 @@ void tboot_shutdown(u32 shutdown_type)
  
        switch_to_tboot_pt();
  
  
        switch_to_tboot_pt();
  
@@ -17355,7 +19220,7 @@ index e07a2fc..db0369d 100644
        shutdown();
  
        /* should not reach here */
        shutdown();
  
        /* should not reach here */
-@@ -297,7 +297,7 @@ void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control)
+@@ -298,7 +298,7 @@ void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control)
        tboot_shutdown(acpi_shutdown_map[sleep_state]);
  }
  
        tboot_shutdown(acpi_shutdown_map[sleep_state]);
  }
  
@@ -17364,7 +19229,7 @@ index e07a2fc..db0369d 100644
  
  static int tboot_wait_for_aps(int num_aps)
  {
  
  static int tboot_wait_for_aps(int num_aps)
  {
-@@ -321,9 +321,9 @@ static int __cpuinit tboot_cpu_callback(struct notifier_block *nfb,
+@@ -322,9 +322,9 @@ static int __cpuinit tboot_cpu_callback(struct notifier_block *nfb,
  {
        switch (action) {
        case CPU_DYING:
  {
        switch (action) {
        case CPU_DYING:
@@ -17376,7 +19241,7 @@ index e07a2fc..db0369d 100644
                                return NOTIFY_BAD;
                break;
        }
                                return NOTIFY_BAD;
                break;
        }
-@@ -342,7 +342,7 @@ static __init int tboot_late_init(void)
+@@ -343,7 +343,7 @@ static __init int tboot_late_init(void)
  
        tboot_create_trampoline();
  
  
        tboot_create_trampoline();
  
@@ -17386,10 +19251,10 @@ index e07a2fc..db0369d 100644
        return 0;
  }
 diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c
        return 0;
  }
 diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c
-index 5a64d05..804587b 100644
+index dd5fbf4..b7f2232 100644
 --- a/arch/x86/kernel/time.c
 +++ b/arch/x86/kernel/time.c
 --- a/arch/x86/kernel/time.c
 +++ b/arch/x86/kernel/time.c
-@@ -30,9 +30,9 @@ unsigned long profile_pc(struct pt_regs *regs)
+@@ -31,9 +31,9 @@ unsigned long profile_pc(struct pt_regs *regs)
  {
        unsigned long pc = instruction_pointer(regs);
  
  {
        unsigned long pc = instruction_pointer(regs);
  
@@ -17401,7 +19266,7 @@ index 5a64d05..804587b 100644
  #else
                unsigned long *sp =
                        (unsigned long *)kernel_stack_pointer(regs);
  #else
                unsigned long *sp =
                        (unsigned long *)kernel_stack_pointer(regs);
-@@ -41,11 +41,17 @@ unsigned long profile_pc(struct pt_regs *regs)
+@@ -42,11 +42,17 @@ unsigned long profile_pc(struct pt_regs *regs)
                 * or above a saved flags. Eflags has bits 22-31 zero,
                 * kernel addresses don't.
                 */
                 * or above a saved flags. Eflags has bits 22-31 zero,
                 * kernel addresses don't.
                 */
@@ -17435,6 +19300,18 @@ index 6bb7b85..dd853e1 100644
        set_tls_desc(p, idx, &info, 1);
  
        return 0;
        set_tls_desc(p, idx, &info, 1);
  
        return 0;
+diff --git a/arch/x86/kernel/tls.h b/arch/x86/kernel/tls.h
+index 2f083a2..7d3fecc 100644
+--- a/arch/x86/kernel/tls.h
++++ b/arch/x86/kernel/tls.h
+@@ -16,6 +16,6 @@
+ extern user_regset_active_fn regset_tls_active;
+ extern user_regset_get_fn regset_tls_get;
+-extern user_regset_set_fn regset_tls_set;
++extern user_regset_set_fn regset_tls_set __size_overflow(4);
+ #endif        /* _ARCH_X86_KERNEL_TLS_H */
 diff --git a/arch/x86/kernel/trampoline_32.S b/arch/x86/kernel/trampoline_32.S
 index 451c0a7..e57f551 100644
 --- a/arch/x86/kernel/trampoline_32.S
 diff --git a/arch/x86/kernel/trampoline_32.S b/arch/x86/kernel/trampoline_32.S
 index 451c0a7..e57f551 100644
 --- a/arch/x86/kernel/trampoline_32.S
@@ -17484,7 +19361,7 @@ index 09ff517..df19fbff 100644
        .short 0
        .quad   0x00cf9b000000ffff      # __KERNEL32_CS
 diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
        .short 0
        .quad   0x00cf9b000000ffff      # __KERNEL32_CS
 diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index 6913369..7e7dff6 100644
+index 31d9d0f..e244dd9 100644
 --- a/arch/x86/kernel/traps.c
 +++ b/arch/x86/kernel/traps.c
 @@ -70,12 +70,6 @@ asmlinkage int system_call(void);
 --- a/arch/x86/kernel/traps.c
 +++ b/arch/x86/kernel/traps.c
 @@ -70,12 +70,6 @@ asmlinkage int system_call(void);
@@ -17500,7 +19377,7 @@ index 6913369..7e7dff6 100644
  #endif
  
  DECLARE_BITMAP(used_vectors, NR_VECTORS);
  #endif
  
  DECLARE_BITMAP(used_vectors, NR_VECTORS);
-@@ -117,13 +111,13 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
+@@ -108,13 +102,13 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
  }
  
  static void __kprobes
  }
  
  static void __kprobes
@@ -17516,7 +19393,7 @@ index 6913369..7e7dff6 100644
                /*
                 * traps 0, 1, 3, 4, and 5 should be forwarded to vm86.
                 * On nmi (interrupt 2), do_trap should not be called.
                /*
                 * traps 0, 1, 3, 4, and 5 should be forwarded to vm86.
                 * On nmi (interrupt 2), do_trap should not be called.
-@@ -134,7 +128,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
+@@ -125,7 +119,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
        }
  #endif
  
        }
  #endif
  
@@ -17525,7 +19402,7 @@ index 6913369..7e7dff6 100644
                goto kernel_trap;
  
  #ifdef CONFIG_X86_32
                goto kernel_trap;
  
  #ifdef CONFIG_X86_32
-@@ -157,7 +151,7 @@ trap_signal:
+@@ -148,7 +142,7 @@ trap_signal:
            printk_ratelimit()) {
                printk(KERN_INFO
                       "%s[%d] trap %s ip:%lx sp:%lx error:%lx",
            printk_ratelimit()) {
                printk(KERN_INFO
                       "%s[%d] trap %s ip:%lx sp:%lx error:%lx",
@@ -17534,7 +19411,7 @@ index 6913369..7e7dff6 100644
                       regs->ip, regs->sp, error_code);
                print_vma_addr(" in ", regs->ip);
                printk("\n");
                       regs->ip, regs->sp, error_code);
                print_vma_addr(" in ", regs->ip);
                printk("\n");
-@@ -174,8 +168,20 @@ kernel_trap:
+@@ -165,8 +159,20 @@ kernel_trap:
        if (!fixup_exception(regs)) {
                tsk->thread.error_code = error_code;
                tsk->thread.trap_no = trapnr;
        if (!fixup_exception(regs)) {
                tsk->thread.error_code = error_code;
                tsk->thread.trap_no = trapnr;
@@ -17555,7 +19432,7 @@ index 6913369..7e7dff6 100644
        return;
  
  #ifdef CONFIG_X86_32
        return;
  
  #ifdef CONFIG_X86_32
-@@ -264,14 +270,30 @@ do_general_protection(struct pt_regs *regs, long error_code)
+@@ -255,14 +261,30 @@ do_general_protection(struct pt_regs *regs, long error_code)
        conditional_sti(regs);
  
  #ifdef CONFIG_X86_32
        conditional_sti(regs);
  
  #ifdef CONFIG_X86_32
@@ -17588,7 +19465,7 @@ index 6913369..7e7dff6 100644
        tsk->thread.error_code = error_code;
        tsk->thread.trap_no = 13;
  
        tsk->thread.error_code = error_code;
        tsk->thread.trap_no = 13;
  
-@@ -304,6 +326,13 @@ gp_in_kernel:
+@@ -295,6 +317,13 @@ gp_in_kernel:
        if (notify_die(DIE_GPF, "general protection fault", regs,
                                error_code, 13, SIGSEGV) == NOTIFY_STOP)
                return;
        if (notify_die(DIE_GPF, "general protection fault", regs,
                                error_code, 13, SIGSEGV) == NOTIFY_STOP)
                return;
@@ -17602,25 +19479,7 @@ index 6913369..7e7dff6 100644
        die("general protection fault", regs, error_code);
  }
  
        die("general protection fault", regs, error_code);
  }
  
-@@ -433,6 +462,17 @@ static notrace __kprobes void default_do_nmi(struct pt_regs *regs)
- dotraplinkage notrace __kprobes void
- do_nmi(struct pt_regs *regs, long error_code)
- {
-+
-+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
-+      if (!user_mode(regs)) {
-+              unsigned long cs = regs->cs & 0xFFFF;
-+              unsigned long ip = ktva_ktla(regs->ip);
-+
-+              if ((cs == __KERNEL_CS || cs == __KERNEXEC_KERNEL_CS) && ip <= (unsigned long)_etext)
-+                      regs->ip = ip;
-+      }
-+#endif
-+
-       nmi_enter();
-       inc_irq_stat(__nmi_count);
-@@ -569,7 +609,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
+@@ -414,7 +443,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
        /* It's safe to allow irq's after DR6 has been saved */
        preempt_conditional_sti(regs);
  
        /* It's safe to allow irq's after DR6 has been saved */
        preempt_conditional_sti(regs);
  
@@ -17629,7 +19488,7 @@ index 6913369..7e7dff6 100644
                handle_vm86_trap((struct kernel_vm86_regs *) regs,
                                error_code, 1);
                preempt_conditional_cli(regs);
                handle_vm86_trap((struct kernel_vm86_regs *) regs,
                                error_code, 1);
                preempt_conditional_cli(regs);
-@@ -583,7 +623,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
+@@ -428,7 +457,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
         * We already checked v86 mode above, so we can check for kernel mode
         * by just checking the CPL of CS.
         */
         * We already checked v86 mode above, so we can check for kernel mode
         * by just checking the CPL of CS.
         */
@@ -17638,7 +19497,7 @@ index 6913369..7e7dff6 100644
                tsk->thread.debugreg6 &= ~DR_STEP;
                set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
                regs->flags &= ~X86_EFLAGS_TF;
                tsk->thread.debugreg6 &= ~DR_STEP;
                set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
                regs->flags &= ~X86_EFLAGS_TF;
-@@ -612,7 +652,7 @@ void math_error(struct pt_regs *regs, int error_code, int trapnr)
+@@ -457,7 +486,7 @@ void math_error(struct pt_regs *regs, int error_code, int trapnr)
                return;
        conditional_sti(regs);
  
                return;
        conditional_sti(regs);
  
@@ -17647,25 +19506,17 @@ index 6913369..7e7dff6 100644
        {
                if (!fixup_exception(regs)) {
                        task->thread.error_code = error_code;
        {
                if (!fixup_exception(regs)) {
                        task->thread.error_code = error_code;
-@@ -723,7 +763,7 @@ asmlinkage void __attribute__((weak)) smp_threshold_interrupt(void)
- void __math_state_restore(void)
- {
-       struct thread_info *thread = current_thread_info();
--      struct task_struct *tsk = thread->task;
-+      struct task_struct *tsk = current;
-       /*
-        * Paranoid restore. send a SIGSEGV if we fail to restore the state.
-@@ -750,8 +790,7 @@ void __math_state_restore(void)
-  */
- asmlinkage void math_state_restore(void)
+@@ -569,8 +598,8 @@ asmlinkage void __attribute__((weak)) smp_threshold_interrupt(void)
+ void __math_state_restore(struct task_struct *tsk)
  {
  {
--      struct thread_info *thread = current_thread_info();
--      struct task_struct *tsk = thread->task;
-+      struct task_struct *tsk = current;
+       /* We need a safe address that is cheap to find and that is already
+-         in L1. We've just brought in "tsk->thread.has_fpu", so use that */
+-#define safe_address (tsk->thread.has_fpu)
++         in L1. */
++#define safe_address (init_tss[smp_processor_id()].x86_tss.sp0)
  
  
-       if (!tsk_used_math(tsk)) {
-               local_irq_enable();
+       /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
+          is pending.  Clear the x87 state here by setting it to fixed
 diff --git a/arch/x86/kernel/verify_cpu.S b/arch/x86/kernel/verify_cpu.S
 index b9242ba..50c5edd 100644
 --- a/arch/x86/kernel/verify_cpu.S
 diff --git a/arch/x86/kernel/verify_cpu.S b/arch/x86/kernel/verify_cpu.S
 index b9242ba..50c5edd 100644
 --- a/arch/x86/kernel/verify_cpu.S
@@ -18011,10 +19862,10 @@ index 0f703f1..9e15f64 100644
  
  #ifdef CONFIG_SMP
 diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
  
  #ifdef CONFIG_SMP
 diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
-index b56c65de..561a55b 100644
+index e4d4a22..47ee71f 100644
 --- a/arch/x86/kernel/vsyscall_64.c
 +++ b/arch/x86/kernel/vsyscall_64.c
 --- a/arch/x86/kernel/vsyscall_64.c
 +++ b/arch/x86/kernel/vsyscall_64.c
-@@ -56,15 +56,13 @@ DEFINE_VVAR(struct vsyscall_gtod_data, vsyscall_gtod_data) =
+@@ -57,15 +57,13 @@ DEFINE_VVAR(struct vsyscall_gtod_data, vsyscall_gtod_data) =
        .lock = __SEQLOCK_UNLOCKED(__vsyscall_gtod_data.lock),
  };
  
        .lock = __SEQLOCK_UNLOCKED(__vsyscall_gtod_data.lock),
  };
  
@@ -18031,7 +19882,7 @@ index b56c65de..561a55b 100644
                else if (!strcmp("none", str))
                        vsyscall_mode = NONE;
                else
                else if (!strcmp("none", str))
                        vsyscall_mode = NONE;
                else
-@@ -177,7 +175,7 @@ bool emulate_vsyscall(struct pt_regs *regs, unsigned long address)
+@@ -178,7 +176,7 @@ bool emulate_vsyscall(struct pt_regs *regs, unsigned long address)
  
        tsk = current;
        if (seccomp_mode(&tsk->seccomp))
  
        tsk = current;
        if (seccomp_mode(&tsk->seccomp))
@@ -18040,7 +19891,7 @@ index b56c65de..561a55b 100644
  
        switch (vsyscall_nr) {
        case 0:
  
        switch (vsyscall_nr) {
        case 0:
-@@ -219,8 +217,7 @@ bool emulate_vsyscall(struct pt_regs *regs, unsigned long address)
+@@ -220,8 +218,7 @@ bool emulate_vsyscall(struct pt_regs *regs, unsigned long address)
        return true;
  
  sigsegv:
        return true;
  
  sigsegv:
@@ -18050,7 +19901,7 @@ index b56c65de..561a55b 100644
  }
  
  /*
  }
  
  /*
-@@ -273,10 +270,7 @@ void __init map_vsyscall(void)
+@@ -274,10 +271,7 @@ void __init map_vsyscall(void)
        extern char __vvar_page;
        unsigned long physaddr_vvar_page = __pa_symbol(&__vvar_page);
  
        extern char __vvar_page;
        unsigned long physaddr_vvar_page = __pa_symbol(&__vvar_page);
  
@@ -18076,7 +19927,7 @@ index 9796c2f..f686fbf 100644
  EXPORT_SYMBOL(copy_page);
  EXPORT_SYMBOL(clear_page);
 diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
  EXPORT_SYMBOL(copy_page);
  EXPORT_SYMBOL(clear_page);
 diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
-index a391134..d0b63b6e 100644
+index 7110911..e8cdee5 100644
 --- a/arch/x86/kernel/xsave.c
 +++ b/arch/x86/kernel/xsave.c
 @@ -130,7 +130,7 @@ int check_for_xstate(struct i387_fxsave_struct __user *buf,
 --- a/arch/x86/kernel/xsave.c
 +++ b/arch/x86/kernel/xsave.c
 @@ -130,7 +130,7 @@ int check_for_xstate(struct i387_fxsave_struct __user *buf,
@@ -18088,7 +19939,7 @@ index a391134..d0b63b6e 100644
                                            fx_sw_user->extended_size -
                                            FP_XSTATE_MAGIC2_SIZE));
        if (err)
                                            fx_sw_user->extended_size -
                                            FP_XSTATE_MAGIC2_SIZE));
        if (err)
-@@ -267,7 +267,7 @@ fx_only:
+@@ -266,7 +266,7 @@ fx_only:
         * the other extended state.
         */
        xrstor_state(init_xstate_buf, pcntxt_mask & ~XSTATE_FPSSE);
         * the other extended state.
         */
        xrstor_state(init_xstate_buf, pcntxt_mask & ~XSTATE_FPSSE);
@@ -18097,7 +19948,7 @@ index a391134..d0b63b6e 100644
  }
  
  /*
  }
  
  /*
-@@ -299,7 +299,7 @@ int restore_i387_xstate(void __user *buf)
+@@ -295,7 +295,7 @@ int restore_i387_xstate(void __user *buf)
        if (use_xsave())
                err = restore_user_xstate(buf);
        else
        if (use_xsave())
                err = restore_user_xstate(buf);
        else
@@ -18107,45 +19958,36 @@ index a391134..d0b63b6e 100644
        if (unlikely(err)) {
                /*
 diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
        if (unlikely(err)) {
                /*
 diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
-index 8b4cc5f..f086b5b 100644
+index f1e3be18..588efc8 100644
 --- a/arch/x86/kvm/emulate.c
 +++ b/arch/x86/kvm/emulate.c
 --- a/arch/x86/kvm/emulate.c
 +++ b/arch/x86/kvm/emulate.c
-@@ -96,7 +96,7 @@
- #define Src2ImmByte (2<<29)
- #define Src2One     (3<<29)
- #define Src2Imm     (4<<29)
--#define Src2Mask    (7<<29)
-+#define Src2Mask    (7U<<29)
- #define X2(x...) x, x
- #define X3(x...) X2(x), x
-@@ -207,6 +207,7 @@ struct gprefix {
- #define ____emulate_2op(_op, _src, _dst, _eflags, _x, _y, _suffix, _dsttype) \
+@@ -249,6 +249,7 @@ struct gprefix {
+ #define ____emulate_2op(ctxt, _op, _x, _y, _suffix, _dsttype) \
        do {                                                            \
 +              unsigned long _tmp;                                     \
                __asm__ __volatile__ (                                  \
                        _PRE_EFLAGS("0", "4", "2")                      \
                        _op _suffix " %"_x"3,%1; "                      \
        do {                                                            \
 +              unsigned long _tmp;                                     \
                __asm__ __volatile__ (                                  \
                        _PRE_EFLAGS("0", "4", "2")                      \
                        _op _suffix " %"_x"3,%1; "                      \
-@@ -220,8 +221,6 @@ struct gprefix {
+@@ -263,8 +264,6 @@ struct gprefix {
  /* Raw emulation: instruction has two explicit operands. */
  /* Raw emulation: instruction has two explicit operands. */
- #define __emulate_2op_nobyte(_op,_src,_dst,_eflags,_wx,_wy,_lx,_ly,_qx,_qy) \
+ #define __emulate_2op_nobyte(ctxt,_op,_wx,_wy,_lx,_ly,_qx,_qy)                \
        do {                                                            \
 -              unsigned long _tmp;                                     \
 -                                                                      \
        do {                                                            \
 -              unsigned long _tmp;                                     \
 -                                                                      \
-               switch ((_dst).bytes) {                                 \
+               switch ((ctxt)->dst.bytes) {                            \
                case 2:                                                 \
                case 2:                                                 \
-                       ____emulate_2op(_op,_src,_dst,_eflags,_wx,_wy,"w",u16);\
-@@ -237,7 +236,6 @@ struct gprefix {
+                       ____emulate_2op(ctxt,_op,_wx,_wy,"w",u16);      \
+@@ -280,7 +279,6 @@ struct gprefix {
  
  
- #define __emulate_2op(_op,_src,_dst,_eflags,_bx,_by,_wx,_wy,_lx,_ly,_qx,_qy) \
+ #define __emulate_2op(ctxt,_op,_bx,_by,_wx,_wy,_lx,_ly,_qx,_qy)                    \
        do {                                                                 \
 -              unsigned long _tmp;                                          \
        do {                                                                 \
 -              unsigned long _tmp;                                          \
-               switch ((_dst).bytes) {                                      \
+               switch ((ctxt)->dst.bytes) {                                 \
                case 1:                                                      \
                case 1:                                                      \
-                       ____emulate_2op(_op,_src,_dst,_eflags,_bx,_by,"b",u8); \
+                       ____emulate_2op(ctxt,_op,_bx,_by,"b",u8);            \
 diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
 diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
-index 57dcbd4..79aba9b 100644
+index 54abb40..a192606 100644
 --- a/arch/x86/kvm/lapic.c
 +++ b/arch/x86/kvm/lapic.c
 @@ -53,7 +53,7 @@
 --- a/arch/x86/kvm/lapic.c
 +++ b/arch/x86/kvm/lapic.c
 @@ -53,7 +53,7 @@
@@ -18158,10 +20000,10 @@ index 57dcbd4..79aba9b 100644
  #define APIC_LVT_NUM                  6
  /* 14 is the version for Xeon and Pentium 8.4.8*/
 diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
  #define APIC_LVT_NUM                  6
  /* 14 is the version for Xeon and Pentium 8.4.8*/
 diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
-index 8e8da79..13bc641 100644
+index f1b36cf..af8a124 100644
 --- a/arch/x86/kvm/mmu.c
 +++ b/arch/x86/kvm/mmu.c
 --- a/arch/x86/kvm/mmu.c
 +++ b/arch/x86/kvm/mmu.c
-@@ -3552,7 +3552,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
+@@ -3555,7 +3555,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
  
        pgprintk("%s: gpa %llx bytes %d\n", __func__, gpa, bytes);
  
  
        pgprintk("%s: gpa %llx bytes %d\n", __func__, gpa, bytes);
  
@@ -18170,7 +20012,7 @@ index 8e8da79..13bc641 100644
  
        /*
         * Assume that the pte write on a page table of the same type
  
        /*
         * Assume that the pte write on a page table of the same type
-@@ -3584,7 +3584,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
+@@ -3587,7 +3587,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
        }
  
        spin_lock(&vcpu->kvm->mmu_lock);
        }
  
        spin_lock(&vcpu->kvm->mmu_lock);
@@ -18180,7 +20022,7 @@ index 8e8da79..13bc641 100644
        kvm_mmu_free_some_pages(vcpu);
        ++vcpu->kvm->stat.mmu_pte_write;
 diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
        kvm_mmu_free_some_pages(vcpu);
        ++vcpu->kvm->stat.mmu_pte_write;
 diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
-index 507e2b8..fc55f89 100644
+index 9299410..ade2f9b 100644
 --- a/arch/x86/kvm/paging_tmpl.h
 +++ b/arch/x86/kvm/paging_tmpl.h
 @@ -197,7 +197,7 @@ retry_walk:
 --- a/arch/x86/kvm/paging_tmpl.h
 +++ b/arch/x86/kvm/paging_tmpl.h
 @@ -197,7 +197,7 @@ retry_walk:
@@ -18192,16 +20034,7 @@ index 507e2b8..fc55f89 100644
                if (unlikely(__copy_from_user(&pte, ptep_user, sizeof(pte))))
                        goto error;
  
                if (unlikely(__copy_from_user(&pte, ptep_user, sizeof(pte))))
                        goto error;
  
-@@ -575,6 +575,8 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr, u32 error_code,
-       unsigned long mmu_seq;
-       bool map_writable;
-+      pax_track_stack();
-+
-       pgprintk("%s: addr %lx err %x\n", __func__, addr, error_code);
-       if (unlikely(error_code & PFERR_RSVD_MASK))
-@@ -701,7 +703,7 @@ static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva)
+@@ -705,7 +705,7 @@ static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva)
        if (need_flush)
                kvm_flush_remote_tlbs(vcpu->kvm);
  
        if (need_flush)
                kvm_flush_remote_tlbs(vcpu->kvm);
  
@@ -18211,10 +20044,18 @@ index 507e2b8..fc55f89 100644
        spin_unlock(&vcpu->kvm->mmu_lock);
  
 diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
        spin_unlock(&vcpu->kvm->mmu_lock);
  
 diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
-index 475d1c9..33658ff 100644
+index 94a4672..1700ed1 100644
 --- a/arch/x86/kvm/svm.c
 +++ b/arch/x86/kvm/svm.c
 --- a/arch/x86/kvm/svm.c
 +++ b/arch/x86/kvm/svm.c
-@@ -3381,7 +3381,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
+@@ -3037,6 +3037,7 @@ static int svm_set_vm_cr(struct kvm_vcpu *vcpu, u64 data)
+       return 0;
+ }
++static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data) __size_overflow(3);
+ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
+ {
+       struct vcpu_svm *svm = to_svm(vcpu);
+@@ -3405,7 +3406,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
        int cpu = raw_smp_processor_id();
  
        struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
        int cpu = raw_smp_processor_id();
  
        struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
@@ -18226,7 +20067,7 @@ index 475d1c9..33658ff 100644
        load_TR_desc();
  }
  
        load_TR_desc();
  }
  
-@@ -3759,6 +3763,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -3783,6 +3788,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
  #endif
  #endif
  
  #endif
  #endif
  
@@ -18238,10 +20079,10 @@ index 475d1c9..33658ff 100644
  
        local_irq_disable();
 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
  
        local_irq_disable();
 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index e65a158..656dc24 100644
+index 4ea7678..c715f2f 100644
 --- a/arch/x86/kvm/vmx.c
 +++ b/arch/x86/kvm/vmx.c
 --- a/arch/x86/kvm/vmx.c
 +++ b/arch/x86/kvm/vmx.c
-@@ -1251,7 +1251,11 @@ static void reload_tss(void)
+@@ -1305,7 +1305,11 @@ static void reload_tss(void)
        struct desc_struct *descs;
  
        descs = (void *)gdt->address;
        struct desc_struct *descs;
  
        descs = (void *)gdt->address;
@@ -18253,7 +20094,15 @@ index e65a158..656dc24 100644
        load_TR_desc();
  }
  
        load_TR_desc();
  }
  
-@@ -2520,8 +2524,11 @@ static __init int hardware_setup(void)
+@@ -2163,6 +2167,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata)
+  * Returns 0 on success, non-0 otherwise.
+  * Assumes vcpu_load() was already called.
+  */
++static int vmx_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data) __size_overflow(3);
+ static int vmx_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
+ {
+       struct vcpu_vmx *vmx = to_vmx(vcpu);
+@@ -2633,8 +2638,11 @@ static __init int hardware_setup(void)
        if (!cpu_has_vmx_flexpriority())
                flexpriority_enabled = 0;
  
        if (!cpu_has_vmx_flexpriority())
                flexpriority_enabled = 0;
  
@@ -18267,7 +20116,7 @@ index e65a158..656dc24 100644
  
        if (enable_ept && !cpu_has_vmx_ept_2m_page())
                kvm_disable_largepages();
  
        if (enable_ept && !cpu_has_vmx_ept_2m_page())
                kvm_disable_largepages();
-@@ -3535,7 +3542,7 @@ static void vmx_set_constant_host_state(void)
+@@ -3648,7 +3656,7 @@ static void vmx_set_constant_host_state(void)
        vmcs_writel(HOST_IDTR_BASE, dt.address);   /* 22.2.4 */
  
        asm("mov $.Lkvm_vmx_return, %0" : "=r"(tmpl));
        vmcs_writel(HOST_IDTR_BASE, dt.address);   /* 22.2.4 */
  
        asm("mov $.Lkvm_vmx_return, %0" : "=r"(tmpl));
@@ -18276,7 +20125,7 @@ index e65a158..656dc24 100644
  
        rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
        vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
  
        rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
        vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
-@@ -6021,6 +6028,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -6169,6 +6177,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
                "jmp .Lkvm_vmx_return \n\t"
                ".Llaunched: " __ex(ASM_VMX_VMRESUME) "\n\t"
                ".Lkvm_vmx_return: "
                "jmp .Lkvm_vmx_return \n\t"
                ".Llaunched: " __ex(ASM_VMX_VMRESUME) "\n\t"
                ".Lkvm_vmx_return: "
@@ -18289,7 +20138,7 @@ index e65a158..656dc24 100644
                /* Save guest registers, load host registers, keep flags */
                "mov %0, %c[wordsize](%%"R"sp) \n\t"
                "pop %0 \n\t"
                /* Save guest registers, load host registers, keep flags */
                "mov %0, %c[wordsize](%%"R"sp) \n\t"
                "pop %0 \n\t"
-@@ -6069,6 +6082,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -6217,6 +6231,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
  #endif
                [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
                [wordsize]"i"(sizeof(ulong))
  #endif
                [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
                [wordsize]"i"(sizeof(ulong))
@@ -18301,7 +20150,7 @@ index e65a158..656dc24 100644
              : "cc", "memory"
                , R"ax", R"bx", R"di", R"si"
  #ifdef CONFIG_X86_64
              : "cc", "memory"
                , R"ax", R"bx", R"di", R"si"
  #ifdef CONFIG_X86_64
-@@ -6097,7 +6115,16 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -6245,7 +6264,16 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
                }
        }
  
                }
        }
  
@@ -18320,10 +20169,18 @@ index e65a158..656dc24 100644
  
        vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
  
        vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index 84a28ea..9326501 100644
+index 4c938da..6cd8090 100644
 --- a/arch/x86/kvm/x86.c
 +++ b/arch/x86/kvm/x86.c
 --- a/arch/x86/kvm/x86.c
 +++ b/arch/x86/kvm/x86.c
-@@ -1334,8 +1334,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data)
+@@ -907,6 +907,7 @@ static int do_set_msr(struct kvm_vcpu *vcpu, unsigned index, u64 *data)
+       return kvm_set_msr(vcpu, index, *data);
+ }
++static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock) __size_overflow(2);
+ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)
+ {
+       int version;
+@@ -1345,8 +1346,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data)
  {
        struct kvm *kvm = vcpu->kvm;
        int lm = is_long_mode(vcpu);
  {
        struct kvm *kvm = vcpu->kvm;
        int lm = is_long_mode(vcpu);
@@ -18334,7 +20191,7 @@ index 84a28ea..9326501 100644
        u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64
                : kvm->arch.xen_hvm_config.blob_size_32;
        u32 page_num = data & ~PAGE_MASK;
        u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64
                : kvm->arch.xen_hvm_config.blob_size_32;
        u32 page_num = data & ~PAGE_MASK;
-@@ -2137,6 +2137,8 @@ long kvm_arch_dev_ioctl(struct file *filp,
+@@ -2165,6 +2166,8 @@ long kvm_arch_dev_ioctl(struct file *filp,
                if (n < msr_list.nmsrs)
                        goto out;
                r = -EFAULT;
                if (n < msr_list.nmsrs)
                        goto out;
                r = -EFAULT;
@@ -18343,7 +20200,7 @@ index 84a28ea..9326501 100644
                if (copy_to_user(user_msr_list->indices, &msrs_to_save,
                                 num_msrs_to_save * sizeof(u32)))
                        goto out;
                if (copy_to_user(user_msr_list->indices, &msrs_to_save,
                                 num_msrs_to_save * sizeof(u32)))
                        goto out;
-@@ -2312,15 +2314,20 @@ static int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu,
+@@ -2340,15 +2343,20 @@ static int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu,
                                     struct kvm_cpuid2 *cpuid,
                                     struct kvm_cpuid_entry2 __user *entries)
  {
                                     struct kvm_cpuid2 *cpuid,
                                     struct kvm_cpuid_entry2 __user *entries)
  {
@@ -18367,7 +20224,7 @@ index 84a28ea..9326501 100644
        vcpu->arch.cpuid_nent = cpuid->nent;
        kvm_apic_set_version(vcpu);
        kvm_x86_ops->cpuid_update(vcpu);
        vcpu->arch.cpuid_nent = cpuid->nent;
        kvm_apic_set_version(vcpu);
        kvm_x86_ops->cpuid_update(vcpu);
-@@ -2335,15 +2342,19 @@ static int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
+@@ -2363,15 +2371,19 @@ static int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
                                     struct kvm_cpuid2 *cpuid,
                                     struct kvm_cpuid_entry2 __user *entries)
  {
                                     struct kvm_cpuid2 *cpuid,
                                     struct kvm_cpuid_entry2 __user *entries)
  {
@@ -18390,7 +20247,7 @@ index 84a28ea..9326501 100644
        return 0;
  
  out:
        return 0;
  
  out:
-@@ -2718,7 +2729,7 @@ static int kvm_vcpu_ioctl_set_lapic(struct kvm_vcpu *vcpu,
+@@ -2746,7 +2758,7 @@ static int kvm_vcpu_ioctl_set_lapic(struct kvm_vcpu *vcpu,
  static int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu,
                                    struct kvm_interrupt *irq)
  {
  static int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu,
                                    struct kvm_interrupt *irq)
  {
@@ -18399,7 +20256,67 @@ index 84a28ea..9326501 100644
                return -EINVAL;
        if (irqchip_in_kernel(vcpu->kvm))
                return -ENXIO;
                return -EINVAL;
        if (irqchip_in_kernel(vcpu->kvm))
                return -ENXIO;
-@@ -5089,7 +5100,7 @@ static void kvm_set_mmio_spte_mask(void)
+@@ -3949,6 +3961,9 @@ gpa_t kvm_mmu_gva_to_gpa_system(struct kvm_vcpu *vcpu, gva_t gva,
+ static int kvm_read_guest_virt_helper(gva_t addr, void *val, unsigned int bytes,
+                                     struct kvm_vcpu *vcpu, u32 access,
++                                    struct x86_exception *exception) __size_overflow(1,3);
++static int kvm_read_guest_virt_helper(gva_t addr, void *val, unsigned int bytes,
++                                    struct kvm_vcpu *vcpu, u32 access,
+                                     struct x86_exception *exception)
+ {
+       void *data = val;
+@@ -3980,6 +3995,9 @@ out:
+ /* used for instruction fetching */
+ static int kvm_fetch_guest_virt(struct x86_emulate_ctxt *ctxt,
+                               gva_t addr, void *val, unsigned int bytes,
++                              struct x86_exception *exception) __size_overflow(2,4);
++static int kvm_fetch_guest_virt(struct x86_emulate_ctxt *ctxt,
++                              gva_t addr, void *val, unsigned int bytes,
+                               struct x86_exception *exception)
+ {
+       struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
+@@ -4004,6 +4022,9 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_virt);
+ static int kvm_read_guest_virt_system(struct x86_emulate_ctxt *ctxt,
+                                     gva_t addr, void *val, unsigned int bytes,
++                                    struct x86_exception *exception) __size_overflow(2,4);
++static int kvm_read_guest_virt_system(struct x86_emulate_ctxt *ctxt,
++                                    gva_t addr, void *val, unsigned int bytes,
+                                     struct x86_exception *exception)
+ {
+       struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
+@@ -4117,12 +4138,16 @@ static int read_prepare(struct kvm_vcpu *vcpu, void *val, int bytes)
+ }
+ static int read_emulate(struct kvm_vcpu *vcpu, gpa_t gpa,
++                      void *val, int bytes) __size_overflow(2);
++static int read_emulate(struct kvm_vcpu *vcpu, gpa_t gpa,
+                       void *val, int bytes)
+ {
+       return !kvm_read_guest(vcpu->kvm, gpa, val, bytes);
+ }
+ static int write_emulate(struct kvm_vcpu *vcpu, gpa_t gpa,
++                       void *val, int bytes) __size_overflow(2);
++static int write_emulate(struct kvm_vcpu *vcpu, gpa_t gpa,
+                        void *val, int bytes)
+ {
+       return emulator_write_phys(vcpu, gpa, val, bytes);
+@@ -4273,6 +4298,12 @@ static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt,
+                                    const void *old,
+                                    const void *new,
+                                    unsigned int bytes,
++                                   struct x86_exception *exception) __size_overflow(5);
++static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt,
++                                   unsigned long addr,
++                                   const void *old,
++                                   const void *new,
++                                   unsigned int bytes,
+                                    struct x86_exception *exception)
+ {
+       struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
+@@ -5162,7 +5193,7 @@ static void kvm_set_mmio_spte_mask(void)
        kvm_mmu_set_mmio_spte_mask(mask);
  }
  
        kvm_mmu_set_mmio_spte_mask(mask);
  }
  
@@ -18408,11 +20325,28 @@ index 84a28ea..9326501 100644
  {
        int r;
        struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
  {
        int r;
        struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
+diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
+index d36fe23..a4b189f 100644
+--- a/arch/x86/kvm/x86.h
++++ b/arch/x86/kvm/x86.h
+@@ -119,10 +119,10 @@ void kvm_write_tsc(struct kvm_vcpu *vcpu, u64 data);
+ int kvm_read_guest_virt(struct x86_emulate_ctxt *ctxt,
+       gva_t addr, void *val, unsigned int bytes,
+-      struct x86_exception *exception);
++      struct x86_exception *exception) __size_overflow(2,4);
+ int kvm_write_guest_virt_system(struct x86_emulate_ctxt *ctxt,
+       gva_t addr, void *val, unsigned int bytes,
+-      struct x86_exception *exception);
++      struct x86_exception *exception) __size_overflow(2,4);
+ #endif
 diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
 diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
-index 13ee258..b9632f6 100644
+index cf4603b..7cdde38 100644
 --- a/arch/x86/lguest/boot.c
 +++ b/arch/x86/lguest/boot.c
 --- a/arch/x86/lguest/boot.c
 +++ b/arch/x86/lguest/boot.c
-@@ -1184,9 +1184,10 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count)
+@@ -1195,9 +1195,10 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count)
   * Rebooting also tells the Host we're finished, but the RESTART flag tells the
   * Launcher to reboot us.
   */
   * Rebooting also tells the Host we're finished, but the RESTART flag tells the
   * Launcher to reboot us.
   */
@@ -19727,7 +21661,7 @@ index 51f1504..ddac4c1 100644
        CFI_ENDPROC
  END(bad_get_user)
 diff --git a/arch/x86/lib/insn.c b/arch/x86/lib/insn.c
        CFI_ENDPROC
  END(bad_get_user)
 diff --git a/arch/x86/lib/insn.c b/arch/x86/lib/insn.c
-index 9f33b98..dfc7678 100644
+index 374562e..a75830b 100644
 --- a/arch/x86/lib/insn.c
 +++ b/arch/x86/lib/insn.c
 @@ -21,6 +21,11 @@
 --- a/arch/x86/lib/insn.c
 +++ b/arch/x86/lib/insn.c
 @@ -21,6 +21,11 @@
@@ -19740,9 +21674,9 @@ index 9f33b98..dfc7678 100644
 +#define ktla_ktva(addr) addr
 +#endif
  
 +#define ktla_ktva(addr) addr
 +#endif
  
- #define get_next(t, insn)     \
-       ({t r; r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; })
-@@ -40,8 +45,8 @@
+ /* Verify next sizeof(t) bytes can be on the same instruction */
+ #define validate_next(t, insn, n)     \
+@@ -49,8 +54,8 @@
  void insn_init(struct insn *insn, const void *kaddr, int x86_64)
  {
        memset(insn, 0, sizeof(*insn));
  void insn_init(struct insn *insn, const void *kaddr, int x86_64)
  {
        memset(insn, 0, sizeof(*insn));
@@ -20681,7 +22615,7 @@ index a63efd6..ccecad8 100644
        ret
        CFI_ENDPROC
 diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c
        ret
        CFI_ENDPROC
 diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c
-index e218d5d..35679b4 100644
+index e218d5d..a99a1eb 100644
 --- a/arch/x86/lib/usercopy_32.c
 +++ b/arch/x86/lib/usercopy_32.c
 @@ -43,7 +43,7 @@ do {                                                                    \
 --- a/arch/x86/lib/usercopy_32.c
 +++ b/arch/x86/lib/usercopy_32.c
 @@ -43,7 +43,7 @@ do {                                                                    \
@@ -20784,7 +22718,7 @@ index e218d5d..35679b4 100644
                       "       addl $-64, %0\n"
                       "       addl $64, %4\n"
                       "       addl $64, %3\n"
                       "       addl $-64, %0\n"
                       "       addl $64, %4\n"
                       "       addl $64, %3\n"
-@@ -278,10 +282,119 @@ __copy_user_intel(void __user *to, const void *from, unsigned long size)
+@@ -278,10 +282,12 @@ __copy_user_intel(void __user *to, const void *from, unsigned long size)
                       "       shrl  $2, %0\n"
                       "       andl  $3, %%eax\n"
                       "       cld\n"
                       "       shrl  $2, %0\n"
                       "       andl  $3, %%eax\n"
                       "       cld\n"
@@ -20794,58 +22728,13 @@ index e218d5d..35679b4 100644
                       "37:    rep; movsb\n"
                       "100:\n"
 +                     __COPYUSER_RESTORE_ES
                       "37:    rep; movsb\n"
                       "100:\n"
 +                     __COPYUSER_RESTORE_ES
-+                     ".section .fixup,\"ax\"\n"
-+                     "101:   lea 0(%%eax,%0,4),%0\n"
-+                     "       jmp 100b\n"
-+                     ".previous\n"
-+                     ".section __ex_table,\"a\"\n"
-+                     "       .align 4\n"
-+                     "       .long 1b,100b\n"
-+                     "       .long 2b,100b\n"
-+                     "       .long 3b,100b\n"
-+                     "       .long 4b,100b\n"
-+                     "       .long 5b,100b\n"
-+                     "       .long 6b,100b\n"
-+                     "       .long 7b,100b\n"
-+                     "       .long 8b,100b\n"
-+                     "       .long 9b,100b\n"
-+                     "       .long 10b,100b\n"
-+                     "       .long 11b,100b\n"
-+                     "       .long 12b,100b\n"
-+                     "       .long 13b,100b\n"
-+                     "       .long 14b,100b\n"
-+                     "       .long 15b,100b\n"
-+                     "       .long 16b,100b\n"
-+                     "       .long 17b,100b\n"
-+                     "       .long 18b,100b\n"
-+                     "       .long 19b,100b\n"
-+                     "       .long 20b,100b\n"
-+                     "       .long 21b,100b\n"
-+                     "       .long 22b,100b\n"
-+                     "       .long 23b,100b\n"
-+                     "       .long 24b,100b\n"
-+                     "       .long 25b,100b\n"
-+                     "       .long 26b,100b\n"
-+                     "       .long 27b,100b\n"
-+                     "       .long 28b,100b\n"
-+                     "       .long 29b,100b\n"
-+                     "       .long 30b,100b\n"
-+                     "       .long 31b,100b\n"
-+                     "       .long 32b,100b\n"
-+                     "       .long 33b,100b\n"
-+                     "       .long 34b,100b\n"
-+                     "       .long 35b,100b\n"
-+                     "       .long 36b,100b\n"
-+                     "       .long 37b,100b\n"
-+                     "       .long 99b,101b\n"
-+                     ".previous"
-+                     : "=&c"(size), "=&D" (d0), "=&S" (d1)
-+                     :  "1"(to), "2"(from), "0"(size)
-+                     : "eax", "edx", "memory");
-+      return size;
-+}
-+
-+static unsigned long
+                      ".section .fixup,\"ax\"\n"
+                      "101:   lea 0(%%eax,%0,4),%0\n"
+                      "       jmp 100b\n"
+@@ -334,46 +340,155 @@ __copy_user_intel(void __user *to, const void *from, unsigned long size)
+ }
+ static unsigned long
 +__generic_copy_from_user_intel(void *to, const void __user *from, unsigned long size)
 +{
 +      int d0, d1;
 +__generic_copy_from_user_intel(void *to, const void __user *from, unsigned long size)
 +{
 +      int d0, d1;
@@ -20901,10 +22790,62 @@ index e218d5d..35679b4 100644
 +                     "36:    movl %%eax, %0\n"
 +                     "37:    rep; "__copyuser_seg" movsb\n"
 +                     "100:\n"
 +                     "36:    movl %%eax, %0\n"
 +                     "37:    rep; "__copyuser_seg" movsb\n"
 +                     "100:\n"
-                      ".section .fixup,\"ax\"\n"
-                      "101:   lea 0(%%eax,%0,4),%0\n"
-                      "       jmp 100b\n"
-@@ -339,41 +452,41 @@ __copy_user_zeroing_intel(void *to, const void __user *from, unsigned long size)
++                     ".section .fixup,\"ax\"\n"
++                     "101:   lea 0(%%eax,%0,4),%0\n"
++                     "       jmp 100b\n"
++                     ".previous\n"
++                     ".section __ex_table,\"a\"\n"
++                     "       .align 4\n"
++                     "       .long 1b,100b\n"
++                     "       .long 2b,100b\n"
++                     "       .long 3b,100b\n"
++                     "       .long 4b,100b\n"
++                     "       .long 5b,100b\n"
++                     "       .long 6b,100b\n"
++                     "       .long 7b,100b\n"
++                     "       .long 8b,100b\n"
++                     "       .long 9b,100b\n"
++                     "       .long 10b,100b\n"
++                     "       .long 11b,100b\n"
++                     "       .long 12b,100b\n"
++                     "       .long 13b,100b\n"
++                     "       .long 14b,100b\n"
++                     "       .long 15b,100b\n"
++                     "       .long 16b,100b\n"
++                     "       .long 17b,100b\n"
++                     "       .long 18b,100b\n"
++                     "       .long 19b,100b\n"
++                     "       .long 20b,100b\n"
++                     "       .long 21b,100b\n"
++                     "       .long 22b,100b\n"
++                     "       .long 23b,100b\n"
++                     "       .long 24b,100b\n"
++                     "       .long 25b,100b\n"
++                     "       .long 26b,100b\n"
++                     "       .long 27b,100b\n"
++                     "       .long 28b,100b\n"
++                     "       .long 29b,100b\n"
++                     "       .long 30b,100b\n"
++                     "       .long 31b,100b\n"
++                     "       .long 32b,100b\n"
++                     "       .long 33b,100b\n"
++                     "       .long 34b,100b\n"
++                     "       .long 35b,100b\n"
++                     "       .long 36b,100b\n"
++                     "       .long 37b,100b\n"
++                     "       .long 99b,101b\n"
++                     ".previous"
++                     : "=&c"(size), "=&D" (d0), "=&S" (d1)
++                     :  "1"(to), "2"(from), "0"(size)
++                     : "eax", "edx", "memory");
++      return size;
++}
++
++static unsigned long
++__copy_user_zeroing_intel(void *to, const void __user *from, unsigned long size) __size_overflow(3);
++static unsigned long
+ __copy_user_zeroing_intel(void *to, const void __user *from, unsigned long size)
+ {
        int d0, d1;
        __asm__ __volatile__(
                       "        .align 2,0x90\n"
        int d0, d1;
        __asm__ __volatile__(
                       "        .align 2,0x90\n"
@@ -20964,7 +22905,7 @@ index e218d5d..35679b4 100644
                       "        movl %%eax, 56(%3)\n"
                       "        movl %%edx, 60(%3)\n"
                       "        addl $-64, %0\n"
                       "        movl %%eax, 56(%3)\n"
                       "        movl %%edx, 60(%3)\n"
                       "        addl $-64, %0\n"
-@@ -385,9 +498,9 @@ __copy_user_zeroing_intel(void *to, const void __user *from, unsigned long size)
+@@ -385,9 +500,9 @@ __copy_user_zeroing_intel(void *to, const void __user *from, unsigned long size)
                       "        shrl  $2, %0\n"
                       "        andl $3, %%eax\n"
                       "        cld\n"
                       "        shrl  $2, %0\n"
                       "        andl $3, %%eax\n"
                       "        cld\n"
@@ -20976,7 +22917,15 @@ index e218d5d..35679b4 100644
                       "8:\n"
                       ".section .fixup,\"ax\"\n"
                       "9:      lea 0(%%eax,%0,4),%0\n"
                       "8:\n"
                       ".section .fixup,\"ax\"\n"
                       "9:      lea 0(%%eax,%0,4),%0\n"
-@@ -440,41 +553,41 @@ static unsigned long __copy_user_zeroing_intel_nocache(void *to,
+@@ -434,47 +549,49 @@ __copy_user_zeroing_intel(void *to, const void __user *from, unsigned long size)
+  */
+ static unsigned long __copy_user_zeroing_intel_nocache(void *to,
++                              const void __user *from, unsigned long size) __size_overflow(3);
++static unsigned long __copy_user_zeroing_intel_nocache(void *to,
+                               const void __user *from, unsigned long size)
+ {
+       int d0, d1;
  
        __asm__ __volatile__(
               "        .align 2,0x90\n"
  
        __asm__ __volatile__(
               "        .align 2,0x90\n"
@@ -21036,7 +22985,7 @@ index e218d5d..35679b4 100644
               "        movnti %%eax, 56(%3)\n"
               "        movnti %%edx, 60(%3)\n"
               "        addl $-64, %0\n"
               "        movnti %%eax, 56(%3)\n"
               "        movnti %%edx, 60(%3)\n"
               "        addl $-64, %0\n"
-@@ -487,9 +600,9 @@ static unsigned long __copy_user_zeroing_intel_nocache(void *to,
+@@ -487,9 +604,9 @@ static unsigned long __copy_user_zeroing_intel_nocache(void *to,
               "        shrl  $2, %0\n"
               "        andl $3, %%eax\n"
               "        cld\n"
               "        shrl  $2, %0\n"
               "        andl $3, %%eax\n"
               "        cld\n"
@@ -21048,7 +22997,15 @@ index e218d5d..35679b4 100644
               "8:\n"
               ".section .fixup,\"ax\"\n"
               "9:      lea 0(%%eax,%0,4),%0\n"
               "8:\n"
               ".section .fixup,\"ax\"\n"
               "9:      lea 0(%%eax,%0,4),%0\n"
-@@ -537,41 +650,41 @@ static unsigned long __copy_user_intel_nocache(void *to,
+@@ -531,47 +648,49 @@ static unsigned long __copy_user_zeroing_intel_nocache(void *to,
+ }
+ static unsigned long __copy_user_intel_nocache(void *to,
++                              const void __user *from, unsigned long size) __size_overflow(3);
++static unsigned long __copy_user_intel_nocache(void *to,
+                               const void __user *from, unsigned long size)
+ {
+       int d0, d1;
  
        __asm__ __volatile__(
               "        .align 2,0x90\n"
  
        __asm__ __volatile__(
               "        .align 2,0x90\n"
@@ -21108,7 +23065,7 @@ index e218d5d..35679b4 100644
               "        movnti %%eax, 56(%3)\n"
               "        movnti %%edx, 60(%3)\n"
               "        addl $-64, %0\n"
               "        movnti %%eax, 56(%3)\n"
               "        movnti %%edx, 60(%3)\n"
               "        addl $-64, %0\n"
-@@ -584,9 +697,9 @@ static unsigned long __copy_user_intel_nocache(void *to,
+@@ -584,9 +703,9 @@ static unsigned long __copy_user_intel_nocache(void *to,
               "        shrl  $2, %0\n"
               "        andl $3, %%eax\n"
               "        cld\n"
               "        shrl  $2, %0\n"
               "        andl $3, %%eax\n"
               "        cld\n"
@@ -21120,7 +23077,7 @@ index e218d5d..35679b4 100644
               "8:\n"
               ".section .fixup,\"ax\"\n"
               "9:      lea 0(%%eax,%0,4),%0\n"
               "8:\n"
               ".section .fixup,\"ax\"\n"
               "9:      lea 0(%%eax,%0,4),%0\n"
-@@ -629,32 +742,36 @@ static unsigned long __copy_user_intel_nocache(void *to,
+@@ -629,32 +748,36 @@ static unsigned long __copy_user_intel_nocache(void *to,
   */
  unsigned long __copy_user_zeroing_intel(void *to, const void __user *from,
                                        unsigned long size);
   */
  unsigned long __copy_user_zeroing_intel(void *to, const void __user *from,
                                        unsigned long size);
@@ -21162,7 +23119,7 @@ index e218d5d..35679b4 100644
                ".section .fixup,\"ax\"\n"                              \
                "5:     addl %3,%0\n"                                   \
                "       jmp 2b\n"                                       \
                ".section .fixup,\"ax\"\n"                              \
                "5:     addl %3,%0\n"                                   \
                "       jmp 2b\n"                                       \
-@@ -682,14 +799,14 @@ do {                                                                     \
+@@ -682,14 +805,14 @@ do {                                                                     \
                "       negl %0\n"                                      \
                "       andl $7,%0\n"                                   \
                "       subl %0,%3\n"                                   \
                "       negl %0\n"                                      \
                "       andl $7,%0\n"                                   \
                "       subl %0,%3\n"                                   \
@@ -21180,7 +23137,7 @@ index e218d5d..35679b4 100644
                "2:\n"                                                  \
                ".section .fixup,\"ax\"\n"                              \
                "5:     addl %3,%0\n"                                   \
                "2:\n"                                                  \
                ".section .fixup,\"ax\"\n"                              \
                "5:     addl %3,%0\n"                                   \
-@@ -775,9 +892,9 @@ survive:
+@@ -775,9 +898,9 @@ survive:
        }
  #endif
        if (movsl_is_ok(to, from, n))
        }
  #endif
        if (movsl_is_ok(to, from, n))
@@ -21192,7 +23149,7 @@ index e218d5d..35679b4 100644
        return n;
  }
  EXPORT_SYMBOL(__copy_to_user_ll);
        return n;
  }
  EXPORT_SYMBOL(__copy_to_user_ll);
-@@ -797,10 +914,9 @@ unsigned long __copy_from_user_ll_nozero(void *to, const void __user *from,
+@@ -797,10 +920,9 @@ unsigned long __copy_from_user_ll_nozero(void *to, const void __user *from,
                                         unsigned long n)
  {
        if (movsl_is_ok(to, from, n))
                                         unsigned long n)
  {
        if (movsl_is_ok(to, from, n))
@@ -21205,7 +23162,7 @@ index e218d5d..35679b4 100644
        return n;
  }
  EXPORT_SYMBOL(__copy_from_user_ll_nozero);
        return n;
  }
  EXPORT_SYMBOL(__copy_from_user_ll_nozero);
-@@ -827,65 +943,50 @@ unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *fr
+@@ -827,65 +949,50 @@ unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *fr
        if (n > 64 && cpu_has_xmm2)
                n = __copy_user_intel_nocache(to, from, n);
        else
        if (n > 64 && cpu_has_xmm2)
                n = __copy_user_intel_nocache(to, from, n);
        else
@@ -21386,7 +23343,7 @@ index d0474ad..36e9257 100644
                extern u32 pnp_bios_is_utter_crap;
                pnp_bios_is_utter_crap = 1;
 diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
                extern u32 pnp_bios_is_utter_crap;
                pnp_bios_is_utter_crap = 1;
 diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
-index 0d17c8c..4f4764f 100644
+index 5db0490..2ddce45 100644
 --- a/arch/x86/mm/fault.c
 +++ b/arch/x86/mm/fault.c
 @@ -13,11 +13,18 @@
 --- a/arch/x86/mm/fault.c
 +++ b/arch/x86/mm/fault.c
 @@ -13,11 +13,18 @@
@@ -21399,7 +23356,7 @@ index 0d17c8c..4f4764f 100644
  #include <asm/traps.h>                        /* dotraplinkage, ...           */
  #include <asm/pgalloc.h>              /* pgd_*(), ...                 */
  #include <asm/kmemcheck.h>            /* kmemcheck_*(), ...           */
  #include <asm/traps.h>                        /* dotraplinkage, ...           */
  #include <asm/pgalloc.h>              /* pgd_*(), ...                 */
  #include <asm/kmemcheck.h>            /* kmemcheck_*(), ...           */
- #include <asm/vsyscall.h>
+ #include <asm/fixmap.h>                       /* VSYSCALL_START               */
 +#include <asm/tlbflush.h>
 +
 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
 +#include <asm/tlbflush.h>
 +
 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
@@ -21490,7 +23447,7 @@ index 0d17c8c..4f4764f 100644
                spin_lock(&pgd_lock);
 +
 +#ifdef CONFIG_PAX_PER_CPU_PGD
                spin_lock(&pgd_lock);
 +
 +#ifdef CONFIG_PAX_PER_CPU_PGD
-+              for (cpu = 0; cpu < NR_CPUS; ++cpu) {
++              for (cpu = 0; cpu < nr_cpu_ids; ++cpu) {
 +                      pgd_t *pgd = get_cpu_pgd(cpu);
 +                      pmd_t *ret;
 +#else
 +                      pgd_t *pgd = get_cpu_pgd(cpu);
 +                      pmd_t *ret;
 +#else
@@ -21541,7 +23498,7 @@ index 0d17c8c..4f4764f 100644
        pgd_ref = pgd_offset_k(address);
        if (pgd_none(*pgd_ref))
                return -1;
        pgd_ref = pgd_offset_k(address);
        if (pgd_none(*pgd_ref))
                return -1;
-@@ -534,7 +604,7 @@ static int is_errata93(struct pt_regs *regs, unsigned long address)
+@@ -540,7 +610,7 @@ static int is_errata93(struct pt_regs *regs, unsigned long address)
  static int is_errata100(struct pt_regs *regs, unsigned long address)
  {
  #ifdef CONFIG_X86_64
  static int is_errata100(struct pt_regs *regs, unsigned long address)
  {
  #ifdef CONFIG_X86_64
@@ -21550,7 +23507,7 @@ index 0d17c8c..4f4764f 100644
                return 1;
  #endif
        return 0;
                return 1;
  #endif
        return 0;
-@@ -561,7 +631,7 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
+@@ -567,7 +637,7 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
  }
  
  static const char nx_warning[] = KERN_CRIT
  }
  
  static const char nx_warning[] = KERN_CRIT
@@ -21559,7 +23516,7 @@ index 0d17c8c..4f4764f 100644
  
  static void
  show_fault_oops(struct pt_regs *regs, unsigned long error_code,
  
  static void
  show_fault_oops(struct pt_regs *regs, unsigned long error_code,
-@@ -570,15 +640,26 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
+@@ -576,15 +646,26 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
        if (!oops_may_print())
                return;
  
        if (!oops_may_print())
                return;
  
@@ -21588,7 +23545,7 @@ index 0d17c8c..4f4764f 100644
        printk(KERN_ALERT "BUG: unable to handle kernel ");
        if (address < PAGE_SIZE)
                printk(KERN_CONT "NULL pointer dereference");
        printk(KERN_ALERT "BUG: unable to handle kernel ");
        if (address < PAGE_SIZE)
                printk(KERN_CONT "NULL pointer dereference");
-@@ -733,6 +814,21 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
+@@ -739,6 +820,21 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
                }
  #endif
  
                }
  #endif
  
@@ -21610,7 +23567,7 @@ index 0d17c8c..4f4764f 100644
                if (unlikely(show_unhandled_signals))
                        show_signal_msg(regs, error_code, address, tsk);
  
                if (unlikely(show_unhandled_signals))
                        show_signal_msg(regs, error_code, address, tsk);
  
-@@ -829,7 +925,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
+@@ -835,7 +931,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
        if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) {
                printk(KERN_ERR
        "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n",
        if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) {
                printk(KERN_ERR
        "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n",
@@ -21619,7 +23576,7 @@ index 0d17c8c..4f4764f 100644
                code = BUS_MCEERR_AR;
        }
  #endif
                code = BUS_MCEERR_AR;
        }
  #endif
-@@ -884,6 +980,99 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)
+@@ -890,6 +986,99 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)
        return 1;
  }
  
        return 1;
  }
  
@@ -21719,7 +23676,7 @@ index 0d17c8c..4f4764f 100644
  /*
   * Handle a spurious fault caused by a stale TLB entry.
   *
  /*
   * Handle a spurious fault caused by a stale TLB entry.
   *
-@@ -956,6 +1145,9 @@ int show_unhandled_signals = 1;
+@@ -962,6 +1151,9 @@ int show_unhandled_signals = 1;
  static inline int
  access_error(unsigned long error_code, struct vm_area_struct *vma)
  {
  static inline int
  access_error(unsigned long error_code, struct vm_area_struct *vma)
  {
@@ -21729,7 +23686,7 @@ index 0d17c8c..4f4764f 100644
        if (error_code & PF_WRITE) {
                /* write, present and write, not present: */
                if (unlikely(!(vma->vm_flags & VM_WRITE)))
        if (error_code & PF_WRITE) {
                /* write, present and write, not present: */
                if (unlikely(!(vma->vm_flags & VM_WRITE)))
-@@ -989,18 +1181,32 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
+@@ -995,18 +1187,32 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
  {
        struct vm_area_struct *vma;
        struct task_struct *tsk;
  {
        struct vm_area_struct *vma;
        struct task_struct *tsk;
@@ -21767,7 +23724,7 @@ index 0d17c8c..4f4764f 100644
  
        /*
         * Detect and handle instructions that would cause a page fault for
  
        /*
         * Detect and handle instructions that would cause a page fault for
-@@ -1061,7 +1267,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
+@@ -1067,7 +1273,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
         * User-mode registers count as a user access even for any
         * potential system fault or CPU buglet:
         */
         * User-mode registers count as a user access even for any
         * potential system fault or CPU buglet:
         */
@@ -21776,7 +23733,7 @@ index 0d17c8c..4f4764f 100644
                local_irq_enable();
                error_code |= PF_USER;
        } else {
                local_irq_enable();
                error_code |= PF_USER;
        } else {
-@@ -1116,6 +1322,11 @@ retry:
+@@ -1122,6 +1328,11 @@ retry:
                might_sleep();
        }
  
                might_sleep();
        }
  
@@ -21788,7 +23745,7 @@ index 0d17c8c..4f4764f 100644
        vma = find_vma(mm, address);
        if (unlikely(!vma)) {
                bad_area(regs, error_code, address);
        vma = find_vma(mm, address);
        if (unlikely(!vma)) {
                bad_area(regs, error_code, address);
-@@ -1127,18 +1338,24 @@ retry:
+@@ -1133,18 +1344,24 @@ retry:
                bad_area(regs, error_code, address);
                return;
        }
                bad_area(regs, error_code, address);
                return;
        }
@@ -21824,7 +23781,7 @@ index 0d17c8c..4f4764f 100644
        if (unlikely(expand_stack(vma, address))) {
                bad_area(regs, error_code, address);
                return;
        if (unlikely(expand_stack(vma, address))) {
                bad_area(regs, error_code, address);
                return;
-@@ -1193,3 +1410,240 @@ good_area:
+@@ -1199,3 +1416,292 @@ good_area:
  
        up_read(&mm->mmap_sem);
  }
  
        up_read(&mm->mmap_sem);
  }
@@ -21865,6 +23822,30 @@ index 0d17c8c..4f4764f 100644
 +{
 +      int err;
 +
 +{
 +      int err;
 +
++      do { /* PaX: libffi trampoline emulation */
++              unsigned char mov, jmp;
++              unsigned int addr1, addr2;
++
++#ifdef CONFIG_X86_64
++              if ((regs->ip + 9) >> 32)
++                      break;
++#endif
++
++              err = get_user(mov, (unsigned char __user *)regs->ip);
++              err |= get_user(addr1, (unsigned int __user *)(regs->ip + 1));
++              err |= get_user(jmp, (unsigned char __user *)(regs->ip + 5));
++              err |= get_user(addr2, (unsigned int __user *)(regs->ip + 6));
++
++              if (err)
++                      break;
++
++              if (mov == 0xB8 && jmp == 0xE9) {
++                      regs->ax = addr1;
++                      regs->ip = (unsigned int)(regs->ip + addr2 + 10);
++                      return 2;
++              }
++      } while (0);
++
 +      do { /* PaX: gcc trampoline emulation #1 */
 +              unsigned char mov1, mov2;
 +              unsigned short jmp;
 +      do { /* PaX: gcc trampoline emulation #1 */
 +              unsigned char mov1, mov2;
 +              unsigned short jmp;
@@ -21924,6 +23905,34 @@ index 0d17c8c..4f4764f 100644
 +{
 +      int err;
 +
 +{
 +      int err;
 +
++      do { /* PaX: libffi trampoline emulation */
++              unsigned short mov1, mov2, jmp1;
++              unsigned char stcclc, jmp2;
++              unsigned long addr1, addr2;
++
++              err = get_user(mov1, (unsigned short __user *)regs->ip);
++              err |= get_user(addr1, (unsigned long __user *)(regs->ip + 2));
++              err |= get_user(mov2, (unsigned short __user *)(regs->ip + 10));
++              err |= get_user(addr2, (unsigned long __user *)(regs->ip + 12));
++              err |= get_user(stcclc, (unsigned char __user *)(regs->ip + 20));
++              err |= get_user(jmp1, (unsigned short __user *)(regs->ip + 21));
++              err |= get_user(jmp2, (unsigned char __user *)(regs->ip + 23));
++
++              if (err)
++                      break;
++
++              if (mov1 == 0xBB49 && mov2 == 0xBA49 && (stcclc == 0xF8 || stcclc == 0xF9) && jmp1 == 0xFF49 && jmp2 == 0xE3) {
++                      regs->r11 = addr1;
++                      regs->r10 = addr2;
++                      if (stcclc == 0xF8)
++                              regs->flags &= ~X86_EFLAGS_CF;
++                      else
++                              regs->flags |= X86_EFLAGS_CF;
++                      regs->ip = addr1;
++                      return 2;
++              }
++      } while (0);
++
 +      do { /* PaX: gcc trampoline emulation #1 */
 +              unsigned short mov1, mov2, jmp1;
 +              unsigned char jmp2;
 +      do { /* PaX: gcc trampoline emulation #1 */
 +              unsigned short mov1, mov2, jmp1;
 +              unsigned char jmp2;
@@ -22066,19 +24075,10 @@ index 0d17c8c..4f4764f 100644
 +      return ret ? -EFAULT : 0;
 +}
 diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
 +      return ret ? -EFAULT : 0;
 +}
 diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
-index ea30585..7d26398 100644
+index dd74e46..7d26398 100644
 --- a/arch/x86/mm/gup.c
 +++ b/arch/x86/mm/gup.c
 --- a/arch/x86/mm/gup.c
 +++ b/arch/x86/mm/gup.c
-@@ -201,6 +201,8 @@ static noinline int gup_huge_pud(pud_t pud, unsigned long addr,
-       do {
-               VM_BUG_ON(compound_head(page) != head);
-               pages[*nr] = page;
-+              if (PageTail(page))
-+                      get_huge_page_tail(page);
-               (*nr)++;
-               page++;
-               refs++;
-@@ -253,7 +255,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
+@@ -255,7 +255,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
        addr = start;
        len = (unsigned long) nr_pages << PAGE_SHIFT;
        end = start + len;
        addr = start;
        len = (unsigned long) nr_pages << PAGE_SHIFT;
        end = start + len;
@@ -22315,10 +24315,18 @@ index f581a18..29efd37 100644
        }
        if (mm->get_unmapped_area == arch_get_unmapped_area)
 diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
        }
        if (mm->get_unmapped_area == arch_get_unmapped_area)
 diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
-index 87488b9..7129f32 100644
+index 87488b9..399f416 100644
 --- a/arch/x86/mm/init.c
 +++ b/arch/x86/mm/init.c
 --- a/arch/x86/mm/init.c
 +++ b/arch/x86/mm/init.c
-@@ -31,7 +31,7 @@ int direct_gbpages
+@@ -15,6 +15,7 @@
+ #include <asm/tlbflush.h>
+ #include <asm/tlb.h>
+ #include <asm/proto.h>
++#include <asm/desc.h>
+ unsigned long __initdata pgt_buf_start;
+ unsigned long __meminitdata pgt_buf_end;
+@@ -31,7 +32,7 @@ int direct_gbpages
  static void __init find_early_table_space(unsigned long end, int use_pse,
                                          int use_gbpages)
  {
  static void __init find_early_table_space(unsigned long end, int use_pse,
                                          int use_gbpages)
  {
@@ -22327,7 +24335,7 @@ index 87488b9..7129f32 100644
        phys_addr_t base;
  
        puds = (end + PUD_SIZE - 1) >> PUD_SHIFT;
        phys_addr_t base;
  
        puds = (end + PUD_SIZE - 1) >> PUD_SHIFT;
-@@ -312,8 +312,29 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
+@@ -312,8 +313,29 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
   */
  int devmem_is_allowed(unsigned long pagenr)
  {
   */
  int devmem_is_allowed(unsigned long pagenr)
  {
@@ -22358,7 +24366,7 @@ index 87488b9..7129f32 100644
        if (iomem_is_exclusive(pagenr << PAGE_SHIFT))
                return 0;
        if (!page_is_ram(pagenr))
        if (iomem_is_exclusive(pagenr << PAGE_SHIFT))
                return 0;
        if (!page_is_ram(pagenr))
-@@ -372,6 +393,86 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
+@@ -372,6 +394,86 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
  
  void free_initmem(void)
  {
  
  void free_initmem(void)
  {
@@ -22374,7 +24382,7 @@ index 87488b9..7129f32 100644
 +      limit = (limit - 1UL) >> PAGE_SHIFT;
 +
 +      memset(__LOAD_PHYSICAL_ADDR + PAGE_OFFSET, POISON_FREE_INITMEM, PAGE_SIZE);
 +      limit = (limit - 1UL) >> PAGE_SHIFT;
 +
 +      memset(__LOAD_PHYSICAL_ADDR + PAGE_OFFSET, POISON_FREE_INITMEM, PAGE_SIZE);
-+      for (cpu = 0; cpu < NR_CPUS; cpu++) {
++      for (cpu = 0; cpu < nr_cpu_ids; cpu++) {
 +              pack_descriptor(&d, get_desc_base(&get_cpu_gdt_table(cpu)[GDT_ENTRY_KERNEL_CS]), limit, 0x9B, 0xC);
 +              write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_KERNEL_CS, &d, DESCTYPE_S);
 +      }
 +              pack_descriptor(&d, get_desc_base(&get_cpu_gdt_table(cpu)[GDT_ENTRY_KERNEL_CS]), limit, 0x9B, 0xC);
 +              write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_KERNEL_CS, &d, DESCTYPE_S);
 +      }
@@ -22724,7 +24732,7 @@ index 29f7c6d..b46b35b 100644
        printk(KERN_INFO "Write protecting the kernel text: %luk\n",
                size >> 10);
 diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
        printk(KERN_INFO "Write protecting the kernel text: %luk\n",
                size >> 10);
 diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
-index bbaaa00..16dffad 100644
+index bbaaa00..796fa65 100644
 --- a/arch/x86/mm/init_64.c
 +++ b/arch/x86/mm/init_64.c
 @@ -75,7 +75,7 @@ early_param("gbpages", parse_direct_gbpages_on);
 --- a/arch/x86/mm/init_64.c
 +++ b/arch/x86/mm/init_64.c
 @@ -75,7 +75,7 @@ early_param("gbpages", parse_direct_gbpages_on);
@@ -22753,7 +24761,7 @@ index bbaaa00..16dffad 100644
                spin_lock(&pgd_lock);
 +
 +#ifdef CONFIG_PAX_PER_CPU_PGD
                spin_lock(&pgd_lock);
 +
 +#ifdef CONFIG_PAX_PER_CPU_PGD
-+              for (cpu = 0; cpu < NR_CPUS; ++cpu) {
++              for (cpu = 0; cpu < nr_cpu_ids; ++cpu) {
 +                      pgd_t *pgd = pgd_offset_cpu(cpu, address);
 +#else
                list_for_each_entry(page, &pgd_list, lru) {
 +                      pgd_t *pgd = pgd_offset_cpu(cpu, address);
 +#else
                list_for_each_entry(page, &pgd_list, lru) {
@@ -22873,7 +24881,7 @@ index 7b179b4..6bd1777 100644
  
        return (void *)vaddr;
 diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
  
        return (void *)vaddr;
 diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
-index be1ef57..9680edc 100644
+index be1ef57..55f0160 100644
 --- a/arch/x86/mm/ioremap.c
 +++ b/arch/x86/mm/ioremap.c
 @@ -97,7 +97,7 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
 --- a/arch/x86/mm/ioremap.c
 +++ b/arch/x86/mm/ioremap.c
 @@ -97,7 +97,7 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
@@ -22885,7 +24893,17 @@ index be1ef57..9680edc 100644
                        return NULL;
                WARN_ON_ONCE(is_ram);
        }
                        return NULL;
                WARN_ON_ONCE(is_ram);
        }
-@@ -344,7 +344,7 @@ static int __init early_ioremap_debug_setup(char *str)
+@@ -315,6 +315,9 @@ void *xlate_dev_mem_ptr(unsigned long phys)
+       /* If page is RAM, we can use __va. Otherwise ioremap and unmap. */
+       if (page_is_ram(start >> PAGE_SHIFT))
++#ifdef CONFIG_HIGHMEM
++      if ((start >> PAGE_SHIFT) < max_low_pfn)
++#endif
+               return __va(phys);
+       addr = (void __force *)ioremap_cache(start, PAGE_SIZE);
+@@ -344,7 +347,7 @@ static int __init early_ioremap_debug_setup(char *str)
  early_param("early_ioremap_debug", early_ioremap_debug_setup);
  
  static __initdata int after_paging_init;
  early_param("early_ioremap_debug", early_ioremap_debug_setup);
  
  static __initdata int after_paging_init;
@@ -22894,7 +24912,7 @@ index be1ef57..9680edc 100644
  
  static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
  {
  
  static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
  {
-@@ -381,8 +381,7 @@ void __init early_ioremap_init(void)
+@@ -381,8 +384,7 @@ void __init early_ioremap_init(void)
                slot_virt[i] = __fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i);
  
        pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
                slot_virt[i] = __fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i);
  
        pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
@@ -22921,19 +24939,19 @@ index d87dd6d..bf3fa66 100644
  
        pte = kmemcheck_pte_lookup(address);
 diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
  
        pte = kmemcheck_pte_lookup(address);
 diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
-index 1dab519..60a7e5f 100644
+index 845df68..1d8d29f 100644
 --- a/arch/x86/mm/mmap.c
 +++ b/arch/x86/mm/mmap.c
 --- a/arch/x86/mm/mmap.c
 +++ b/arch/x86/mm/mmap.c
-@@ -49,7 +49,7 @@ static unsigned int stack_maxrandom_size(void)
+@@ -52,7 +52,7 @@ static unsigned int stack_maxrandom_size(void)
   * Leave an at least ~128 MB hole with possible stack randomization.
   */
  #define MIN_GAP (128*1024*1024UL + stack_maxrandom_size())
 -#define MAX_GAP (TASK_SIZE/6*5)
 +#define MAX_GAP (pax_task_size/6*5)
  
   * Leave an at least ~128 MB hole with possible stack randomization.
   */
  #define MIN_GAP (128*1024*1024UL + stack_maxrandom_size())
 -#define MAX_GAP (TASK_SIZE/6*5)
 +#define MAX_GAP (pax_task_size/6*5)
  
- /*
-  * True on X86_32 or when emulating IA32 on X86_64
-@@ -94,27 +94,40 @@ static unsigned long mmap_rnd(void)
+ static int mmap_is_legacy(void)
+ {
+@@ -82,27 +82,40 @@ static unsigned long mmap_rnd(void)
        return rnd << PAGE_SHIFT;
  }
  
        return rnd << PAGE_SHIFT;
  }
  
@@ -22979,7 +24997,7 @@ index 1dab519..60a7e5f 100644
                return TASK_UNMAPPED_BASE + mmap_rnd();
  }
  
                return TASK_UNMAPPED_BASE + mmap_rnd();
  }
  
-@@ -125,11 +138,23 @@ static unsigned long mmap_legacy_base(void)
+@@ -113,11 +126,23 @@ static unsigned long mmap_legacy_base(void)
  void arch_pick_mmap_layout(struct mm_struct *mm)
  {
        if (mmap_is_legacy()) {
  void arch_pick_mmap_layout(struct mm_struct *mm)
  {
        if (mmap_is_legacy()) {
@@ -23006,10 +25024,10 @@ index 1dab519..60a7e5f 100644
                mm->unmap_area = arch_unmap_area_topdown;
        }
 diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c
                mm->unmap_area = arch_unmap_area_topdown;
        }
 diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c
-index 67421f3..8d6b107 100644
+index de54b9b..799051e 100644
 --- a/arch/x86/mm/mmio-mod.c
 +++ b/arch/x86/mm/mmio-mod.c
 --- a/arch/x86/mm/mmio-mod.c
 +++ b/arch/x86/mm/mmio-mod.c
-@@ -195,7 +195,7 @@ static void pre(struct kmmio_probe *p, struct pt_regs *regs,
+@@ -194,7 +194,7 @@ static void pre(struct kmmio_probe *p, struct pt_regs *regs,
                break;
        default:
                {
                break;
        default:
                {
@@ -23018,7 +25036,7 @@ index 67421f3..8d6b107 100644
                        my_trace->opcode = MMIO_UNKNOWN_OP;
                        my_trace->width = 0;
                        my_trace->value = (*ip) << 16 | *(ip + 1) << 8 |
                        my_trace->opcode = MMIO_UNKNOWN_OP;
                        my_trace->width = 0;
                        my_trace->value = (*ip) << 16 | *(ip + 1) << 8 |
-@@ -235,7 +235,7 @@ static void post(struct kmmio_probe *p, unsigned long condition,
+@@ -234,7 +234,7 @@ static void post(struct kmmio_probe *p, unsigned long condition,
  static void ioremap_trace_core(resource_size_t offset, unsigned long size,
                                                        void __iomem *addr)
  {
  static void ioremap_trace_core(resource_size_t offset, unsigned long size,
                                                        void __iomem *addr)
  {
@@ -23027,7 +25045,7 @@ index 67421f3..8d6b107 100644
        struct remap_trace *trace = kmalloc(sizeof(*trace), GFP_KERNEL);
        /* These are page-unaligned. */
        struct mmiotrace_map map = {
        struct remap_trace *trace = kmalloc(sizeof(*trace), GFP_KERNEL);
        /* These are page-unaligned. */
        struct mmiotrace_map map = {
-@@ -259,7 +259,7 @@ static void ioremap_trace_core(resource_size_t offset, unsigned long size,
+@@ -258,7 +258,7 @@ static void ioremap_trace_core(resource_size_t offset, unsigned long size,
                        .private = trace
                },
                .phys = offset,
                        .private = trace
                },
                .phys = offset,
@@ -23050,7 +25068,7 @@ index b008656..773eac2 100644
  
  struct split_state {
 diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
  
  struct split_state {
 diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
-index f9e5267..6f6e27f 100644
+index f9e5267..77b1a40 100644
 --- a/arch/x86/mm/pageattr.c
 +++ b/arch/x86/mm/pageattr.c
 @@ -261,7 +261,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
 --- a/arch/x86/mm/pageattr.c
 +++ b/arch/x86/mm/pageattr.c
 @@ -261,7 +261,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
@@ -23114,7 +25132,7 @@ index f9e5267..6f6e27f 100644
 +#endif
  
 +#ifdef CONFIG_PAX_PER_CPU_PGD
 +#endif
  
 +#ifdef CONFIG_PAX_PER_CPU_PGD
-+              for (cpu = 0; cpu < NR_CPUS; ++cpu) {
++              for (cpu = 0; cpu < nr_cpu_ids; ++cpu) {
 +                      pgd_t *pgd = get_cpu_pgd(cpu);
 +#else
                list_for_each_entry(page, &pgd_list, lru) {
 +                      pgd_t *pgd = get_cpu_pgd(cpu);
 +#else
                list_for_each_entry(page, &pgd_list, lru) {
@@ -23238,7 +25256,7 @@ index 9f0614d..92ae64a 100644
        p += get_opcode(p, &opcode);
        for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
 diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
        p += get_opcode(p, &opcode);
        for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
 diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
-index 8573b83..6372501 100644
+index 8573b83..c3b1a30 100644
 --- a/arch/x86/mm/pgtable.c
 +++ b/arch/x86/mm/pgtable.c
 @@ -84,10 +84,52 @@ static inline void pgd_list_del(pgd_t *pgd)
 --- a/arch/x86/mm/pgtable.c
 +++ b/arch/x86/mm/pgtable.c
 @@ -84,10 +84,52 @@ static inline void pgd_list_del(pgd_t *pgd)
@@ -23277,7 +25295,7 @@ index 8573b83..6372501 100644
 +#define paravirt_release_pxd(pfn)     paravirt_release_pud(pfn)
 +#define pxd_free(mm, pud)             pud_free((mm), (pud))
 +#define pyd_populate(mm, pgd, pud)    pgd_populate((mm), (pgd), (pud))
 +#define paravirt_release_pxd(pfn)     paravirt_release_pud(pfn)
 +#define pxd_free(mm, pud)             pud_free((mm), (pud))
 +#define pyd_populate(mm, pgd, pud)    pgd_populate((mm), (pgd), (pud))
-+#define pyd_offset(mm ,address)               pgd_offset((mm), (address))
++#define pyd_offset(mmaddress)               pgd_offset((mm), (address))
 +#define PYD_SIZE                      PGDIR_SIZE
 +#else
 +#define pxd_t                         pmd_t
 +#define PYD_SIZE                      PGDIR_SIZE
 +#else
 +#define pxd_t                         pmd_t
@@ -23285,7 +25303,7 @@ index 8573b83..6372501 100644
 +#define paravirt_release_pxd(pfn)     paravirt_release_pmd(pfn)
 +#define pxd_free(mm, pud)             pmd_free((mm), (pud))
 +#define pyd_populate(mm, pgd, pud)    pud_populate((mm), (pgd), (pud))
 +#define paravirt_release_pxd(pfn)     paravirt_release_pmd(pfn)
 +#define pxd_free(mm, pud)             pmd_free((mm), (pud))
 +#define pyd_populate(mm, pgd, pud)    pud_populate((mm), (pgd), (pud))
-+#define pyd_offset(mm ,address)               pud_offset((mm), (address))
++#define pyd_offset(mmaddress)               pud_offset((mm), (address))
 +#define PYD_SIZE                      PUD_SIZE
 +#endif
 +
 +#define PYD_SIZE                      PUD_SIZE
 +#endif
 +
@@ -23635,7 +25653,7 @@ index 6687022..ceabcfa 100644
 +      pax_force_retaddr
        ret
 diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
 +      pax_force_retaddr
        ret
 diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
-index bfab3fa..05aac3a 100644
+index 7c1b765..8c072c6 100644
 --- a/arch/x86/net/bpf_jit_comp.c
 +++ b/arch/x86/net/bpf_jit_comp.c
 @@ -117,6 +117,10 @@ static inline void bpf_flush_icache(void *start, void *end)
 --- a/arch/x86/net/bpf_jit_comp.c
 +++ b/arch/x86/net/bpf_jit_comp.c
 @@ -117,6 +117,10 @@ static inline void bpf_flush_icache(void *start, void *end)
@@ -23660,7 +25678,23 @@ index bfab3fa..05aac3a 100644
        /* Before first pass, make a rough estimation of addrs[]
         * each bpf instruction is translated to less than 64 bytes
         */
        /* Before first pass, make a rough estimation of addrs[]
         * each bpf instruction is translated to less than 64 bytes
         */
-@@ -585,11 +593,12 @@ cond_branch:                     f_offset = addrs[i + filter[i].jf] - addrs[i];
+@@ -476,7 +484,7 @@ void bpf_jit_compile(struct sk_filter *fp)
+                               func = sk_load_word;
+ common_load:                  seen |= SEEN_DATAREF;
+                               if ((int)K < 0)
+-                                      goto out;
++                                      goto error;
+                               t_offset = func - (image + addrs[i]);
+                               EMIT1_off32(0xbe, K); /* mov imm32,%esi */
+                               EMIT1_off32(0xe8, t_offset); /* call */
+@@ -586,17 +594,18 @@ cond_branch:                     f_offset = addrs[i + filter[i].jf] - addrs[i];
+                               break;
+                       default:
+                               /* hmm, too complex filter, give up with jit compiler */
+-                              goto out;
++                              goto error;
+                       }
+                       ilen = prog - temp;
                        if (image) {
                                if (unlikely(proglen + ilen > oldproglen)) {
                                        pr_err("bpb_jit_compile fatal error\n");
                        if (image) {
                                if (unlikely(proglen + ilen > oldproglen)) {
                                        pr_err("bpb_jit_compile fatal error\n");
@@ -23668,7 +25702,7 @@ index bfab3fa..05aac3a 100644
 -                                      module_free(NULL, image);
 -                                      return;
 +                                      module_free_exec(NULL, image);
 -                                      module_free(NULL, image);
 -                                      return;
 +                                      module_free_exec(NULL, image);
-+                                      goto out;
++                                      goto error;
                                }
 +                              pax_open_kernel();
                                memcpy(image + proglen, temp, ilen);
                                }
 +                              pax_open_kernel();
                                memcpy(image + proglen, temp, ilen);
@@ -23676,28 +25710,38 @@ index bfab3fa..05aac3a 100644
                        }
                        proglen += ilen;
                        addrs[i] = proglen;
                        }
                        proglen += ilen;
                        addrs[i] = proglen;
-@@ -609,7 +618,7 @@ cond_branch:                       f_offset = addrs[i + filter[i].jf] - addrs[i];
+@@ -617,11 +626,9 @@ cond_branch:                      f_offset = addrs[i + filter[i].jf] - addrs[i];
                        break;
                }
                if (proglen == oldproglen) {
 -                      image = module_alloc(max_t(unsigned int,
                        break;
                }
                if (proglen == oldproglen) {
 -                      image = module_alloc(max_t(unsigned int,
-+                      image = module_alloc_exec(max_t(unsigned int,
-                                                  proglen,
-                                                  sizeof(struct work_struct)));
+-                                                 proglen,
+-                                                 sizeof(struct work_struct)));
++                      image = module_alloc_exec(proglen);
                        if (!image)
                        if (!image)
-@@ -631,24 +640,27 @@ cond_branch:                     f_offset = addrs[i + filter[i].jf] - addrs[i];
-               fp->bpf_func = (void *)image;
+-                              goto out;
++                              goto error;
+               }
+               oldproglen = proglen;
        }
        }
+@@ -637,7 +644,10 @@ cond_branch:                      f_offset = addrs[i + filter[i].jf] - addrs[i];
+               bpf_flush_icache(image, image + proglen);
+               fp->bpf_func = (void *)image;
+-      }
++      } else
++error:
++              kfree(fp->work);
++
  out:
  out:
-+      kfree(fp->work);
        kfree(addrs);
        return;
        kfree(addrs);
        return;
- }
+@@ -645,18 +655,20 @@ out:
  
  static void jit_free_defer(struct work_struct *arg)
  {
 -      module_free(NULL, arg);
  
  static void jit_free_defer(struct work_struct *arg)
  {
 -      module_free(NULL, arg);
-+      module_free_exec(NULL, ((struct bpf_jit_work*)arg)->image);
++      module_free_exec(NULL, ((struct bpf_jit_work *)arg)->image);
 +      kfree(arg);
  }
  
 +      kfree(arg);
  }
  
@@ -23768,7 +25812,7 @@ index cb29191..036766d 100644
        return 1;
  }
 diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c
        return 1;
  }
 diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c
-index f685535..2b76a81 100644
+index db0e9a5..0372c14 100644
 --- a/arch/x86/pci/pcbios.c
 +++ b/arch/x86/pci/pcbios.c
 @@ -79,50 +79,93 @@ union bios32 {
 --- a/arch/x86/pci/pcbios.c
 +++ b/arch/x86/pci/pcbios.c
 @@ -79,50 +79,93 @@ union bios32 {
@@ -23849,7 +25893,7 @@ index f685535..2b76a81 100644
 +                      flags |= 8;
 +              }
 +
 +                      flags |= 8;
 +              }
 +
-+              for (cpu = 0; cpu < NR_CPUS; cpu++) {
++              for (cpu = 0; cpu < nr_cpu_ids; cpu++) {
 +                      gdt = get_cpu_gdt_table(cpu);
 +                      pack_descriptor(&d, address, length, 0x9b, flags);
 +                      write_gdt_entry(gdt, GDT_ENTRY_PCIBIOS_CS, &d, DESCTYPE_S);
 +                      gdt = get_cpu_gdt_table(cpu);
 +                      pack_descriptor(&d, address, length, 0x9b, flags);
 +                      write_gdt_entry(gdt, GDT_ENTRY_PCIBIOS_CS, &d, DESCTYPE_S);
@@ -24076,21 +26120,11 @@ index f685535..2b76a81 100644
  }
  EXPORT_SYMBOL(pcibios_set_irq_routing);
 diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
  }
  EXPORT_SYMBOL(pcibios_set_irq_routing);
 diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
-index 5cab48e..b025f9b 100644
+index 40e4469..1ab536e 100644
 --- a/arch/x86/platform/efi/efi_32.c
 +++ b/arch/x86/platform/efi/efi_32.c
 --- a/arch/x86/platform/efi/efi_32.c
 +++ b/arch/x86/platform/efi/efi_32.c
-@@ -38,70 +38,56 @@
-  */
- static unsigned long efi_rt_eflags;
--static pgd_t efi_bak_pg_dir_pointer[2];
-+static pgd_t __initdata efi_bak_pg_dir_pointer[KERNEL_PGD_PTRS];
--void efi_call_phys_prelog(void)
-+void __init efi_call_phys_prelog(void)
+@@ -44,11 +44,22 @@ void efi_call_phys_prelog(void)
  {
  {
--      unsigned long cr4;
--      unsigned long temp;
        struct desc_ptr gdt_descr;
  
 +#ifdef CONFIG_PAX_KERNEXEC
        struct desc_ptr gdt_descr;
  
 +#ifdef CONFIG_PAX_KERNEXEC
@@ -24099,36 +26133,7 @@ index 5cab48e..b025f9b 100644
 +
        local_irq_save(efi_rt_eflags);
  
 +
        local_irq_save(efi_rt_eflags);
  
--      /*
--       * If I don't have PAE, I should just duplicate two entries in page
--       * directory. If I have PAE, I just need to duplicate one entry in
--       * page directory.
--       */
--      cr4 = read_cr4_safe();
--
--      if (cr4 & X86_CR4_PAE) {
--              efi_bak_pg_dir_pointer[0].pgd =
--                  swapper_pg_dir[pgd_index(0)].pgd;
--              swapper_pg_dir[0].pgd =
--                  swapper_pg_dir[pgd_index(PAGE_OFFSET)].pgd;
--      } else {
--              efi_bak_pg_dir_pointer[0].pgd =
--                  swapper_pg_dir[pgd_index(0)].pgd;
--              efi_bak_pg_dir_pointer[1].pgd =
--                  swapper_pg_dir[pgd_index(0x400000)].pgd;
--              swapper_pg_dir[pgd_index(0)].pgd =
--                  swapper_pg_dir[pgd_index(PAGE_OFFSET)].pgd;
--              temp = PAGE_OFFSET + 0x400000;
--              swapper_pg_dir[pgd_index(0x400000)].pgd =
--                  swapper_pg_dir[pgd_index(temp)].pgd;
--      }
-+      clone_pgd_range(efi_bak_pg_dir_pointer, swapper_pg_dir, KERNEL_PGD_PTRS);
-+      clone_pgd_range(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY,
-+                      min_t(unsigned long, KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY));
-       /*
-        * After the lock is released, the original page table is restored.
-        */
+       load_cr3(initial_page_table);
        __flush_tlb_all();
  
 +#ifdef CONFIG_PAX_KERNEXEC
        __flush_tlb_all();
  
 +#ifdef CONFIG_PAX_KERNEXEC
@@ -24141,12 +26146,8 @@ index 5cab48e..b025f9b 100644
        gdt_descr.address = __pa(get_cpu_gdt_table(0));
        gdt_descr.size = GDT_SIZE - 1;
        load_gdt(&gdt_descr);
        gdt_descr.address = __pa(get_cpu_gdt_table(0));
        gdt_descr.size = GDT_SIZE - 1;
        load_gdt(&gdt_descr);
- }
--void efi_call_phys_epilog(void)
-+void __init efi_call_phys_epilog(void)
+@@ -58,6 +69,14 @@ void efi_call_phys_epilog(void)
  {
  {
--      unsigned long cr4;
        struct desc_ptr gdt_descr;
  
 +#ifdef CONFIG_PAX_KERNEXEC
        struct desc_ptr gdt_descr;
  
 +#ifdef CONFIG_PAX_KERNEXEC
@@ -24160,22 +26161,6 @@ index 5cab48e..b025f9b 100644
        gdt_descr.address = (unsigned long)get_cpu_gdt_table(0);
        gdt_descr.size = GDT_SIZE - 1;
        load_gdt(&gdt_descr);
        gdt_descr.address = (unsigned long)get_cpu_gdt_table(0);
        gdt_descr.size = GDT_SIZE - 1;
        load_gdt(&gdt_descr);
--      cr4 = read_cr4_safe();
--
--      if (cr4 & X86_CR4_PAE) {
--              swapper_pg_dir[pgd_index(0)].pgd =
--                  efi_bak_pg_dir_pointer[0].pgd;
--      } else {
--              swapper_pg_dir[pgd_index(0)].pgd =
--                  efi_bak_pg_dir_pointer[0].pgd;
--              swapper_pg_dir[pgd_index(0x400000)].pgd =
--                  efi_bak_pg_dir_pointer[1].pgd;
--      }
-+      clone_pgd_range(swapper_pg_dir, efi_bak_pg_dir_pointer, KERNEL_PGD_PTRS);
-       /*
-        * After the lock is released, the original page table is restored.
 diff --git a/arch/x86/platform/efi/efi_stub_32.S b/arch/x86/platform/efi/efi_stub_32.S
 index fbe66e6..c5c0dd2 100644
 --- a/arch/x86/platform/efi/efi_stub_32.S
 diff --git a/arch/x86/platform/efi/efi_stub_32.S b/arch/x86/platform/efi/efi_stub_32.S
 index fbe66e6..c5c0dd2 100644
 --- a/arch/x86/platform/efi/efi_stub_32.S
@@ -24356,46 +26341,59 @@ index 4c07cca..2c8427d 100644
        ret
  ENDPROC(efi_call6)
 diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c
        ret
  ENDPROC(efi_call6)
 diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c
-index fe73276..70fe25a 100644
+index ad4ec1c..686479e 100644
 --- a/arch/x86/platform/mrst/mrst.c
 +++ b/arch/x86/platform/mrst/mrst.c
 --- a/arch/x86/platform/mrst/mrst.c
 +++ b/arch/x86/platform/mrst/mrst.c
-@@ -239,14 +239,16 @@ static int mrst_i8042_detect(void)
- }
+@@ -76,18 +76,20 @@ struct sfi_rtc_table_entry sfi_mrtc_array[SFI_MRTC_MAX];
+ EXPORT_SYMBOL_GPL(sfi_mrtc_array);
+ int sfi_mrtc_num;
  
  
- /* Reboot and power off are handled by the SCU on a MID device */
 -static void mrst_power_off(void)
 +static __noreturn void mrst_power_off(void)
  {
 -static void mrst_power_off(void)
 +static __noreturn void mrst_power_off(void)
  {
-       intel_scu_ipc_simple_command(0xf1, 1);
+       if (__mrst_cpu_chip == MRST_CPU_CHIP_LINCROFT)
+               intel_scu_ipc_simple_command(IPCMSG_COLD_RESET, 1);
 +      BUG();
  }
  
 -static void mrst_reboot(void)
 +static __noreturn void mrst_reboot(void)
  {
 +      BUG();
  }
  
 -static void mrst_reboot(void)
 +static __noreturn void mrst_reboot(void)
  {
-       intel_scu_ipc_simple_command(0xf1, 0);
+       if (__mrst_cpu_chip == MRST_CPU_CHIP_LINCROFT)
+               intel_scu_ipc_simple_command(IPCMSG_COLD_RESET, 0);
+       else
+               intel_scu_ipc_simple_command(IPCMSG_COLD_BOOT, 0);
 +      BUG();
  }
  
 +      BUG();
  }
  
- /*
+ /* parse all the mtimer info to a static mtimer array */
 diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
 diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
-index 5b55219..b326540 100644
+index 81aee5a..9ad9aae 100644
 --- a/arch/x86/platform/uv/tlb_uv.c
 +++ b/arch/x86/platform/uv/tlb_uv.c
 --- a/arch/x86/platform/uv/tlb_uv.c
 +++ b/arch/x86/platform/uv/tlb_uv.c
-@@ -377,6 +377,8 @@ static void reset_with_ipi(struct pnmask *distribution, struct bau_control *bcp)
-       struct bau_control *smaster = bcp->socket_master;
-       struct reset_args reset_args;
-+      pax_track_stack();
-+
-       reset_args.sender = sender;
-       cpus_clear(*mask);
-       /* find a single cpu for each uvhub in this distribution mask */
+@@ -1433,6 +1433,8 @@ static ssize_t tunables_read(struct file *file, char __user *userbuf,
+  *  0: display meaning of the statistics
+  */
+ static ssize_t ptc_proc_write(struct file *file, const char __user *user,
++                              size_t count, loff_t *data) __size_overflow(3);
++static ssize_t ptc_proc_write(struct file *file, const char __user *user,
+                               size_t count, loff_t *data)
+ {
+       int cpu;
+@@ -1548,6 +1550,8 @@ static int parse_tunables_write(struct bau_control *bcp, char *instr,
+  * Handle a write to debugfs. (/sys/kernel/debug/sgi_uv/bau_tunables)
+  */
+ static ssize_t tunables_write(struct file *file, const char __user *user,
++                              size_t count, loff_t *data) __size_overflow(3);
++static ssize_t tunables_write(struct file *file, const char __user *user,
+                               size_t count, loff_t *data)
+ {
+       int cpu;
 diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
 diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
-index 87bb35e..eff2da8 100644
+index f10c0af..3ec1f95 100644
 --- a/arch/x86/power/cpu.c
 +++ b/arch/x86/power/cpu.c
 --- a/arch/x86/power/cpu.c
 +++ b/arch/x86/power/cpu.c
-@@ -130,7 +130,7 @@ static void do_fpu_end(void)
+@@ -131,7 +131,7 @@ static void do_fpu_end(void)
  static void fix_processor_context(void)
  {
        int cpu = smp_processor_id();
  static void fix_processor_context(void)
  {
        int cpu = smp_processor_id();
@@ -24404,7 +26402,7 @@ index 87bb35e..eff2da8 100644
  
        set_tss_desc(cpu, t);   /*
                                 * This just modifies memory; should not be
  
        set_tss_desc(cpu, t);   /*
                                 * This just modifies memory; should not be
-@@ -140,7 +140,9 @@ static void fix_processor_context(void)
+@@ -141,7 +141,9 @@ static void fix_processor_context(void)
                                 */
  
  #ifdef CONFIG_X86_64
                                 */
  
  #ifdef CONFIG_X86_64
@@ -24514,7 +26512,7 @@ index 468d591..8e80a0a 100644
        return NULL;
  }
 diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
        return NULL;
  }
 diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
-index 316fbca..4638633 100644
+index 153407c..611cba9 100644
 --- a/arch/x86/vdso/vma.c
 +++ b/arch/x86/vdso/vma.c
 @@ -16,8 +16,6 @@
 --- a/arch/x86/vdso/vma.c
 +++ b/arch/x86/vdso/vma.c
 @@ -16,8 +16,6 @@
@@ -24526,7 +26524,15 @@ index 316fbca..4638633 100644
  extern char vdso_start[], vdso_end[];
  extern unsigned short vdso_sync_cpuid;
  
  extern char vdso_start[], vdso_end[];
  extern unsigned short vdso_sync_cpuid;
  
-@@ -97,13 +95,15 @@ static unsigned long vdso_addr(unsigned long start, unsigned len)
+@@ -96,7 +94,6 @@ static unsigned long vdso_addr(unsigned long start, unsigned len)
+        * unaligned here as a result of stack start randomization.
+        */
+       addr = PAGE_ALIGN(addr);
+-      addr = align_addr(addr, NULL, ALIGN_VDSO);
+       return addr;
+ }
+@@ -106,40 +103,35 @@ static unsigned long vdso_addr(unsigned long start, unsigned len)
  int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
  {
        struct mm_struct *mm = current->mm;
  int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
  {
        struct mm_struct *mm = current->mm;
@@ -24544,9 +26550,10 @@ index 316fbca..4638633 100644
 +#endif
 +
        addr = vdso_addr(mm->start_stack, vdso_size);
 +#endif
 +
        addr = vdso_addr(mm->start_stack, vdso_size);
++      addr = align_addr(addr, NULL, ALIGN_VDSO);
        addr = get_unmapped_area(NULL, addr, vdso_size, 0, 0);
        if (IS_ERR_VALUE(addr)) {
        addr = get_unmapped_area(NULL, addr, vdso_size, 0, 0);
        if (IS_ERR_VALUE(addr)) {
-@@ -111,26 +111,18 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
+               ret = addr;
                goto up_fail;
        }
  
                goto up_fail;
        }
  
@@ -24578,7 +26585,7 @@ index 316fbca..4638633 100644
 -}
 -__setup("vdso=", vdso_setup);
 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
 -}
 -__setup("vdso=", vdso_setup);
 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 46c8069..6330d3c 100644
+index 1f92865..c843b20 100644
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
 @@ -85,8 +85,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
 @@ -85,8 +85,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
@@ -24590,7 +26597,7 @@ index 46c8069..6330d3c 100644
  RESERVE_BRK(shared_info_page_brk, PAGE_SIZE);
  __read_mostly int xen_have_vector_callback;
  EXPORT_SYMBOL_GPL(xen_have_vector_callback);
  RESERVE_BRK(shared_info_page_brk, PAGE_SIZE);
  __read_mostly int xen_have_vector_callback;
  EXPORT_SYMBOL_GPL(xen_have_vector_callback);
-@@ -1028,7 +1026,7 @@ static const struct pv_apic_ops xen_apic_ops __initconst = {
+@@ -1029,7 +1027,7 @@ static const struct pv_apic_ops xen_apic_ops __initconst = {
  #endif
  };
  
  #endif
  };
  
@@ -24599,7 +26606,7 @@ index 46c8069..6330d3c 100644
  {
        struct sched_shutdown r = { .reason = reason };
  
  {
        struct sched_shutdown r = { .reason = reason };
  
-@@ -1036,17 +1034,17 @@ static void xen_reboot(int reason)
+@@ -1037,17 +1035,17 @@ static void xen_reboot(int reason)
                BUG();
  }
  
                BUG();
  }
  
@@ -24620,7 +26627,7 @@ index 46c8069..6330d3c 100644
  {
        xen_reboot(SHUTDOWN_poweroff);
  }
  {
        xen_reboot(SHUTDOWN_poweroff);
  }
-@@ -1152,7 +1150,17 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1153,7 +1151,17 @@ asmlinkage void __init xen_start_kernel(void)
        __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
  
        /* Work out if we support NX */
        __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
  
        /* Work out if we support NX */
@@ -24639,7 +26646,7 @@ index 46c8069..6330d3c 100644
  
        xen_setup_features();
  
  
        xen_setup_features();
  
-@@ -1183,13 +1191,6 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1184,13 +1192,6 @@ asmlinkage void __init xen_start_kernel(void)
  
        machine_ops = xen_machine_ops;
  
  
        machine_ops = xen_machine_ops;
  
@@ -24654,10 +26661,10 @@ index 46c8069..6330d3c 100644
  
  #ifdef CONFIG_ACPI_NUMA
 diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
  
  #ifdef CONFIG_ACPI_NUMA
 diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
-index 3dd53f9..5aa5df3 100644
+index 87f6673..e2555a6 100644
 --- a/arch/x86/xen/mmu.c
 +++ b/arch/x86/xen/mmu.c
 --- a/arch/x86/xen/mmu.c
 +++ b/arch/x86/xen/mmu.c
-@@ -1768,6 +1768,9 @@ pgd_t * __init xen_setup_kernel_pagetable(pgd_t *pgd,
+@@ -1733,6 +1733,9 @@ pgd_t * __init xen_setup_kernel_pagetable(pgd_t *pgd,
        convert_pfn_mfn(init_level4_pgt);
        convert_pfn_mfn(level3_ident_pgt);
        convert_pfn_mfn(level3_kernel_pgt);
        convert_pfn_mfn(init_level4_pgt);
        convert_pfn_mfn(level3_ident_pgt);
        convert_pfn_mfn(level3_kernel_pgt);
@@ -24667,7 +26674,7 @@ index 3dd53f9..5aa5df3 100644
  
        l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd);
        l2 = m2v(l3[pud_index(__START_KERNEL_map)].pud);
  
        l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd);
        l2 = m2v(l3[pud_index(__START_KERNEL_map)].pud);
-@@ -1786,7 +1789,11 @@ pgd_t * __init xen_setup_kernel_pagetable(pgd_t *pgd,
+@@ -1751,7 +1754,11 @@ pgd_t * __init xen_setup_kernel_pagetable(pgd_t *pgd,
        set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
        set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
        set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
        set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
        set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
        set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
@@ -24679,7 +26686,7 @@ index 3dd53f9..5aa5df3 100644
        set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
        set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
  
        set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
        set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
  
-@@ -2000,6 +2007,7 @@ static void __init xen_post_allocator_init(void)
+@@ -1962,6 +1969,7 @@ static void __init xen_post_allocator_init(void)
        pv_mmu_ops.set_pud = xen_set_pud;
  #if PAGETABLE_LEVELS == 4
        pv_mmu_ops.set_pgd = xen_set_pgd;
        pv_mmu_ops.set_pud = xen_set_pud;
  #if PAGETABLE_LEVELS == 4
        pv_mmu_ops.set_pgd = xen_set_pgd;
@@ -24687,7 +26694,7 @@ index 3dd53f9..5aa5df3 100644
  #endif
  
        /* This will work as long as patching hasn't happened yet
  #endif
  
        /* This will work as long as patching hasn't happened yet
-@@ -2081,6 +2089,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
+@@ -2043,6 +2051,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
        .pud_val = PV_CALLEE_SAVE(xen_pud_val),
        .make_pud = PV_CALLEE_SAVE(xen_make_pud),
        .set_pgd = xen_set_pgd_hyper,
        .pud_val = PV_CALLEE_SAVE(xen_pud_val),
        .make_pud = PV_CALLEE_SAVE(xen_make_pud),
        .set_pgd = xen_set_pgd_hyper,
@@ -24803,6 +26810,67 @@ index b095739..8c17bcd 100644
  struct trap_info;
  void xen_copy_trap_info(struct trap_info *traps);
  
  struct trap_info;
  void xen_copy_trap_info(struct trap_info *traps);
  
+diff --git a/arch/xtensa/variants/dc232b/include/variant/core.h b/arch/xtensa/variants/dc232b/include/variant/core.h
+index 525bd3d..ef888b1 100644
+--- a/arch/xtensa/variants/dc232b/include/variant/core.h
++++ b/arch/xtensa/variants/dc232b/include/variant/core.h
+@@ -119,9 +119,9 @@
+   ----------------------------------------------------------------------*/
+ #define XCHAL_ICACHE_LINESIZE         32      /* I-cache line size in bytes */
+-#define XCHAL_DCACHE_LINESIZE         32      /* D-cache line size in bytes */
+ #define XCHAL_ICACHE_LINEWIDTH                5       /* log2(I line size in bytes) */
+ #define XCHAL_DCACHE_LINEWIDTH                5       /* log2(D line size in bytes) */
++#define XCHAL_DCACHE_LINESIZE         (_AC(1,UL) << XCHAL_DCACHE_LINEWIDTH)   /* D-cache line size in bytes */
+ #define XCHAL_ICACHE_SIZE             16384   /* I-cache size in bytes or 0 */
+ #define XCHAL_DCACHE_SIZE             16384   /* D-cache size in bytes or 0 */
+diff --git a/arch/xtensa/variants/fsf/include/variant/core.h b/arch/xtensa/variants/fsf/include/variant/core.h
+index 2f33760..835e50a 100644
+--- a/arch/xtensa/variants/fsf/include/variant/core.h
++++ b/arch/xtensa/variants/fsf/include/variant/core.h
+@@ -11,6 +11,7 @@
+ #ifndef _XTENSA_CORE_H
+ #define _XTENSA_CORE_H
++#include <linux/const.h>
+ /****************************************************************************
+           Parameters Useful for Any Code, USER or PRIVILEGED
+@@ -112,9 +113,9 @@
+   ----------------------------------------------------------------------*/
+ #define XCHAL_ICACHE_LINESIZE         16      /* I-cache line size in bytes */
+-#define XCHAL_DCACHE_LINESIZE         16      /* D-cache line size in bytes */
+ #define XCHAL_ICACHE_LINEWIDTH                4       /* log2(I line size in bytes) */
+ #define XCHAL_DCACHE_LINEWIDTH                4       /* log2(D line size in bytes) */
++#define XCHAL_DCACHE_LINESIZE         (_AC(1,UL) << XCHAL_DCACHE_LINEWIDTH) /* D-cache line size in bytes */
+ #define XCHAL_ICACHE_SIZE             8192    /* I-cache size in bytes or 0 */
+ #define XCHAL_DCACHE_SIZE             8192    /* D-cache size in bytes or 0 */
+diff --git a/arch/xtensa/variants/s6000/include/variant/core.h b/arch/xtensa/variants/s6000/include/variant/core.h
+index af00795..2bb8105 100644
+--- a/arch/xtensa/variants/s6000/include/variant/core.h
++++ b/arch/xtensa/variants/s6000/include/variant/core.h
+@@ -11,6 +11,7 @@
+ #ifndef _XTENSA_CORE_CONFIGURATION_H
+ #define _XTENSA_CORE_CONFIGURATION_H
++#include <linux/const.h>
+ /****************************************************************************
+           Parameters Useful for Any Code, USER or PRIVILEGED
+@@ -118,9 +119,9 @@
+   ----------------------------------------------------------------------*/
+ #define XCHAL_ICACHE_LINESIZE         16      /* I-cache line size in bytes */
+-#define XCHAL_DCACHE_LINESIZE         16      /* D-cache line size in bytes */
+ #define XCHAL_ICACHE_LINEWIDTH                4       /* log2(I line size in bytes) */
+ #define XCHAL_DCACHE_LINEWIDTH                4       /* log2(D line size in bytes) */
++#define XCHAL_DCACHE_LINESIZE         (_AC(1,UL) << XCHAL_DCACHE_LINEWIDTH)   /* D-cache line size in bytes */
+ #define XCHAL_ICACHE_SIZE             32768   /* I-cache size in bytes or 0 */
+ #define XCHAL_DCACHE_SIZE             32768   /* D-cache size in bytes or 0 */
 diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c
 index 58916af..9cb880b 100644
 --- a/block/blk-iopoll.c
 diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c
 index 58916af..9cb880b 100644
 --- a/block/blk-iopoll.c
@@ -24817,7 +26885,7 @@ index 58916af..9cb880b 100644
        struct list_head *list = &__get_cpu_var(blk_cpu_iopoll);
        int rearm = 0, budget = blk_iopoll_budget;
 diff --git a/block/blk-map.c b/block/blk-map.c
        struct list_head *list = &__get_cpu_var(blk_cpu_iopoll);
        int rearm = 0, budget = blk_iopoll_budget;
 diff --git a/block/blk-map.c b/block/blk-map.c
-index 164cd00..6d96fc1 100644
+index 623e1cd..ca1e109 100644
 --- a/block/blk-map.c
 +++ b/block/blk-map.c
 @@ -302,7 +302,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
 --- a/block/blk-map.c
 +++ b/block/blk-map.c
 @@ -302,7 +302,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
@@ -24843,7 +26911,7 @@ index 1366a89..e17f54b 100644
        struct list_head *cpu_list, local_list;
  
 diff --git a/block/bsg.c b/block/bsg.c
        struct list_head *cpu_list, local_list;
  
 diff --git a/block/bsg.c b/block/bsg.c
-index 702f131..37808bf 100644
+index c0ab25c..9d49f8f 100644
 --- a/block/bsg.c
 +++ b/block/bsg.c
 @@ -176,16 +176,24 @@ static int blk_fill_sgv4_hdr_rq(struct request_queue *q, struct request *rq,
 --- a/block/bsg.c
 +++ b/block/bsg.c
 @@ -176,16 +176,24 @@ static int blk_fill_sgv4_hdr_rq(struct request_queue *q, struct request *rq,
@@ -24887,10 +26955,10 @@ index 7b72502..646105c 100644
                        err = -EFAULT;
                        goto out;
 diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
                        err = -EFAULT;
                        goto out;
 diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
-index 4f4230b..0feae9a 100644
+index 688be8a..8a37d98 100644
 --- a/block/scsi_ioctl.c
 +++ b/block/scsi_ioctl.c
 --- a/block/scsi_ioctl.c
 +++ b/block/scsi_ioctl.c
-@@ -222,8 +222,20 @@ EXPORT_SYMBOL(blk_verify_command);
+@@ -223,8 +223,20 @@ EXPORT_SYMBOL(blk_verify_command);
  static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
                             struct sg_io_hdr *hdr, fmode_t mode)
  {
  static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
                             struct sg_io_hdr *hdr, fmode_t mode)
  {
@@ -24912,7 +26980,7 @@ index 4f4230b..0feae9a 100644
        if (blk_verify_command(rq->cmd, mode & FMODE_WRITE))
                return -EPERM;
  
        if (blk_verify_command(rq->cmd, mode & FMODE_WRITE))
                return -EPERM;
  
-@@ -432,6 +444,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
+@@ -433,6 +445,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
        int err;
        unsigned int in_len, out_len, bytes, opcode, cmdlen;
        char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
        int err;
        unsigned int in_len, out_len, bytes, opcode, cmdlen;
        char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
@@ -24921,7 +26989,7 @@ index 4f4230b..0feae9a 100644
  
        if (!sic)
                return -EINVAL;
  
        if (!sic)
                return -EINVAL;
-@@ -465,9 +479,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
+@@ -466,9 +480,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
         */
        err = -EFAULT;
        rq->cmd_len = cmdlen;
         */
        err = -EFAULT;
        rq->cmd_len = cmdlen;
@@ -24941,6 +27009,91 @@ index 4f4230b..0feae9a 100644
        if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
                goto error;
  
        if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
                goto error;
  
+diff --git a/crypto/ablkcipher.c b/crypto/ablkcipher.c
+index a0f768c..1da9c73 100644
+--- a/crypto/ablkcipher.c
++++ b/crypto/ablkcipher.c
+@@ -307,6 +307,8 @@ int ablkcipher_walk_phys(struct ablkcipher_request *req,
+ EXPORT_SYMBOL_GPL(ablkcipher_walk_phys);
+ static int setkey_unaligned(struct crypto_ablkcipher *tfm, const u8 *key,
++                          unsigned int keylen) __size_overflow(3);
++static int setkey_unaligned(struct crypto_ablkcipher *tfm, const u8 *key,
+                           unsigned int keylen)
+ {
+       struct ablkcipher_alg *cipher = crypto_ablkcipher_alg(tfm);
+@@ -329,6 +331,8 @@ static int setkey_unaligned(struct crypto_ablkcipher *tfm, const u8 *key,
+ }
+ static int setkey(struct crypto_ablkcipher *tfm, const u8 *key,
++                unsigned int keylen) __size_overflow(3);
++static int setkey(struct crypto_ablkcipher *tfm, const u8 *key,
+                 unsigned int keylen)
+ {
+       struct ablkcipher_alg *cipher = crypto_ablkcipher_alg(tfm);
+diff --git a/crypto/aead.c b/crypto/aead.c
+index 04add3dc..983032f 100644
+--- a/crypto/aead.c
++++ b/crypto/aead.c
+@@ -27,6 +27,8 @@
+ #include "internal.h"
+ static int setkey_unaligned(struct crypto_aead *tfm, const u8 *key,
++                          unsigned int keylen) __size_overflow(3);
++static int setkey_unaligned(struct crypto_aead *tfm, const u8 *key,
+                           unsigned int keylen)
+ {
+       struct aead_alg *aead = crypto_aead_alg(tfm);
+@@ -48,6 +50,7 @@ static int setkey_unaligned(struct crypto_aead *tfm, const u8 *key,
+       return ret;
+ }
++static int setkey(struct crypto_aead *tfm, const u8 *key, unsigned int keylen) __size_overflow(3);
+ static int setkey(struct crypto_aead *tfm, const u8 *key, unsigned int keylen)
+ {
+       struct aead_alg *aead = crypto_aead_alg(tfm);
+diff --git a/crypto/blkcipher.c b/crypto/blkcipher.c
+index 1e61d1a..cf06b86 100644
+--- a/crypto/blkcipher.c
++++ b/crypto/blkcipher.c
+@@ -359,6 +359,8 @@ int blkcipher_walk_virt_block(struct blkcipher_desc *desc,
+ EXPORT_SYMBOL_GPL(blkcipher_walk_virt_block);
+ static int setkey_unaligned(struct crypto_tfm *tfm, const u8 *key,
++                          unsigned int keylen) __size_overflow(3);
++static int setkey_unaligned(struct crypto_tfm *tfm, const u8 *key,
+                           unsigned int keylen)
+ {
+       struct blkcipher_alg *cipher = &tfm->__crt_alg->cra_blkcipher;
+@@ -380,6 +382,7 @@ static int setkey_unaligned(struct crypto_tfm *tfm, const u8 *key,
+       return ret;
+ }
++static int setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen) __size_overflow(3);
+ static int setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen)
+ {
+       struct blkcipher_alg *cipher = &tfm->__crt_alg->cra_blkcipher;
+diff --git a/crypto/cipher.c b/crypto/cipher.c
+index 39541e0..802d956 100644
+--- a/crypto/cipher.c
++++ b/crypto/cipher.c
+@@ -21,6 +21,8 @@
+ #include "internal.h"
+ static int setkey_unaligned(struct crypto_tfm *tfm, const u8 *key,
++                          unsigned int keylen) __size_overflow(3);
++static int setkey_unaligned(struct crypto_tfm *tfm, const u8 *key,
+                           unsigned int keylen)
+ {
+       struct cipher_alg *cia = &tfm->__crt_alg->cra_cipher;
+@@ -43,6 +45,7 @@ static int setkey_unaligned(struct crypto_tfm *tfm, const u8 *key,
+ }
++static int setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen) __size_overflow(3);
+ static int setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen)
+ {
+       struct cipher_alg *cia = &tfm->__crt_alg->cra_cipher;
 diff --git a/crypto/cryptd.c b/crypto/cryptd.c
 index 671d4d6..5f24030 100644
 --- a/crypto/cryptd.c
 diff --git a/crypto/cryptd.c b/crypto/cryptd.c
 index 671d4d6..5f24030 100644
 --- a/crypto/cryptd.c
@@ -24963,19 +27116,6 @@ index 671d4d6..5f24030 100644
  
  static void cryptd_queue_worker(struct work_struct *work);
  
  
  static void cryptd_queue_worker(struct work_struct *work);
  
-diff --git a/crypto/serpent.c b/crypto/serpent.c
-index b651a55..a9ddd79b 100644
---- a/crypto/serpent.c
-+++ b/crypto/serpent.c
-@@ -224,6 +224,8 @@ static int serpent_setkey(struct crypto_tfm *tfm, const u8 *key,
-       u32 r0,r1,r2,r3,r4;
-       int i;
-+      pax_track_stack();
-+
-       /* Copy key, add padding */
-       for (i = 0; i < keylen; ++i)
 diff --git a/drivers/acpi/apei/cper.c b/drivers/acpi/apei/cper.c
 index 5d41894..22021e4 100644
 --- a/drivers/acpi/apei/cper.c
 diff --git a/drivers/acpi/apei/cper.c b/drivers/acpi/apei/cper.c
 index 5d41894..22021e4 100644
 --- a/drivers/acpi/apei/cper.c
@@ -24997,19 +27137,33 @@ index 5d41894..22021e4 100644
  }
  EXPORT_SYMBOL_GPL(cper_next_record_id);
  
  }
  EXPORT_SYMBOL_GPL(cper_next_record_id);
  
+diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
+index 7711d94..8622811 100644
+--- a/drivers/acpi/battery.c
++++ b/drivers/acpi/battery.c
+@@ -787,6 +787,9 @@ static int acpi_battery_print_alarm(struct seq_file *seq, int result)
+ static ssize_t acpi_battery_write_alarm(struct file *file,
+                                       const char __user * buffer,
++                                      size_t count, loff_t * ppos) __size_overflow(3);
++static ssize_t acpi_battery_write_alarm(struct file *file,
++                                      const char __user * buffer,
+                                       size_t count, loff_t * ppos)
+ {
+       int result = 0;
 diff --git a/drivers/acpi/ec_sys.c b/drivers/acpi/ec_sys.c
 diff --git a/drivers/acpi/ec_sys.c b/drivers/acpi/ec_sys.c
-index 22f918b..9fafb84 100644
+index 6c47ae9..abfdd63 100644
 --- a/drivers/acpi/ec_sys.c
 +++ b/drivers/acpi/ec_sys.c
 --- a/drivers/acpi/ec_sys.c
 +++ b/drivers/acpi/ec_sys.c
-@@ -11,6 +11,7 @@
- #include <linux/kernel.h>
+@@ -12,6 +12,7 @@
  #include <linux/acpi.h>
  #include <linux/debugfs.h>
  #include <linux/acpi.h>
  #include <linux/debugfs.h>
-+#include <asm/uaccess.h>
+ #include <linux/module.h>
++#include <linux/uaccess.h>
  #include "internal.h"
  
  MODULE_AUTHOR("Thomas Renninger <trenn@suse.de>");
  #include "internal.h"
  
  MODULE_AUTHOR("Thomas Renninger <trenn@suse.de>");
-@@ -39,7 +40,7 @@ static ssize_t acpi_ec_read_io(struct file *f, char __user *buf,
+@@ -40,7 +41,7 @@ static ssize_t acpi_ec_read_io(struct file *f, char __user *buf,
         * struct acpi_ec *ec = ((struct seq_file *)f->private_data)->private;
         */
        unsigned int size = EC_SPACE_SIZE;
         * struct acpi_ec *ec = ((struct seq_file *)f->private_data)->private;
         */
        unsigned int size = EC_SPACE_SIZE;
@@ -25018,7 +27172,7 @@ index 22f918b..9fafb84 100644
        loff_t init_off = *off;
        int err = 0;
  
        loff_t init_off = *off;
        int err = 0;
  
-@@ -52,9 +53,11 @@ static ssize_t acpi_ec_read_io(struct file *f, char __user *buf,
+@@ -53,9 +54,11 @@ static ssize_t acpi_ec_read_io(struct file *f, char __user *buf,
                size = count;
  
        while (size) {
                size = count;
  
        while (size) {
@@ -25031,7 +27185,7 @@ index 22f918b..9fafb84 100644
                *off += 1;
                size--;
        }
                *off += 1;
                size--;
        }
-@@ -70,7 +73,6 @@ static ssize_t acpi_ec_write_io(struct file *f, const char __user *buf,
+@@ -71,7 +74,6 @@ static ssize_t acpi_ec_write_io(struct file *f, const char __user *buf,
  
        unsigned int size = count;
        loff_t init_off = *off;
  
        unsigned int size = count;
        loff_t init_off = *off;
@@ -25039,7 +27193,7 @@ index 22f918b..9fafb84 100644
        int err = 0;
  
        if (*off >= EC_SPACE_SIZE)
        int err = 0;
  
        if (*off >= EC_SPACE_SIZE)
-@@ -81,7 +83,9 @@ static ssize_t acpi_ec_write_io(struct file *f, const char __user *buf,
+@@ -82,7 +84,9 @@ static ssize_t acpi_ec_write_io(struct file *f, const char __user *buf,
        }
  
        while (size) {
        }
  
        while (size) {
@@ -25051,10 +27205,10 @@ index 22f918b..9fafb84 100644
                if (err)
                        return err;
 diff --git a/drivers/acpi/proc.c b/drivers/acpi/proc.c
                if (err)
                        return err;
 diff --git a/drivers/acpi/proc.c b/drivers/acpi/proc.c
-index f5f9869..da87aeb 100644
+index 251c7b62..000462d 100644
 --- a/drivers/acpi/proc.c
 +++ b/drivers/acpi/proc.c
 --- a/drivers/acpi/proc.c
 +++ b/drivers/acpi/proc.c
-@@ -342,19 +342,13 @@ acpi_system_write_wakeup_device(struct file *file,
+@@ -343,19 +343,13 @@ acpi_system_write_wakeup_device(struct file *file,
                                size_t count, loff_t * ppos)
  {
        struct list_head *node, *next;
                                size_t count, loff_t * ppos)
  {
        struct list_head *node, *next;
@@ -25079,7 +27233,7 @@ index f5f9869..da87aeb 100644
  
        mutex_lock(&acpi_device_lock);
        list_for_each_safe(node, next, &acpi_wakeup_device_list) {
  
        mutex_lock(&acpi_device_lock);
        list_for_each_safe(node, next, &acpi_wakeup_device_list) {
-@@ -363,7 +357,7 @@ acpi_system_write_wakeup_device(struct file *file,
+@@ -364,7 +358,7 @@ acpi_system_write_wakeup_device(struct file *file,
                if (!dev->wakeup.flags.valid)
                        continue;
  
                if (!dev->wakeup.flags.valid)
                        continue;
  
@@ -25089,7 +27243,7 @@ index f5f9869..da87aeb 100644
                                bool enable = !device_may_wakeup(&dev->dev);
                                device_set_wakeup_enable(&dev->dev, enable);
 diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
                                bool enable = !device_may_wakeup(&dev->dev);
                                device_set_wakeup_enable(&dev->dev, enable);
 diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
-index a4e0f1b..9793b28 100644
+index 9d7bc9f..a6fc091 100644
 --- a/drivers/acpi/processor_driver.c
 +++ b/drivers/acpi/processor_driver.c
 @@ -473,7 +473,7 @@ static int __cpuinit acpi_processor_add(struct acpi_device *device)
 --- a/drivers/acpi/processor_driver.c
 +++ b/drivers/acpi/processor_driver.c
 @@ -473,7 +473,7 @@ static int __cpuinit acpi_processor_add(struct acpi_device *device)
@@ -25101,8 +27255,22 @@ index a4e0f1b..9793b28 100644
  
        /*
         * Buggy BIOS check
  
        /*
         * Buggy BIOS check
+diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
+index 6e36d0c..f319944 100644
+--- a/drivers/acpi/sbs.c
++++ b/drivers/acpi/sbs.c
+@@ -655,6 +655,9 @@ static int acpi_battery_read_alarm(struct seq_file *seq, void *offset)
+ static ssize_t
+ acpi_battery_write_alarm(struct file *file, const char __user * buffer,
++                       size_t count, loff_t * ppos) __size_overflow(3);
++static ssize_t
++acpi_battery_write_alarm(struct file *file, const char __user * buffer,
+                        size_t count, loff_t * ppos)
+ {
+       struct seq_file *seq = file->private_data;
 diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
 diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
-index 4a3a5ae..cbee192 100644
+index c04ad68..0b99473 100644
 --- a/drivers/ata/libata-core.c
 +++ b/drivers/ata/libata-core.c
 @@ -4733,7 +4733,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
 --- a/drivers/ata/libata-core.c
 +++ b/drivers/ata/libata-core.c
 @@ -4733,7 +4733,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
@@ -25142,21 +27310,8 @@ index 4a3a5ae..cbee192 100644
        spin_unlock(&lock);
  }
  
        spin_unlock(&lock);
  }
  
-diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
-index ed16fbe..fc92cb8 100644
---- a/drivers/ata/libata-eh.c
-+++ b/drivers/ata/libata-eh.c
-@@ -2515,6 +2515,8 @@ void ata_eh_report(struct ata_port *ap)
- {
-       struct ata_link *link;
-+      pax_track_stack();
-+
-       ata_for_each_link(link, ap, HOST_FIRST)
-               ata_eh_link_report(link);
- }
 diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c
 diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c
-index 719bb73..79ce858 100644
+index e8574bb..f9f6a72 100644
 --- a/drivers/ata/pata_arasan_cf.c
 +++ b/drivers/ata/pata_arasan_cf.c
 @@ -862,7 +862,9 @@ static int __devinit arasan_cf_probe(struct platform_device *pdev)
 --- a/drivers/ata/pata_arasan_cf.c
 +++ b/drivers/ata/pata_arasan_cf.c
 @@ -862,7 +862,9 @@ static int __devinit arasan_cf_probe(struct platform_device *pdev)
@@ -25277,7 +27432,7 @@ index b22d71c..d6e1049 100644
        if (vcc->pop) vcc->pop(vcc,skb);
        else dev_kfree_skb(skb);
 diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c
        if (vcc->pop) vcc->pop(vcc,skb);
        else dev_kfree_skb(skb);
 diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c
-index 9307141..d8521bf 100644
+index 956e9ac..133516d 100644
 --- a/drivers/atm/eni.c
 +++ b/drivers/atm/eni.c
 @@ -526,7 +526,7 @@ static int rx_aal0(struct atm_vcc *vcc)
 --- a/drivers/atm/eni.c
 +++ b/drivers/atm/eni.c
 @@ -526,7 +526,7 @@ static int rx_aal0(struct atm_vcc *vcc)
@@ -25316,7 +27471,7 @@ index 9307141..d8521bf 100644
        }
        wake_up(&eni_dev->rx_wait);
  }
        }
        wake_up(&eni_dev->rx_wait);
  }
-@@ -1228,7 +1228,7 @@ static void dequeue_tx(struct atm_dev *dev)
+@@ -1229,7 +1229,7 @@ static void dequeue_tx(struct atm_dev *dev)
                    PCI_DMA_TODEVICE);
                if (vcc->pop) vcc->pop(vcc,skb);
                else dev_kfree_skb_irq(skb);
                    PCI_DMA_TODEVICE);
                if (vcc->pop) vcc->pop(vcc,skb);
                else dev_kfree_skb_irq(skb);
@@ -25325,7 +27480,7 @@ index 9307141..d8521bf 100644
                wake_up(&eni_dev->tx_wait);
  dma_complete++;
        }
                wake_up(&eni_dev->tx_wait);
  dma_complete++;
        }
-@@ -1568,7 +1568,7 @@ tx_complete++;
+@@ -1569,7 +1569,7 @@ tx_complete++;
  /*--------------------------------- entries ---------------------------------*/
  
  
  /*--------------------------------- entries ---------------------------------*/
  
  
@@ -25335,7 +27490,7 @@ index 9307141..d8521bf 100644
      "UTP", "05?", "06?", "07?", /*  4- 7 */
      "TAXI","09?", "10?", "11?", /*  8-11 */
 diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
      "UTP", "05?", "06?", "07?", /*  4- 7 */
      "TAXI","09?", "10?", "11?", /*  8-11 */
 diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
-index 5072f8a..fa52520 100644
+index 5072f8a..fa52520d 100644
 --- a/drivers/atm/firestream.c
 +++ b/drivers/atm/firestream.c
 @@ -750,7 +750,7 @@ static void process_txdone_queue (struct fs_dev *dev, struct queue *q)
 --- a/drivers/atm/firestream.c
 +++ b/drivers/atm/firestream.c
 @@ -750,7 +750,7 @@ static void process_txdone_queue (struct fs_dev *dev, struct queue *q)
@@ -25539,7 +27694,7 @@ index b812103..e391a49 100644
        // free the skb
        hrz_kfree_skb (skb);
 diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
        // free the skb
        hrz_kfree_skb (skb);
 diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
-index db06f34..dcebb61 100644
+index 1c05212..c28e200 100644
 --- a/drivers/atm/idt77252.c
 +++ b/drivers/atm/idt77252.c
 @@ -812,7 +812,7 @@ drain_scq(struct idt77252_dev *card, struct vc_map *vc)
 --- a/drivers/atm/idt77252.c
 +++ b/drivers/atm/idt77252.c
 @@ -812,7 +812,7 @@ drain_scq(struct idt77252_dev *card, struct vc_map *vc)
@@ -25697,10 +27852,10 @@ index db06f34..dcebb61 100644
        }
        atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
 diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
        }
        atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
 diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
-index cb90f7a..bd33566 100644
+index 3d0c2b0..45441fa 100644
 --- a/drivers/atm/iphase.c
 +++ b/drivers/atm/iphase.c
 --- a/drivers/atm/iphase.c
 +++ b/drivers/atm/iphase.c
-@@ -1121,7 +1121,7 @@ static int rx_pkt(struct atm_dev *dev)
+@@ -1146,7 +1146,7 @@ static int rx_pkt(struct atm_dev *dev)
        status = (u_short) (buf_desc_ptr->desc_mode);  
        if (status & (RX_CER | RX_PTE | RX_OFL))  
        {  
        status = (u_short) (buf_desc_ptr->desc_mode);  
        if (status & (RX_CER | RX_PTE | RX_OFL))  
        {  
@@ -25709,7 +27864,7 @@ index cb90f7a..bd33566 100644
                IF_ERR(printk("IA: bad packet, dropping it");)  
                  if (status & RX_CER) { 
                      IF_ERR(printk(" cause: packet CRC error\n");)
                IF_ERR(printk("IA: bad packet, dropping it");)  
                  if (status & RX_CER) { 
                      IF_ERR(printk(" cause: packet CRC error\n");)
-@@ -1144,7 +1144,7 @@ static int rx_pkt(struct atm_dev *dev)
+@@ -1169,7 +1169,7 @@ static int rx_pkt(struct atm_dev *dev)
        len = dma_addr - buf_addr;  
          if (len > iadev->rx_buf_sz) {
             printk("Over %d bytes sdu received, dropped!!!\n", iadev->rx_buf_sz);
        len = dma_addr - buf_addr;  
          if (len > iadev->rx_buf_sz) {
             printk("Over %d bytes sdu received, dropped!!!\n", iadev->rx_buf_sz);
@@ -25718,7 +27873,7 @@ index cb90f7a..bd33566 100644
           goto out_free_desc;
          }
                  
           goto out_free_desc;
          }
                  
-@@ -1294,7 +1294,7 @@ static void rx_dle_intr(struct atm_dev *dev)
+@@ -1319,7 +1319,7 @@ static void rx_dle_intr(struct atm_dev *dev)
            ia_vcc = INPH_IA_VCC(vcc);
            if (ia_vcc == NULL)
            {
            ia_vcc = INPH_IA_VCC(vcc);
            if (ia_vcc == NULL)
            {
@@ -25727,7 +27882,7 @@ index cb90f7a..bd33566 100644
               dev_kfree_skb_any(skb);
               atm_return(vcc, atm_guess_pdu2truesize(len));
               goto INCR_DLE;
               dev_kfree_skb_any(skb);
               atm_return(vcc, atm_guess_pdu2truesize(len));
               goto INCR_DLE;
-@@ -1306,7 +1306,7 @@ static void rx_dle_intr(struct atm_dev *dev)
+@@ -1331,7 +1331,7 @@ static void rx_dle_intr(struct atm_dev *dev)
            if ((length > iadev->rx_buf_sz) || (length > 
                                (skb->len - sizeof(struct cpcs_trailer))))
            {
            if ((length > iadev->rx_buf_sz) || (length > 
                                (skb->len - sizeof(struct cpcs_trailer))))
            {
@@ -25736,7 +27891,7 @@ index cb90f7a..bd33566 100644
               IF_ERR(printk("rx_dle_intr: Bad  AAL5 trailer %d (skb len %d)", 
                                                              length, skb->len);)
               dev_kfree_skb_any(skb);
               IF_ERR(printk("rx_dle_intr: Bad  AAL5 trailer %d (skb len %d)", 
                                                              length, skb->len);)
               dev_kfree_skb_any(skb);
-@@ -1322,7 +1322,7 @@ static void rx_dle_intr(struct atm_dev *dev)
+@@ -1347,7 +1347,7 @@ static void rx_dle_intr(struct atm_dev *dev)
  
          IF_RX(printk("rx_dle_intr: skb push");)  
          vcc->push(vcc,skb);  
  
          IF_RX(printk("rx_dle_intr: skb push");)  
          vcc->push(vcc,skb);  
@@ -25745,7 +27900,7 @@ index cb90f7a..bd33566 100644
            iadev->rx_pkt_cnt++;
        }  
  INCR_DLE:
            iadev->rx_pkt_cnt++;
        }  
  INCR_DLE:
-@@ -2802,15 +2802,15 @@ static int ia_ioctl(struct atm_dev *dev, unsigned int cmd, void __user *arg)
+@@ -2827,15 +2827,15 @@ static int ia_ioctl(struct atm_dev *dev, unsigned int cmd, void __user *arg)
           {
               struct k_sonet_stats *stats;
               stats = &PRIV(_ia_dev[board])->sonet_stats;
           {
               struct k_sonet_stats *stats;
               stats = &PRIV(_ia_dev[board])->sonet_stats;
@@ -25770,7 +27925,7 @@ index cb90f7a..bd33566 100644
           }
              ia_cmds.status = 0;
              break;
           }
              ia_cmds.status = 0;
              break;
-@@ -2915,7 +2915,7 @@ static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) {
+@@ -2940,7 +2940,7 @@ static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) {
        if ((desc == 0) || (desc > iadev->num_tx_desc))  
        {  
                IF_ERR(printk(DEV_LABEL "invalid desc for send: %d\n", desc);) 
        if ((desc == 0) || (desc > iadev->num_tx_desc))  
        {  
                IF_ERR(printk(DEV_LABEL "invalid desc for send: %d\n", desc);) 
@@ -25779,7 +27934,7 @@ index cb90f7a..bd33566 100644
                if (vcc->pop)   
                    vcc->pop(vcc, skb);   
                else  
                if (vcc->pop)   
                    vcc->pop(vcc, skb);   
                else  
-@@ -3020,14 +3020,14 @@ static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) {
+@@ -3045,14 +3045,14 @@ static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) {
          ATM_DESC(skb) = vcc->vci;
          skb_queue_tail(&iadev->tx_dma_q, skb);
  
          ATM_DESC(skb) = vcc->vci;
          skb_queue_tail(&iadev->tx_dma_q, skb);
  
@@ -25797,7 +27952,7 @@ index cb90f7a..bd33566 100644
               vcc->tx_quota =  vcc->tx_quota * 3 / 4;
              printk("Tx1:  vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
 diff --git a/drivers/atm/lanai.c b/drivers/atm/lanai.c
               vcc->tx_quota =  vcc->tx_quota * 3 / 4;
              printk("Tx1:  vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
 diff --git a/drivers/atm/lanai.c b/drivers/atm/lanai.c
-index e828c54..ae83976 100644
+index f556969..0da15eb 100644
 --- a/drivers/atm/lanai.c
 +++ b/drivers/atm/lanai.c
 @@ -1303,7 +1303,7 @@ static void lanai_send_one_aal5(struct lanai_dev *lanai,
 --- a/drivers/atm/lanai.c
 +++ b/drivers/atm/lanai.c
 @@ -1303,7 +1303,7 @@ static void lanai_send_one_aal5(struct lanai_dev *lanai,
@@ -25818,7 +27973,7 @@ index e828c54..ae83976 100644
      out:
        lvcc->rx.buf.ptr = end;
        cardvcc_write(lvcc, endptr, vcc_rxreadptr);
      out:
        lvcc->rx.buf.ptr = end;
        cardvcc_write(lvcc, endptr, vcc_rxreadptr);
-@@ -1668,7 +1668,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
+@@ -1667,7 +1667,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
                DPRINTK("(itf %d) got RX service entry 0x%X for non-AAL5 "
                    "vcc %d\n", lanai->number, (unsigned int) s, vci);
                lanai->stats.service_rxnotaal5++;
                DPRINTK("(itf %d) got RX service entry 0x%X for non-AAL5 "
                    "vcc %d\n", lanai->number, (unsigned int) s, vci);
                lanai->stats.service_rxnotaal5++;
@@ -25827,7 +27982,7 @@ index e828c54..ae83976 100644
                return 0;
        }
        if (likely(!(s & (SERVICE_TRASH | SERVICE_STREAM | SERVICE_CRCERR)))) {
                return 0;
        }
        if (likely(!(s & (SERVICE_TRASH | SERVICE_STREAM | SERVICE_CRCERR)))) {
-@@ -1680,7 +1680,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
+@@ -1679,7 +1679,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
                int bytes;
                read_unlock(&vcc_sklist_lock);
                DPRINTK("got trashed rx pdu on vci %d\n", vci);
                int bytes;
                read_unlock(&vcc_sklist_lock);
                DPRINTK("got trashed rx pdu on vci %d\n", vci);
@@ -25836,7 +27991,7 @@ index e828c54..ae83976 100644
                lvcc->stats.x.aal5.service_trash++;
                bytes = (SERVICE_GET_END(s) * 16) -
                    (((unsigned long) lvcc->rx.buf.ptr) -
                lvcc->stats.x.aal5.service_trash++;
                bytes = (SERVICE_GET_END(s) * 16) -
                    (((unsigned long) lvcc->rx.buf.ptr) -
-@@ -1692,7 +1692,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
+@@ -1691,7 +1691,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
        }
        if (s & SERVICE_STREAM) {
                read_unlock(&vcc_sklist_lock);
        }
        if (s & SERVICE_STREAM) {
                read_unlock(&vcc_sklist_lock);
@@ -25845,7 +28000,7 @@ index e828c54..ae83976 100644
                lvcc->stats.x.aal5.service_stream++;
                printk(KERN_ERR DEV_LABEL "(itf %d): Got AAL5 stream "
                    "PDU on VCI %d!\n", lanai->number, vci);
                lvcc->stats.x.aal5.service_stream++;
                printk(KERN_ERR DEV_LABEL "(itf %d): Got AAL5 stream "
                    "PDU on VCI %d!\n", lanai->number, vci);
-@@ -1700,7 +1700,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
+@@ -1699,7 +1699,7 @@ static int handle_service(struct lanai_dev *lanai, u32 s)
                return 0;
        }
        DPRINTK("got rx crc error on vci %d\n", vci);
                return 0;
        }
        DPRINTK("got rx crc error on vci %d\n", vci);
@@ -26060,7 +28215,7 @@ index 1c70c45..300718d 100644
                }
  
 diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
                }
  
 diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
-index 5d1d076..4f31f42 100644
+index 5d1d076..12fbca4 100644
 --- a/drivers/atm/solos-pci.c
 +++ b/drivers/atm/solos-pci.c
 @@ -714,7 +714,7 @@ void solos_bh(unsigned long card_arg)
 --- a/drivers/atm/solos-pci.c
 +++ b/drivers/atm/solos-pci.c
 @@ -714,7 +714,7 @@ void solos_bh(unsigned long card_arg)
@@ -26072,16 +28227,7 @@ index 5d1d076..4f31f42 100644
                                break;
  
                        case PKT_STATUS:
                                break;
  
                        case PKT_STATUS:
-@@ -899,6 +899,8 @@ static int print_buffer(struct sk_buff *buf)
-       char msg[500];
-       char item[10];
-+      pax_track_stack();
-+
-       len = buf->len;
-       for (i = 0; i < len; i++){
-               if(i % 8 == 0)
-@@ -1008,7 +1010,7 @@ static uint32_t fpga_tx(struct solos_card *card)
+@@ -1008,7 +1008,7 @@ static uint32_t fpga_tx(struct solos_card *card)
                        vcc = SKB_CB(oldskb)->vcc;
  
                        if (vcc) {
                        vcc = SKB_CB(oldskb)->vcc;
  
                        if (vcc) {
@@ -26198,10 +28344,10 @@ index a4760e0..51283cf 100644
                printk(KERN_INFO "devtmpfs: error mounting %i\n", err);
        else
 diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
                printk(KERN_INFO "devtmpfs: error mounting %i\n", err);
        else
 diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
-index 84f7c7d..37cfd87 100644
+index caf995f..6f76697 100644
 --- a/drivers/base/power/wakeup.c
 +++ b/drivers/base/power/wakeup.c
 --- a/drivers/base/power/wakeup.c
 +++ b/drivers/base/power/wakeup.c
-@@ -29,14 +29,14 @@ bool events_check_enabled;
+@@ -30,14 +30,14 @@ bool events_check_enabled;
   * They need to be modified together atomically, so it's better to use one
   * atomic variable to hold them both.
   */
   * They need to be modified together atomically, so it's better to use one
   * atomic variable to hold them both.
   */
@@ -26218,7 +28364,7 @@ index 84f7c7d..37cfd87 100644
  
        *cnt = (comb >> IN_PROGRESS_BITS);
        *inpr = comb & MAX_IN_PROGRESS;
  
        *cnt = (comb >> IN_PROGRESS_BITS);
        *inpr = comb & MAX_IN_PROGRESS;
-@@ -350,7 +350,7 @@ static void wakeup_source_activate(struct wakeup_source *ws)
+@@ -353,7 +353,7 @@ static void wakeup_source_activate(struct wakeup_source *ws)
        ws->last_time = ktime_get();
  
        /* Increment the counter of events in progress. */
        ws->last_time = ktime_get();
  
        /* Increment the counter of events in progress. */
@@ -26227,7 +28373,7 @@ index 84f7c7d..37cfd87 100644
  }
  
  /**
  }
  
  /**
-@@ -440,7 +440,7 @@ static void wakeup_source_deactivate(struct wakeup_source *ws)
+@@ -443,7 +443,7 @@ static void wakeup_source_deactivate(struct wakeup_source *ws)
         * Increment the counter of registered wakeup events and decrement the
         * couter of wakeup events in progress simultaneously.
         */
         * Increment the counter of registered wakeup events and decrement the
         * couter of wakeup events in progress simultaneously.
         */
@@ -26236,24 +28382,11 @@ index 84f7c7d..37cfd87 100644
  }
  
  /**
  }
  
  /**
-diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c
-index e086fbb..398e1fe 100644
---- a/drivers/block/DAC960.c
-+++ b/drivers/block/DAC960.c
-@@ -1980,6 +1980,8 @@ static bool DAC960_V1_ReadDeviceConfiguration(DAC960_Controller_T
-   unsigned long flags;
-   int Channel, TargetID;
-+  pax_track_stack();
-+
-   if (!init_dma_loaf(Controller->PCIDevice, &local_dma, 
-               DAC960_V1_MaxChannels*(sizeof(DAC960_V1_DCDB_T) +
-                       sizeof(DAC960_SCSI_Inquiry_T) +
 diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
 diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
-index c2f9b3e..5911988 100644
+index b0f553b..77b928b 100644
 --- a/drivers/block/cciss.c
 +++ b/drivers/block/cciss.c
 --- a/drivers/block/cciss.c
 +++ b/drivers/block/cciss.c
-@@ -1179,6 +1179,8 @@ static int cciss_ioctl32_passthru(struct block_device *bdev, fmode_t mode,
+@@ -1198,6 +1198,8 @@ static int cciss_ioctl32_passthru(struct block_device *bdev, fmode_t mode,
        int err;
        u32 cp;
  
        int err;
        u32 cp;
  
@@ -26262,7 +28395,7 @@ index c2f9b3e..5911988 100644
        err = 0;
        err |=
            copy_from_user(&arg64.LUN_info, &arg32->LUN_info,
        err = 0;
        err |=
            copy_from_user(&arg64.LUN_info, &arg32->LUN_info,
-@@ -2986,7 +2988,7 @@ static void start_io(ctlr_info_t *h)
+@@ -3007,7 +3009,7 @@ static void start_io(ctlr_info_t *h)
        while (!list_empty(&h->reqQ)) {
                c = list_entry(h->reqQ.next, CommandList_struct, list);
                /* can't do anything if fifo is full */
        while (!list_empty(&h->reqQ)) {
                c = list_entry(h->reqQ.next, CommandList_struct, list);
                /* can't do anything if fifo is full */
@@ -26271,7 +28404,7 @@ index c2f9b3e..5911988 100644
                        dev_warn(&h->pdev->dev, "fifo full\n");
                        break;
                }
                        dev_warn(&h->pdev->dev, "fifo full\n");
                        break;
                }
-@@ -2996,7 +2998,7 @@ static void start_io(ctlr_info_t *h)
+@@ -3017,7 +3019,7 @@ static void start_io(ctlr_info_t *h)
                h->Qdepth--;
  
                /* Tell the controller execute command */
                h->Qdepth--;
  
                /* Tell the controller execute command */
@@ -26280,7 +28413,7 @@ index c2f9b3e..5911988 100644
  
                /* Put job onto the completed Q */
                addQ(&h->cmpQ, c);
  
                /* Put job onto the completed Q */
                addQ(&h->cmpQ, c);
-@@ -3422,17 +3424,17 @@ startio:
+@@ -3443,17 +3445,17 @@ startio:
  
  static inline unsigned long get_next_completion(ctlr_info_t *h)
  {
  
  static inline unsigned long get_next_completion(ctlr_info_t *h)
  {
@@ -26301,7 +28434,7 @@ index c2f9b3e..5911988 100644
                (h->interrupts_enabled == 0));
  }
  
                (h->interrupts_enabled == 0));
  }
  
-@@ -3465,7 +3467,7 @@ static inline u32 next_command(ctlr_info_t *h)
+@@ -3486,7 +3488,7 @@ static inline u32 next_command(ctlr_info_t *h)
        u32 a;
  
        if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
        u32 a;
  
        if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
@@ -26310,7 +28443,7 @@ index c2f9b3e..5911988 100644
  
        if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
                a = *(h->reply_pool_head); /* Next cmd in ring buffer */
  
        if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
                a = *(h->reply_pool_head); /* Next cmd in ring buffer */
-@@ -4020,7 +4022,7 @@ static void __devinit cciss_put_controller_into_performant_mode(ctlr_info_t *h)
+@@ -4044,7 +4046,7 @@ static void __devinit cciss_put_controller_into_performant_mode(ctlr_info_t *h)
                trans_support & CFGTBL_Trans_use_short_tags);
  
        /* Change the access methods to the performant access methods */
                trans_support & CFGTBL_Trans_use_short_tags);
  
        /* Change the access methods to the performant access methods */
@@ -26319,7 +28452,7 @@ index c2f9b3e..5911988 100644
        h->transMethod = CFGTBL_Trans_Performant;
  
        return;
        h->transMethod = CFGTBL_Trans_Performant;
  
        return;
-@@ -4292,7 +4294,7 @@ static int __devinit cciss_pci_init(ctlr_info_t *h)
+@@ -4316,7 +4318,7 @@ static int __devinit cciss_pci_init(ctlr_info_t *h)
        if (prod_index < 0)
                return -ENODEV;
        h->product_name = products[prod_index].product_name;
        if (prod_index < 0)
                return -ENODEV;
        h->product_name = products[prod_index].product_name;
@@ -26328,7 +28461,7 @@ index c2f9b3e..5911988 100644
  
        if (cciss_board_disabled(h)) {
                dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
  
        if (cciss_board_disabled(h)) {
                dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
-@@ -5009,7 +5011,7 @@ reinit_after_soft_reset:
+@@ -5041,7 +5043,7 @@ reinit_after_soft_reset:
        }
  
        /* make sure the board interrupts are off */
        }
  
        /* make sure the board interrupts are off */
@@ -26337,16 +28470,16 @@ index c2f9b3e..5911988 100644
        rc = cciss_request_irq(h, do_cciss_msix_intr, do_cciss_intx);
        if (rc)
                goto clean2;
        rc = cciss_request_irq(h, do_cciss_msix_intr, do_cciss_intx);
        if (rc)
                goto clean2;
-@@ -5061,7 +5063,7 @@ reinit_after_soft_reset:
+@@ -5093,7 +5095,7 @@ reinit_after_soft_reset:
                 * fake ones to scoop up any residual completions.
                 */
                spin_lock_irqsave(&h->lock, flags);
 -              h->access.set_intr_mask(h, CCISS_INTR_OFF);
 +              h->access->set_intr_mask(h, CCISS_INTR_OFF);
                spin_unlock_irqrestore(&h->lock, flags);
                 * fake ones to scoop up any residual completions.
                 */
                spin_lock_irqsave(&h->lock, flags);
 -              h->access.set_intr_mask(h, CCISS_INTR_OFF);
 +              h->access->set_intr_mask(h, CCISS_INTR_OFF);
                spin_unlock_irqrestore(&h->lock, flags);
-               free_irq(h->intr[PERF_MODE_INT], h);
+               free_irq(h->intr[h->intr_mode], h);
                rc = cciss_request_irq(h, cciss_msix_discard_completions,
                rc = cciss_request_irq(h, cciss_msix_discard_completions,
-@@ -5081,9 +5083,9 @@ reinit_after_soft_reset:
+@@ -5113,9 +5115,9 @@ reinit_after_soft_reset:
                dev_info(&h->pdev->dev, "Board READY.\n");
                dev_info(&h->pdev->dev,
                        "Waiting for stale completions to drain.\n");
                dev_info(&h->pdev->dev, "Board READY.\n");
                dev_info(&h->pdev->dev,
                        "Waiting for stale completions to drain.\n");
@@ -26358,7 +28491,7 @@ index c2f9b3e..5911988 100644
  
                rc = controller_reset_failed(h->cfgtable);
                if (rc)
  
                rc = controller_reset_failed(h->cfgtable);
                if (rc)
-@@ -5106,7 +5108,7 @@ reinit_after_soft_reset:
+@@ -5138,7 +5140,7 @@ reinit_after_soft_reset:
        cciss_scsi_setup(h);
  
        /* Turn the interrupts on so we can service requests */
        cciss_scsi_setup(h);
  
        /* Turn the interrupts on so we can service requests */
@@ -26367,20 +28500,20 @@ index c2f9b3e..5911988 100644
  
        /* Get the firmware version */
        inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
  
        /* Get the firmware version */
        inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
-@@ -5178,7 +5180,7 @@ static void cciss_shutdown(struct pci_dev *pdev)
+@@ -5211,7 +5213,7 @@ static void cciss_shutdown(struct pci_dev *pdev)
        kfree(flush_buf);
        if (return_code != IO_OK)
                dev_warn(&h->pdev->dev, "Error flushing cache\n");
 -      h->access.set_intr_mask(h, CCISS_INTR_OFF);
 +      h->access->set_intr_mask(h, CCISS_INTR_OFF);
        kfree(flush_buf);
        if (return_code != IO_OK)
                dev_warn(&h->pdev->dev, "Error flushing cache\n");
 -      h->access.set_intr_mask(h, CCISS_INTR_OFF);
 +      h->access->set_intr_mask(h, CCISS_INTR_OFF);
-       free_irq(h->intr[PERF_MODE_INT], h);
+       free_irq(h->intr[h->intr_mode], h);
  }
  
 diff --git a/drivers/block/cciss.h b/drivers/block/cciss.h
  }
  
 diff --git a/drivers/block/cciss.h b/drivers/block/cciss.h
-index c049548..a09cb6e 100644
+index 7fda30e..eb5dfe0 100644
 --- a/drivers/block/cciss.h
 +++ b/drivers/block/cciss.h
 --- a/drivers/block/cciss.h
 +++ b/drivers/block/cciss.h
-@@ -100,7 +100,7 @@ struct ctlr_info
+@@ -101,7 +101,7 @@ struct ctlr_info
        /* information about each logical volume */
        drive_info_struct *drv[CISS_MAX_LUN];
  
        /* information about each logical volume */
        drive_info_struct *drv[CISS_MAX_LUN];
  
@@ -26390,7 +28523,7 @@ index c049548..a09cb6e 100644
        /* queue and queue Info */ 
        struct list_head reqQ;
 diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
        /* queue and queue Info */ 
        struct list_head reqQ;
 diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
-index b2fceb5..87fec83 100644
+index 9125bbe..eede5c8 100644
 --- a/drivers/block/cpqarray.c
 +++ b/drivers/block/cpqarray.c
 @@ -404,7 +404,7 @@ static int __devinit cpqarray_register_ctlr( int i, struct pci_dev *pdev)
 --- a/drivers/block/cpqarray.c
 +++ b/drivers/block/cpqarray.c
 @@ -404,7 +404,7 @@ static int __devinit cpqarray_register_ctlr( int i, struct pci_dev *pdev)
@@ -26429,16 +28562,7 @@ index b2fceb5..87fec83 100644
                hba[ctlr]->ctlr = ctlr;
                hba[ctlr]->board_id = board_id;
                hba[ctlr]->pci_dev = NULL; /* not PCI */
                hba[ctlr]->ctlr = ctlr;
                hba[ctlr]->board_id = board_id;
                hba[ctlr]->pci_dev = NULL; /* not PCI */
-@@ -911,6 +911,8 @@ static void do_ida_request(struct request_queue *q)
-       struct scatterlist tmp_sg[SG_MAX];
-       int i, dir, seg;
-+      pax_track_stack();
-+
- queue_next:
-       creq = blk_peek_request(q);
-       if (!creq)
-@@ -980,7 +982,7 @@ static void start_io(ctlr_info_t *h)
+@@ -980,7 +980,7 @@ static void start_io(ctlr_info_t *h)
  
        while((c = h->reqQ) != NULL) {
                /* Can't do anything if we're busy */
  
        while((c = h->reqQ) != NULL) {
                /* Can't do anything if we're busy */
@@ -26447,7 +28571,7 @@ index b2fceb5..87fec83 100644
                        return;
  
                /* Get the first entry from the request Q */
                        return;
  
                /* Get the first entry from the request Q */
-@@ -988,7 +990,7 @@ static void start_io(ctlr_info_t *h)
+@@ -988,7 +988,7 @@ static void start_io(ctlr_info_t *h)
                h->Qdepth--;
        
                /* Tell the controller to do our bidding */
                h->Qdepth--;
        
                /* Tell the controller to do our bidding */
@@ -26456,7 +28580,7 @@ index b2fceb5..87fec83 100644
  
                /* Get onto the completion Q */
                addQ(&h->cmpQ, c);
  
                /* Get onto the completion Q */
                addQ(&h->cmpQ, c);
-@@ -1050,7 +1052,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id)
+@@ -1050,7 +1050,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id)
        unsigned long flags;
        __u32 a,a1;
  
        unsigned long flags;
        __u32 a,a1;
  
@@ -26465,7 +28589,7 @@ index b2fceb5..87fec83 100644
        /* Is this interrupt for us? */
        if (istat == 0)
                return IRQ_NONE;
        /* Is this interrupt for us? */
        if (istat == 0)
                return IRQ_NONE;
-@@ -1061,7 +1063,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id)
+@@ -1061,7 +1061,7 @@ static irqreturn_t do_ida_intr(int irq, void *dev_id)
         */
        spin_lock_irqsave(IDA_LOCK(h->ctlr), flags);
        if (istat & FIFO_NOT_EMPTY) {
         */
        spin_lock_irqsave(IDA_LOCK(h->ctlr), flags);
        if (istat & FIFO_NOT_EMPTY) {
@@ -26474,7 +28598,7 @@ index b2fceb5..87fec83 100644
                        a1 = a; a &= ~3;
                        if ((c = h->cmpQ) == NULL)
                        {  
                        a1 = a; a &= ~3;
                        if ((c = h->cmpQ) == NULL)
                        {  
-@@ -1449,11 +1451,11 @@ static int sendcmd(
+@@ -1449,11 +1449,11 @@ static int sendcmd(
        /*
         * Disable interrupt
         */
        /*
         * Disable interrupt
         */
@@ -26488,7 +28612,7 @@ index b2fceb5..87fec83 100644
                if (temp != 0) {
                        break;
                }
                if (temp != 0) {
                        break;
                }
-@@ -1466,7 +1468,7 @@ DBG(
+@@ -1466,7 +1466,7 @@ DBG(
        /*
         * Send the cmd
         */
        /*
         * Send the cmd
         */
@@ -26497,7 +28621,7 @@ index b2fceb5..87fec83 100644
        complete = pollcomplete(ctlr);
        
        pci_unmap_single(info_p->pci_dev, (dma_addr_t) c->req.sg[0].addr, 
        complete = pollcomplete(ctlr);
        
        pci_unmap_single(info_p->pci_dev, (dma_addr_t) c->req.sg[0].addr, 
-@@ -1549,9 +1551,9 @@ static int revalidate_allvol(ctlr_info_t *host)
+@@ -1549,9 +1549,9 @@ static int revalidate_allvol(ctlr_info_t *host)
         * we check the new geometry.  Then turn interrupts back on when
         * we're done.
         */
         * we check the new geometry.  Then turn interrupts back on when
         * we're done.
         */
@@ -26509,7 +28633,7 @@ index b2fceb5..87fec83 100644
  
        for(i=0; i<NWD; i++) {
                struct gendisk *disk = ida_gendisk[ctlr][i];
  
        for(i=0; i<NWD; i++) {
                struct gendisk *disk = ida_gendisk[ctlr][i];
-@@ -1591,7 +1593,7 @@ static int pollcomplete(int ctlr)
+@@ -1591,7 +1591,7 @@ static int pollcomplete(int ctlr)
        /* Wait (up to 2 seconds) for a command to complete */
  
        for (i = 200000; i > 0; i--) {
        /* Wait (up to 2 seconds) for a command to complete */
  
        for (i = 200000; i > 0; i--) {
@@ -26532,10 +28656,10 @@ index be73e9d..7fbf140 100644
        cmdlist_t *reqQ;
        cmdlist_t *cmpQ;
 diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
        cmdlist_t *reqQ;
        cmdlist_t *cmpQ;
 diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
-index ef2ceed..c9cb18e 100644
+index 9cf2035..bffca95 100644
 --- a/drivers/block/drbd/drbd_int.h
 +++ b/drivers/block/drbd/drbd_int.h
 --- a/drivers/block/drbd/drbd_int.h
 +++ b/drivers/block/drbd/drbd_int.h
-@@ -737,7 +737,7 @@ struct drbd_request;
+@@ -736,7 +736,7 @@ struct drbd_request;
  struct drbd_epoch {
        struct list_head list;
        unsigned int barrier_nr;
  struct drbd_epoch {
        struct list_head list;
        unsigned int barrier_nr;
@@ -26544,7 +28668,7 @@ index ef2ceed..c9cb18e 100644
        atomic_t active;     /* increased on every req. added, and dec on every finished. */
        unsigned long flags;
  };
        atomic_t active;     /* increased on every req. added, and dec on every finished. */
        unsigned long flags;
  };
-@@ -1109,7 +1109,7 @@ struct drbd_conf {
+@@ -1108,7 +1108,7 @@ struct drbd_conf {
        void *int_dig_in;
        void *int_dig_vv;
        wait_queue_head_t seq_wait;
        void *int_dig_in;
        void *int_dig_vv;
        wait_queue_head_t seq_wait;
@@ -26553,7 +28677,7 @@ index ef2ceed..c9cb18e 100644
        unsigned int peer_seq;
        spinlock_t peer_seq_lock;
        unsigned int minor;
        unsigned int peer_seq;
        spinlock_t peer_seq_lock;
        unsigned int minor;
-@@ -1618,30 +1618,30 @@ static inline int drbd_setsockopt(struct socket *sock, int level, int optname,
+@@ -1617,30 +1617,30 @@ static inline int drbd_setsockopt(struct socket *sock, int level, int optname,
  
  static inline void drbd_tcp_cork(struct socket *sock)
  {
  
  static inline void drbd_tcp_cork(struct socket *sock)
  {
@@ -26635,7 +28759,7 @@ index 0358e55..bc33689 100644
        mdev->bm_writ_cnt  =
        mdev->read_cnt     =
 diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
        mdev->bm_writ_cnt  =
        mdev->read_cnt     =
 diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
-index 0feab26..5d9b3dd 100644
+index af2a250..219c74b 100644
 --- a/drivers/block/drbd/drbd_nl.c
 +++ b/drivers/block/drbd/drbd_nl.c
 @@ -2359,7 +2359,7 @@ static void drbd_connector_callback(struct cn_msg *req, struct netlink_skb_parms
 --- a/drivers/block/drbd/drbd_nl.c
 +++ b/drivers/block/drbd/drbd_nl.c
 @@ -2359,7 +2359,7 @@ static void drbd_connector_callback(struct cn_msg *req, struct netlink_skb_parms
@@ -26773,10 +28897,10 @@ index 43beaca..4a5b1dd 100644
  }
  
 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
  }
  
 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 4720c7a..2c49af1 100644
+index 1e888c9..05cf1b0 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
-@@ -283,7 +283,7 @@ static int __do_lo_send_write(struct file *file,
+@@ -227,7 +227,7 @@ static int __do_lo_send_write(struct file *file,
        mm_segment_t old_fs = get_fs();
  
        set_fs(get_ds());
        mm_segment_t old_fs = get_fs();
  
        set_fs(get_ds());
@@ -26785,30 +28909,8 @@ index 4720c7a..2c49af1 100644
        set_fs(old_fs);
        if (likely(bw == len))
                return 0;
        set_fs(old_fs);
        if (likely(bw == len))
                return 0;
-diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
-index f533f33..6177bcb 100644
---- a/drivers/block/nbd.c
-+++ b/drivers/block/nbd.c
-@@ -157,6 +157,8 @@ static int sock_xmit(struct nbd_device *lo, int send, void *buf, int size,
-       struct kvec iov;
-       sigset_t blocked, oldset;
-+      pax_track_stack();
-+
-       if (unlikely(!sock)) {
-               printk(KERN_ERR "%s: Attempted %s on closed socket in sock_xmit\n",
-                      lo->disk->disk_name, (send ? "send" : "recv"));
-@@ -572,6 +574,8 @@ static void do_nbd_request(struct request_queue *q)
- static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *lo,
-                      unsigned int cmd, unsigned long arg)
- {
-+      pax_track_stack();
-+
-       switch (cmd) {
-       case NBD_DISCONNECT: {
-               struct request sreq;
 diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
 diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
-index 423fd56..06d3be0 100644
+index 4364303..9adf4ee 100644
 --- a/drivers/char/Kconfig
 +++ b/drivers/char/Kconfig
 @@ -8,7 +8,8 @@ source "drivers/tty/Kconfig"
 --- a/drivers/char/Kconfig
 +++ b/drivers/char/Kconfig
 @@ -8,7 +8,8 @@ source "drivers/tty/Kconfig"
@@ -26913,7 +29015,7 @@ index 0833896..cccce52 100644
  {
        struct hpet_timer __iomem *timer;
 diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
  {
        struct hpet_timer __iomem *timer;
 diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
-index 58c0e63..25aed94 100644
+index 58c0e63..46c16bf 100644
 --- a/drivers/char/ipmi/ipmi_msghandler.c
 +++ b/drivers/char/ipmi/ipmi_msghandler.c
 @@ -415,7 +415,7 @@ struct ipmi_smi {
 --- a/drivers/char/ipmi/ipmi_msghandler.c
 +++ b/drivers/char/ipmi/ipmi_msghandler.c
 @@ -415,7 +415,7 @@ struct ipmi_smi {
@@ -26946,15 +29048,6 @@ index 58c0e63..25aed94 100644
  
        intf->proc_dir = NULL;
  
  
        intf->proc_dir = NULL;
  
-@@ -4220,6 +4220,8 @@ static void send_panic_events(char *str)
-       struct ipmi_smi_msg               smi_msg;
-       struct ipmi_recv_msg              recv_msg;
-+      pax_track_stack();
-+
-       si = (struct ipmi_system_interface_addr *) &addr;
-       si->addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
-       si->channel = IPMI_BMC_CHANNEL;
 diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
 index 9397ab4..d01bee1 100644
 --- a/drivers/char/ipmi/ipmi_si_intf.c
 diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
 index 9397ab4..d01bee1 100644
 --- a/drivers/char/ipmi/ipmi_si_intf.c
@@ -27003,7 +29096,7 @@ index 1aeaaba..e018570 100644
         .part_num = MBCS_PART_NUM,
         .mfg_num = MBCS_MFG_NUM,
 diff --git a/drivers/char/mem.c b/drivers/char/mem.c
         .part_num = MBCS_PART_NUM,
         .mfg_num = MBCS_MFG_NUM,
 diff --git a/drivers/char/mem.c b/drivers/char/mem.c
-index 8fc04b4..cebdeec 100644
+index 1451790..f705c30 100644
 --- a/drivers/char/mem.c
 +++ b/drivers/char/mem.c
 @@ -18,6 +18,7 @@
 --- a/drivers/char/mem.c
 +++ b/drivers/char/mem.c
 @@ -18,6 +18,7 @@
@@ -27014,7 +29107,7 @@ index 8fc04b4..cebdeec 100644
  #include <linux/ptrace.h>
  #include <linux/device.h>
  #include <linux/highmem.h>
  #include <linux/ptrace.h>
  #include <linux/device.h>
  #include <linux/highmem.h>
-@@ -34,6 +35,10 @@
+@@ -35,6 +36,10 @@
  # include <linux/efi.h>
  #endif
  
  # include <linux/efi.h>
  #endif
  
@@ -27025,7 +29118,7 @@ index 8fc04b4..cebdeec 100644
  static inline unsigned long size_inside_page(unsigned long start,
                                             unsigned long size)
  {
  static inline unsigned long size_inside_page(unsigned long start,
                                             unsigned long size)
  {
-@@ -65,9 +70,13 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
+@@ -66,9 +71,13 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
  
        while (cursor < to) {
                if (!devmem_is_allowed(pfn)) {
  
        while (cursor < to) {
                if (!devmem_is_allowed(pfn)) {
@@ -27039,7 +29132,7 @@ index 8fc04b4..cebdeec 100644
                        return 0;
                }
                cursor += PAGE_SIZE;
                        return 0;
                }
                cursor += PAGE_SIZE;
-@@ -75,6 +84,11 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
+@@ -76,6 +85,11 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
        }
        return 1;
  }
        }
        return 1;
  }
@@ -27051,7 +29144,7 @@ index 8fc04b4..cebdeec 100644
  #else
  static inline int range_is_allowed(unsigned long pfn, unsigned long size)
  {
  #else
  static inline int range_is_allowed(unsigned long pfn, unsigned long size)
  {
-@@ -117,6 +131,7 @@ static ssize_t read_mem(struct file *file, char __user *buf,
+@@ -118,6 +132,7 @@ static ssize_t read_mem(struct file *file, char __user *buf,
  
        while (count > 0) {
                unsigned long remaining;
  
        while (count > 0) {
                unsigned long remaining;
@@ -27059,7 +29152,7 @@ index 8fc04b4..cebdeec 100644
  
                sz = size_inside_page(p, count);
  
  
                sz = size_inside_page(p, count);
  
-@@ -132,7 +147,23 @@ static ssize_t read_mem(struct file *file, char __user *buf,
+@@ -133,7 +148,23 @@ static ssize_t read_mem(struct file *file, char __user *buf,
                if (!ptr)
                        return -EFAULT;
  
                if (!ptr)
                        return -EFAULT;
  
@@ -27084,7 +29177,7 @@ index 8fc04b4..cebdeec 100644
                unxlate_dev_mem_ptr(p, ptr);
                if (remaining)
                        return -EFAULT;
                unxlate_dev_mem_ptr(p, ptr);
                if (remaining)
                        return -EFAULT;
-@@ -395,9 +426,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
+@@ -396,9 +427,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
                         size_t count, loff_t *ppos)
  {
        unsigned long p = *ppos;
                         size_t count, loff_t *ppos)
  {
        unsigned long p = *ppos;
@@ -27095,7 +29188,7 @@ index 8fc04b4..cebdeec 100644
  
        read = 0;
        if (p < (unsigned long) high_memory) {
  
        read = 0;
        if (p < (unsigned long) high_memory) {
-@@ -419,6 +449,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
+@@ -420,6 +450,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
                }
  #endif
                while (low_count > 0) {
                }
  #endif
                while (low_count > 0) {
@@ -27104,7 +29197,7 @@ index 8fc04b4..cebdeec 100644
                        sz = size_inside_page(p, low_count);
  
                        /*
                        sz = size_inside_page(p, low_count);
  
                        /*
-@@ -428,7 +460,22 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
+@@ -429,7 +461,22 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
                         */
                        kbuf = xlate_dev_kmem_ptr((char *)p);
  
                         */
                        kbuf = xlate_dev_kmem_ptr((char *)p);
  
@@ -27128,7 +29221,7 @@ index 8fc04b4..cebdeec 100644
                                return -EFAULT;
                        buf += sz;
                        p += sz;
                                return -EFAULT;
                        buf += sz;
                        p += sz;
-@@ -866,6 +913,9 @@ static const struct memdev {
+@@ -867,6 +914,9 @@ static const struct memdev {
  #ifdef CONFIG_CRASH_DUMP
        [12] = { "oldmem", 0, &oldmem_fops, NULL },
  #endif
  #ifdef CONFIG_CRASH_DUMP
        [12] = { "oldmem", 0, &oldmem_fops, NULL },
  #endif
@@ -27152,7 +29245,7 @@ index da3cfee..a5a6606 100644
  
        *ppos = i;
 diff --git a/drivers/char/random.c b/drivers/char/random.c
  
        *ppos = i;
 diff --git a/drivers/char/random.c b/drivers/char/random.c
-index c35a785..6d82202 100644
+index 6035ab8..bdfe4fd 100644
 --- a/drivers/char/random.c
 +++ b/drivers/char/random.c
 @@ -261,8 +261,13 @@
 --- a/drivers/char/random.c
 +++ b/drivers/char/random.c
 @@ -261,8 +261,13 @@
@@ -27196,7 +29289,7 @@ index c35a785..6d82202 100644
                        ret = -EFAULT;
                        break;
                }
                        ret = -EFAULT;
                        break;
                }
-@@ -1214,7 +1226,7 @@ EXPORT_SYMBOL(generate_random_uuid);
+@@ -1228,7 +1240,7 @@ EXPORT_SYMBOL(generate_random_uuid);
  #include <linux/sysctl.h>
  
  static int min_read_thresh = 8, min_write_thresh;
  #include <linux/sysctl.h>
  
  static int min_read_thresh = 8, min_write_thresh;
@@ -27248,7 +29341,7 @@ index 1ee8ce7..b778bef 100644
  
        return 0;
 diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
  
        return 0;
 diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
-index 9ca5c02..7ce352c 100644
+index 361a1df..2471eee 100644
 --- a/drivers/char/tpm/tpm.c
 +++ b/drivers/char/tpm/tpm.c
 @@ -414,7 +414,7 @@ static ssize_t tpm_transmit(struct tpm_chip *chip, const char *buf,
 --- a/drivers/char/tpm/tpm.c
 +++ b/drivers/char/tpm/tpm.c
 @@ -414,7 +414,7 @@ static ssize_t tpm_transmit(struct tpm_chip *chip, const char *buf,
@@ -27260,15 +29353,6 @@ index 9ca5c02..7ce352c 100644
                        dev_err(chip->dev, "Operation Canceled\n");
                        rc = -ECANCELED;
                        goto out;
                        dev_err(chip->dev, "Operation Canceled\n");
                        rc = -ECANCELED;
                        goto out;
-@@ -862,6 +862,8 @@ ssize_t tpm_show_pubek(struct device *dev, struct device_attribute *attr,
-       struct tpm_chip *chip = dev_get_drvdata(dev);
-+      pax_track_stack();
-+
-       tpm_cmd.header.in = tpm_readpubek_header;
-       err = transmit_cmd(chip, &tpm_cmd, READ_PUBEK_RESULT_SIZE,
-                       "attempting to read the PUBEK");
 diff --git a/drivers/char/tpm/tpm_bios.c b/drivers/char/tpm/tpm_bios.c
 index 0636520..169c1d0 100644
 --- a/drivers/char/tpm/tpm_bios.c
 diff --git a/drivers/char/tpm/tpm_bios.c b/drivers/char/tpm/tpm_bios.c
 index 0636520..169c1d0 100644
 --- a/drivers/char/tpm/tpm_bios.c
@@ -27317,10 +29401,10 @@ index 0636520..169c1d0 100644
        acpi_os_unmap_memory(virt, len);
        return 0;
 diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
        acpi_os_unmap_memory(virt, len);
        return 0;
 diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
-index fb68b12..0f6c6ca 100644
+index 8e3c46d..c139b99 100644
 --- a/drivers/char/virtio_console.c
 +++ b/drivers/char/virtio_console.c
 --- a/drivers/char/virtio_console.c
 +++ b/drivers/char/virtio_console.c
-@@ -555,7 +555,7 @@ static ssize_t fill_readbuf(struct port *port, char *out_buf, size_t out_count,
+@@ -563,7 +563,7 @@ static ssize_t fill_readbuf(struct port *port, char *out_buf, size_t out_count,
        if (to_user) {
                ssize_t ret;
  
        if (to_user) {
                ssize_t ret;
  
@@ -27329,7 +29413,7 @@ index fb68b12..0f6c6ca 100644
                if (ret)
                        return -EFAULT;
        } else {
                if (ret)
                        return -EFAULT;
        } else {
-@@ -654,7 +654,7 @@ static ssize_t port_fops_read(struct file *filp, char __user *ubuf,
+@@ -662,7 +662,7 @@ static ssize_t port_fops_read(struct file *filp, char __user *ubuf,
        if (!port_has_data(port) && !port->host_connected)
                return 0;
  
        if (!port_has_data(port) && !port->host_connected)
                return 0;
  
@@ -27338,37 +29422,24 @@ index fb68b12..0f6c6ca 100644
  }
  
  static ssize_t port_fops_write(struct file *filp, const char __user *ubuf,
  }
  
  static ssize_t port_fops_write(struct file *filp, const char __user *ubuf,
-diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
-index a84250a..68c725e 100644
---- a/drivers/crypto/hifn_795x.c
-+++ b/drivers/crypto/hifn_795x.c
-@@ -1655,6 +1655,8 @@ static int hifn_test(struct hifn_device *dev, int encdec, u8 snum)
-               0xCA, 0x34, 0x2B, 0x2E};
-       struct scatterlist sg;
-+      pax_track_stack();
-+
-       memset(src, 0, sizeof(src));
-       memset(ctx.key, 0, sizeof(ctx.key));
-diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c
-index db33d30..7823369 100644
---- a/drivers/crypto/padlock-aes.c
-+++ b/drivers/crypto/padlock-aes.c
-@@ -109,6 +109,8 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
-       struct crypto_aes_ctx gen_aes;
-       int cpu;
+diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
+index eb1d864..39ee5a7 100644
+--- a/drivers/dma/dmatest.c
++++ b/drivers/dma/dmatest.c
+@@ -591,7 +591,7 @@ static int dmatest_add_channel(struct dma_chan *chan)
+       }
+       if (dma_has_cap(DMA_PQ, dma_dev->cap_mask)) {
+               cnt = dmatest_add_threads(dtc, DMA_PQ);
+-              thread_count += cnt > 0 ?: 0;
++              thread_count += cnt > 0 ? cnt : 0;
+       }
  
  
-+      pax_track_stack();
-+
-       if (key_len % 8) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
-               return -EINVAL;
+       pr_info("dmatest: Started %u threads using %s\n",
 diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
 diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
-index 9a8bebc..b1e4989 100644
+index c9eee6d..f9d5280 100644
 --- a/drivers/edac/amd64_edac.c
 +++ b/drivers/edac/amd64_edac.c
 --- a/drivers/edac/amd64_edac.c
 +++ b/drivers/edac/amd64_edac.c
-@@ -2670,7 +2670,7 @@ static void __devexit amd64_remove_one_instance(struct pci_dev *pdev)
+@@ -2685,7 +2685,7 @@ static void __devexit amd64_remove_one_instance(struct pci_dev *pdev)
   * PCI core identifies what devices are on a system during boot, and then
   * inquiry this table to see if this driver is for a given device found.
   */
   * PCI core identifies what devices are on a system during boot, and then
   * inquiry this table to see if this driver is for a given device found.
   */
@@ -27569,10 +29640,10 @@ index 74d6ec34..baff517 100644
        {0,}                    /* 0 terminated list. */
  };
 diff --git a/drivers/edac/i7300_edac.c b/drivers/edac/i7300_edac.c
        {0,}                    /* 0 terminated list. */
  };
 diff --git a/drivers/edac/i7300_edac.c b/drivers/edac/i7300_edac.c
-index a76fe83..15479e6 100644
+index 6104dba..e7ea8e1 100644
 --- a/drivers/edac/i7300_edac.c
 +++ b/drivers/edac/i7300_edac.c
 --- a/drivers/edac/i7300_edac.c
 +++ b/drivers/edac/i7300_edac.c
-@@ -1191,7 +1191,7 @@ static void __devexit i7300_remove_one(struct pci_dev *pdev)
+@@ -1192,7 +1192,7 @@ static void __devexit i7300_remove_one(struct pci_dev *pdev)
   *
   * Has only 8086:360c PCI ID
   */
   *
   * Has only 8086:360c PCI ID
   */
@@ -27582,10 +29653,10 @@ index a76fe83..15479e6 100644
        {0,}                    /* 0 terminated list. */
  };
 diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
        {0,}                    /* 0 terminated list. */
  };
 diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
-index f6cf448..3f612e9 100644
+index 70ad892..178943c 100644
 --- a/drivers/edac/i7core_edac.c
 +++ b/drivers/edac/i7core_edac.c
 --- a/drivers/edac/i7core_edac.c
 +++ b/drivers/edac/i7core_edac.c
-@@ -359,7 +359,7 @@ static const struct pci_id_table pci_dev_table[] = {
+@@ -391,7 +391,7 @@ static const struct pci_id_table pci_dev_table[] = {
  /*
   *    pci_device_id   table for which devices we are looking for
   */
  /*
   *    pci_device_id   table for which devices we are looking for
   */
@@ -27647,7 +29718,7 @@ index a5da732..983363b 100644
                PCI_VEND_DEV(INTEL, 82975_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
                I82975X
 diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h
                PCI_VEND_DEV(INTEL, 82975_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
                I82975X
 diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h
-index 795a320..3bbc3d3 100644
+index 0106747..0b40417 100644
 --- a/drivers/edac/mce_amd.h
 +++ b/drivers/edac/mce_amd.h
 @@ -83,7 +83,7 @@ struct amd_decoder_ops {
 --- a/drivers/edac/mce_amd.h
 +++ b/drivers/edac/mce_amd.h
 @@ -83,7 +83,7 @@ struct amd_decoder_ops {
@@ -27658,7 +29729,7 @@ index 795a320..3bbc3d3 100644
 +} __no_const;
  
  void amd_report_gart_errors(bool);
 +} __no_const;
  
  void amd_report_gart_errors(bool);
- void amd_register_ecc_decoder(void (*f)(int, struct mce *, u32));
+ void amd_register_ecc_decoder(void (*f)(int, struct mce *));
 diff --git a/drivers/edac/r82600_edac.c b/drivers/edac/r82600_edac.c
 index b153674..ad2ba9b 100644
 --- a/drivers/edac/r82600_edac.c
 diff --git a/drivers/edac/r82600_edac.c b/drivers/edac/r82600_edac.c
 index b153674..ad2ba9b 100644
 --- a/drivers/edac/r82600_edac.c
@@ -27672,6 +29743,19 @@ index b153674..ad2ba9b 100644
        {
         PCI_DEVICE(PCI_VENDOR_ID_RADISYS, R82600_BRIDGE_ID)
         },
        {
         PCI_DEVICE(PCI_VENDOR_ID_RADISYS, R82600_BRIDGE_ID)
         },
+diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
+index 7a402bf..af0b211 100644
+--- a/drivers/edac/sb_edac.c
++++ b/drivers/edac/sb_edac.c
+@@ -367,7 +367,7 @@ static const struct pci_id_table pci_dev_descr_sbridge_table[] = {
+ /*
+  *    pci_device_id   table for which devices we are looking for
+  */
+-static const struct pci_device_id sbridge_pci_tbl[] __devinitdata = {
++static const struct pci_device_id sbridge_pci_tbl[] __devinitconst = {
+       {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SBRIDGE_IMC_TA)},
+       {0,}                    /* 0 terminated list. */
+ };
 diff --git a/drivers/edac/x38_edac.c b/drivers/edac/x38_edac.c
 index b6f47de..c5acf3a 100644
 --- a/drivers/edac/x38_edac.c
 diff --git a/drivers/edac/x38_edac.c b/drivers/edac/x38_edac.c
 index b6f47de..c5acf3a 100644
 --- a/drivers/edac/x38_edac.c
@@ -27713,7 +29797,7 @@ index 4799393..37bd3ab 100644
  
        r  = kmalloc(sizeof(*r), GFP_KERNEL);
 diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-transaction.c
  
        r  = kmalloc(sizeof(*r), GFP_KERNEL);
 diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-transaction.c
-index 334b82a..ea5261d 100644
+index 855ab3f..11f4bbd 100644
 --- a/drivers/firewire/core-transaction.c
 +++ b/drivers/firewire/core-transaction.c
 @@ -37,6 +37,7 @@
 --- a/drivers/firewire/core-transaction.c
 +++ b/drivers/firewire/core-transaction.c
 @@ -37,6 +37,7 @@
@@ -27724,15 +29808,6 @@ index 334b82a..ea5261d 100644
  
  #include <asm/byteorder.h>
  
  
  #include <asm/byteorder.h>
  
-@@ -422,6 +423,8 @@ int fw_run_transaction(struct fw_card *card, int tcode, int destination_id,
-       struct transaction_callback_data d;
-       struct fw_transaction t;
-+      pax_track_stack();
-+
-       init_timer_on_stack(&t.split_timeout_timer);
-       init_completion(&d.done);
-       d.payload = payload;
 diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h
 index b45be57..5fad18b 100644
 --- a/drivers/firewire/core.h
 diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h
 index b45be57..5fad18b 100644
 --- a/drivers/firewire/core.h
@@ -27746,7 +29821,7 @@ index b45be57..5fad18b 100644
  void fw_card_initialize(struct fw_card *card,
                const struct fw_card_driver *driver, struct device *device);
 diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
  void fw_card_initialize(struct fw_card *card,
                const struct fw_card_driver *driver, struct device *device);
 diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
-index bcb1126..2cc2121 100644
+index 153980b..4b4d046 100644
 --- a/drivers/firmware/dmi_scan.c
 +++ b/drivers/firmware/dmi_scan.c
 @@ -449,11 +449,6 @@ void __init dmi_scan_machine(void)
 --- a/drivers/firmware/dmi_scan.c
 +++ b/drivers/firmware/dmi_scan.c
 @@ -449,11 +449,6 @@ void __init dmi_scan_machine(void)
@@ -27761,7 +29836,7 @@ index bcb1126..2cc2121 100644
                p = dmi_ioremap(0xF0000, 0x10000);
                if (p == NULL)
                        goto error;
                p = dmi_ioremap(0xF0000, 0x10000);
                if (p == NULL)
                        goto error;
-@@ -725,7 +720,7 @@ int dmi_walk(void (*decode)(const struct dmi_header *, void *),
+@@ -723,7 +718,7 @@ int dmi_walk(void (*decode)(const struct dmi_header *, void *),
        if (buf == NULL)
                return -1;
  
        if (buf == NULL)
                return -1;
  
@@ -27784,10 +29859,10 @@ index 98723cb..10ca85b 100644
        return -EINVAL;
  }
 diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
        return -EINVAL;
  }
 diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
-index 2410c40..2d03563 100644
+index 8323fc3..5c1d755 100644
 --- a/drivers/gpu/drm/drm_crtc.c
 +++ b/drivers/gpu/drm/drm_crtc.c
 --- a/drivers/gpu/drm/drm_crtc.c
 +++ b/drivers/gpu/drm/drm_crtc.c
-@@ -1374,7 +1374,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
+@@ -1379,7 +1379,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
         */
        if ((out_resp->count_modes >= mode_count) && mode_count) {
                copied = 0;
         */
        if ((out_resp->count_modes >= mode_count) && mode_count) {
                copied = 0;
@@ -27796,7 +29871,7 @@ index 2410c40..2d03563 100644
                list_for_each_entry(mode, &connector->modes, head) {
                        drm_crtc_convert_to_umode(&u_mode, mode);
                        if (copy_to_user(mode_ptr + copied,
                list_for_each_entry(mode, &connector->modes, head) {
                        drm_crtc_convert_to_umode(&u_mode, mode);
                        if (copy_to_user(mode_ptr + copied,
-@@ -1389,8 +1389,8 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
+@@ -1394,8 +1394,8 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
  
        if ((out_resp->count_props >= props_count) && props_count) {
                copied = 0;
  
        if ((out_resp->count_props >= props_count) && props_count) {
                copied = 0;
@@ -27807,7 +29882,7 @@ index 2410c40..2d03563 100644
                for (i = 0; i < DRM_CONNECTOR_MAX_PROPERTY; i++) {
                        if (connector->property_ids[i] != 0) {
                                if (put_user(connector->property_ids[i],
                for (i = 0; i < DRM_CONNECTOR_MAX_PROPERTY; i++) {
                        if (connector->property_ids[i] != 0) {
                                if (put_user(connector->property_ids[i],
-@@ -1412,7 +1412,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
+@@ -1417,7 +1417,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
  
        if ((out_resp->count_encoders >= encoders_count) && encoders_count) {
                copied = 0;
  
        if ((out_resp->count_encoders >= encoders_count) && encoders_count) {
                copied = 0;
@@ -27816,7 +29891,7 @@ index 2410c40..2d03563 100644
                for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
                        if (connector->encoder_ids[i] != 0) {
                                if (put_user(connector->encoder_ids[i],
                for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
                        if (connector->encoder_ids[i] != 0) {
                                if (put_user(connector->encoder_ids[i],
-@@ -1571,7 +1571,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1576,7 +1576,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
                }
  
                for (i = 0; i < crtc_req->count_connectors; i++) {
                }
  
                for (i = 0; i < crtc_req->count_connectors; i++) {
@@ -27825,7 +29900,7 @@ index 2410c40..2d03563 100644
                        if (get_user(out_id, &set_connectors_ptr[i])) {
                                ret = -EFAULT;
                                goto out;
                        if (get_user(out_id, &set_connectors_ptr[i])) {
                                ret = -EFAULT;
                                goto out;
-@@ -1852,7 +1852,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
+@@ -1857,7 +1857,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
        fb = obj_to_fb(obj);
  
        num_clips = r->num_clips;
        fb = obj_to_fb(obj);
  
        num_clips = r->num_clips;
@@ -27834,7 +29909,7 @@ index 2410c40..2d03563 100644
  
        if (!num_clips != !clips_ptr) {
                ret = -EINVAL;
  
        if (!num_clips != !clips_ptr) {
                ret = -EINVAL;
-@@ -2276,7 +2276,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2283,7 +2283,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
        out_resp->flags = property->flags;
  
        if ((out_resp->count_values >= value_count) && value_count) {
        out_resp->flags = property->flags;
  
        if ((out_resp->count_values >= value_count) && value_count) {
@@ -27843,7 +29918,7 @@ index 2410c40..2d03563 100644
                for (i = 0; i < value_count; i++) {
                        if (copy_to_user(values_ptr + i, &property->values[i], sizeof(uint64_t))) {
                                ret = -EFAULT;
                for (i = 0; i < value_count; i++) {
                        if (copy_to_user(values_ptr + i, &property->values[i], sizeof(uint64_t))) {
                                ret = -EFAULT;
-@@ -2289,7 +2289,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2296,7 +2296,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
        if (property->flags & DRM_MODE_PROP_ENUM) {
                if ((out_resp->count_enum_blobs >= enum_count) && enum_count) {
                        copied = 0;
        if (property->flags & DRM_MODE_PROP_ENUM) {
                if ((out_resp->count_enum_blobs >= enum_count) && enum_count) {
                        copied = 0;
@@ -27852,7 +29927,7 @@ index 2410c40..2d03563 100644
                        list_for_each_entry(prop_enum, &property->enum_blob_list, head) {
  
                                if (copy_to_user(&enum_ptr[copied].value, &prop_enum->value, sizeof(uint64_t))) {
                        list_for_each_entry(prop_enum, &property->enum_blob_list, head) {
  
                                if (copy_to_user(&enum_ptr[copied].value, &prop_enum->value, sizeof(uint64_t))) {
-@@ -2312,7 +2312,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2319,7 +2319,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
                if ((out_resp->count_enum_blobs >= blob_count) && blob_count) {
                        copied = 0;
                        blob_id_ptr = (uint32_t *)(unsigned long)out_resp->enum_blob_ptr;
                if ((out_resp->count_enum_blobs >= blob_count) && blob_count) {
                        copied = 0;
                        blob_id_ptr = (uint32_t *)(unsigned long)out_resp->enum_blob_ptr;
@@ -27861,7 +29936,7 @@ index 2410c40..2d03563 100644
  
                        list_for_each_entry(prop_blob, &property->enum_blob_list, head) {
                                if (put_user(prop_blob->base.id, blob_id_ptr + copied)) {
  
                        list_for_each_entry(prop_blob, &property->enum_blob_list, head) {
                                if (put_user(prop_blob->base.id, blob_id_ptr + copied)) {
-@@ -2373,7 +2373,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2380,7 +2380,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
        struct drm_mode_get_blob *out_resp = data;
        struct drm_property_blob *blob;
        int ret = 0;
        struct drm_mode_get_blob *out_resp = data;
        struct drm_property_blob *blob;
        int ret = 0;
@@ -27870,7 +29945,7 @@ index 2410c40..2d03563 100644
  
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
  
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
-@@ -2387,7 +2387,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2394,7 +2394,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
        blob = obj_to_blob(obj);
  
        if (out_resp->length == blob->length) {
        blob = obj_to_blob(obj);
  
        if (out_resp->length == blob->length) {
@@ -27880,10 +29955,10 @@ index 2410c40..2d03563 100644
                        ret = -EFAULT;
                        goto done;
 diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
                        ret = -EFAULT;
                        goto done;
 diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
-index f88a9b2..8f4078f 100644
+index d2619d7..bd6bd00 100644
 --- a/drivers/gpu/drm/drm_crtc_helper.c
 +++ b/drivers/gpu/drm/drm_crtc_helper.c
 --- a/drivers/gpu/drm/drm_crtc_helper.c
 +++ b/drivers/gpu/drm/drm_crtc_helper.c
-@@ -276,7 +276,7 @@ static bool drm_encoder_crtc_ok(struct drm_encoder *encoder,
+@@ -279,7 +279,7 @@ static bool drm_encoder_crtc_ok(struct drm_encoder *encoder,
        struct drm_crtc *tmp;
        int crtc_mask = 1;
  
        struct drm_crtc *tmp;
        int crtc_mask = 1;
  
@@ -27892,20 +29967,11 @@ index f88a9b2..8f4078f 100644
  
        dev = crtc->dev;
  
  
        dev = crtc->dev;
  
-@@ -343,6 +343,8 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
-       struct drm_encoder *encoder;
-       bool ret = true;
-+      pax_track_stack();
-+
-       crtc->enabled = drm_helper_crtc_in_use(crtc);
-       if (!crtc->enabled)
-               return true;
 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
-index 93a112d..c8b065d 100644
+index 40c187c..5746164 100644
 --- a/drivers/gpu/drm/drm_drv.c
 +++ b/drivers/gpu/drm/drm_drv.c
 --- a/drivers/gpu/drm/drm_drv.c
 +++ b/drivers/gpu/drm/drm_drv.c
-@@ -307,7 +307,7 @@ module_exit(drm_core_exit);
+@@ -308,7 +308,7 @@ module_exit(drm_core_exit);
  /**
   * Copy and IOCTL return string to user space
   */
  /**
   * Copy and IOCTL return string to user space
   */
@@ -27914,7 +29980,7 @@ index 93a112d..c8b065d 100644
  {
        int len;
  
  {
        int len;
  
-@@ -386,7 +386,7 @@ long drm_ioctl(struct file *filp,
+@@ -387,7 +387,7 @@ long drm_ioctl(struct file *filp,
  
        dev = file_priv->minor->dev;
        atomic_inc(&dev->ioctl_count);
  
        dev = file_priv->minor->dev;
        atomic_inc(&dev->ioctl_count);
@@ -27924,10 +29990,10 @@ index 93a112d..c8b065d 100644
  
        DRM_DEBUG("pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n",
 diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
  
        DRM_DEBUG("pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n",
 diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
-index 2ec7d48..be14bb1 100644
+index 828bf65..cdaa0e9 100644
 --- a/drivers/gpu/drm/drm_fops.c
 +++ b/drivers/gpu/drm/drm_fops.c
 --- a/drivers/gpu/drm/drm_fops.c
 +++ b/drivers/gpu/drm/drm_fops.c
-@@ -70,7 +70,7 @@ static int drm_setup(struct drm_device * dev)
+@@ -71,7 +71,7 @@ static int drm_setup(struct drm_device * dev)
        }
  
        for (i = 0; i < ARRAY_SIZE(dev->counts); i++)
        }
  
        for (i = 0; i < ARRAY_SIZE(dev->counts); i++)
@@ -27936,7 +30002,7 @@ index 2ec7d48..be14bb1 100644
  
        dev->sigdata.lock = NULL;
  
  
        dev->sigdata.lock = NULL;
  
-@@ -134,8 +134,8 @@ int drm_open(struct inode *inode, struct file *filp)
+@@ -135,8 +135,8 @@ int drm_open(struct inode *inode, struct file *filp)
  
        retcode = drm_open_helper(inode, filp, dev);
        if (!retcode) {
  
        retcode = drm_open_helper(inode, filp, dev);
        if (!retcode) {
@@ -27947,7 +30013,7 @@ index 2ec7d48..be14bb1 100644
                        retcode = drm_setup(dev);
        }
        if (!retcode) {
                        retcode = drm_setup(dev);
        }
        if (!retcode) {
-@@ -472,7 +472,7 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -473,7 +473,7 @@ int drm_release(struct inode *inode, struct file *filp)
  
        mutex_lock(&drm_global_mutex);
  
  
        mutex_lock(&drm_global_mutex);
  
@@ -27956,16 +30022,16 @@ index 2ec7d48..be14bb1 100644
  
        if (dev->driver->preclose)
                dev->driver->preclose(dev, file_priv);
  
        if (dev->driver->preclose)
                dev->driver->preclose(dev, file_priv);
-@@ -484,7 +484,7 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -485,7 +485,7 @@ int drm_release(struct inode *inode, struct file *filp)
        DRM_DEBUG("pid = %d, device = 0x%lx, open_count = %d\n",
                  task_pid_nr(current),
                  (long)old_encode_dev(file_priv->minor->device),
 -                dev->open_count);
 +                local_read(&dev->open_count));
  
        DRM_DEBUG("pid = %d, device = 0x%lx, open_count = %d\n",
                  task_pid_nr(current),
                  (long)old_encode_dev(file_priv->minor->device),
 -                dev->open_count);
 +                local_read(&dev->open_count));
  
-       /* if the master has gone away we can't do anything with the lock */
-       if (file_priv->minor->master)
-@@ -565,8 +565,8 @@ int drm_release(struct inode *inode, struct file *filp)
+       /* Release any auth tokens that might point to this file_priv,
+          (do that under the drm_global_mutex) */
+@@ -571,8 +571,8 @@ int drm_release(struct inode *inode, struct file *filp)
         * End inline drm_release
         */
  
         * End inline drm_release
         */
  
@@ -28082,10 +30148,10 @@ index ab1162d..42587b2 100644
  #if defined(__i386__)
                pgprot = pgprot_val(vma->vm_page_prot);
 diff --git a/drivers/gpu/drm/drm_ioc32.c b/drivers/gpu/drm/drm_ioc32.c
  #if defined(__i386__)
                pgprot = pgprot_val(vma->vm_page_prot);
 diff --git a/drivers/gpu/drm/drm_ioc32.c b/drivers/gpu/drm/drm_ioc32.c
-index 4a058c7..b42cd92 100644
+index ddd70db..40321e6 100644
 --- a/drivers/gpu/drm/drm_ioc32.c
 +++ b/drivers/gpu/drm/drm_ioc32.c
 --- a/drivers/gpu/drm/drm_ioc32.c
 +++ b/drivers/gpu/drm/drm_ioc32.c
-@@ -455,7 +455,7 @@ static int compat_drm_infobufs(struct file *file, unsigned int cmd,
+@@ -456,7 +456,7 @@ static int compat_drm_infobufs(struct file *file, unsigned int cmd,
        request = compat_alloc_user_space(nbytes);
        if (!access_ok(VERIFY_WRITE, request, nbytes))
                return -EFAULT;
        request = compat_alloc_user_space(nbytes);
        if (!access_ok(VERIFY_WRITE, request, nbytes))
                return -EFAULT;
@@ -28094,7 +30160,7 @@ index 4a058c7..b42cd92 100644
  
        if (__put_user(count, &request->count)
            || __put_user(list, &request->list))
  
        if (__put_user(count, &request->count)
            || __put_user(list, &request->list))
-@@ -516,7 +516,7 @@ static int compat_drm_mapbufs(struct file *file, unsigned int cmd,
+@@ -517,7 +517,7 @@ static int compat_drm_mapbufs(struct file *file, unsigned int cmd,
        request = compat_alloc_user_space(nbytes);
        if (!access_ok(VERIFY_WRITE, request, nbytes))
                return -EFAULT;
        request = compat_alloc_user_space(nbytes);
        if (!access_ok(VERIFY_WRITE, request, nbytes))
                return -EFAULT;
@@ -28180,10 +30246,10 @@ index c9339f4..f5e1b9d 100644
        int front_offset;
  } drm_i810_private_t;
 diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
        int front_offset;
  } drm_i810_private_t;
 diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
-index 3c395a5..02889c2 100644
+index b2e3c97..58cf079 100644
 --- a/drivers/gpu/drm/i915/i915_debugfs.c
 +++ b/drivers/gpu/drm/i915/i915_debugfs.c
 --- a/drivers/gpu/drm/i915/i915_debugfs.c
 +++ b/drivers/gpu/drm/i915/i915_debugfs.c
-@@ -497,7 +497,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
+@@ -499,7 +499,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
                           I915_READ(GTIMR));
        }
        seq_printf(m, "Interrupts received: %d\n",
                           I915_READ(GTIMR));
        }
        seq_printf(m, "Interrupts received: %d\n",
@@ -28192,7 +30258,7 @@ index 3c395a5..02889c2 100644
        for (i = 0; i < I915_NUM_RINGS; i++) {
                if (IS_GEN6(dev) || IS_GEN7(dev)) {
                        seq_printf(m, "Graphics Interrupt mask (%s):    %08x\n",
        for (i = 0; i < I915_NUM_RINGS; i++) {
                if (IS_GEN6(dev) || IS_GEN7(dev)) {
                        seq_printf(m, "Graphics Interrupt mask (%s):    %08x\n",
-@@ -1185,7 +1185,7 @@ static int i915_opregion(struct seq_file *m, void *unused)
+@@ -1232,7 +1232,7 @@ static int i915_opregion(struct seq_file *m, void *unused)
                return ret;
  
        if (opregion->header)
                return ret;
  
        if (opregion->header)
@@ -28202,10 +30268,10 @@ index 3c395a5..02889c2 100644
        mutex_unlock(&dev->struct_mutex);
  
 diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
        mutex_unlock(&dev->struct_mutex);
  
 diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
-index 8a3942c..1b73bf1 100644
+index c4da951..3c59c5c 100644
 --- a/drivers/gpu/drm/i915/i915_dma.c
 +++ b/drivers/gpu/drm/i915/i915_dma.c
 --- a/drivers/gpu/drm/i915/i915_dma.c
 +++ b/drivers/gpu/drm/i915/i915_dma.c
-@@ -1171,7 +1171,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
+@@ -1172,7 +1172,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
        bool can_switch;
  
        spin_lock(&dev->count_lock);
        bool can_switch;
  
        spin_lock(&dev->count_lock);
@@ -28215,10 +30281,10 @@ index 8a3942c..1b73bf1 100644
        return can_switch;
  }
 diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
        return can_switch;
  }
 diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index 7916bd9..7c17a0f 100644
+index ae294a0..1755461 100644
 --- a/drivers/gpu/drm/i915/i915_drv.h
 +++ b/drivers/gpu/drm/i915/i915_drv.h
 --- a/drivers/gpu/drm/i915/i915_drv.h
 +++ b/drivers/gpu/drm/i915/i915_drv.h
-@@ -222,7 +222,7 @@ struct drm_i915_display_funcs {
+@@ -229,7 +229,7 @@ struct drm_i915_display_funcs {
        /* render clock increase/decrease */
        /* display clock increase/decrease */
        /* pll clock increase/decrease */
        /* render clock increase/decrease */
        /* display clock increase/decrease */
        /* pll clock increase/decrease */
@@ -28227,7 +30293,7 @@ index 7916bd9..7c17a0f 100644
  
  struct intel_device_info {
        u8 gen;
  
  struct intel_device_info {
        u8 gen;
-@@ -305,7 +305,7 @@ typedef struct drm_i915_private {
+@@ -318,7 +318,7 @@ typedef struct drm_i915_private {
        int current_page;
        int page_flipping;
  
        int current_page;
        int page_flipping;
  
@@ -28236,7 +30302,7 @@ index 7916bd9..7c17a0f 100644
  
        /* protects the irq masks */
        spinlock_t irq_lock;
  
        /* protects the irq masks */
        spinlock_t irq_lock;
-@@ -882,7 +882,7 @@ struct drm_i915_gem_object {
+@@ -893,7 +893,7 @@ struct drm_i915_gem_object {
         * will be page flipped away on the next vblank.  When it
         * reaches 0, dev_priv->pending_flip_queue will be woken up.
         */
         * will be page flipped away on the next vblank.  When it
         * reaches 0, dev_priv->pending_flip_queue will be woken up.
         */
@@ -28245,7 +30311,7 @@ index 7916bd9..7c17a0f 100644
  };
  
  #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
  };
  
  #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
-@@ -1262,7 +1262,7 @@ extern int intel_setup_gmbus(struct drm_device *dev);
+@@ -1273,7 +1273,7 @@ extern int intel_setup_gmbus(struct drm_device *dev);
  extern void intel_teardown_gmbus(struct drm_device *dev);
  extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed);
  extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit);
  extern void intel_teardown_gmbus(struct drm_device *dev);
  extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed);
  extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit);
@@ -28255,10 +30321,10 @@ index 7916bd9..7c17a0f 100644
        return container_of(adapter, struct intel_gmbus, adapter)->force_bit;
  }
 diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
        return container_of(adapter, struct intel_gmbus, adapter)->force_bit;
  }
 diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-index 4934cf8..1da9c84 100644
+index b9da890..cad1d98 100644
 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
 +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
 +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-@@ -188,7 +188,7 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj,
+@@ -189,7 +189,7 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj,
                i915_gem_clflush_object(obj);
  
        if (obj->base.pending_write_domain)
                i915_gem_clflush_object(obj);
  
        if (obj->base.pending_write_domain)
@@ -28267,7 +30333,7 @@ index 4934cf8..1da9c84 100644
  
        /* The actual obj->write_domain will be updated with
         * pending_write_domain after we emit the accumulated flush for all
  
        /* The actual obj->write_domain will be updated with
         * pending_write_domain after we emit the accumulated flush for all
-@@ -864,9 +864,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
+@@ -882,9 +882,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
  
  static int
  validate_exec_list(struct drm_i915_gem_exec_object2 *exec,
  
  static int
  validate_exec_list(struct drm_i915_gem_exec_object2 *exec,
@@ -28280,7 +30346,7 @@ index 4934cf8..1da9c84 100644
        for (i = 0; i < count; i++) {
                char __user *ptr = (char __user *)(uintptr_t)exec[i].relocs_ptr;
 diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
        for (i = 0; i < count; i++) {
                char __user *ptr = (char __user *)(uintptr_t)exec[i].relocs_ptr;
 diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index 73248d0..f7bac29 100644
+index d47a53b..61154c2 100644
 --- a/drivers/gpu/drm/i915/i915_irq.c
 +++ b/drivers/gpu/drm/i915/i915_irq.c
 @@ -475,7 +475,7 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS)
 --- a/drivers/gpu/drm/i915/i915_irq.c
 +++ b/drivers/gpu/drm/i915/i915_irq.c
 @@ -475,7 +475,7 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS)
@@ -28292,7 +30358,7 @@ index 73248d0..f7bac29 100644
  
        /* disable master interrupt before clearing iir  */
        de_ier = I915_READ(DEIER);
  
        /* disable master interrupt before clearing iir  */
        de_ier = I915_READ(DEIER);
-@@ -565,7 +565,7 @@ static irqreturn_t ironlake_irq_handler(DRM_IRQ_ARGS)
+@@ -566,7 +566,7 @@ static irqreturn_t ironlake_irq_handler(DRM_IRQ_ARGS)
        struct drm_i915_master_private *master_priv;
        u32 bsd_usr_interrupt = GT_BSD_USER_INTERRUPT;
  
        struct drm_i915_master_private *master_priv;
        u32 bsd_usr_interrupt = GT_BSD_USER_INTERRUPT;
  
@@ -28301,7 +30367,7 @@ index 73248d0..f7bac29 100644
  
        if (IS_GEN6(dev))
                bsd_usr_interrupt = GT_GEN6_BSD_USER_INTERRUPT;
  
        if (IS_GEN6(dev))
                bsd_usr_interrupt = GT_GEN6_BSD_USER_INTERRUPT;
-@@ -1229,7 +1229,7 @@ static irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
+@@ -1231,7 +1231,7 @@ static irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
        int ret = IRQ_NONE, pipe;
        bool blc_event = false;
  
        int ret = IRQ_NONE, pipe;
        bool blc_event = false;
  
@@ -28310,7 +30376,7 @@ index 73248d0..f7bac29 100644
  
        iir = I915_READ(IIR);
  
  
        iir = I915_READ(IIR);
  
-@@ -1741,7 +1741,7 @@ static void ironlake_irq_preinstall(struct drm_device *dev)
+@@ -1750,7 +1750,7 @@ static void ironlake_irq_preinstall(struct drm_device *dev)
  {
        drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
  
  {
        drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
  
@@ -28319,7 +30385,7 @@ index 73248d0..f7bac29 100644
  
        INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
        INIT_WORK(&dev_priv->error_work, i915_error_work_func);
  
        INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
        INIT_WORK(&dev_priv->error_work, i915_error_work_func);
-@@ -1905,7 +1905,7 @@ static void i915_driver_irq_preinstall(struct drm_device * dev)
+@@ -1938,7 +1938,7 @@ static void i915_driver_irq_preinstall(struct drm_device * dev)
        drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
        int pipe;
  
        drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
        int pipe;
  
@@ -28329,10 +30395,10 @@ index 73248d0..f7bac29 100644
        INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
        INIT_WORK(&dev_priv->error_work, i915_error_work_func);
 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
        INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
        INIT_WORK(&dev_priv->error_work, i915_error_work_func);
 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 07e7cf3..c75f312 100644
+index 9ec9755..6d1cf2d 100644
 --- a/drivers/gpu/drm/i915/intel_display.c
 +++ b/drivers/gpu/drm/i915/intel_display.c
 --- a/drivers/gpu/drm/i915/intel_display.c
 +++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -2205,7 +2205,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
+@@ -2230,7 +2230,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
  
                wait_event(dev_priv->pending_flip_queue,
                           atomic_read(&dev_priv->mm.wedged) ||
  
                wait_event(dev_priv->pending_flip_queue,
                           atomic_read(&dev_priv->mm.wedged) ||
@@ -28341,7 +30407,7 @@ index 07e7cf3..c75f312 100644
  
                /* Big Hammer, we also need to ensure that any pending
                 * MI_WAIT_FOR_EVENT inside a user batch buffer on the
  
                /* Big Hammer, we also need to ensure that any pending
                 * MI_WAIT_FOR_EVENT inside a user batch buffer on the
-@@ -2826,7 +2826,7 @@ static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc)
+@@ -2851,7 +2851,7 @@ static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc)
        obj = to_intel_framebuffer(crtc->fb)->obj;
        dev_priv = crtc->dev->dev_private;
        wait_event(dev_priv->pending_flip_queue,
        obj = to_intel_framebuffer(crtc->fb)->obj;
        dev_priv = crtc->dev->dev_private;
        wait_event(dev_priv->pending_flip_queue,
@@ -28350,7 +30416,7 @@ index 07e7cf3..c75f312 100644
  }
  
  static bool intel_crtc_driving_pch(struct drm_crtc *crtc)
  }
  
  static bool intel_crtc_driving_pch(struct drm_crtc *crtc)
-@@ -6676,7 +6676,7 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
+@@ -6952,7 +6952,7 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
  
        atomic_clear_mask(1 << intel_crtc->plane,
                          &obj->pending_flip.counter);
  
        atomic_clear_mask(1 << intel_crtc->plane,
                          &obj->pending_flip.counter);
@@ -28359,7 +30425,7 @@ index 07e7cf3..c75f312 100644
                wake_up(&dev_priv->pending_flip_queue);
  
        schedule_work(&work->work);
                wake_up(&dev_priv->pending_flip_queue);
  
        schedule_work(&work->work);
-@@ -6965,7 +6965,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
+@@ -7242,7 +7242,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
        /* Block clients from rendering to the new back buffer until
         * the flip occurs and the object is no longer visible.
         */
        /* Block clients from rendering to the new back buffer until
         * the flip occurs and the object is no longer visible.
         */
@@ -28368,15 +30434,15 @@ index 07e7cf3..c75f312 100644
  
        ret = dev_priv->display.queue_flip(dev, crtc, fb, obj);
        if (ret)
  
        ret = dev_priv->display.queue_flip(dev, crtc, fb, obj);
        if (ret)
-@@ -6979,7 +6979,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
+@@ -7256,7 +7256,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
        return 0;
  
  cleanup_pending:
 -      atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
 +      atomic_sub_unchecked(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
        return 0;
  
  cleanup_pending:
 -      atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
 +      atomic_sub_unchecked(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
- cleanup_objs:
        drm_gem_object_unreference(&work->old_fb_obj->base);
        drm_gem_object_unreference(&obj->base);
        drm_gem_object_unreference(&work->old_fb_obj->base);
        drm_gem_object_unreference(&obj->base);
+       mutex_unlock(&dev->struct_mutex);
 diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
 index 54558a0..2d97005 100644
 --- a/drivers/gpu/drm/mga/mga_drv.h
 diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
 index 54558a0..2d97005 100644
 --- a/drivers/gpu/drm/mga/mga_drv.h
@@ -28434,7 +30500,7 @@ index 2581202..f230a8d9 100644
  
        *sequence = cur_fence;
 diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
  
        *sequence = cur_fence;
 diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
-index b311fab..dc11d6a 100644
+index 5fc201b..7b032b9 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
 @@ -201,7 +201,7 @@ struct methods {
 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
 @@ -201,7 +201,7 @@ struct methods {
@@ -28446,7 +30512,7 @@ index b311fab..dc11d6a 100644
  
  static struct methods shadow_methods[] = {
        { "PRAMIN", load_vbios_pramin, true },
  
  static struct methods shadow_methods[] = {
        { "PRAMIN", load_vbios_pramin, true },
-@@ -5489,7 +5489,7 @@ parse_bit_displayport_tbl_entry(struct drm_device *dev, struct nvbios *bios,
+@@ -5474,7 +5474,7 @@ parse_bit_U_tbl_entry(struct drm_device *dev, struct nvbios *bios,
  struct bit_table {
        const char id;
        int (* const parse_fn)(struct drm_device *, struct nvbios *, struct bit_entry *);
  struct bit_table {
        const char id;
        int (* const parse_fn)(struct drm_device *, struct nvbios *, struct bit_entry *);
@@ -28456,7 +30522,7 @@ index b311fab..dc11d6a 100644
  #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry })
  
 diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
  #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry })
  
 diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
-index d7d51de..7c6a7f1 100644
+index 4c0be3a..5757582 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_drv.h
 +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
 @@ -238,7 +238,7 @@ struct nouveau_channel {
 --- a/drivers/gpu/drm/nouveau/nouveau_drv.h
 +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
 @@ -238,7 +238,7 @@ struct nouveau_channel {
@@ -28493,7 +30559,7 @@ index d7d51de..7c6a7f1 100644
  
  struct nouveau_fb_engine {
        int num_tiles;
  
  struct nouveau_fb_engine {
        int num_tiles;
-@@ -513,7 +513,7 @@ struct nouveau_vram_engine {
+@@ -558,7 +558,7 @@ struct nouveau_vram_engine {
        void (*put)(struct drm_device *, struct nouveau_mem **);
  
        bool (*flags_valid)(struct drm_device *, u32 tile_flags);
        void (*put)(struct drm_device *, struct nouveau_mem **);
  
        bool (*flags_valid)(struct drm_device *, u32 tile_flags);
@@ -28502,7 +30568,7 @@ index d7d51de..7c6a7f1 100644
  
  struct nouveau_engine {
        struct nouveau_instmem_engine instmem;
  
  struct nouveau_engine {
        struct nouveau_instmem_engine instmem;
-@@ -660,7 +660,7 @@ struct drm_nouveau_private {
+@@ -706,7 +706,7 @@ struct drm_nouveau_private {
                struct drm_global_reference mem_global_ref;
                struct ttm_bo_global_ref bo_global_ref;
                struct ttm_bo_device bdev;
                struct drm_global_reference mem_global_ref;
                struct ttm_bo_global_ref bo_global_ref;
                struct ttm_bo_device bdev;
@@ -28512,7 +30578,7 @@ index d7d51de..7c6a7f1 100644
  
        struct {
 diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c
  
        struct {
 diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c
-index ae22dfa..4f09960 100644
+index 2f6daae..c9d7b9e 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_fence.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_fence.c
 @@ -85,7 +85,7 @@ nouveau_fence_update(struct nouveau_channel *chan)
 --- a/drivers/gpu/drm/nouveau/nouveau_fence.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_fence.c
 @@ -85,7 +85,7 @@ nouveau_fence_update(struct nouveau_channel *chan)
@@ -28534,7 +30600,7 @@ index ae22dfa..4f09960 100644
  }
  
 diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
  }
  
 diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
-index 5f0bc57..eb9fac8 100644
+index 7ce3fde..cb3ea04 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
 @@ -314,7 +314,7 @@ validate_init(struct nouveau_channel *chan, struct drm_file *file_priv,
 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
 @@ -314,7 +314,7 @@ validate_init(struct nouveau_channel *chan, struct drm_file *file_priv,
@@ -28547,10 +30613,10 @@ index 5f0bc57..eb9fac8 100644
        if (++trycnt > 100000) {
                NV_ERROR(dev, "%s failed and gave up.\n", __func__);
 diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
        if (++trycnt > 100000) {
                NV_ERROR(dev, "%s failed and gave up.\n", __func__);
 diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
-index 10656e4..59bf2a4 100644
+index d8831ab..0ba8356 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_state.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_state.c
 --- a/drivers/gpu/drm/nouveau/nouveau_state.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_state.c
-@@ -496,7 +496,7 @@ static bool nouveau_switcheroo_can_switch(struct pci_dev *pdev)
+@@ -542,7 +542,7 @@ static bool nouveau_switcheroo_can_switch(struct pci_dev *pdev)
        bool can_switch;
  
        spin_lock(&dev->count_lock);
        bool can_switch;
  
        spin_lock(&dev->count_lock);
@@ -28573,10 +30639,10 @@ index dbdea8e..cd6eeeb 100644
  }
  
 diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
  }
  
 diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
-index 570e190..084a31a 100644
+index bcac90b..53bfc76 100644
 --- a/drivers/gpu/drm/r128/r128_cce.c
 +++ b/drivers/gpu/drm/r128/r128_cce.c
 --- a/drivers/gpu/drm/r128/r128_cce.c
 +++ b/drivers/gpu/drm/r128/r128_cce.c
-@@ -377,7 +377,7 @@ static int r128_do_init_cce(struct drm_device *dev, drm_r128_init_t *init)
+@@ -378,7 +378,7 @@ static int r128_do_init_cce(struct drm_device *dev, drm_r128_init_t *init)
  
        /* GH: Simple idle check.
         */
  
        /* GH: Simple idle check.
         */
@@ -28645,19 +30711,6 @@ index a9e33ce..09edd4b 100644
  }
  
  #endif
  }
  
  #endif
-diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
-index 14cc88a..cc7b3a5 100644
---- a/drivers/gpu/drm/radeon/atom.c
-+++ b/drivers/gpu/drm/radeon/atom.c
-@@ -1254,6 +1254,8 @@ struct atom_context *atom_parse(struct card_info *card, void *bios)
-       char name[512];
-       int i;
-+      pax_track_stack();
-+
-       if (!ctx)
-               return NULL;
 diff --git a/drivers/gpu/drm/radeon/mkregtable.c b/drivers/gpu/drm/radeon/mkregtable.c
 index 5a82b6b..9e69c73 100644
 --- a/drivers/gpu/drm/radeon/mkregtable.c
 diff --git a/drivers/gpu/drm/radeon/mkregtable.c b/drivers/gpu/drm/radeon/mkregtable.c
 index 5a82b6b..9e69c73 100644
 --- a/drivers/gpu/drm/radeon/mkregtable.c
@@ -28679,8 +30732,20 @@ index 5a82b6b..9e69c73 100644
  
        if (regcomp
            (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
  
        if (regcomp
            (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
+diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c
+index cb1acff..8861bc5 100644
+--- a/drivers/gpu/drm/radeon/r600_cs.c
++++ b/drivers/gpu/drm/radeon/r600_cs.c
+@@ -1304,6 +1304,7 @@ static int r600_check_texture_resource(struct radeon_cs_parser *p,  u32 idx,
+       h0 = G_038004_TEX_HEIGHT(word1) + 1;
+       d0 = G_038004_TEX_DEPTH(word1);
+       nfaces = 1;
++      array = 0;
+       switch (G_038000_DIM(word0)) {
+       case V_038000_SQ_TEX_DIM_1D:
+       case V_038000_SQ_TEX_DIM_2D:
 diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
 diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
-index 184628c..30e1725 100644
+index 8227e76..ce0b195 100644
 --- a/drivers/gpu/drm/radeon/radeon.h
 +++ b/drivers/gpu/drm/radeon/radeon.h
 @@ -192,7 +192,7 @@ extern int sumo_get_temp(struct radeon_device *rdev);
 --- a/drivers/gpu/drm/radeon/radeon.h
 +++ b/drivers/gpu/drm/radeon/radeon.h
 @@ -192,7 +192,7 @@ extern int sumo_get_temp(struct radeon_device *rdev);
@@ -28692,7 +30757,16 @@ index 184628c..30e1725 100644
        uint32_t                        last_seq;
        unsigned long                   last_jiffies;
        unsigned long                   last_timeout;
        uint32_t                        last_seq;
        unsigned long                   last_jiffies;
        unsigned long                   last_timeout;
-@@ -962,7 +962,7 @@ struct radeon_asic {
+@@ -530,7 +530,7 @@ struct r600_blit_cp_primitives {
+                            int x2, int y2);
+       void (*draw_auto)(struct radeon_device *rdev);
+       void (*set_default_state)(struct radeon_device *rdev);
+-};
++} __no_const;
+ struct r600_blit {
+       struct mutex            mutex;
+@@ -954,7 +954,7 @@ struct radeon_asic {
        void (*pre_page_flip)(struct radeon_device *rdev, int crtc);
        u32 (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base);
        void (*post_page_flip)(struct radeon_device *rdev, int crtc);
        void (*pre_page_flip)(struct radeon_device *rdev, int crtc);
        u32 (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base);
        void (*post_page_flip)(struct radeon_device *rdev, int crtc);
@@ -28701,24 +30775,11 @@ index 184628c..30e1725 100644
  
  /*
   * Asic structures
  
  /*
   * Asic structures
-diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
-index 285acc4..f4d909f 100644
---- a/drivers/gpu/drm/radeon/radeon_atombios.c
-+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
-@@ -569,6 +569,8 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
-       struct radeon_gpio_rec gpio;
-       struct radeon_hpd hpd;
-+      pax_track_stack();
-+
-       if (!atom_parse_data_header(ctx, index, &size, &frev, &crev, &data_offset))
-               return false;
 diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
 diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
-index b51e157..8f14fb9 100644
+index 9231564..78b00fd 100644
 --- a/drivers/gpu/drm/radeon/radeon_device.c
 +++ b/drivers/gpu/drm/radeon/radeon_device.c
 --- a/drivers/gpu/drm/radeon/radeon_device.c
 +++ b/drivers/gpu/drm/radeon/radeon_device.c
-@@ -684,7 +684,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
+@@ -687,7 +687,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
        bool can_switch;
  
        spin_lock(&dev->count_lock);
        bool can_switch;
  
        spin_lock(&dev->count_lock);
@@ -28727,19 +30788,6 @@ index b51e157..8f14fb9 100644
        spin_unlock(&dev->count_lock);
        return can_switch;
  }
        spin_unlock(&dev->count_lock);
        return can_switch;
  }
-diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
-index 6adb3e5..b91553e2 100644
---- a/drivers/gpu/drm/radeon/radeon_display.c
-+++ b/drivers/gpu/drm/radeon/radeon_display.c
-@@ -925,6 +925,8 @@ void radeon_compute_pll_legacy(struct radeon_pll *pll,
-       uint32_t post_div;
-       u32 pll_out_min, pll_out_max;
-+      pax_track_stack();
-+
-       DRM_DEBUG_KMS("PLL freq %llu %u %u\n", freq, pll->min_ref_div, pll->max_ref_div);
-       freq = freq * 1000;
 diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
 index a1b59ca..86f2d44 100644
 --- a/drivers/gpu/drm/radeon/radeon_drv.h
 diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
 index a1b59ca..86f2d44 100644
 --- a/drivers/gpu/drm/radeon/radeon_drv.h
@@ -28754,7 +30802,7 @@ index a1b59ca..86f2d44 100644
        uint32_t irq_enable_reg;
        uint32_t r500_disp_irq_reg;
 diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c
        uint32_t irq_enable_reg;
        uint32_t r500_disp_irq_reg;
 diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c
-index 7fd4e3e..9748ab5 100644
+index 76ec0e9..6feb1a3 100644
 --- a/drivers/gpu/drm/radeon/radeon_fence.c
 +++ b/drivers/gpu/drm/radeon/radeon_fence.c
 @@ -78,7 +78,7 @@ int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence *fence)
 --- a/drivers/gpu/drm/radeon/radeon_fence.c
 +++ b/drivers/gpu/drm/radeon/radeon_fence.c
 @@ -78,7 +78,7 @@ int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence *fence)
@@ -28789,7 +30837,7 @@ index 48b7cea..342236f 100644
                return -EFAULT;
  
 diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c
                return -EFAULT;
  
 diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c
-index 465746b..cb2b055 100644
+index 00da384..32f972d 100644
 --- a/drivers/gpu/drm/radeon/radeon_irq.c
 +++ b/drivers/gpu/drm/radeon/radeon_irq.c
 @@ -225,8 +225,8 @@ static int radeon_emit_irq(struct drm_device * dev)
 --- a/drivers/gpu/drm/radeon/radeon_irq.c
 +++ b/drivers/gpu/drm/radeon/radeon_irq.c
 @@ -225,8 +225,8 @@ static int radeon_emit_irq(struct drm_device * dev)
@@ -28813,7 +30861,7 @@ index 465746b..cb2b055 100644
  
        dev->max_vblank_count = 0x001fffff;
 diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
  
        dev->max_vblank_count = 0x001fffff;
 diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
-index 92e7ea7..147ffad 100644
+index e8422ae..d22d4a8 100644
 --- a/drivers/gpu/drm/radeon/radeon_state.c
 +++ b/drivers/gpu/drm/radeon/radeon_state.c
 @@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_device *dev, void *data, struct drm_file *
 --- a/drivers/gpu/drm/radeon/radeon_state.c
 +++ b/drivers/gpu/drm/radeon/radeon_state.c
 @@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_device *dev, void *data, struct drm_file *
@@ -28981,58 +31029,32 @@ index d391f48..10c8ca3 100644
        case VIA_IRQ_ABSOLUTE:
                break;
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
        case VIA_IRQ_ABSOLUTE:
                break;
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
-index 10fc01f..b4e9822 100644
+index dc27970..f18b008 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
-@@ -240,7 +240,7 @@ struct vmw_private {
+@@ -260,7 +260,7 @@ struct vmw_private {
         * Fencing and IRQs.
         */
  
         * Fencing and IRQs.
         */
  
--      atomic_t fence_seq;
-+      atomic_unchecked_t fence_seq;
+-      atomic_t marker_seq;
++      atomic_unchecked_t marker_seq;
        wait_queue_head_t fence_queue;
        wait_queue_head_t fifo_queue;
        wait_queue_head_t fence_queue;
        wait_queue_head_t fifo_queue;
-       atomic_t fence_queue_waiters;
-diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
-index 41b95ed..69ea504 100644
---- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
-+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
-@@ -610,7 +610,7 @@ int vmw_execbuf_ioctl(struct drm_device *dev, void *data,
-       struct drm_vmw_fence_rep fence_rep;
-       struct drm_vmw_fence_rep __user *user_fence_rep;
-       int ret;
--      void *user_cmd;
-+      void __user *user_cmd;
-       void *cmd;
-       uint32_t sequence;
-       struct vmw_sw_context *sw_context = &dev_priv->ctx;
-diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
-index 61eacc1..ee38ce8 100644
---- a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
-+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
-@@ -151,7 +151,7 @@ int vmw_wait_lag(struct vmw_private *dev_priv,
-       while (!vmw_lag_lt(queue, us)) {
-               spin_lock(&queue->lock);
-               if (list_empty(&queue->head))
--                      sequence = atomic_read(&dev_priv->fence_seq);
-+                      sequence = atomic_read_unchecked(&dev_priv->fence_seq);
-               else {
-                       fence = list_first_entry(&queue->head,
-                                                struct vmw_fence, head);
+       int fence_queue_waiters; /* Protected by hw_mutex */
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
-index 635c0ff..2641bbb 100644
+index a0c2f12..68ae6cb 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
 @@ -137,7 +137,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
                 (unsigned int) min,
                 (unsigned int) fifo->capabilities);
  
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
 @@ -137,7 +137,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
                 (unsigned int) min,
                 (unsigned int) fifo->capabilities);
  
--      atomic_set(&dev_priv->fence_seq, dev_priv->last_read_sequence);
-+      atomic_set_unchecked(&dev_priv->fence_seq, dev_priv->last_read_sequence);
-       iowrite32(dev_priv->last_read_sequence, fifo_mem + SVGA_FIFO_FENCE);
-       vmw_fence_queue_init(&fifo->fence_queue);
+-      atomic_set(&dev_priv->marker_seq, dev_priv->last_read_seqno);
++      atomic_set_unchecked(&dev_priv->marker_seq, dev_priv->last_read_seqno);
+       iowrite32(dev_priv->last_read_seqno, fifo_mem + SVGA_FIFO_FENCE);
+       vmw_marker_queue_init(&fifo->marker_queue);
        return vmw_fifo_send_fence(dev_priv, &dummy);
        return vmw_fifo_send_fence(dev_priv, &dummy);
-@@ -356,7 +356,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
+@@ -355,7 +355,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
                                if (reserveable)
                                        iowrite32(bytes, fifo_mem +
                                                  SVGA_FIFO_RESERVED);
                                if (reserveable)
                                        iowrite32(bytes, fifo_mem +
                                                  SVGA_FIFO_RESERVED);
@@ -29041,82 +31063,64 @@ index 635c0ff..2641bbb 100644
                        } else {
                                need_bounce = true;
                        }
                        } else {
                                need_bounce = true;
                        }
-@@ -476,7 +476,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *sequence)
+@@ -475,7 +475,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
  
        fm = vmw_fifo_reserve(dev_priv, bytes);
        if (unlikely(fm == NULL)) {
  
        fm = vmw_fifo_reserve(dev_priv, bytes);
        if (unlikely(fm == NULL)) {
--              *sequence = atomic_read(&dev_priv->fence_seq);
-+              *sequence = atomic_read_unchecked(&dev_priv->fence_seq);
+-              *seqno = atomic_read(&dev_priv->marker_seq);
++              *seqno = atomic_read_unchecked(&dev_priv->marker_seq);
                ret = -ENOMEM;
                ret = -ENOMEM;
-               (void)vmw_fallback_wait(dev_priv, false, true, *sequence,
+               (void)vmw_fallback_wait(dev_priv, false, true, *seqno,
                                        false, 3*HZ);
                                        false, 3*HZ);
-@@ -484,7 +484,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *sequence)
+@@ -483,7 +483,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
        }
  
        do {
        }
  
        do {
--              *sequence = atomic_add_return(1, &dev_priv->fence_seq);
-+              *sequence = atomic_add_return_unchecked(1, &dev_priv->fence_seq);
-       } while (*sequence == 0);
+-              *seqno = atomic_add_return(1, &dev_priv->marker_seq);
++              *seqno = atomic_add_return_unchecked(1, &dev_priv->marker_seq);
+       } while (*seqno == 0);
  
        if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) {
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
  
        if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) {
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
-index e92298a..f68f2d6 100644
+index cabc95f..14b3d77 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
-@@ -100,7 +100,7 @@ bool vmw_fence_signaled(struct vmw_private *dev_priv,
+@@ -107,7 +107,7 @@ bool vmw_seqno_passed(struct vmw_private *dev_priv,
         * emitted. Then the fence is stale and signaled.
         */
  
         * emitted. Then the fence is stale and signaled.
         */
  
--      ret = ((atomic_read(&dev_priv->fence_seq) - sequence)
-+      ret = ((atomic_read_unchecked(&dev_priv->fence_seq) - sequence)
+-      ret = ((atomic_read(&dev_priv->marker_seq) - seqno)
++      ret = ((atomic_read_unchecked(&dev_priv->marker_seq) - seqno)
               > VMW_FENCE_WRAP);
  
        return ret;
               > VMW_FENCE_WRAP);
  
        return ret;
-@@ -131,7 +131,7 @@ int vmw_fallback_wait(struct vmw_private *dev_priv,
+@@ -138,7 +138,7 @@ int vmw_fallback_wait(struct vmw_private *dev_priv,
  
        if (fifo_idle)
                down_read(&fifo_state->rwsem);
  
        if (fifo_idle)
                down_read(&fifo_state->rwsem);
--      signal_seq = atomic_read(&dev_priv->fence_seq);
-+      signal_seq = atomic_read_unchecked(&dev_priv->fence_seq);
+-      signal_seq = atomic_read(&dev_priv->marker_seq);
++      signal_seq = atomic_read_unchecked(&dev_priv->marker_seq);
        ret = 0;
  
        for (;;) {
        ret = 0;
  
        for (;;) {
-diff --git a/drivers/gpu/vga/vgaarb.c b/drivers/gpu/vga/vgaarb.c
-index c72f1c0..18376f1 100644
---- a/drivers/gpu/vga/vgaarb.c
-+++ b/drivers/gpu/vga/vgaarb.c
-@@ -993,14 +993,20 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf,
-                               uc = &priv->cards[i];
-               }
--              if (!uc)
--                      return -EINVAL;
-+              if (!uc) {
-+                      ret_val = -EINVAL;
-+                      goto done;
-+              }
--              if (io_state & VGA_RSRC_LEGACY_IO && uc->io_cnt == 0)
--                      return -EINVAL;
-+              if (io_state & VGA_RSRC_LEGACY_IO && uc->io_cnt == 0) {
-+                      ret_val = -EINVAL;
-+                      goto done;
-+              }
--              if (io_state & VGA_RSRC_LEGACY_MEM && uc->mem_cnt == 0)
--                      return -EINVAL;
-+              if (io_state & VGA_RSRC_LEGACY_MEM && uc->mem_cnt == 0) {
-+                      ret_val = -EINVAL;
-+                      goto done;
-+              }
-               vga_put(pdev, io_state);
+diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c b/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
+index 8a8725c..afed796 100644
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
+@@ -151,7 +151,7 @@ int vmw_wait_lag(struct vmw_private *dev_priv,
+       while (!vmw_lag_lt(queue, us)) {
+               spin_lock(&queue->lock);
+               if (list_empty(&queue->head))
+-                      seqno = atomic_read(&dev_priv->marker_seq);
++                      seqno = atomic_read_unchecked(&dev_priv->marker_seq);
+               else {
+                       marker = list_first_entry(&queue->head,
+                                                struct vmw_marker, head);
 diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
 diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index f26ae31..721fe1b 100644
+index bb656d8..4169fca 100644
 --- a/drivers/hid/hid-core.c
 +++ b/drivers/hid/hid-core.c
 --- a/drivers/hid/hid-core.c
 +++ b/drivers/hid/hid-core.c
-@@ -1951,7 +1951,7 @@ static bool hid_ignore(struct hid_device *hdev)
+@@ -2012,7 +2012,7 @@ static bool hid_ignore(struct hid_device *hdev)
  
  int hid_add_device(struct hid_device *hdev)
  {
  
  int hid_add_device(struct hid_device *hdev)
  {
@@ -29125,7 +31129,7 @@ index f26ae31..721fe1b 100644
        int ret;
  
        if (WARN_ON(hdev->status & HID_STAT_ADDED))
        int ret;
  
        if (WARN_ON(hdev->status & HID_STAT_ADDED))
-@@ -1966,7 +1966,7 @@ int hid_add_device(struct hid_device *hdev)
+@@ -2027,7 +2027,7 @@ int hid_add_device(struct hid_device *hdev)
        /* XXX hack, any other cleaner solution after the driver core
         * is converted to allow more than 20 bytes as the device name? */
        dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
        /* XXX hack, any other cleaner solution after the driver core
         * is converted to allow more than 20 bytes as the device name? */
        dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
@@ -29135,7 +31139,7 @@ index f26ae31..721fe1b 100644
        hid_debug_register(hdev, dev_name(&hdev->dev));
        ret = device_add(&hdev->dev);
 diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
        hid_debug_register(hdev, dev_name(&hdev->dev));
        ret = device_add(&hdev->dev);
 diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
-index 7c1188b..5a64357 100644
+index 4ef02b2..8a96831 100644
 --- a/drivers/hid/usbhid/hiddev.c
 +++ b/drivers/hid/usbhid/hiddev.c
 @@ -624,7 +624,7 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 --- a/drivers/hid/usbhid/hiddev.c
 +++ b/drivers/hid/usbhid/hiddev.c
 @@ -624,7 +624,7 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
@@ -29147,6 +31151,64 @@ index 7c1188b..5a64357 100644
                        break;
  
                for (i = 0; i < hid->maxcollection; i++)
                        break;
  
                for (i = 0; i < hid->maxcollection; i++)
+diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
+index 4065374..10ed7dc 100644
+--- a/drivers/hv/channel.c
++++ b/drivers/hv/channel.c
+@@ -400,8 +400,8 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
+       int ret = 0;
+       int t;
+-      next_gpadl_handle = atomic_read(&vmbus_connection.next_gpadl_handle);
+-      atomic_inc(&vmbus_connection.next_gpadl_handle);
++      next_gpadl_handle = atomic_read_unchecked(&vmbus_connection.next_gpadl_handle);
++      atomic_inc_unchecked(&vmbus_connection.next_gpadl_handle);
+       ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount);
+       if (ret)
+diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
+index 0fb100e..baf87e5 100644
+--- a/drivers/hv/hv.c
++++ b/drivers/hv/hv.c
+@@ -132,7 +132,7 @@ static u64 do_hypercall(u64 control, void *input, void *output)
+       u64 output_address = (output) ? virt_to_phys(output) : 0;
+       u32 output_address_hi = output_address >> 32;
+       u32 output_address_lo = output_address & 0xFFFFFFFF;
+-      void *hypercall_page = hv_context.hypercall_page;
++      void *hypercall_page = ktva_ktla(hv_context.hypercall_page);
+       __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi),
+                             "=a"(hv_status_lo) : "d" (control_hi),
+diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
+index 0aee112..b72d21f 100644
+--- a/drivers/hv/hyperv_vmbus.h
++++ b/drivers/hv/hyperv_vmbus.h
+@@ -556,7 +556,7 @@ enum vmbus_connect_state {
+ struct vmbus_connection {
+       enum vmbus_connect_state conn_state;
+-      atomic_t next_gpadl_handle;
++      atomic_unchecked_t next_gpadl_handle;
+       /*
+        * Represents channel interrupts. Each bit position represents a
+diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
+index d2d0a2a..90b8f4d 100644
+--- a/drivers/hv/vmbus_drv.c
++++ b/drivers/hv/vmbus_drv.c
+@@ -663,10 +663,10 @@ int vmbus_device_register(struct hv_device *child_device_obj)
+ {
+       int ret = 0;
+-      static atomic_t device_num = ATOMIC_INIT(0);
++      static atomic_unchecked_t device_num = ATOMIC_INIT(0);
+       dev_set_name(&child_device_obj->device, "vmbus_0_%d",
+-                   atomic_inc_return(&device_num));
++                   atomic_inc_return_unchecked(&device_num));
+       child_device_obj->device.bus = &hv_bus;
+       child_device_obj->device.parent = &hv_acpi_dev->dev;
 diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c
 index 66f6729..2d6de0a 100644
 --- a/drivers/hwmon/acpi_power_meter.c
 diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c
 index 66f6729..2d6de0a 100644
 --- a/drivers/hwmon/acpi_power_meter.c
@@ -29161,7 +31223,7 @@ index 66f6729..2d6de0a 100644
        mutex_lock(&resource->lock);
        resource->trip[attr->index - 7] = temp;
 diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
        mutex_lock(&resource->lock);
        resource->trip[attr->index - 7] = temp;
 diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
-index fe4104c..346febb 100644
+index 5357925..6cf0418 100644
 --- a/drivers/hwmon/sht15.c
 +++ b/drivers/hwmon/sht15.c
 @@ -166,7 +166,7 @@ struct sht15_data {
 --- a/drivers/hwmon/sht15.c
 +++ b/drivers/hwmon/sht15.c
 @@ -166,7 +166,7 @@ struct sht15_data {
@@ -29356,7 +31418,7 @@ index 5059faf..18d4c85 100644
        .port_ops       = &cs5535_port_ops,
        .host_flags     = IDE_HFLAG_SINGLE | IDE_HFLAG_POST_SET_MODE,
 diff --git a/drivers/ide/cy82c693.c b/drivers/ide/cy82c693.c
        .port_ops       = &cs5535_port_ops,
        .host_flags     = IDE_HFLAG_SINGLE | IDE_HFLAG_POST_SET_MODE,
 diff --git a/drivers/ide/cy82c693.c b/drivers/ide/cy82c693.c
-index 67cbcfa..37ea151 100644
+index 847553f..3ffb49d 100644
 --- a/drivers/ide/cy82c693.c
 +++ b/drivers/ide/cy82c693.c
 @@ -163,7 +163,7 @@ static const struct ide_port_ops cy82c693_port_ops = {
 --- a/drivers/ide/cy82c693.c
 +++ b/drivers/ide/cy82c693.c
 @@ -163,7 +163,7 @@ static const struct ide_port_ops cy82c693_port_ops = {
@@ -29481,10 +31543,10 @@ index 58c51cd..4aec3b8 100644
                .name           = DRV_NAME,
                .init_chipset   = init_chipset_hpt366,
 diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
                .name           = DRV_NAME,
                .init_chipset   = init_chipset_hpt366,
 diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
-index 04b0956..f5b47dc 100644
+index 8126824..55a2798 100644
 --- a/drivers/ide/ide-cd.c
 +++ b/drivers/ide/ide-cd.c
 --- a/drivers/ide/ide-cd.c
 +++ b/drivers/ide/ide-cd.c
-@@ -769,7 +769,7 @@ static void cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
+@@ -768,7 +768,7 @@ static void cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
                alignment = queue_dma_alignment(q) | q->dma_pad_mask;
                if ((unsigned long)buf & alignment
                    || blk_rq_bytes(rq) & q->dma_pad_mask
                alignment = queue_dma_alignment(q) | q->dma_pad_mask;
                if ((unsigned long)buf & alignment
                    || blk_rq_bytes(rq) & q->dma_pad_mask
@@ -29493,19 +31555,6 @@ index 04b0956..f5b47dc 100644
                        drive->dma = 0;
        }
  }
                        drive->dma = 0;
        }
  }
-diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
-index 61fdf54..2834ea6 100644
---- a/drivers/ide/ide-floppy.c
-+++ b/drivers/ide/ide-floppy.c
-@@ -379,6 +379,8 @@ static int ide_floppy_get_capacity(ide_drive_t *drive)
-       u8 pc_buf[256], header_len, desc_cnt;
-       int i, rc = 1, blocks, length;
-+      pax_track_stack();
-+
-       ide_debug_log(IDE_DBG_FUNC, "enter");
-       drive->bios_cyl = 0;
 diff --git a/drivers/ide/ide-pci-generic.c b/drivers/ide/ide-pci-generic.c
 index a743e68..1cfd674 100644
 --- a/drivers/ide/ide-pci-generic.c
 diff --git a/drivers/ide/ide-pci-generic.c b/drivers/ide/ide-pci-generic.c
 index a743e68..1cfd674 100644
 --- a/drivers/ide/ide-pci-generic.c
@@ -29624,7 +31673,7 @@ index 3a35ec6..5634510 100644
                .name           = DRV_NAME,
                .init_chipset   = init_chipset_pdc202xx,
 diff --git a/drivers/ide/piix.c b/drivers/ide/piix.c
                .name           = DRV_NAME,
                .init_chipset   = init_chipset_pdc202xx,
 diff --git a/drivers/ide/piix.c b/drivers/ide/piix.c
-index b59d04c..368c2a7 100644
+index 1892e81..fe0fd60 100644
 --- a/drivers/ide/piix.c
 +++ b/drivers/ide/piix.c
 @@ -344,7 +344,7 @@ static const struct ide_port_ops ich_port_ops = {
 --- a/drivers/ide/piix.c
 +++ b/drivers/ide/piix.c
 @@ -344,7 +344,7 @@ static const struct ide_port_ops ich_port_ops = {
@@ -29688,19 +31737,6 @@ index 35fb8da..24d72ef 100644
        {       /* 0: OSB4 */
                .name           = DRV_NAME,
                .init_chipset   = init_chipset_svwks,
        {       /* 0: OSB4 */
                .name           = DRV_NAME,
                .init_chipset   = init_chipset_svwks,
-diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c
-index ab3db61..afed580 100644
---- a/drivers/ide/setup-pci.c
-+++ b/drivers/ide/setup-pci.c
-@@ -542,6 +542,8 @@ int ide_pci_init_two(struct pci_dev *dev1, struct pci_dev *dev2,
-       int ret, i, n_ports = dev2 ? 4 : 2;
-       struct ide_hw hw[4], *hws[] = { NULL, NULL, NULL, NULL };
-+      pax_track_stack();
-+
-       for (i = 0; i < n_ports / 2; i++) {
-               ret = ide_setup_pci_controller(pdev[i], d, !i);
-               if (ret < 0)
 diff --git a/drivers/ide/siimage.c b/drivers/ide/siimage.c
 index ddeda44..46f7e30 100644
 --- a/drivers/ide/siimage.c
 diff --git a/drivers/ide/siimage.c b/drivers/ide/siimage.c
 index ddeda44..46f7e30 100644
 --- a/drivers/ide/siimage.c
@@ -29754,10 +31790,10 @@ index 864ffe0..863a5e9 100644
        .enablebits     = { {0x41, 0x80, 0x80}, {0x43, 0x80, 0x80} },
        .port_ops       = &slc90e66_port_ops,
 diff --git a/drivers/ide/tc86c001.c b/drivers/ide/tc86c001.c
        .enablebits     = { {0x41, 0x80, 0x80}, {0x43, 0x80, 0x80} },
        .port_ops       = &slc90e66_port_ops,
 diff --git a/drivers/ide/tc86c001.c b/drivers/ide/tc86c001.c
-index e444d24..ba577de 100644
+index 4799d5c..1794678 100644
 --- a/drivers/ide/tc86c001.c
 +++ b/drivers/ide/tc86c001.c
 --- a/drivers/ide/tc86c001.c
 +++ b/drivers/ide/tc86c001.c
-@@ -191,7 +191,7 @@ static const struct ide_dma_ops tc86c001_dma_ops = {
+@@ -192,7 +192,7 @@ static const struct ide_dma_ops tc86c001_dma_ops = {
        .dma_sff_read_status    = ide_dma_sff_read_status,
  };
  
        .dma_sff_read_status    = ide_dma_sff_read_status,
  };
  
@@ -29767,7 +31803,7 @@ index e444d24..ba577de 100644
        .init_hwif      = init_hwif_tc86c001,
        .port_ops       = &tc86c001_port_ops,
 diff --git a/drivers/ide/triflex.c b/drivers/ide/triflex.c
        .init_hwif      = init_hwif_tc86c001,
        .port_ops       = &tc86c001_port_ops,
 diff --git a/drivers/ide/triflex.c b/drivers/ide/triflex.c
-index e53a1b7..d11aff7 100644
+index 281c914..55ce1b8 100644
 --- a/drivers/ide/triflex.c
 +++ b/drivers/ide/triflex.c
 @@ -92,7 +92,7 @@ static const struct ide_port_ops triflex_port_ops = {
 --- a/drivers/ide/triflex.c
 +++ b/drivers/ide/triflex.c
 @@ -92,7 +92,7 @@ static const struct ide_port_ops triflex_port_ops = {
@@ -29805,11 +31841,24 @@ index f46f49c..eb77678 100644
        .name           = DRV_NAME,
        .init_chipset   = init_chipset_via82cxxx,
        .enablebits     = { { 0x40, 0x02, 0x02 }, { 0x40, 0x01, 0x01 } },
        .name           = DRV_NAME,
        .init_chipset   = init_chipset_via82cxxx,
        .enablebits     = { { 0x40, 0x02, 0x02 }, { 0x40, 0x01, 0x01 } },
+diff --git a/drivers/ieee802154/fakehard.c b/drivers/ieee802154/fakehard.c
+index eb0e2cc..14241c7 100644
+--- a/drivers/ieee802154/fakehard.c
++++ b/drivers/ieee802154/fakehard.c
+@@ -386,7 +386,7 @@ static int __devinit ieee802154fake_probe(struct platform_device *pdev)
+       phy->transmit_power = 0xbf;
+       dev->netdev_ops = &fake_ops;
+-      dev->ml_priv = &fake_mlme;
++      dev->ml_priv = (void *)&fake_mlme;
+       priv = netdev_priv(dev);
+       priv->phy = phy;
 diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
 diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
-index fc0f2bd..ac2f8a5 100644
+index 8b72f39..55df4c8 100644
 --- a/drivers/infiniband/core/cm.c
 +++ b/drivers/infiniband/core/cm.c
 --- a/drivers/infiniband/core/cm.c
 +++ b/drivers/infiniband/core/cm.c
-@@ -113,7 +113,7 @@ static char const counter_group_names[CM_COUNTER_GROUPS]
+@@ -114,7 +114,7 @@ static char const counter_group_names[CM_COUNTER_GROUPS]
  
  struct cm_counter_group {
        struct kobject obj;
  
  struct cm_counter_group {
        struct kobject obj;
@@ -29818,7 +31867,7 @@ index fc0f2bd..ac2f8a5 100644
  };
  
  struct cm_counter_attribute {
  };
  
  struct cm_counter_attribute {
-@@ -1387,7 +1387,7 @@ static void cm_dup_req_handler(struct cm_work *work,
+@@ -1394,7 +1394,7 @@ static void cm_dup_req_handler(struct cm_work *work,
        struct ib_mad_send_buf *msg = NULL;
        int ret;
  
        struct ib_mad_send_buf *msg = NULL;
        int ret;
  
@@ -29827,7 +31876,7 @@ index fc0f2bd..ac2f8a5 100644
                        counter[CM_REQ_COUNTER]);
  
        /* Quick state check to discard duplicate REQs. */
                        counter[CM_REQ_COUNTER]);
  
        /* Quick state check to discard duplicate REQs. */
-@@ -1765,7 +1765,7 @@ static void cm_dup_rep_handler(struct cm_work *work)
+@@ -1778,7 +1778,7 @@ static void cm_dup_rep_handler(struct cm_work *work)
        if (!cm_id_priv)
                return;
  
        if (!cm_id_priv)
                return;
  
@@ -29836,7 +31885,7 @@ index fc0f2bd..ac2f8a5 100644
                        counter[CM_REP_COUNTER]);
        ret = cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg);
        if (ret)
                        counter[CM_REP_COUNTER]);
        ret = cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg);
        if (ret)
-@@ -1932,7 +1932,7 @@ static int cm_rtu_handler(struct cm_work *work)
+@@ -1945,7 +1945,7 @@ static int cm_rtu_handler(struct cm_work *work)
        if (cm_id_priv->id.state != IB_CM_REP_SENT &&
            cm_id_priv->id.state != IB_CM_MRA_REP_RCVD) {
                spin_unlock_irq(&cm_id_priv->lock);
        if (cm_id_priv->id.state != IB_CM_REP_SENT &&
            cm_id_priv->id.state != IB_CM_MRA_REP_RCVD) {
                spin_unlock_irq(&cm_id_priv->lock);
@@ -29845,7 +31894,7 @@ index fc0f2bd..ac2f8a5 100644
                                counter[CM_RTU_COUNTER]);
                goto out;
        }
                                counter[CM_RTU_COUNTER]);
                goto out;
        }
-@@ -2115,7 +2115,7 @@ static int cm_dreq_handler(struct cm_work *work)
+@@ -2128,7 +2128,7 @@ static int cm_dreq_handler(struct cm_work *work)
        cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id,
                                   dreq_msg->local_comm_id);
        if (!cm_id_priv) {
        cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id,
                                   dreq_msg->local_comm_id);
        if (!cm_id_priv) {
@@ -29854,7 +31903,7 @@ index fc0f2bd..ac2f8a5 100644
                                counter[CM_DREQ_COUNTER]);
                cm_issue_drep(work->port, work->mad_recv_wc);
                return -EINVAL;
                                counter[CM_DREQ_COUNTER]);
                cm_issue_drep(work->port, work->mad_recv_wc);
                return -EINVAL;
-@@ -2140,7 +2140,7 @@ static int cm_dreq_handler(struct cm_work *work)
+@@ -2153,7 +2153,7 @@ static int cm_dreq_handler(struct cm_work *work)
        case IB_CM_MRA_REP_RCVD:
                break;
        case IB_CM_TIMEWAIT:
        case IB_CM_MRA_REP_RCVD:
                break;
        case IB_CM_TIMEWAIT:
@@ -29863,7 +31912,7 @@ index fc0f2bd..ac2f8a5 100644
                                counter[CM_DREQ_COUNTER]);
                if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
                        goto unlock;
                                counter[CM_DREQ_COUNTER]);
                if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
                        goto unlock;
-@@ -2154,7 +2154,7 @@ static int cm_dreq_handler(struct cm_work *work)
+@@ -2167,7 +2167,7 @@ static int cm_dreq_handler(struct cm_work *work)
                        cm_free_msg(msg);
                goto deref;
        case IB_CM_DREQ_RCVD:
                        cm_free_msg(msg);
                goto deref;
        case IB_CM_DREQ_RCVD:
@@ -29872,7 +31921,7 @@ index fc0f2bd..ac2f8a5 100644
                                counter[CM_DREQ_COUNTER]);
                goto unlock;
        default:
                                counter[CM_DREQ_COUNTER]);
                goto unlock;
        default:
-@@ -2521,7 +2521,7 @@ static int cm_mra_handler(struct cm_work *work)
+@@ -2534,7 +2534,7 @@ static int cm_mra_handler(struct cm_work *work)
                    ib_modify_mad(cm_id_priv->av.port->mad_agent,
                                  cm_id_priv->msg, timeout)) {
                        if (cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD)
                    ib_modify_mad(cm_id_priv->av.port->mad_agent,
                                  cm_id_priv->msg, timeout)) {
                        if (cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD)
@@ -29881,7 +31930,7 @@ index fc0f2bd..ac2f8a5 100644
                                                counter_group[CM_RECV_DUPLICATES].
                                                counter[CM_MRA_COUNTER]);
                        goto out;
                                                counter_group[CM_RECV_DUPLICATES].
                                                counter[CM_MRA_COUNTER]);
                        goto out;
-@@ -2530,7 +2530,7 @@ static int cm_mra_handler(struct cm_work *work)
+@@ -2543,7 +2543,7 @@ static int cm_mra_handler(struct cm_work *work)
                break;
        case IB_CM_MRA_REQ_RCVD:
        case IB_CM_MRA_REP_RCVD:
                break;
        case IB_CM_MRA_REQ_RCVD:
        case IB_CM_MRA_REP_RCVD:
@@ -29890,7 +31939,7 @@ index fc0f2bd..ac2f8a5 100644
                                counter[CM_MRA_COUNTER]);
                /* fall through */
        default:
                                counter[CM_MRA_COUNTER]);
                /* fall through */
        default:
-@@ -2692,7 +2692,7 @@ static int cm_lap_handler(struct cm_work *work)
+@@ -2705,7 +2705,7 @@ static int cm_lap_handler(struct cm_work *work)
        case IB_CM_LAP_IDLE:
                break;
        case IB_CM_MRA_LAP_SENT:
        case IB_CM_LAP_IDLE:
                break;
        case IB_CM_MRA_LAP_SENT:
@@ -29899,7 +31948,7 @@ index fc0f2bd..ac2f8a5 100644
                                counter[CM_LAP_COUNTER]);
                if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
                        goto unlock;
                                counter[CM_LAP_COUNTER]);
                if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
                        goto unlock;
-@@ -2708,7 +2708,7 @@ static int cm_lap_handler(struct cm_work *work)
+@@ -2721,7 +2721,7 @@ static int cm_lap_handler(struct cm_work *work)
                        cm_free_msg(msg);
                goto deref;
        case IB_CM_LAP_RCVD:
                        cm_free_msg(msg);
                goto deref;
        case IB_CM_LAP_RCVD:
@@ -29908,7 +31957,7 @@ index fc0f2bd..ac2f8a5 100644
                                counter[CM_LAP_COUNTER]);
                goto unlock;
        default:
                                counter[CM_LAP_COUNTER]);
                goto unlock;
        default:
-@@ -2992,7 +2992,7 @@ static int cm_sidr_req_handler(struct cm_work *work)
+@@ -3005,7 +3005,7 @@ static int cm_sidr_req_handler(struct cm_work *work)
        cur_cm_id_priv = cm_insert_remote_sidr(cm_id_priv);
        if (cur_cm_id_priv) {
                spin_unlock_irq(&cm.lock);
        cur_cm_id_priv = cm_insert_remote_sidr(cm_id_priv);
        if (cur_cm_id_priv) {
                spin_unlock_irq(&cm.lock);
@@ -29917,7 +31966,7 @@ index fc0f2bd..ac2f8a5 100644
                                counter[CM_SIDR_REQ_COUNTER]);
                goto out; /* Duplicate message. */
        }
                                counter[CM_SIDR_REQ_COUNTER]);
                goto out; /* Duplicate message. */
        }
-@@ -3204,10 +3204,10 @@ static void cm_send_handler(struct ib_mad_agent *mad_agent,
+@@ -3217,10 +3217,10 @@ static void cm_send_handler(struct ib_mad_agent *mad_agent,
        if (!msg->context[0] && (attr_index != CM_REJ_COUNTER))
                msg->retries = 1;
  
        if (!msg->context[0] && (attr_index != CM_REJ_COUNTER))
                msg->retries = 1;
  
@@ -29930,7 +31979,7 @@ index fc0f2bd..ac2f8a5 100644
                                &port->counter_group[CM_XMIT_RETRIES].
                                counter[attr_index]);
  
                                &port->counter_group[CM_XMIT_RETRIES].
                                counter[attr_index]);
  
-@@ -3417,7 +3417,7 @@ static void cm_recv_handler(struct ib_mad_agent *mad_agent,
+@@ -3430,7 +3430,7 @@ static void cm_recv_handler(struct ib_mad_agent *mad_agent,
        }
  
        attr_id = be16_to_cpu(mad_recv_wc->recv_buf.mad->mad_hdr.attr_id);
        }
  
        attr_id = be16_to_cpu(mad_recv_wc->recv_buf.mad->mad_hdr.attr_id);
@@ -29939,7 +31988,7 @@ index fc0f2bd..ac2f8a5 100644
                        counter[attr_id - CM_ATTR_ID_OFFSET]);
  
        work = kmalloc(sizeof *work + sizeof(struct ib_sa_path_rec) * paths,
                        counter[attr_id - CM_ATTR_ID_OFFSET]);
  
        work = kmalloc(sizeof *work + sizeof(struct ib_sa_path_rec) * paths,
-@@ -3615,7 +3615,7 @@ static ssize_t cm_show_counter(struct kobject *obj, struct attribute *attr,
+@@ -3635,7 +3635,7 @@ static ssize_t cm_show_counter(struct kobject *obj, struct attribute *attr,
        cm_attr = container_of(attr, struct cm_counter_attribute, attr);
  
        return sprintf(buf, "%ld\n",
        cm_attr = container_of(attr, struct cm_counter_attribute, attr);
  
        return sprintf(buf, "%ld\n",
@@ -29949,10 +31998,10 @@ index fc0f2bd..ac2f8a5 100644
  
  static const struct sysfs_ops cm_counter_ops = {
 diff --git a/drivers/infiniband/core/fmr_pool.c b/drivers/infiniband/core/fmr_pool.c
  
  static const struct sysfs_ops cm_counter_ops = {
 diff --git a/drivers/infiniband/core/fmr_pool.c b/drivers/infiniband/core/fmr_pool.c
-index 4507043..14ad522 100644
+index 176c8f9..2627b62 100644
 --- a/drivers/infiniband/core/fmr_pool.c
 +++ b/drivers/infiniband/core/fmr_pool.c
 --- a/drivers/infiniband/core/fmr_pool.c
 +++ b/drivers/infiniband/core/fmr_pool.c
-@@ -97,8 +97,8 @@ struct ib_fmr_pool {
+@@ -98,8 +98,8 @@ struct ib_fmr_pool {
  
        struct task_struct       *thread;
  
  
        struct task_struct       *thread;
  
@@ -29963,7 +32012,7 @@ index 4507043..14ad522 100644
  
        wait_queue_head_t         force_wait;
  };
  
        wait_queue_head_t         force_wait;
  };
-@@ -179,10 +179,10 @@ static int ib_fmr_cleanup_thread(void *pool_ptr)
+@@ -180,10 +180,10 @@ static int ib_fmr_cleanup_thread(void *pool_ptr)
        struct ib_fmr_pool *pool = pool_ptr;
  
        do {
        struct ib_fmr_pool *pool = pool_ptr;
  
        do {
@@ -29976,7 +32025,7 @@ index 4507043..14ad522 100644
                        wake_up_interruptible(&pool->force_wait);
  
                        if (pool->flush_function)
                        wake_up_interruptible(&pool->force_wait);
  
                        if (pool->flush_function)
-@@ -190,7 +190,7 @@ static int ib_fmr_cleanup_thread(void *pool_ptr)
+@@ -191,7 +191,7 @@ static int ib_fmr_cleanup_thread(void *pool_ptr)
                }
  
                set_current_state(TASK_INTERRUPTIBLE);
                }
  
                set_current_state(TASK_INTERRUPTIBLE);
@@ -29985,7 +32034,7 @@ index 4507043..14ad522 100644
                    !kthread_should_stop())
                        schedule();
                __set_current_state(TASK_RUNNING);
                    !kthread_should_stop())
                        schedule();
                __set_current_state(TASK_RUNNING);
-@@ -282,8 +282,8 @@ struct ib_fmr_pool *ib_create_fmr_pool(struct ib_pd             *pd,
+@@ -283,8 +283,8 @@ struct ib_fmr_pool *ib_create_fmr_pool(struct ib_pd             *pd,
        pool->dirty_watermark = params->dirty_watermark;
        pool->dirty_len       = 0;
        spin_lock_init(&pool->pool_lock);
        pool->dirty_watermark = params->dirty_watermark;
        pool->dirty_len       = 0;
        spin_lock_init(&pool->pool_lock);
@@ -29996,7 +32045,7 @@ index 4507043..14ad522 100644
        init_waitqueue_head(&pool->force_wait);
  
        pool->thread = kthread_run(ib_fmr_cleanup_thread,
        init_waitqueue_head(&pool->force_wait);
  
        pool->thread = kthread_run(ib_fmr_cleanup_thread,
-@@ -411,11 +411,11 @@ int ib_flush_fmr_pool(struct ib_fmr_pool *pool)
+@@ -412,11 +412,11 @@ int ib_flush_fmr_pool(struct ib_fmr_pool *pool)
        }
        spin_unlock_irq(&pool->pool_lock);
  
        }
        spin_unlock_irq(&pool->pool_lock);
  
@@ -30010,7 +32059,7 @@ index 4507043..14ad522 100644
                return -EINTR;
  
        return 0;
                return -EINTR;
  
        return 0;
-@@ -525,7 +525,7 @@ int ib_fmr_pool_unmap(struct ib_pool_fmr *fmr)
+@@ -526,7 +526,7 @@ int ib_fmr_pool_unmap(struct ib_pool_fmr *fmr)
                } else {
                        list_add_tail(&fmr->list, &pool->dirty_list);
                        if (++pool->dirty_len >= pool->dirty_watermark) {
                } else {
                        list_add_tail(&fmr->list, &pool->dirty_list);
                        if (++pool->dirty_len >= pool->dirty_watermark) {
@@ -30042,18 +32091,18 @@ index 40c8353..946b0e4 100644
        PDBG("%s stag_state 0x%0x type 0x%0x pdid 0x%0x, stag_idx 0x%x\n",
             __func__, stag_state, type, pdid, stag_idx);
 diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c
        PDBG("%s stag_state 0x%0x type 0x%0x pdid 0x%0x, stag_idx 0x%x\n",
             __func__, stag_state, type, pdid, stag_idx);
 diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c
-index 31ae1b1..2f5b038 100644
+index 31ae1b1..641d285 100644
 --- a/drivers/infiniband/hw/ipath/ipath_fs.c
 +++ b/drivers/infiniband/hw/ipath/ipath_fs.c
 --- a/drivers/infiniband/hw/ipath/ipath_fs.c
 +++ b/drivers/infiniband/hw/ipath/ipath_fs.c
-@@ -113,6 +113,8 @@ static ssize_t atomic_counters_read(struct file *file, char __user *buf,
-       struct infinipath_counters counters;
-       struct ipath_devdata *dd;
-+      pax_track_stack();
-+
-       dd = file->f_path.dentry->d_inode->i_private;
-       dd->ipath_f_read_counters(dd, &counters);
+@@ -126,6 +126,8 @@ static const struct file_operations atomic_counters_ops = {
+ };
  
  
+ static ssize_t flash_read(struct file *file, char __user *buf,
++                        size_t count, loff_t *ppos) __size_overflow(3);
++static ssize_t flash_read(struct file *file, char __user *buf,
+                         size_t count, loff_t *ppos)
+ {
+       struct ipath_devdata *dd;
 diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c
 index 79b3dbc..96e5fcc 100644
 --- a/drivers/infiniband/hw/ipath/ipath_rc.c
 diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c
 index 79b3dbc..96e5fcc 100644
 --- a/drivers/infiniband/hw/ipath/ipath_rc.c
@@ -30109,7 +32158,7 @@ index 1f95bba..9530f87 100644
                                      sdata, wqe->wr.wr.atomic.swap);
                goto send_comp;
 diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
                                      sdata, wqe->wr.wr.atomic.swap);
                goto send_comp;
 diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
-index 2d668c6..3312bb7 100644
+index 5965b3d..16817fb 100644
 --- a/drivers/infiniband/hw/nes/nes.c
 +++ b/drivers/infiniband/hw/nes/nes.c
 @@ -103,7 +103,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
 --- a/drivers/infiniband/hw/nes/nes.c
 +++ b/drivers/infiniband/hw/nes/nes.c
 @@ -103,7 +103,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
@@ -30121,7 +32170,7 @@ index 2d668c6..3312bb7 100644
  
  static unsigned int ee_flsh_adapter;
  static unsigned int sysfs_nonidx_addr;
  
  static unsigned int ee_flsh_adapter;
  static unsigned int sysfs_nonidx_addr;
-@@ -275,7 +275,7 @@ static void nes_cqp_rem_ref_callback(struct nes_device *nesdev, struct nes_cqp_r
+@@ -272,7 +272,7 @@ static void nes_cqp_rem_ref_callback(struct nes_device *nesdev, struct nes_cqp_r
        struct nes_qp *nesqp = cqp_request->cqp_callback_pointer;
        struct nes_adapter *nesadapter = nesdev->nesadapter;
  
        struct nes_qp *nesqp = cqp_request->cqp_callback_pointer;
        struct nes_adapter *nesadapter = nesdev->nesadapter;
  
@@ -30131,10 +32180,10 @@ index 2d668c6..3312bb7 100644
        /* Free the control structures */
  
 diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
        /* Free the control structures */
  
 diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
-index 6fe7987..68637b5 100644
+index 568b4f1..5ea3eff 100644
 --- a/drivers/infiniband/hw/nes/nes.h
 +++ b/drivers/infiniband/hw/nes/nes.h
 --- a/drivers/infiniband/hw/nes/nes.h
 +++ b/drivers/infiniband/hw/nes/nes.h
-@@ -175,17 +175,17 @@ extern unsigned int nes_debug_level;
+@@ -178,17 +178,17 @@ extern unsigned int nes_debug_level;
  extern unsigned int wqm_quanta;
  extern struct list_head nes_adapter_list;
  
  extern unsigned int wqm_quanta;
  extern struct list_head nes_adapter_list;
  
@@ -30163,7 +32212,7 @@ index 6fe7987..68637b5 100644
  extern u32 mh_detected;
  extern u32 mh_pauses_sent;
  extern u32 cm_packets_sent;
  extern u32 mh_detected;
  extern u32 mh_pauses_sent;
  extern u32 cm_packets_sent;
-@@ -194,14 +194,14 @@ extern u32 cm_packets_created;
+@@ -197,16 +197,16 @@ extern u32 cm_packets_created;
  extern u32 cm_packets_received;
  extern u32 cm_packets_dropped;
  extern u32 cm_packets_retrans;
  extern u32 cm_packets_received;
  extern u32 cm_packets_dropped;
  extern u32 cm_packets_retrans;
@@ -30177,16 +32226,20 @@ index 6fe7987..68637b5 100644
 -extern atomic_t cm_nodes_destroyed;
 -extern atomic_t cm_accel_dropped_pkts;
 -extern atomic_t cm_resets_recvd;
 -extern atomic_t cm_nodes_destroyed;
 -extern atomic_t cm_accel_dropped_pkts;
 -extern atomic_t cm_resets_recvd;
+-extern atomic_t pau_qps_created;
+-extern atomic_t pau_qps_destroyed;
 +extern atomic_unchecked_t cm_loopbacks;
 +extern atomic_unchecked_t cm_nodes_created;
 +extern atomic_unchecked_t cm_nodes_destroyed;
 +extern atomic_unchecked_t cm_accel_dropped_pkts;
 +extern atomic_unchecked_t cm_resets_recvd;
 +extern atomic_unchecked_t cm_loopbacks;
 +extern atomic_unchecked_t cm_nodes_created;
 +extern atomic_unchecked_t cm_nodes_destroyed;
 +extern atomic_unchecked_t cm_accel_dropped_pkts;
 +extern atomic_unchecked_t cm_resets_recvd;
++extern atomic_unchecked_t pau_qps_created;
++extern atomic_unchecked_t pau_qps_destroyed;
  
  extern u32 int_mod_timer_init;
  extern u32 int_mod_cq_depth_256;
 diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
  
  extern u32 int_mod_timer_init;
  extern u32 int_mod_cq_depth_256;
 diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
-index a237547..28a9819 100644
+index 0a52d72..0642f36 100644
 --- a/drivers/infiniband/hw/nes/nes_cm.c
 +++ b/drivers/infiniband/hw/nes/nes_cm.c
 @@ -68,14 +68,14 @@ u32 cm_packets_dropped;
 --- a/drivers/infiniband/hw/nes/nes_cm.c
 +++ b/drivers/infiniband/hw/nes/nes_cm.c
 @@ -68,14 +68,14 @@ u32 cm_packets_dropped;
@@ -30209,9 +32262,9 @@ index a237547..28a9819 100644
 +atomic_unchecked_t cm_accel_dropped_pkts;
 +atomic_unchecked_t cm_resets_recvd;
  
 +atomic_unchecked_t cm_accel_dropped_pkts;
 +atomic_unchecked_t cm_resets_recvd;
  
- static inline int mini_cm_accelerated(struct nes_cm_core *,
      struct nes_cm_node *);
-@@ -151,13 +151,13 @@ static struct nes_cm_ops nes_cm_api = {
+ static inline int mini_cm_accelerated(struct nes_cm_core *, struct nes_cm_node *);
static struct nes_cm_listener *mini_cm_listen(struct nes_cm_core *, struct nes_vnic *, struct nes_cm_info *);
+@@ -148,13 +148,13 @@ static struct nes_cm_ops nes_cm_api = {
  
  static struct nes_cm_core *g_cm_core;
  
  
  static struct nes_cm_core *g_cm_core;
  
@@ -30230,9 +32283,9 @@ index a237547..28a9819 100644
 +atomic_unchecked_t cm_connect_reqs;
 +atomic_unchecked_t cm_rejects;
  
 +atomic_unchecked_t cm_connect_reqs;
 +atomic_unchecked_t cm_rejects;
  
- /**
-@@ -1045,7 +1045,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
+ int nes_add_ref_cm_node(struct nes_cm_node *cm_node)
+ {
+@@ -1271,7 +1271,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
                kfree(listener);
                listener = NULL;
                ret = 0;
                kfree(listener);
                listener = NULL;
                ret = 0;
@@ -30241,7 +32294,7 @@ index a237547..28a9819 100644
        } else {
                spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
        }
        } else {
                spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
        }
-@@ -1242,7 +1242,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
+@@ -1473,7 +1473,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
                  cm_node->rem_mac);
  
        add_hte_node(cm_core, cm_node);
                  cm_node->rem_mac);
  
        add_hte_node(cm_core, cm_node);
@@ -30250,7 +32303,7 @@ index a237547..28a9819 100644
  
        return cm_node;
  }
  
        return cm_node;
  }
-@@ -1300,7 +1300,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
+@@ -1531,7 +1531,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
        }
  
        atomic_dec(&cm_core->node_cnt);
        }
  
        atomic_dec(&cm_core->node_cnt);
@@ -30259,7 +32312,7 @@ index a237547..28a9819 100644
        nesqp = cm_node->nesqp;
        if (nesqp) {
                nesqp->cm_node = NULL;
        nesqp = cm_node->nesqp;
        if (nesqp) {
                nesqp->cm_node = NULL;
-@@ -1367,7 +1367,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc,
+@@ -1595,7 +1595,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc,
  
  static void drop_packet(struct sk_buff *skb)
  {
  
  static void drop_packet(struct sk_buff *skb)
  {
@@ -30268,7 +32321,7 @@ index a237547..28a9819 100644
        dev_kfree_skb_any(skb);
  }
  
        dev_kfree_skb_any(skb);
  }
  
-@@ -1430,7 +1430,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb,
+@@ -1658,7 +1658,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb,
  {
  
        int     reset = 0;      /* whether to send reset in case of err.. */
  {
  
        int     reset = 0;      /* whether to send reset in case of err.. */
@@ -30277,7 +32330,7 @@ index a237547..28a9819 100644
        nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u."
                        " refcnt=%d\n", cm_node, cm_node->state,
                        atomic_read(&cm_node->ref_count));
        nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u."
                        " refcnt=%d\n", cm_node, cm_node->state,
                        atomic_read(&cm_node->ref_count));
-@@ -2059,7 +2059,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
+@@ -2299,7 +2299,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
                                rem_ref_cm_node(cm_node->cm_core, cm_node);
                                return NULL;
                        }
                                rem_ref_cm_node(cm_node->cm_core, cm_node);
                                return NULL;
                        }
@@ -30286,16 +32339,16 @@ index a237547..28a9819 100644
                        loopbackremotenode->loopbackpartner = cm_node;
                        loopbackremotenode->tcp_cntxt.rcv_wscale =
                                NES_CM_DEFAULT_RCV_WND_SCALE;
                        loopbackremotenode->loopbackpartner = cm_node;
                        loopbackremotenode->tcp_cntxt.rcv_wscale =
                                NES_CM_DEFAULT_RCV_WND_SCALE;
-@@ -2334,7 +2334,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
-                       add_ref_cm_node(cm_node);
-               } else if (cm_node->state == NES_CM_STATE_TSA) {
-                       rem_ref_cm_node(cm_core, cm_node);
--                      atomic_inc(&cm_accel_dropped_pkts);
-+                      atomic_inc_unchecked(&cm_accel_dropped_pkts);
-                       dev_kfree_skb_any(skb);
+@@ -2574,7 +2574,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
+                               nes_queue_mgt_skbs(skb, nesvnic, cm_node->nesqp);
+                       else {
+                               rem_ref_cm_node(cm_core, cm_node);
+-                              atomic_inc(&cm_accel_dropped_pkts);
++                              atomic_inc_unchecked(&cm_accel_dropped_pkts);
+                               dev_kfree_skb_any(skb);
+                       }
                        break;
                        break;
-               }
-@@ -2640,7 +2640,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
+@@ -2880,7 +2880,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
  
        if ((cm_id) && (cm_id->event_handler)) {
                if (issue_disconn) {
  
        if ((cm_id) && (cm_id->event_handler)) {
                if (issue_disconn) {
@@ -30304,7 +32357,7 @@ index a237547..28a9819 100644
                        cm_event.event = IW_CM_EVENT_DISCONNECT;
                        cm_event.status = disconn_status;
                        cm_event.local_addr = cm_id->local_addr;
                        cm_event.event = IW_CM_EVENT_DISCONNECT;
                        cm_event.status = disconn_status;
                        cm_event.local_addr = cm_id->local_addr;
-@@ -2662,7 +2662,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
+@@ -2902,7 +2902,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
                }
  
                if (issue_close) {
                }
  
                if (issue_close) {
@@ -30313,7 +32366,7 @@ index a237547..28a9819 100644
                        nes_disconnect(nesqp, 1);
  
                        cm_id->provider_data = nesqp;
                        nes_disconnect(nesqp, 1);
  
                        cm_id->provider_data = nesqp;
-@@ -2793,7 +2793,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
+@@ -3038,7 +3038,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
  
        nes_debug(NES_DBG_CM, "QP%u, cm_node=%p, jiffies = %lu listener = %p\n",
                nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener);
  
        nes_debug(NES_DBG_CM, "QP%u, cm_node=%p, jiffies = %lu listener = %p\n",
                nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener);
@@ -30322,25 +32375,25 @@ index a237547..28a9819 100644
  
        nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
                        netdev_refcnt_read(nesvnic->netdev));
  
        nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
                        netdev_refcnt_read(nesvnic->netdev));
-@@ -3003,7 +3003,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len)
+@@ -3240,7 +3240,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len)
        struct nes_cm_core *cm_core;
        struct nes_cm_core *cm_core;
+       u8 *start_buff;
  
 -      atomic_inc(&cm_rejects);
 +      atomic_inc_unchecked(&cm_rejects);
  
 -      atomic_inc(&cm_rejects);
 +      atomic_inc_unchecked(&cm_rejects);
-       cm_node = (struct nes_cm_node *) cm_id->provider_data;
+       cm_node = (struct nes_cm_node *)cm_id->provider_data;
        loopback = cm_node->loopbackpartner;
        cm_core = cm_node->cm_core;
        loopback = cm_node->loopbackpartner;
        cm_core = cm_node->cm_core;
-@@ -3069,7 +3069,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
-               ntohl(cm_id->local_addr.sin_addr.s_addr),
-               ntohs(cm_id->local_addr.sin_port));
+@@ -3300,7 +3300,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
+                 ntohl(cm_id->local_addr.sin_addr.s_addr),
+                 ntohs(cm_id->local_addr.sin_port));
  
 -      atomic_inc(&cm_connects);
 +      atomic_inc_unchecked(&cm_connects);
        nesqp->active_conn = 1;
  
        /* cache the cm_id in the qp */
  
 -      atomic_inc(&cm_connects);
 +      atomic_inc_unchecked(&cm_connects);
        nesqp->active_conn = 1;
  
        /* cache the cm_id in the qp */
-@@ -3175,7 +3175,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
+@@ -3406,7 +3406,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
                        g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
                        return err;
                }
                        g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
                        return err;
                }
@@ -30349,16 +32402,16 @@ index a237547..28a9819 100644
        }
  
        cm_id->add_ref(cm_id);
        }
  
        cm_id->add_ref(cm_id);
-@@ -3280,7 +3280,7 @@ static void cm_event_connected(struct nes_cm_event *event)
-       if (nesqp->destroyed) {
+@@ -3507,7 +3507,7 @@ static void cm_event_connected(struct nes_cm_event *event)
+       if (nesqp->destroyed)
                return;
                return;
-       }
 -      atomic_inc(&cm_connecteds);
 +      atomic_inc_unchecked(&cm_connecteds);
        nes_debug(NES_DBG_CM, "QP%u attempting to connect to  0x%08X:0x%04X on"
 -      atomic_inc(&cm_connecteds);
 +      atomic_inc_unchecked(&cm_connecteds);
        nes_debug(NES_DBG_CM, "QP%u attempting to connect to  0x%08X:0x%04X on"
-                       " local port 0x%04X. jiffies = %lu.\n",
-                       nesqp->hwqp.qp_id,
-@@ -3495,7 +3495,7 @@ static void cm_event_reset(struct nes_cm_event *event)
+                 " local port 0x%04X. jiffies = %lu.\n",
+                 nesqp->hwqp.qp_id,
+@@ -3694,7 +3694,7 @@ static void cm_event_reset(struct nes_cm_event *event)
  
        cm_id->add_ref(cm_id);
        ret = cm_id->event_handler(cm_id, &cm_event);
  
        cm_id->add_ref(cm_id);
        ret = cm_id->event_handler(cm_id, &cm_event);
@@ -30367,29 +32420,62 @@ index a237547..28a9819 100644
        cm_event.event = IW_CM_EVENT_CLOSE;
        cm_event.status = 0;
        cm_event.provider_data = cm_id->provider_data;
        cm_event.event = IW_CM_EVENT_CLOSE;
        cm_event.status = 0;
        cm_event.provider_data = cm_id->provider_data;
-@@ -3531,7 +3531,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)
+@@ -3730,7 +3730,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)
                return;
        cm_id = cm_node->cm_id;
  
 -      atomic_inc(&cm_connect_reqs);
 +      atomic_inc_unchecked(&cm_connect_reqs);
        nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
                return;
        cm_id = cm_node->cm_id;
  
 -      atomic_inc(&cm_connect_reqs);
 +      atomic_inc_unchecked(&cm_connect_reqs);
        nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
-                       cm_node, cm_id, jiffies);
+                 cm_node, cm_id, jiffies);
  
  
-@@ -3569,7 +3569,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event)
+@@ -3770,7 +3770,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event)
                return;
        cm_id = cm_node->cm_id;
  
 -      atomic_inc(&cm_connect_reqs);
 +      atomic_inc_unchecked(&cm_connect_reqs);
        nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
                return;
        cm_id = cm_node->cm_id;
  
 -      atomic_inc(&cm_connect_reqs);
 +      atomic_inc_unchecked(&cm_connect_reqs);
        nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
-                       cm_node, cm_id, jiffies);
+                 cm_node, cm_id, jiffies);
+diff --git a/drivers/infiniband/hw/nes/nes_mgt.c b/drivers/infiniband/hw/nes/nes_mgt.c
+index b3b2a24..7bfaf1e 100644
+--- a/drivers/infiniband/hw/nes/nes_mgt.c
++++ b/drivers/infiniband/hw/nes/nes_mgt.c
+@@ -40,8 +40,8 @@
+ #include "nes.h"
+ #include "nes_mgt.h"
+-atomic_t pau_qps_created;
+-atomic_t pau_qps_destroyed;
++atomic_unchecked_t pau_qps_created;
++atomic_unchecked_t pau_qps_destroyed;
+ static void nes_replenish_mgt_rq(struct nes_vnic_mgt *mgtvnic)
+ {
+@@ -621,7 +621,7 @@ void nes_destroy_pau_qp(struct nes_device *nesdev, struct nes_qp *nesqp)
+ {
+       struct sk_buff *skb;
+       unsigned long flags;
+-      atomic_inc(&pau_qps_destroyed);
++      atomic_inc_unchecked(&pau_qps_destroyed);
+       /* Free packets that have not yet been forwarded */
+       /* Lock is acquired by skb_dequeue when removing the skb */
+@@ -812,7 +812,7 @@ static void nes_mgt_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *
+                                       cq->cq_vbase[head].cqe_words[NES_NIC_CQE_HASH_RCVNXT]);
+                               skb_queue_head_init(&nesqp->pau_list);
+                               spin_lock_init(&nesqp->pau_lock);
+-                              atomic_inc(&pau_qps_created);
++                              atomic_inc_unchecked(&pau_qps_created);
+                               nes_change_quad_hash(nesdev, mgtvnic->nesvnic, nesqp);
+                       }
  
 diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
  
 diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
-index 9d7ffeb..a95dd7d 100644
+index c00d2f3..8834298 100644
 --- a/drivers/infiniband/hw/nes/nes_nic.c
 +++ b/drivers/infiniband/hw/nes/nes_nic.c
 --- a/drivers/infiniband/hw/nes/nes_nic.c
 +++ b/drivers/infiniband/hw/nes/nes_nic.c
-@@ -1274,31 +1274,31 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev,
+@@ -1277,39 +1277,39 @@ static void nes_netdev_get_ethtool_stats(struct net_device *netdev,
        target_stat_values[++index] = mh_detected;
        target_stat_values[++index] = mh_pauses_sent;
        target_stat_values[++index] = nesvnic->endnode_ipv4_tcp_retransmits;
        target_stat_values[++index] = mh_detected;
        target_stat_values[++index] = mh_pauses_sent;
        target_stat_values[++index] = nesvnic->endnode_ipv4_tcp_retransmits;
@@ -30439,8 +32525,18 @@ index 9d7ffeb..a95dd7d 100644
        target_stat_values[++index] = nesadapter->free_4kpbl;
        target_stat_values[++index] = nesadapter->free_256pbl;
        target_stat_values[++index] = int_mod_timer_init;
        target_stat_values[++index] = nesadapter->free_4kpbl;
        target_stat_values[++index] = nesadapter->free_256pbl;
        target_stat_values[++index] = int_mod_timer_init;
+       target_stat_values[++index] = nesvnic->lro_mgr.stats.aggregated;
+       target_stat_values[++index] = nesvnic->lro_mgr.stats.flushed;
+       target_stat_values[++index] = nesvnic->lro_mgr.stats.no_desc;
+-      target_stat_values[++index] = atomic_read(&pau_qps_created);
+-      target_stat_values[++index] = atomic_read(&pau_qps_destroyed);
++      target_stat_values[++index] = atomic_read_unchecked(&pau_qps_created);
++      target_stat_values[++index] = atomic_read_unchecked(&pau_qps_destroyed);
+ }
+ /**
 diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
 diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
-index 9f2f7d4..6d2fee2 100644
+index 5095bc4..41e8fff 100644
 --- a/drivers/infiniband/hw/nes/nes_verbs.c
 +++ b/drivers/infiniband/hw/nes/nes_verbs.c
 @@ -46,9 +46,9 @@
 --- a/drivers/infiniband/hw/nes/nes_verbs.c
 +++ b/drivers/infiniband/hw/nes/nes_verbs.c
 @@ -46,9 +46,9 @@
@@ -30467,7 +32563,7 @@ index 9f2f7d4..6d2fee2 100644
                        if (nes_drv_opt & NES_DRV_OPT_NO_INLINE_DATA) {
 @@ -1460,7 +1460,7 @@ static int nes_destroy_qp(struct ib_qp *ibqp)
        struct iw_cm_event cm_event;
                        if (nes_drv_opt & NES_DRV_OPT_NO_INLINE_DATA) {
 @@ -1460,7 +1460,7 @@ static int nes_destroy_qp(struct ib_qp *ibqp)
        struct iw_cm_event cm_event;
-       int ret;
+       int ret = 0;
  
 -      atomic_inc(&sw_qps_destroyed);
 +      atomic_inc_unchecked(&sw_qps_destroyed);
  
 -      atomic_inc(&sw_qps_destroyed);
 +      atomic_inc_unchecked(&sw_qps_destroyed);
@@ -30475,7 +32571,7 @@ index 9f2f7d4..6d2fee2 100644
  
        /* Blow away the connection if it exists. */
 diff --git a/drivers/infiniband/hw/qib/qib.h b/drivers/infiniband/hw/qib/qib.h
  
        /* Blow away the connection if it exists. */
 diff --git a/drivers/infiniband/hw/qib/qib.h b/drivers/infiniband/hw/qib/qib.h
-index c9624ea..e025b66 100644
+index b881bdc..c2e360c 100644
 --- a/drivers/infiniband/hw/qib/qib.h
 +++ b/drivers/infiniband/hw/qib/qib.h
 @@ -51,6 +51,7 @@
 --- a/drivers/infiniband/hw/qib/qib.h
 +++ b/drivers/infiniband/hw/qib/qib.h
 @@ -51,6 +51,7 @@
@@ -30486,6 +32582,19 @@ index c9624ea..e025b66 100644
  
  #include "qib_common.h"
  #include "qib_verbs.h"
  
  #include "qib_common.h"
  #include "qib_verbs.h"
+diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c
+index df7fa25..0c854f0 100644
+--- a/drivers/infiniband/hw/qib/qib_fs.c
++++ b/drivers/infiniband/hw/qib/qib_fs.c
+@@ -267,6 +267,8 @@ static const struct file_operations qsfp_ops[] = {
+ };
+ static ssize_t flash_read(struct file *file, char __user *buf,
++                        size_t count, loff_t *ppos) __size_overflow(3);
++static ssize_t flash_read(struct file *file, char __user *buf,
+                         size_t count, loff_t *ppos)
+ {
+       struct qib_devdata *dd;
 diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
 index c351aa4..e6967c2 100644
 --- a/drivers/input/gameport/gameport.c
 diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
 index c351aa4..e6967c2 100644
 --- a/drivers/input/gameport/gameport.c
@@ -30530,7 +32639,7 @@ index da38d97..2aa0b79 100644
        error = device_add(&dev->dev);
        if (error)
 diff --git a/drivers/input/joystick/sidewinder.c b/drivers/input/joystick/sidewinder.c
        error = device_add(&dev->dev);
        if (error)
 diff --git a/drivers/input/joystick/sidewinder.c b/drivers/input/joystick/sidewinder.c
-index b8d8611..15f8d2c 100644
+index b8d8611..7a4a04b 100644
 --- a/drivers/input/joystick/sidewinder.c
 +++ b/drivers/input/joystick/sidewinder.c
 @@ -30,6 +30,7 @@
 --- a/drivers/input/joystick/sidewinder.c
 +++ b/drivers/input/joystick/sidewinder.c
 @@ -30,6 +30,7 @@
@@ -30541,15 +32650,6 @@ index b8d8611..15f8d2c 100644
  #include <linux/init.h>
  #include <linux/input.h>
  #include <linux/gameport.h>
  #include <linux/init.h>
  #include <linux/input.h>
  #include <linux/gameport.h>
-@@ -428,6 +429,8 @@ static int sw_read(struct sw *sw)
-       unsigned char buf[SW_LENGTH];
-       int i;
-+      pax_track_stack();
-+
-       i = sw_read_packet(sw->gameport, buf, sw->length, 0);
-       if (sw->type == SW_ID_3DP && sw->length == 66 && i != 66) {             /* Broken packet, try to fix */
 diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
 index d728875..844c89b 100644
 --- a/drivers/input/joystick/xpad.c
 diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
 index d728875..844c89b 100644
 --- a/drivers/input/joystick/xpad.c
@@ -30683,10 +32783,10 @@ index 212efaf..f187c6b 100644
        struct tasklet_struct if_wake_tasklet;
        unsigned control_state;
 diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c
        struct tasklet_struct if_wake_tasklet;
        unsigned control_state;
 diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c
-index e35058b..5898a8b 100644
+index ee0a549..a7c9798 100644
 --- a/drivers/isdn/gigaset/interface.c
 +++ b/drivers/isdn/gigaset/interface.c
 --- a/drivers/isdn/gigaset/interface.c
 +++ b/drivers/isdn/gigaset/interface.c
-@@ -162,9 +162,7 @@ static int if_open(struct tty_struct *tty, struct file *filp)
+@@ -163,9 +163,7 @@ static int if_open(struct tty_struct *tty, struct file *filp)
        }
        tty->driver_data = cs;
  
        }
        tty->driver_data = cs;
  
@@ -30697,7 +32797,7 @@ index e35058b..5898a8b 100644
                spin_lock_irqsave(&cs->lock, flags);
                cs->tty = tty;
                spin_unlock_irqrestore(&cs->lock, flags);
                spin_lock_irqsave(&cs->lock, flags);
                cs->tty = tty;
                spin_unlock_irqrestore(&cs->lock, flags);
-@@ -192,10 +190,10 @@ static void if_close(struct tty_struct *tty, struct file *filp)
+@@ -193,10 +191,10 @@ static void if_close(struct tty_struct *tty, struct file *filp)
  
        if (!cs->connected)
                gig_dbg(DEBUG_IF, "not connected");     /* nothing to do */
  
        if (!cs->connected)
                gig_dbg(DEBUG_IF, "not connected");     /* nothing to do */
@@ -30710,7 +32810,7 @@ index e35058b..5898a8b 100644
                        spin_lock_irqsave(&cs->lock, flags);
                        cs->tty = NULL;
                        spin_unlock_irqrestore(&cs->lock, flags);
                        spin_lock_irqsave(&cs->lock, flags);
                        cs->tty = NULL;
                        spin_unlock_irqrestore(&cs->lock, flags);
-@@ -230,7 +228,7 @@ static int if_ioctl(struct tty_struct *tty,
+@@ -231,7 +229,7 @@ static int if_ioctl(struct tty_struct *tty,
        if (!cs->connected) {
                gig_dbg(DEBUG_IF, "not connected");
                retval = -ENODEV;
        if (!cs->connected) {
                gig_dbg(DEBUG_IF, "not connected");
                retval = -ENODEV;
@@ -30719,7 +32819,7 @@ index e35058b..5898a8b 100644
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else {
                retval = 0;
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else {
                retval = 0;
-@@ -360,7 +358,7 @@ static int if_write(struct tty_struct *tty, const unsigned char *buf, int count)
+@@ -361,7 +359,7 @@ static int if_write(struct tty_struct *tty, const unsigned char *buf, int count)
                retval = -ENODEV;
                goto done;
        }
                retval = -ENODEV;
                goto done;
        }
@@ -30728,7 +32828,7 @@ index e35058b..5898a8b 100644
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
                retval = -ENODEV;
                goto done;
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
                retval = -ENODEV;
                goto done;
-@@ -413,7 +411,7 @@ static int if_write_room(struct tty_struct *tty)
+@@ -414,7 +412,7 @@ static int if_write_room(struct tty_struct *tty)
        if (!cs->connected) {
                gig_dbg(DEBUG_IF, "not connected");
                retval = -ENODEV;
        if (!cs->connected) {
                gig_dbg(DEBUG_IF, "not connected");
                retval = -ENODEV;
@@ -30737,7 +32837,7 @@ index e35058b..5898a8b 100644
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else if (cs->mstate != MS_LOCKED) {
                dev_warn(cs->dev, "can't write to unlocked device\n");
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else if (cs->mstate != MS_LOCKED) {
                dev_warn(cs->dev, "can't write to unlocked device\n");
-@@ -443,7 +441,7 @@ static int if_chars_in_buffer(struct tty_struct *tty)
+@@ -444,7 +442,7 @@ static int if_chars_in_buffer(struct tty_struct *tty)
  
        if (!cs->connected)
                gig_dbg(DEBUG_IF, "not connected");
  
        if (!cs->connected)
                gig_dbg(DEBUG_IF, "not connected");
@@ -30746,7 +32846,7 @@ index e35058b..5898a8b 100644
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else if (cs->mstate != MS_LOCKED)
                dev_warn(cs->dev, "can't write to unlocked device\n");
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else if (cs->mstate != MS_LOCKED)
                dev_warn(cs->dev, "can't write to unlocked device\n");
-@@ -471,7 +469,7 @@ static void if_throttle(struct tty_struct *tty)
+@@ -472,7 +470,7 @@ static void if_throttle(struct tty_struct *tty)
  
        if (!cs->connected)
                gig_dbg(DEBUG_IF, "not connected");     /* nothing to do */
  
        if (!cs->connected)
                gig_dbg(DEBUG_IF, "not connected");     /* nothing to do */
@@ -30755,7 +32855,7 @@ index e35058b..5898a8b 100644
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else
                gig_dbg(DEBUG_IF, "%s: not implemented\n", __func__);
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else
                gig_dbg(DEBUG_IF, "%s: not implemented\n", __func__);
-@@ -495,7 +493,7 @@ static void if_unthrottle(struct tty_struct *tty)
+@@ -496,7 +494,7 @@ static void if_unthrottle(struct tty_struct *tty)
  
        if (!cs->connected)
                gig_dbg(DEBUG_IF, "not connected");     /* nothing to do */
  
        if (!cs->connected)
                gig_dbg(DEBUG_IF, "not connected");     /* nothing to do */
@@ -30764,7 +32864,7 @@ index e35058b..5898a8b 100644
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else
                gig_dbg(DEBUG_IF, "%s: not implemented\n", __func__);
                dev_warn(cs->dev, "%s: device not opened\n", __func__);
        else
                gig_dbg(DEBUG_IF, "%s: not implemented\n", __func__);
-@@ -526,7 +524,7 @@ static void if_set_termios(struct tty_struct *tty, struct ktermios *old)
+@@ -527,7 +525,7 @@ static void if_set_termios(struct tty_struct *tty, struct ktermios *old)
                goto out;
        }
  
                goto out;
        }
  
@@ -30795,57 +32895,6 @@ index 2a57da59..e7a12ed 100644
                                return -EFAULT;
                } else {
                        memcpy(buf, dp, left);
                                return -EFAULT;
                } else {
                        memcpy(buf, dp, left);
-diff --git a/drivers/isdn/hardware/eicon/capidtmf.c b/drivers/isdn/hardware/eicon/capidtmf.c
-index f130724..c373c68 100644
---- a/drivers/isdn/hardware/eicon/capidtmf.c
-+++ b/drivers/isdn/hardware/eicon/capidtmf.c
-@@ -498,6 +498,7 @@ void capidtmf_recv_block (t_capidtmf_state   *p_state, byte   *buffer, word leng
-   byte goertzel_result_buffer[CAPIDTMF_RECV_TOTAL_FREQUENCY_COUNT];
-     short windowed_sample_buffer[CAPIDTMF_RECV_WINDOWED_SAMPLES];
-+  pax_track_stack();
-   if (p_state->recv.state & CAPIDTMF_RECV_STATE_DTMF_ACTIVE)
-   {
-diff --git a/drivers/isdn/hardware/eicon/capifunc.c b/drivers/isdn/hardware/eicon/capifunc.c
-index 4d425c6..a9be6c4 100644
---- a/drivers/isdn/hardware/eicon/capifunc.c
-+++ b/drivers/isdn/hardware/eicon/capifunc.c
-@@ -1055,6 +1055,8 @@ static int divacapi_connect_didd(void)
-       IDI_SYNC_REQ req;
-       DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
-+      pax_track_stack();
-+
-       DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
-       for (x = 0; x < MAX_DESCRIPTORS; x++) {
-diff --git a/drivers/isdn/hardware/eicon/diddfunc.c b/drivers/isdn/hardware/eicon/diddfunc.c
-index 3029234..ef0d9e2 100644
---- a/drivers/isdn/hardware/eicon/diddfunc.c
-+++ b/drivers/isdn/hardware/eicon/diddfunc.c
-@@ -54,6 +54,8 @@ static int DIVA_INIT_FUNCTION connect_didd(void)
-       IDI_SYNC_REQ req;
-       DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
-+      pax_track_stack();
-+
-       DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
-       for (x = 0; x < MAX_DESCRIPTORS; x++) {
-diff --git a/drivers/isdn/hardware/eicon/divasfunc.c b/drivers/isdn/hardware/eicon/divasfunc.c
-index 0bbee78..a0d0a01 100644
---- a/drivers/isdn/hardware/eicon/divasfunc.c
-+++ b/drivers/isdn/hardware/eicon/divasfunc.c
-@@ -160,6 +160,8 @@ static int DIVA_INIT_FUNCTION connect_didd(void)
-       IDI_SYNC_REQ req;
-       DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
-+      pax_track_stack();
-+
-       DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
-       for (x = 0; x < MAX_DESCRIPTORS; x++) {
 diff --git a/drivers/isdn/hardware/eicon/divasync.h b/drivers/isdn/hardware/eicon/divasync.h
 index 85784a7..a19ca98 100644
 --- a/drivers/isdn/hardware/eicon/divasync.h
 diff --git a/drivers/isdn/hardware/eicon/divasync.h b/drivers/isdn/hardware/eicon/divasync.h
 index 85784a7..a19ca98 100644
 --- a/drivers/isdn/hardware/eicon/divasync.h
@@ -30859,72 +32908,6 @@ index 85784a7..a19ca98 100644
  typedef struct _diva_didd_read_adapter_array {
   void   * buffer;
   dword length;
  typedef struct _diva_didd_read_adapter_array {
   void   * buffer;
   dword length;
-diff --git a/drivers/isdn/hardware/eicon/idifunc.c b/drivers/isdn/hardware/eicon/idifunc.c
-index db87d51..7d09acf 100644
---- a/drivers/isdn/hardware/eicon/idifunc.c
-+++ b/drivers/isdn/hardware/eicon/idifunc.c
-@@ -188,6 +188,8 @@ static int DIVA_INIT_FUNCTION connect_didd(void)
-       IDI_SYNC_REQ req;
-       DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
-+      pax_track_stack();
-+
-       DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
-       for (x = 0; x < MAX_DESCRIPTORS; x++) {
-diff --git a/drivers/isdn/hardware/eicon/message.c b/drivers/isdn/hardware/eicon/message.c
-index a339598..b6a8bfc 100644
---- a/drivers/isdn/hardware/eicon/message.c
-+++ b/drivers/isdn/hardware/eicon/message.c
-@@ -4886,6 +4886,8 @@ static void sig_ind(PLCI *plci)
-   dword d;
-   word w;
-+  pax_track_stack();
-+
-   a = plci->adapter;
-   Id = ((word)plci->Id<<8)|a->Id;
-   PUT_WORD(&SS_Ind[4],0x0000);
-@@ -7480,6 +7482,8 @@ static word add_b1(PLCI *plci, API_PARSE *bp, word b_channel_info,
-   word j, n, w;
-   dword d;
-+  pax_track_stack();
-+
-   for(i=0;i<8;i++) bp_parms[i].length = 0;
-   for(i=0;i<2;i++) global_config[i].length = 0;
-@@ -7954,6 +7958,8 @@ static word add_b23(PLCI *plci, API_PARSE *bp)
-   const byte llc3[] = {4,3,2,2,6,6,0};
-   const byte header[] = {0,2,3,3,0,0,0};
-+  pax_track_stack();
-+
-   for(i=0;i<8;i++) bp_parms[i].length = 0;
-   for(i=0;i<6;i++) b2_config_parms[i].length = 0;
-   for(i=0;i<5;i++) b3_config_parms[i].length = 0;
-@@ -14741,6 +14747,8 @@ static void group_optimization(DIVA_CAPI_ADAPTER   * a, PLCI   * plci)
-   word appl_number_group_type[MAX_APPL];
-   PLCI   *auxplci;
-+  pax_track_stack();
-+
-   set_group_ind_mask (plci); /* all APPLs within this inc. call are allowed to dial in */
-   if(!a->group_optimization_enabled)
-diff --git a/drivers/isdn/hardware/eicon/mntfunc.c b/drivers/isdn/hardware/eicon/mntfunc.c
-index a564b75..f3cf8b5 100644
---- a/drivers/isdn/hardware/eicon/mntfunc.c
-+++ b/drivers/isdn/hardware/eicon/mntfunc.c
-@@ -79,6 +79,8 @@ static int DIVA_INIT_FUNCTION connect_didd(void)
-       IDI_SYNC_REQ req;
-       DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
-+      pax_track_stack();
-+
-       DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
-       for (x = 0; x < MAX_DESCRIPTORS; x++) {
 diff --git a/drivers/isdn/hardware/eicon/xdi_adapter.h b/drivers/isdn/hardware/eicon/xdi_adapter.h
 index a3bd163..8956575 100644
 --- a/drivers/isdn/hardware/eicon/xdi_adapter.h
 diff --git a/drivers/isdn/hardware/eicon/xdi_adapter.h b/drivers/isdn/hardware/eicon/xdi_adapter.h
 index a3bd163..8956575 100644
 --- a/drivers/isdn/hardware/eicon/xdi_adapter.h
@@ -30938,19 +32921,19 @@ index a3bd163..8956575 100644
  
  typedef struct _diva_os_xdi_adapter {
        struct list_head link;
  
  typedef struct _diva_os_xdi_adapter {
        struct list_head link;
-diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
-index 6ed82ad..b05ac05 100644
---- a/drivers/isdn/i4l/isdn_common.c
-+++ b/drivers/isdn/i4l/isdn_common.c
-@@ -1286,6 +1286,8 @@ isdn_ioctl(struct file *file, uint cmd, ulong arg)
-       } iocpar;
-       void __user *argp = (void __user *)arg;
-+      pax_track_stack();
-+
- #define name  iocpar.name
- #define bname iocpar.bname
- #define iocts iocpar.iocts
+diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c
+index 2339d73..802ab87a 100644
+--- a/drivers/isdn/i4l/isdn_net.c
++++ b/drivers/isdn/i4l/isdn_net.c
+@@ -1901,7 +1901,7 @@ static int isdn_net_header(struct sk_buff *skb, struct net_device *dev,
+ {
+       isdn_net_local *lp = netdev_priv(dev);
+       unsigned char *p;
+-      ushort len = 0;
++      int len = 0;
+       switch (lp->p_encap) {
+               case ISDN_NET_ENCAP_ETHER:
 diff --git a/drivers/isdn/icn/icn.c b/drivers/isdn/icn/icn.c
 index 1f355bb..43f1fea 100644
 --- a/drivers/isdn/icn/icn.c
 diff --git a/drivers/isdn/icn/icn.c b/drivers/isdn/icn/icn.c
 index 1f355bb..43f1fea 100644
 --- a/drivers/isdn/icn/icn.c
@@ -30965,7 +32948,7 @@ index 1f355bb..43f1fea 100644
                } else
                        memcpy(msg, buf, count);
 diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c
                } else
                        memcpy(msg, buf, count);
 diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c
-index 2535933..09a8e86 100644
+index b5fdcb7..5b6c59f 100644
 --- a/drivers/lguest/core.c
 +++ b/drivers/lguest/core.c
 @@ -92,9 +92,17 @@ static __init int map_switcher(void)
 --- a/drivers/lguest/core.c
 +++ b/drivers/lguest/core.c
 @@ -92,9 +92,17 @@ static __init int map_switcher(void)
@@ -30995,6 +32978,18 @@ index 2535933..09a8e86 100644
               end_switcher_text - start_switcher_text);
  
        printk(KERN_INFO "lguest: mapped switcher at %p\n",
               end_switcher_text - start_switcher_text);
  
        printk(KERN_INFO "lguest: mapped switcher at %p\n",
+diff --git a/drivers/lguest/lguest_user.c b/drivers/lguest/lguest_user.c
+index ff4a0bc..f5fdd9c 100644
+--- a/drivers/lguest/lguest_user.c
++++ b/drivers/lguest/lguest_user.c
+@@ -198,6 +198,7 @@ static int user_send_irq(struct lg_cpu *cpu, const unsigned long __user *input)
+  * Once our Guest is initialized, the Launcher makes it run by reading
+  * from /dev/lguest.
+  */
++static ssize_t read(struct file *file, char __user *user, size_t size,loff_t*o) __size_overflow(3);
+ static ssize_t read(struct file *file, char __user *user, size_t size,loff_t*o)
+ {
+       struct lguest *lg = file->private_data;
 diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c
 index 65af42f..530c87a 100644
 --- a/drivers/lguest/x86/core.c
 diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c
 index 65af42f..530c87a 100644
 --- a/drivers/lguest/x86/core.c
@@ -31116,10 +33111,10 @@ index 4daf9e5..b8d1d0f 100644
        .device         = PCI_ANY_ID,
        .subvendor      = PCI_ANY_ID,
 diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
        .device         = PCI_ANY_ID,
        .subvendor      = PCI_ANY_ID,
 diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
-index 2e9a3ca..c2fb229 100644
+index 1ce84ed..0fdd40a 100644
 --- a/drivers/md/dm-ioctl.c
 +++ b/drivers/md/dm-ioctl.c
 --- a/drivers/md/dm-ioctl.c
 +++ b/drivers/md/dm-ioctl.c
-@@ -1578,7 +1578,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param)
+@@ -1589,7 +1589,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param)
            cmd == DM_LIST_VERSIONS_CMD)
                return 0;
  
            cmd == DM_LIST_VERSIONS_CMD)
                return 0;
  
@@ -31247,10 +33242,10 @@ index 3d80cf0..b77cc47 100644
                                schedule_work(&sc->trigger_event);
                }
 diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
                                schedule_work(&sc->trigger_event);
                }
 diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
-index bc04518..7a83b81 100644
+index 8e91321..fd17aef 100644
 --- a/drivers/md/dm-table.c
 +++ b/drivers/md/dm-table.c
 --- a/drivers/md/dm-table.c
 +++ b/drivers/md/dm-table.c
-@@ -389,7 +389,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
+@@ -391,7 +391,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
        if (!dev_size)
                return 0;
  
        if (!dev_size)
                return 0;
  
@@ -31259,11 +33254,33 @@ index bc04518..7a83b81 100644
                DMWARN("%s: %s too small for target: "
                       "start=%llu, len=%llu, dev_size=%llu",
                       dm_device_name(ti->table->md), bdevname(bdev, b),
                DMWARN("%s: %s too small for target: "
                       "start=%llu, len=%llu, dev_size=%llu",
                       dm_device_name(ti->table->md), bdevname(bdev, b),
+diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
+index 237571a..fb6d19b 100644
+--- a/drivers/md/dm-thin-metadata.c
++++ b/drivers/md/dm-thin-metadata.c
+@@ -432,7 +432,7 @@ static int init_pmd(struct dm_pool_metadata *pmd,
+       pmd->info.tm = tm;
+       pmd->info.levels = 2;
+-      pmd->info.value_type.context = pmd->data_sm;
++      pmd->info.value_type.context = (dm_space_map_no_const *)pmd->data_sm;
+       pmd->info.value_type.size = sizeof(__le64);
+       pmd->info.value_type.inc = data_block_inc;
+       pmd->info.value_type.dec = data_block_dec;
+@@ -451,7 +451,7 @@ static int init_pmd(struct dm_pool_metadata *pmd,
+       pmd->bl_info.tm = tm;
+       pmd->bl_info.levels = 1;
+-      pmd->bl_info.value_type.context = pmd->data_sm;
++      pmd->bl_info.value_type.context = (dm_space_map_no_const *)pmd->data_sm;
+       pmd->bl_info.value_type.size = sizeof(__le64);
+       pmd->bl_info.value_type.inc = data_block_inc;
+       pmd->bl_info.value_type.dec = data_block_dec;
 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
-index 52b39f3..83a8b6b 100644
+index 4720f68..78d1df7 100644
 --- a/drivers/md/dm.c
 +++ b/drivers/md/dm.c
 --- a/drivers/md/dm.c
 +++ b/drivers/md/dm.c
-@@ -165,9 +165,9 @@ struct mapped_device {
+@@ -177,9 +177,9 @@ struct mapped_device {
        /*
         * Event handling.
         */
        /*
         * Event handling.
         */
@@ -31275,7 +33292,7 @@ index 52b39f3..83a8b6b 100644
        struct list_head uevent_list;
        spinlock_t uevent_lock; /* Protect access to uevent_list */
  
        struct list_head uevent_list;
        spinlock_t uevent_lock; /* Protect access to uevent_list */
  
-@@ -1843,8 +1843,8 @@ static struct mapped_device *alloc_dev(int minor)
+@@ -1845,8 +1845,8 @@ static struct mapped_device *alloc_dev(int minor)
        rwlock_init(&md->map_lock);
        atomic_set(&md->holders, 1);
        atomic_set(&md->open_count, 0);
        rwlock_init(&md->map_lock);
        atomic_set(&md->holders, 1);
        atomic_set(&md->open_count, 0);
@@ -31286,7 +33303,7 @@ index 52b39f3..83a8b6b 100644
        INIT_LIST_HEAD(&md->uevent_list);
        spin_lock_init(&md->uevent_lock);
  
        INIT_LIST_HEAD(&md->uevent_list);
        spin_lock_init(&md->uevent_lock);
  
-@@ -1978,7 +1978,7 @@ static void event_callback(void *context)
+@@ -1980,7 +1980,7 @@ static void event_callback(void *context)
  
        dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
  
  
        dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
  
@@ -31295,7 +33312,7 @@ index 52b39f3..83a8b6b 100644
        wake_up(&md->eventq);
  }
  
        wake_up(&md->eventq);
  }
  
-@@ -2614,18 +2614,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
+@@ -2622,18 +2622,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
  
  uint32_t dm_next_uevent_seq(struct mapped_device *md)
  {
  
  uint32_t dm_next_uevent_seq(struct mapped_device *md)
  {
@@ -31318,32 +33335,32 @@ index 52b39f3..83a8b6b 100644
  
  void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
 diff --git a/drivers/md/md.c b/drivers/md/md.c
  
  void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
 diff --git a/drivers/md/md.c b/drivers/md/md.c
-index 5c95ccb..217fa57 100644
+index f47f1f8..b7f559e 100644
 --- a/drivers/md/md.c
 +++ b/drivers/md/md.c
 --- a/drivers/md/md.c
 +++ b/drivers/md/md.c
-@@ -280,10 +280,10 @@ EXPORT_SYMBOL_GPL(md_trim_bio);
+@@ -278,10 +278,10 @@ EXPORT_SYMBOL_GPL(md_trim_bio);
   *  start build, activate spare
   */
  static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters);
 -static atomic_t md_event_count;
 +static atomic_unchecked_t md_event_count;
   *  start build, activate spare
   */
  static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters);
 -static atomic_t md_event_count;
 +static atomic_unchecked_t md_event_count;
- void md_new_event(mddev_t *mddev)
+ void md_new_event(struct mddev *mddev)
  {
 -      atomic_inc(&md_event_count);
 +      atomic_inc_unchecked(&md_event_count);
        wake_up(&md_event_waiters);
  }
  EXPORT_SYMBOL_GPL(md_new_event);
  {
 -      atomic_inc(&md_event_count);
 +      atomic_inc_unchecked(&md_event_count);
        wake_up(&md_event_waiters);
  }
  EXPORT_SYMBOL_GPL(md_new_event);
-@@ -293,7 +293,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
+@@ -291,7 +291,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
   */
   */
- static void md_new_event_inintr(mddev_t *mddev)
+ static void md_new_event_inintr(struct mddev *mddev)
  {
 -      atomic_inc(&md_event_count);
 +      atomic_inc_unchecked(&md_event_count);
        wake_up(&md_event_waiters);
  }
  
  {
 -      atomic_inc(&md_event_count);
 +      atomic_inc_unchecked(&md_event_count);
        wake_up(&md_event_waiters);
  }
  
-@@ -1531,7 +1531,7 @@ static int super_1_load(mdk_rdev_t *rdev, mdk_rdev_t *refdev, int minor_version)
+@@ -1525,7 +1525,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_
  
        rdev->preferred_minor = 0xffff;
        rdev->data_offset = le64_to_cpu(sb->data_offset);
  
        rdev->preferred_minor = 0xffff;
        rdev->data_offset = le64_to_cpu(sb->data_offset);
@@ -31352,7 +33369,7 @@ index 5c95ccb..217fa57 100644
  
        rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256;
        bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1;
  
        rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256;
        bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1;
-@@ -1748,7 +1748,7 @@ static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev)
+@@ -1742,7 +1742,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev)
        else
                sb->resync_offset = cpu_to_le64(0);
  
        else
                sb->resync_offset = cpu_to_le64(0);
  
@@ -31361,16 +33378,16 @@ index 5c95ccb..217fa57 100644
  
        sb->raid_disks = cpu_to_le32(mddev->raid_disks);
        sb->size = cpu_to_le64(mddev->dev_sectors);
  
        sb->raid_disks = cpu_to_le32(mddev->raid_disks);
        sb->size = cpu_to_le64(mddev->dev_sectors);
-@@ -2643,7 +2643,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store);
+@@ -2639,7 +2639,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store);
  static ssize_t
  static ssize_t
- errors_show(mdk_rdev_t *rdev, char *page)
+ errors_show(struct md_rdev *rdev, char *page)
  {
 -      return sprintf(page, "%d\n", atomic_read(&rdev->corrected_errors));
 +      return sprintf(page, "%d\n", atomic_read_unchecked(&rdev->corrected_errors));
  }
  
  static ssize_t
  {
 -      return sprintf(page, "%d\n", atomic_read(&rdev->corrected_errors));
 +      return sprintf(page, "%d\n", atomic_read_unchecked(&rdev->corrected_errors));
  }
  
  static ssize_t
-@@ -2652,7 +2652,7 @@ errors_store(mdk_rdev_t *rdev, const char *buf, size_t len)
+@@ -2648,7 +2648,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len)
        char *e;
        unsigned long n = simple_strtoul(buf, &e, 10);
        if (*buf && (*e == 0 || *e == '\n')) {
        char *e;
        unsigned long n = simple_strtoul(buf, &e, 10);
        if (*buf && (*e == 0 || *e == '\n')) {
@@ -31379,7 +33396,7 @@ index 5c95ccb..217fa57 100644
                return len;
        }
        return -EINVAL;
                return len;
        }
        return -EINVAL;
-@@ -3042,8 +3042,8 @@ int md_rdev_init(mdk_rdev_t *rdev)
+@@ -3039,8 +3039,8 @@ int md_rdev_init(struct md_rdev *rdev)
        rdev->sb_loaded = 0;
        rdev->bb_page = NULL;
        atomic_set(&rdev->nr_pending, 0);
        rdev->sb_loaded = 0;
        rdev->bb_page = NULL;
        atomic_set(&rdev->nr_pending, 0);
@@ -31390,7 +33407,7 @@ index 5c95ccb..217fa57 100644
  
        INIT_LIST_HEAD(&rdev->same_set);
        init_waitqueue_head(&rdev->blocked_wait);
  
        INIT_LIST_HEAD(&rdev->same_set);
        init_waitqueue_head(&rdev->blocked_wait);
-@@ -6667,7 +6667,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
+@@ -6683,7 +6683,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
  
                spin_unlock(&pers_lock);
                seq_printf(seq, "\n");
  
                spin_unlock(&pers_lock);
                seq_printf(seq, "\n");
@@ -31399,7 +33416,7 @@ index 5c95ccb..217fa57 100644
                return 0;
        }
        if (v == (void*)2) {
                return 0;
        }
        if (v == (void*)2) {
-@@ -6756,7 +6756,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
+@@ -6772,7 +6772,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
                                chunk_kb ? "KB" : "B");
                        if (bitmap->file) {
                                seq_printf(seq, ", file: ");
                                chunk_kb ? "KB" : "B");
                        if (bitmap->file) {
                                seq_printf(seq, ", file: ");
@@ -31408,7 +33425,7 @@ index 5c95ccb..217fa57 100644
                        }
  
                        seq_printf(seq, "\n");
                        }
  
                        seq_printf(seq, "\n");
-@@ -6787,7 +6787,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
+@@ -6803,7 +6803,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
                return error;
  
        seq = file->private_data;
                return error;
  
        seq = file->private_data;
@@ -31417,7 +33434,7 @@ index 5c95ccb..217fa57 100644
        return error;
  }
  
        return error;
  }
  
-@@ -6801,7 +6801,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
+@@ -6817,7 +6817,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
        /* always allow read */
        mask = POLLIN | POLLRDNORM;
  
        /* always allow read */
        mask = POLLIN | POLLRDNORM;
  
@@ -31426,7 +33443,7 @@ index 5c95ccb..217fa57 100644
                mask |= POLLERR | POLLPRI;
        return mask;
  }
                mask |= POLLERR | POLLPRI;
        return mask;
  }
-@@ -6845,7 +6845,7 @@ static int is_mddev_idle(mddev_t *mddev, int init)
+@@ -6861,7 +6861,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
                struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
                curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
                              (int)part_stat_read(&disk->part0, sectors[1]) -
                struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
                curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
                              (int)part_stat_read(&disk->part0, sectors[1]) -
@@ -31436,10 +33453,10 @@ index 5c95ccb..217fa57 100644
                 * as sync_io is counted when a request starts, and
                 * disk_stats is counted when it completes.
 diff --git a/drivers/md/md.h b/drivers/md/md.h
                 * as sync_io is counted when a request starts, and
                 * disk_stats is counted when it completes.
 diff --git a/drivers/md/md.h b/drivers/md/md.h
-index 0a309dc..7e01d7f 100644
+index cf742d9..7c7c745 100644
 --- a/drivers/md/md.h
 +++ b/drivers/md/md.h
 --- a/drivers/md/md.h
 +++ b/drivers/md/md.h
-@@ -124,13 +124,13 @@ struct mdk_rdev_s
+@@ -120,13 +120,13 @@ struct md_rdev {
                                         * only maintained for arrays that
                                         * support hot removal
                                         */
                                         * only maintained for arrays that
                                         * support hot removal
                                         */
@@ -31455,7 +33472,7 @@ index 0a309dc..7e01d7f 100644
                                           * for reporting to userspace and storing
                                           * in superblock.
                                           */
                                           * for reporting to userspace and storing
                                           * in superblock.
                                           */
-@@ -415,7 +415,7 @@ static inline void rdev_dec_pending(mdk_rdev_t *rdev, mddev_t *mddev)
+@@ -410,7 +410,7 @@ static inline void rdev_dec_pending(struct md_rdev *rdev, struct mddev *mddev)
  
  static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
  {
  
  static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
  {
@@ -31463,12 +33480,63 @@ index 0a309dc..7e01d7f 100644
 +      atomic_add_unchecked(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
  }
  
 +      atomic_add_unchecked(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
  }
  
- struct mdk_personality
+ struct md_personality
+diff --git a/drivers/md/persistent-data/dm-space-map-checker.c b/drivers/md/persistent-data/dm-space-map-checker.c
+index 50ed53b..4f29d7d 100644
+--- a/drivers/md/persistent-data/dm-space-map-checker.c
++++ b/drivers/md/persistent-data/dm-space-map-checker.c
+@@ -159,7 +159,7 @@ static void ca_destroy(struct count_array *ca)
+ /*----------------------------------------------------------------*/
+ struct sm_checker {
+-      struct dm_space_map sm;
++      dm_space_map_no_const sm;
+       struct count_array old_counts;
+       struct count_array counts;
+diff --git a/drivers/md/persistent-data/dm-space-map-disk.c b/drivers/md/persistent-data/dm-space-map-disk.c
+index fc469ba..2d91555 100644
+--- a/drivers/md/persistent-data/dm-space-map-disk.c
++++ b/drivers/md/persistent-data/dm-space-map-disk.c
+@@ -23,7 +23,7 @@
+  * Space map interface.
+  */
+ struct sm_disk {
+-      struct dm_space_map sm;
++      dm_space_map_no_const sm;
+       struct ll_disk ll;
+       struct ll_disk old_ll;
+diff --git a/drivers/md/persistent-data/dm-space-map-metadata.c b/drivers/md/persistent-data/dm-space-map-metadata.c
+index e89ae5e..062e4c2 100644
+--- a/drivers/md/persistent-data/dm-space-map-metadata.c
++++ b/drivers/md/persistent-data/dm-space-map-metadata.c
+@@ -43,7 +43,7 @@ struct block_op {
+ };
+ struct sm_metadata {
+-      struct dm_space_map sm;
++      dm_space_map_no_const sm;
+       struct ll_disk ll;
+       struct ll_disk old_ll;
+diff --git a/drivers/md/persistent-data/dm-space-map.h b/drivers/md/persistent-data/dm-space-map.h
+index 1cbfc6b..56e1dbb 100644
+--- a/drivers/md/persistent-data/dm-space-map.h
++++ b/drivers/md/persistent-data/dm-space-map.h
+@@ -60,6 +60,7 @@ struct dm_space_map {
+       int (*root_size)(struct dm_space_map *sm, size_t *result);
+       int (*copy_root)(struct dm_space_map *sm, void *copy_to_here_le, size_t len);
+ };
++typedef struct dm_space_map __no_const dm_space_map_no_const;
+ /*----------------------------------------------------------------*/
 diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
 diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
-index d9587df..83a0dc3 100644
+index 7d9e071..015b1d5 100644
 --- a/drivers/md/raid1.c
 +++ b/drivers/md/raid1.c
 --- a/drivers/md/raid1.c
 +++ b/drivers/md/raid1.c
-@@ -1541,7 +1541,7 @@ static int fix_sync_read_error(r1bio_t *r1_bio)
+@@ -1568,7 +1568,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio)
                        if (r1_sync_page_io(rdev, sect, s,
                                            bio->bi_io_vec[idx].bv_page,
                                            READ) != 0)
                        if (r1_sync_page_io(rdev, sect, s,
                                            bio->bi_io_vec[idx].bv_page,
                                            READ) != 0)
@@ -31477,7 +33545,7 @@ index d9587df..83a0dc3 100644
                }
                sectors -= s;
                sect += s;
                }
                sectors -= s;
                sect += s;
-@@ -1754,7 +1754,7 @@ static void fix_read_error(conf_t *conf, int read_disk,
+@@ -1781,7 +1781,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk,
                            test_bit(In_sync, &rdev->flags)) {
                                if (r1_sync_page_io(rdev, sect, s,
                                                    conf->tmppage, READ)) {
                            test_bit(In_sync, &rdev->flags)) {
                                if (r1_sync_page_io(rdev, sect, s,
                                                    conf->tmppage, READ)) {
@@ -31487,10 +33555,10 @@ index d9587df..83a0dc3 100644
                                               "md/raid1:%s: read error corrected "
                                               "(%d sectors at %llu on %s)\n",
 diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
                                               "md/raid1:%s: read error corrected "
                                               "(%d sectors at %llu on %s)\n",
 diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
-index 1d44228..98db57d 100644
+index 685ddf3..955b087 100644
 --- a/drivers/md/raid10.c
 +++ b/drivers/md/raid10.c
 --- a/drivers/md/raid10.c
 +++ b/drivers/md/raid10.c
-@@ -1423,7 +1423,7 @@ static void end_sync_read(struct bio *bio, int error)
+@@ -1440,7 +1440,7 @@ static void end_sync_read(struct bio *bio, int error)
                /* The write handler will notice the lack of
                 * R10BIO_Uptodate and record any errors etc
                 */
                /* The write handler will notice the lack of
                 * R10BIO_Uptodate and record any errors etc
                 */
@@ -31499,7 +33567,7 @@ index 1d44228..98db57d 100644
                           &conf->mirrors[d].rdev->corrected_errors);
  
        /* for reconstruct, we always reschedule after a read.
                           &conf->mirrors[d].rdev->corrected_errors);
  
        /* for reconstruct, we always reschedule after a read.
-@@ -1723,7 +1723,7 @@ static void check_decay_read_errors(mddev_t *mddev, mdk_rdev_t *rdev)
+@@ -1740,7 +1740,7 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
  {
        struct timespec cur_time_mon;
        unsigned long hours_since_last;
  {
        struct timespec cur_time_mon;
        unsigned long hours_since_last;
@@ -31508,7 +33576,7 @@ index 1d44228..98db57d 100644
  
        ktime_get_ts(&cur_time_mon);
  
  
        ktime_get_ts(&cur_time_mon);
  
-@@ -1745,9 +1745,9 @@ static void check_decay_read_errors(mddev_t *mddev, mdk_rdev_t *rdev)
+@@ -1762,9 +1762,9 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
         * overflowing the shift of read_errors by hours_since_last.
         */
        if (hours_since_last >= 8 * sizeof(read_errors))
         * overflowing the shift of read_errors by hours_since_last.
         */
        if (hours_since_last >= 8 * sizeof(read_errors))
@@ -31519,8 +33587,8 @@ index 1d44228..98db57d 100644
 +              atomic_set_unchecked(&rdev->read_errors, read_errors >> hours_since_last);
  }
  
 +              atomic_set_unchecked(&rdev->read_errors, read_errors >> hours_since_last);
  }
  
- static int r10_sync_page_io(mdk_rdev_t *rdev, sector_t sector,
-@@ -1797,8 +1797,8 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio)
+ static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector,
+@@ -1814,8 +1814,8 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
                return;
  
        check_decay_read_errors(mddev, rdev);
                return;
  
        check_decay_read_errors(mddev, rdev);
@@ -31531,7 +33599,7 @@ index 1d44228..98db57d 100644
                char b[BDEVNAME_SIZE];
                bdevname(rdev->bdev, b);
  
                char b[BDEVNAME_SIZE];
                bdevname(rdev->bdev, b);
  
-@@ -1806,7 +1806,7 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio)
+@@ -1823,7 +1823,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
                       "md/raid10:%s: %s: Raid device exceeded "
                       "read_error threshold [cur %d:max %d]\n",
                       mdname(mddev), b,
                       "md/raid10:%s: %s: Raid device exceeded "
                       "read_error threshold [cur %d:max %d]\n",
                       mdname(mddev), b,
@@ -31540,7 +33608,7 @@ index 1d44228..98db57d 100644
                printk(KERN_NOTICE
                       "md/raid10:%s: %s: Failing raid device\n",
                       mdname(mddev), b);
                printk(KERN_NOTICE
                       "md/raid10:%s: %s: Failing raid device\n",
                       mdname(mddev), b);
-@@ -1951,7 +1951,7 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio)
+@@ -1968,7 +1968,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
                                       (unsigned long long)(
                                               sect + rdev->data_offset),
                                       bdevname(rdev->bdev, b));
                                       (unsigned long long)(
                                               sect + rdev->data_offset),
                                       bdevname(rdev->bdev, b));
@@ -31550,10 +33618,10 @@ index 1d44228..98db57d 100644
  
                        rdev_dec_pending(rdev, mddev);
 diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
  
                        rdev_dec_pending(rdev, mddev);
 diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
-index b6200c3..02e8702 100644
+index 858fdbb..b2dac95 100644
 --- a/drivers/md/raid5.c
 +++ b/drivers/md/raid5.c
 --- a/drivers/md/raid5.c
 +++ b/drivers/md/raid5.c
-@@ -1616,19 +1616,19 @@ static void raid5_end_read_request(struct bio * bi, int error)
+@@ -1610,19 +1610,19 @@ static void raid5_end_read_request(struct bio * bi, int error)
                                (unsigned long long)(sh->sector
                                                     + rdev->data_offset),
                                bdevname(rdev->bdev, b));
                                (unsigned long long)(sh->sector
                                                     + rdev->data_offset),
                                bdevname(rdev->bdev, b));
@@ -31577,7 +33645,7 @@ index b6200c3..02e8702 100644
                if (conf->mddev->degraded >= conf->max_degraded)
                        printk_ratelimited(
                                KERN_WARNING
                if (conf->mddev->degraded >= conf->max_degraded)
                        printk_ratelimited(
                                KERN_WARNING
-@@ -1648,7 +1648,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
+@@ -1642,7 +1642,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
                                (unsigned long long)(sh->sector
                                                     + rdev->data_offset),
                                bdn);
                                (unsigned long long)(sh->sector
                                                     + rdev->data_offset),
                                bdn);
@@ -31586,32 +33654,11 @@ index b6200c3..02e8702 100644
                         > conf->max_nr_stripes)
                        printk(KERN_WARNING
                               "md/raid:%s: Too many read errors, failing device %s.\n",
                         > conf->max_nr_stripes)
                        printk(KERN_WARNING
                               "md/raid:%s: Too many read errors, failing device %s.\n",
-@@ -1978,6 +1978,7 @@ static sector_t compute_blocknr(struct stripe_head *sh, int i, int previous)
-       sector_t r_sector;
-       struct stripe_head sh2;
-+      pax_track_stack();
-       chunk_offset = sector_div(new_sector, sectors_per_chunk);
-       stripe = new_sector;
-diff --git a/drivers/media/common/saa7146_hlp.c b/drivers/media/common/saa7146_hlp.c
-index 1d1d8d2..6c6837a 100644
---- a/drivers/media/common/saa7146_hlp.c
-+++ b/drivers/media/common/saa7146_hlp.c
-@@ -353,6 +353,8 @@ static void calculate_clipping_registers_rect(struct saa7146_dev *dev, struct sa
-       int x[32], y[32], w[32], h[32];
-+      pax_track_stack();
-+
-       /* clear out memory */
-       memset(&line_list[0],  0x00, sizeof(u32)*32);
-       memset(&pixel_list[0], 0x00, sizeof(u32)*32);
 diff --git a/drivers/media/dvb/ddbridge/ddbridge-core.c b/drivers/media/dvb/ddbridge/ddbridge-core.c
 diff --git a/drivers/media/dvb/ddbridge/ddbridge-core.c b/drivers/media/dvb/ddbridge/ddbridge-core.c
-index 573d540..16f78f3 100644
+index ba9a643..e474ab5 100644
 --- a/drivers/media/dvb/ddbridge/ddbridge-core.c
 +++ b/drivers/media/dvb/ddbridge/ddbridge-core.c
 --- a/drivers/media/dvb/ddbridge/ddbridge-core.c
 +++ b/drivers/media/dvb/ddbridge/ddbridge-core.c
-@@ -1675,7 +1675,7 @@ static struct ddb_info ddb_v6 = {
+@@ -1678,7 +1678,7 @@ static struct ddb_info ddb_v6 = {
        .subvendor   = _subvend, .subdevice = _subdev, \
        .driver_data = (unsigned long)&_driverdata }
  
        .subvendor   = _subvend, .subdevice = _subdev, \
        .driver_data = (unsigned long)&_driverdata }
  
@@ -31620,28 +33667,6 @@ index 573d540..16f78f3 100644
        DDB_ID(DDVID, 0x0002, DDVID, 0x0001, ddb_octopus),
        DDB_ID(DDVID, 0x0003, DDVID, 0x0001, ddb_octopus),
        DDB_ID(DDVID, 0x0003, DDVID, 0x0002, ddb_octopus_le),
        DDB_ID(DDVID, 0x0002, DDVID, 0x0001, ddb_octopus),
        DDB_ID(DDVID, 0x0003, DDVID, 0x0001, ddb_octopus),
        DDB_ID(DDVID, 0x0003, DDVID, 0x0002, ddb_octopus_le),
-diff --git a/drivers/media/dvb/dvb-core/dvb_ca_en50221.c b/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
-index 7ea517b..252fe54 100644
---- a/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
-+++ b/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
-@@ -590,6 +590,8 @@ static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot, u8 * eb
-       u8 buf[HOST_LINK_BUF_SIZE];
-       int i;
-+      pax_track_stack();
-+
-       dprintk("%s\n", __func__);
-       /* check if we have space for a link buf in the rx_buffer */
-@@ -1285,6 +1287,8 @@ static ssize_t dvb_ca_en50221_io_write(struct file *file,
-       unsigned long timeout;
-       int written;
-+      pax_track_stack();
-+
-       dprintk("%s\n", __func__);
-       /* Incoming packet has a 2 byte header. hdr[0] = slot_id, hdr[1] = connection_id */
 diff --git a/drivers/media/dvb/dvb-core/dvb_demux.h b/drivers/media/dvb/dvb-core/dvb_demux.h
 index a7d876f..8c21b61 100644
 --- a/drivers/media/dvb/dvb-core/dvb_demux.h
 diff --git a/drivers/media/dvb/dvb-core/dvb_demux.h b/drivers/media/dvb/dvb-core/dvb_demux.h
 index a7d876f..8c21b61 100644
 --- a/drivers/media/dvb/dvb-core/dvb_demux.h
@@ -31669,10 +33694,10 @@ index f732877..d38c35a 100644
        int minor;
        int id;
 diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c
        int minor;
        int id;
 diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c
-index acb5fb2..2413f1d 100644
+index 9f2a02c..5920f88 100644
 --- a/drivers/media/dvb/dvb-usb/cxusb.c
 +++ b/drivers/media/dvb/dvb-usb/cxusb.c
 --- a/drivers/media/dvb/dvb-usb/cxusb.c
 +++ b/drivers/media/dvb/dvb-usb/cxusb.c
-@@ -1059,7 +1059,7 @@ static struct dib0070_config dib7070p_dib0070_config = {
+@@ -1069,7 +1069,7 @@ static struct dib0070_config dib7070p_dib0070_config = {
  struct dib0700_adapter_state {
        int (*set_param_save) (struct dvb_frontend *,
                               struct dvb_frontend_parameters *);
  struct dib0700_adapter_state {
        int (*set_param_save) (struct dvb_frontend *,
                               struct dvb_frontend_parameters *);
@@ -31681,21 +33706,8 @@ index acb5fb2..2413f1d 100644
  
  static int dib7070_set_param_override(struct dvb_frontend *fe,
                                      struct dvb_frontend_parameters *fep)
  
  static int dib7070_set_param_override(struct dvb_frontend *fe,
                                      struct dvb_frontend_parameters *fep)
-diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
-index a224e94..503b76a 100644
---- a/drivers/media/dvb/dvb-usb/dib0700_core.c
-+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
-@@ -478,6 +478,8 @@ int dib0700_download_firmware(struct usb_device *udev, const struct firmware *fw
-       if (!buf)
-               return -ENOMEM;
-+      pax_track_stack();
-+
-       while ((ret = dvb_usb_get_hexline(fw, &hx, &pos)) > 0) {
-               deb_fwdata("writing to address 0x%08x (buffer: 0x%02x %02x)\n",
-                               hx.addr, hx.len, hx.chk);
 diff --git a/drivers/media/dvb/dvb-usb/dw2102.c b/drivers/media/dvb/dvb-usb/dw2102.c
 diff --git a/drivers/media/dvb/dvb-usb/dw2102.c b/drivers/media/dvb/dvb-usb/dw2102.c
-index 058b231..183d2b3 100644
+index f103ec1..5e8968b 100644
 --- a/drivers/media/dvb/dvb-usb/dw2102.c
 +++ b/drivers/media/dvb/dvb-usb/dw2102.c
 @@ -95,7 +95,7 @@ struct su3000_state {
 --- a/drivers/media/dvb/dvb-usb/dw2102.c
 +++ b/drivers/media/dvb/dvb-usb/dw2102.c
 @@ -95,7 +95,7 @@ struct su3000_state {
@@ -31707,29 +33719,8 @@ index 058b231..183d2b3 100644
  
  /* debug */
  static int dvb_usb_dw2102_debug;
  
  /* debug */
  static int dvb_usb_dw2102_debug;
-diff --git a/drivers/media/dvb/dvb-usb/lmedm04.c b/drivers/media/dvb/dvb-usb/lmedm04.c
-index 37b1469..28a6f6f 100644
---- a/drivers/media/dvb/dvb-usb/lmedm04.c
-+++ b/drivers/media/dvb/dvb-usb/lmedm04.c
-@@ -742,6 +742,7 @@ static int lme2510_download_firmware(struct usb_device *dev,
-       usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
-                       0x06, 0x80, 0x0200, 0x00, data, 0x0109, 1000);
-+      pax_track_stack();
-       data[0] = 0x8a;
-       len_in = 1;
-@@ -764,6 +765,8 @@ static void lme_coldreset(struct usb_device *dev)
-       int ret = 0, len_in;
-       u8 data[512] = {0};
-+      pax_track_stack();
-+
-       data[0] = 0x0a;
-       len_in = 1;
-       info("FRM Firmware Cold Reset");
 diff --git a/drivers/media/dvb/frontends/dib3000.h b/drivers/media/dvb/frontends/dib3000.h
 diff --git a/drivers/media/dvb/frontends/dib3000.h b/drivers/media/dvb/frontends/dib3000.h
-index ba91735..4261d84 100644
+index 404f63a..4796533 100644
 --- a/drivers/media/dvb/frontends/dib3000.h
 +++ b/drivers/media/dvb/frontends/dib3000.h
 @@ -39,7 +39,7 @@ struct dib_fe_xfer_ops
 --- a/drivers/media/dvb/frontends/dib3000.h
 +++ b/drivers/media/dvb/frontends/dib3000.h
 @@ -39,7 +39,7 @@ struct dib_fe_xfer_ops
@@ -31741,32 +33732,19 @@ index ba91735..4261d84 100644
  
  #if defined(CONFIG_DVB_DIB3000MB) || (defined(CONFIG_DVB_DIB3000MB_MODULE) && defined(MODULE))
  extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
  
  #if defined(CONFIG_DVB_DIB3000MB) || (defined(CONFIG_DVB_DIB3000MB_MODULE) && defined(MODULE))
  extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
-diff --git a/drivers/media/dvb/frontends/mb86a16.c b/drivers/media/dvb/frontends/mb86a16.c
-index c283112..7f367a7 100644
---- a/drivers/media/dvb/frontends/mb86a16.c
-+++ b/drivers/media/dvb/frontends/mb86a16.c
-@@ -1060,6 +1060,8 @@ static int mb86a16_set_fe(struct mb86a16_state *state)
-       int ret = -1;
-       int sync;
-+      pax_track_stack();
-+
-       dprintk(verbose, MB86A16_INFO, 1, "freq=%d Mhz, symbrt=%d Ksps", state->frequency, state->srate);
-       fcp = 3000;
-diff --git a/drivers/media/dvb/frontends/or51211.c b/drivers/media/dvb/frontends/or51211.c
-index c709ce6..b3fe620 100644
---- a/drivers/media/dvb/frontends/or51211.c
-+++ b/drivers/media/dvb/frontends/or51211.c
-@@ -113,6 +113,8 @@ static int or51211_load_firmware (struct dvb_frontend* fe,
-       u8 tudata[585];
-       int i;
-+      pax_track_stack();
-+
-       dprintk("Firmware is %zd bytes\n",fw->size);
+diff --git a/drivers/media/dvb/frontends/ds3000.c b/drivers/media/dvb/frontends/ds3000.c
+index 90bf573..e8463da 100644
+--- a/drivers/media/dvb/frontends/ds3000.c
++++ b/drivers/media/dvb/frontends/ds3000.c
+@@ -1210,7 +1210,7 @@ static int ds3000_set_frontend(struct dvb_frontend *fe,
+       for (i = 0; i < 30 ; i++) {
+               ds3000_read_status(fe, &status);
+-              if (status && FE_HAS_LOCK)
++              if (status & FE_HAS_LOCK)
+                       break;
  
  
-       /* Get eprom data */
+               msleep(10);
 diff --git a/drivers/media/dvb/ngene/ngene-cards.c b/drivers/media/dvb/ngene/ngene-cards.c
 index 0564192..75b16f5 100644
 --- a/drivers/media/dvb/ngene/ngene-cards.c
 diff --git a/drivers/media/dvb/ngene/ngene-cards.c b/drivers/media/dvb/ngene/ngene-cards.c
 index 0564192..75b16f5 100644
 --- a/drivers/media/dvb/ngene/ngene-cards.c
@@ -31793,6 +33771,19 @@ index 16a089f..ab1667d 100644
        mutex_lock(&dev->lock);
        if (dev->rdsstat == 0) {
                dev->rdsstat = 1;
        mutex_lock(&dev->lock);
        if (dev->rdsstat == 0) {
                dev->rdsstat = 1;
+diff --git a/drivers/media/rc/redrat3.c b/drivers/media/rc/redrat3.c
+index 61287fc..8b08712 100644
+--- a/drivers/media/rc/redrat3.c
++++ b/drivers/media/rc/redrat3.c
+@@ -905,7 +905,7 @@ static int redrat3_set_tx_carrier(struct rc_dev *dev, u32 carrier)
+       return carrier;
+ }
+-static int redrat3_transmit_ir(struct rc_dev *rcdev, int *txbuf, u32 n)
++static int redrat3_transmit_ir(struct rc_dev *rcdev, unsigned *txbuf, u32 n)
+ {
+       struct redrat3_dev *rr3 = rcdev->priv;
+       struct device *dev = rr3->dev;
 diff --git a/drivers/media/video/au0828/au0828.h b/drivers/media/video/au0828/au0828.h
 index 9cde353..8c6a1c3 100644
 --- a/drivers/media/video/au0828/au0828.h
 diff --git a/drivers/media/video/au0828/au0828.h b/drivers/media/video/au0828/au0828.h
 index 9cde353..8c6a1c3 100644
 --- a/drivers/media/video/au0828/au0828.h
@@ -31806,32 +33797,6 @@ index 9cde353..8c6a1c3 100644
        struct i2c_client               i2c_client;
        u32                             i2c_rc;
  
        struct i2c_client               i2c_client;
        u32                             i2c_rc;
  
-diff --git a/drivers/media/video/cx18/cx18-driver.c b/drivers/media/video/cx18/cx18-driver.c
-index 9e2f870..22e3a08 100644
---- a/drivers/media/video/cx18/cx18-driver.c
-+++ b/drivers/media/video/cx18/cx18-driver.c
-@@ -327,6 +327,8 @@ void cx18_read_eeprom(struct cx18 *cx, struct tveeprom *tv)
-       struct i2c_client c;
-       u8 eedata[256];
-+      pax_track_stack();
-+
-       memset(&c, 0, sizeof(c));
-       strlcpy(c.name, "cx18 tveeprom tmp", sizeof(c.name));
-       c.adapter = &cx->i2c_adap[0];
-diff --git a/drivers/media/video/cx23885/cx23885-input.c b/drivers/media/video/cx23885/cx23885-input.c
-index ce765e3..f9e1b04 100644
---- a/drivers/media/video/cx23885/cx23885-input.c
-+++ b/drivers/media/video/cx23885/cx23885-input.c
-@@ -53,6 +53,8 @@ static void cx23885_input_process_measurements(struct cx23885_dev *dev,
-       bool handle = false;
-       struct ir_raw_event ir_core_event[64];
-+      pax_track_stack();
-+
-       do {
-               num = 0;
-               v4l2_subdev_call(dev->sd_ir, ir, rx_read, (u8 *) ir_core_event,
 diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
 index 68d1240..46b32eb 100644
 --- a/drivers/media/video/cx88/cx88-alsa.c
 diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
 index 68d1240..46b32eb 100644
 --- a/drivers/media/video/cx88/cx88-alsa.c
@@ -31845,19 +33810,42 @@ index 68d1240..46b32eb 100644
        {0x14f1,0x8801,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
        {0x14f1,0x8811,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
        {0, }
        {0x14f1,0x8801,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
        {0x14f1,0x8811,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
        {0, }
-diff --git a/drivers/media/video/pvrusb2/pvrusb2-eeprom.c b/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
-index 9515f3a..c9ecb85 100644
---- a/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
-+++ b/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
-@@ -120,6 +120,8 @@ int pvr2_eeprom_analyze(struct pvr2_hdw *hdw)
-       u8 *eeprom;
      struct tveeprom tvdata;
+diff --git a/drivers/media/video/omap/omap_vout.c b/drivers/media/video/omap/omap_vout.c
+index ee0d0b3..63f6b78 100644
+--- a/drivers/media/video/omap/omap_vout.c
++++ b/drivers/media/video/omap/omap_vout.c
+@@ -64,7 +64,6 @@ enum omap_vout_channels {
+       OMAP_VIDEO2,
};
  
  
-+      pax_track_stack();
-+
-       memset(&tvdata,0,sizeof(tvdata));
+-static struct videobuf_queue_ops video_vbq_ops;
+ /* Variables configurable through module params*/
+ static u32 video1_numbuffers = 3;
+ static u32 video2_numbuffers = 3;
+@@ -999,6 +998,12 @@ static int omap_vout_open(struct file *file)
+ {
+       struct videobuf_queue *q;
+       struct omap_vout_device *vout = NULL;
++      static struct videobuf_queue_ops video_vbq_ops = {
++              .buf_setup = omap_vout_buffer_setup,
++              .buf_prepare = omap_vout_buffer_prepare,
++              .buf_release = omap_vout_buffer_release,
++              .buf_queue = omap_vout_buffer_queue,
++      };
+       vout = video_drvdata(file);
+       v4l2_dbg(1, debug, &vout->vid_dev->v4l2_dev, "Entering %s\n", __func__);
+@@ -1016,10 +1021,6 @@ static int omap_vout_open(struct file *file)
+       vout->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
  
  
-       eeprom = pvr2_eeprom_fetch(hdw);
+       q = &vout->vbq;
+-      video_vbq_ops.buf_setup = omap_vout_buffer_setup;
+-      video_vbq_ops.buf_prepare = omap_vout_buffer_prepare;
+-      video_vbq_ops.buf_release = omap_vout_buffer_release;
+-      video_vbq_ops.buf_queue = omap_vout_buffer_queue;
+       spin_lock_init(&vout->vbq_lock);
+       videobuf_queue_dma_contig_init(q, &video_vbq_ops, q->dev,
 diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
 index 305e6aa..0143317 100644
 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
 diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
 index 305e6aa..0143317 100644
 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
@@ -31871,46 +33859,37 @@ index 305e6aa..0143317 100644
        pvr2_i2c_func i2c_func[PVR2_I2C_FUNC_CNT];
        int i2c_cx25840_hack_state;
        int i2c_linked;
        pvr2_i2c_func i2c_func[PVR2_I2C_FUNC_CNT];
        int i2c_cx25840_hack_state;
        int i2c_linked;
-diff --git a/drivers/media/video/saa7134/saa6752hs.c b/drivers/media/video/saa7134/saa6752hs.c
-index f9f29cc..5a2e330 100644
---- a/drivers/media/video/saa7134/saa6752hs.c
-+++ b/drivers/media/video/saa7134/saa6752hs.c
-@@ -682,6 +682,8 @@ static int saa6752hs_init(struct v4l2_subdev *sd, u32 leading_null_bytes)
-       unsigned char localPAT[256];
-       unsigned char localPMT[256];
-+      pax_track_stack();
-+
-       /* Set video format - must be done first as it resets other settings */
-       set_reg8(client, 0x41, h->video_format);
-diff --git a/drivers/media/video/saa7164/saa7164-cmd.c b/drivers/media/video/saa7164/saa7164-cmd.c
-index 62fac7f..f29e0b9 100644
---- a/drivers/media/video/saa7164/saa7164-cmd.c
-+++ b/drivers/media/video/saa7164/saa7164-cmd.c
-@@ -88,6 +88,8 @@ int saa7164_irq_dequeue(struct saa7164_dev *dev)
-       u8 tmp[512];
-       dprintk(DBGLVL_CMD, "%s()\n", __func__);
-+      pax_track_stack();
-+
-       /* While any outstand message on the bus exists... */
-       do {
-@@ -141,6 +143,8 @@ int saa7164_cmd_dequeue(struct saa7164_dev *dev)
-       u8 tmp[512];
-       dprintk(DBGLVL_CMD, "%s()\n", __func__);
+diff --git a/drivers/media/video/saa7164/saa7164-encoder.c b/drivers/media/video/saa7164/saa7164-encoder.c
+index 2fd38a0..ddec3c4 100644
+--- a/drivers/media/video/saa7164/saa7164-encoder.c
++++ b/drivers/media/video/saa7164/saa7164-encoder.c
+@@ -1136,6 +1136,8 @@ struct saa7164_user_buffer *saa7164_enc_next_buf(struct saa7164_port *port)
+ }
  
  
-+      pax_track_stack();
-+
-       while (loop) {
+ static ssize_t fops_read(struct file *file, char __user *buffer,
++      size_t count, loff_t *pos) __size_overflow(3);
++static ssize_t fops_read(struct file *file, char __user *buffer,
+       size_t count, loff_t *pos)
+ {
+       struct saa7164_encoder_fh *fh = file->private_data;
+diff --git a/drivers/media/video/saa7164/saa7164-vbi.c b/drivers/media/video/saa7164/saa7164-vbi.c
+index e2e0341..b80056c 100644
+--- a/drivers/media/video/saa7164/saa7164-vbi.c
++++ b/drivers/media/video/saa7164/saa7164-vbi.c
+@@ -1081,6 +1081,8 @@ struct saa7164_user_buffer *saa7164_vbi_next_buf(struct saa7164_port *port)
+ }
  
  
-               struct tmComResInfo tRsp = { 0, 0, 0, 0, 0, 0 };
+ static ssize_t fops_read(struct file *file, char __user *buffer,
++      size_t count, loff_t *pos) __size_overflow(3);
++static ssize_t fops_read(struct file *file, char __user *buffer,
+       size_t count, loff_t *pos)
+ {
+       struct saa7164_vbi_fh *fh = file->private_data;
 diff --git a/drivers/media/video/timblogiw.c b/drivers/media/video/timblogiw.c
 diff --git a/drivers/media/video/timblogiw.c b/drivers/media/video/timblogiw.c
-index 84cd1b6..f741e07 100644
+index a0895bf..b7ebb1b 100644
 --- a/drivers/media/video/timblogiw.c
 +++ b/drivers/media/video/timblogiw.c
 --- a/drivers/media/video/timblogiw.c
 +++ b/drivers/media/video/timblogiw.c
-@@ -744,7 +744,7 @@ static int timblogiw_mmap(struct file *file, struct vm_area_struct *vma)
+@@ -745,7 +745,7 @@ static int timblogiw_mmap(struct file *file, struct vm_area_struct *vma)
  
  /* Platform device functions */
  
  
  /* Platform device functions */
  
@@ -31919,7 +33898,7 @@ index 84cd1b6..f741e07 100644
        .vidioc_querycap                = timblogiw_querycap,
        .vidioc_enum_fmt_vid_cap        = timblogiw_enum_fmt,
        .vidioc_g_fmt_vid_cap           = timblogiw_g_fmt,
        .vidioc_querycap                = timblogiw_querycap,
        .vidioc_enum_fmt_vid_cap        = timblogiw_enum_fmt,
        .vidioc_g_fmt_vid_cap           = timblogiw_g_fmt,
-@@ -766,7 +766,7 @@ static __devinitconst struct v4l2_ioctl_ops timblogiw_ioctl_ops = {
+@@ -767,7 +767,7 @@ static __devinitconst struct v4l2_ioctl_ops timblogiw_ioctl_ops = {
        .vidioc_enum_framesizes         = timblogiw_enum_framesizes,
  };
  
        .vidioc_enum_framesizes         = timblogiw_enum_framesizes,
  };
  
@@ -31928,37 +33907,11 @@ index 84cd1b6..f741e07 100644
        .owner          = THIS_MODULE,
        .open           = timblogiw_open,
        .release        = timblogiw_close,
        .owner          = THIS_MODULE,
        .open           = timblogiw_open,
        .release        = timblogiw_close,
-diff --git a/drivers/media/video/usbvision/usbvision-core.c b/drivers/media/video/usbvision/usbvision-core.c
-index f344411..6ae9974 100644
---- a/drivers/media/video/usbvision/usbvision-core.c
-+++ b/drivers/media/video/usbvision/usbvision-core.c
-@@ -707,6 +707,8 @@ static enum parse_state usbvision_parse_compress(struct usb_usbvision *usbvision
-       unsigned char rv, gv, bv;
-       static unsigned char *Y, *U, *V;
-+      pax_track_stack();
-+
-       frame = usbvision->cur_frame;
-       image_size = frame->frmwidth * frame->frmheight;
-       if ((frame->v4l2_format.format == V4L2_PIX_FMT_YUV422P) ||
-diff --git a/drivers/media/video/videobuf-dma-sg.c b/drivers/media/video/videobuf-dma-sg.c
-index f300dea..04834ba 100644
---- a/drivers/media/video/videobuf-dma-sg.c
-+++ b/drivers/media/video/videobuf-dma-sg.c
-@@ -607,6 +607,8 @@ void *videobuf_sg_alloc(size_t size)
- {
-       struct videobuf_queue q;
-+      pax_track_stack();
-+
-       /* Required to make generic handler to call __videobuf_alloc */
-       q.int_ops = &sg_ops;
 diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
 diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
-index 7956a10..f39232f 100644
+index e9c6a60..daf6a33 100644
 --- a/drivers/message/fusion/mptbase.c
 +++ b/drivers/message/fusion/mptbase.c
 --- a/drivers/message/fusion/mptbase.c
 +++ b/drivers/message/fusion/mptbase.c
-@@ -6681,8 +6681,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
+@@ -6753,8 +6753,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
        seq_printf(m, "  MaxChainDepth = 0x%02x frames\n", ioc->facts.MaxChainDepth);
        seq_printf(m, "  MinBlockSize = 0x%02x bytes\n", 4*ioc->facts.BlockSize);
  
        seq_printf(m, "  MaxChainDepth = 0x%02x frames\n", ioc->facts.MaxChainDepth);
        seq_printf(m, "  MinBlockSize = 0x%02x bytes\n", 4*ioc->facts.BlockSize);
  
@@ -31973,10 +33926,10 @@ index 7956a10..f39232f 100644
         *  Rounding UP to nearest 4-kB boundary here...
         */
 diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
         *  Rounding UP to nearest 4-kB boundary here...
         */
 diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
-index 7596aec..f7ae9aa 100644
+index 9d95042..b808101 100644
 --- a/drivers/message/fusion/mptsas.c
 +++ b/drivers/message/fusion/mptsas.c
 --- a/drivers/message/fusion/mptsas.c
 +++ b/drivers/message/fusion/mptsas.c
-@@ -439,6 +439,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached)
+@@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached)
                return 0;
  }
  
                return 0;
  }
  
@@ -32000,7 +33953,7 @@ index 7596aec..f7ae9aa 100644
  /* no mutex */
  static void
  mptsas_port_delete(MPT_ADAPTER *ioc, struct mptsas_portinfo_details * port_details)
  /* no mutex */
  static void
  mptsas_port_delete(MPT_ADAPTER *ioc, struct mptsas_portinfo_details * port_details)
-@@ -477,23 +494,6 @@ mptsas_get_rphy(struct mptsas_phyinfo *phy_info)
+@@ -484,23 +501,6 @@ mptsas_get_rphy(struct mptsas_phyinfo *phy_info)
                return NULL;
  }
  
                return NULL;
  }
  
@@ -32025,10 +33978,10 @@ index 7596aec..f7ae9aa 100644
  mptsas_get_port(struct mptsas_phyinfo *phy_info)
  {
 diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
  mptsas_get_port(struct mptsas_phyinfo *phy_info)
  {
 diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
-index ce61a57..3da8862 100644
+index 0c3ced7..1fe34ec 100644
 --- a/drivers/message/fusion/mptscsih.c
 +++ b/drivers/message/fusion/mptscsih.c
 --- a/drivers/message/fusion/mptscsih.c
 +++ b/drivers/message/fusion/mptscsih.c
-@@ -1268,15 +1268,16 @@ mptscsih_info(struct Scsi_Host *SChost)
+@@ -1270,15 +1270,16 @@ mptscsih_info(struct Scsi_Host *SChost)
  
        h = shost_priv(SChost);
  
  
        h = shost_priv(SChost);
  
@@ -32053,19 +34006,6 @@ index ce61a57..3da8862 100644
  
        return h->info_kbuf;
  }
  
        return h->info_kbuf;
  }
-diff --git a/drivers/message/i2o/i2o_config.c b/drivers/message/i2o/i2o_config.c
-index 098de2b..fbb922c 100644
---- a/drivers/message/i2o/i2o_config.c
-+++ b/drivers/message/i2o/i2o_config.c
-@@ -781,6 +781,8 @@ static int i2o_cfg_passthru(unsigned long arg)
-       struct i2o_message *msg;
-       unsigned int iop;
-+      pax_track_stack();
-+
-       if (get_user(iop, &cmd->iop) || get_user(user_msg, &cmd->msg))
-               return -EFAULT;
 diff --git a/drivers/message/i2o/i2o_proc.c b/drivers/message/i2o/i2o_proc.c
 index 07dbeaf..5533142 100644
 --- a/drivers/message/i2o/i2o_proc.c
 diff --git a/drivers/message/i2o/i2o_proc.c b/drivers/message/i2o/i2o_proc.c
 index 07dbeaf..5533142 100644
 --- a/drivers/message/i2o/i2o_proc.c
@@ -32183,24 +34123,11 @@ index a8c08f3..155fe3d 100644
        INIT_LIST_HEAD(&c->context_list);
  #endif
  
        INIT_LIST_HEAD(&c->context_list);
  #endif
  
-diff --git a/drivers/mfd/ab3100-core.c b/drivers/mfd/ab3100-core.c
-index a20e1c4..4f57255 100644
---- a/drivers/mfd/ab3100-core.c
-+++ b/drivers/mfd/ab3100-core.c
-@@ -809,7 +809,7 @@ struct ab_family_id {
-       char    *name;
- };
--static const struct ab_family_id ids[] __devinitdata = {
-+static const struct ab_family_id ids[] __devinitconst = {
-       /* AB3100 */
-       {
-               .id = 0xc0,
 diff --git a/drivers/mfd/abx500-core.c b/drivers/mfd/abx500-core.c
 diff --git a/drivers/mfd/abx500-core.c b/drivers/mfd/abx500-core.c
-index f12720d..3c251fd 100644
+index 7ce65f4..e66e9bc 100644
 --- a/drivers/mfd/abx500-core.c
 +++ b/drivers/mfd/abx500-core.c
 --- a/drivers/mfd/abx500-core.c
 +++ b/drivers/mfd/abx500-core.c
-@@ -14,7 +14,7 @@ static LIST_HEAD(abx500_list);
+@@ -15,7 +15,7 @@ static LIST_HEAD(abx500_list);
  
  struct abx500_device_entry {
        struct list_head list;
  
  struct abx500_device_entry {
        struct list_head list;
@@ -32221,64 +34148,51 @@ index 5c2a06a..8fa077c 100644
  #include <linux/init.h>
  #include <linux/pci.h>
  #include <linux/interrupt.h>
  #include <linux/init.h>
  #include <linux/pci.h>
  #include <linux/interrupt.h>
-diff --git a/drivers/mfd/wm8350-i2c.c b/drivers/mfd/wm8350-i2c.c
-index 5fe5de1..af64f53 100644
---- a/drivers/mfd/wm8350-i2c.c
-+++ b/drivers/mfd/wm8350-i2c.c
-@@ -44,6 +44,8 @@ static int wm8350_i2c_write_device(struct wm8350 *wm8350, char reg,
-       u8 msg[(WM8350_MAX_REGISTER << 1) + 1];
-       int ret;
-+      pax_track_stack();
-+
-       if (bytes > ((WM8350_MAX_REGISTER << 1) + 1))
-               return -EINVAL;
 diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c
 diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c
-index 8b51cd6..f628f8d 100644
+index 29d12a7..f900ba4 100644
 --- a/drivers/misc/lis3lv02d/lis3lv02d.c
 +++ b/drivers/misc/lis3lv02d/lis3lv02d.c
 --- a/drivers/misc/lis3lv02d/lis3lv02d.c
 +++ b/drivers/misc/lis3lv02d/lis3lv02d.c
-@@ -437,7 +437,7 @@ static irqreturn_t lis302dl_interrupt(int irq, void *dummy)
+@@ -464,7 +464,7 @@ static irqreturn_t lis302dl_interrupt(int irq, void *data)
         * the lid is closed. This leads to interrupts as soon as a little move
         * is done.
         */
         * the lid is closed. This leads to interrupts as soon as a little move
         * is done.
         */
--      atomic_inc(&lis3_dev.count);
-+      atomic_inc_unchecked(&lis3_dev.count);
+-      atomic_inc(&lis3->count);
++      atomic_inc_unchecked(&lis3->count);
  
  
-       wake_up_interruptible(&lis3_dev.misc_wait);
-       kill_fasync(&lis3_dev.async_queue, SIGIO, POLL_IN);
-@@ -520,7 +520,7 @@ static int lis3lv02d_misc_open(struct inode *inode, struct file *file)
-       if (lis3_dev.pm_dev)
-               pm_runtime_get_sync(lis3_dev.pm_dev);
+       wake_up_interruptible(&lis3->misc_wait);
+       kill_fasync(&lis3->async_queue, SIGIO, POLL_IN);
+@@ -550,7 +550,7 @@ static int lis3lv02d_misc_open(struct inode *inode, struct file *file)
+       if (lis3->pm_dev)
+               pm_runtime_get_sync(lis3->pm_dev);
  
  
--      atomic_set(&lis3_dev.count, 0);
-+      atomic_set_unchecked(&lis3_dev.count, 0);
+-      atomic_set(&lis3->count, 0);
++      atomic_set_unchecked(&lis3->count, 0);
        return 0;
  }
  
        return 0;
  }
  
-@@ -547,7 +547,7 @@ static ssize_t lis3lv02d_misc_read(struct file *file, char __user *buf,
-       add_wait_queue(&lis3_dev.misc_wait, &wait);
+@@ -583,7 +583,7 @@ static ssize_t lis3lv02d_misc_read(struct file *file, char __user *buf,
+       add_wait_queue(&lis3->misc_wait, &wait);
        while (true) {
                set_current_state(TASK_INTERRUPTIBLE);
        while (true) {
                set_current_state(TASK_INTERRUPTIBLE);
--              data = atomic_xchg(&lis3_dev.count, 0);
-+              data = atomic_xchg_unchecked(&lis3_dev.count, 0);
+-              data = atomic_xchg(&lis3->count, 0);
++              data = atomic_xchg_unchecked(&lis3->count, 0);
                if (data)
                        break;
  
                if (data)
                        break;
  
-@@ -585,7 +585,7 @@ out:
- static unsigned int lis3lv02d_misc_poll(struct file *file, poll_table *wait)
- {
-       poll_wait(file, &lis3_dev.misc_wait, wait);
--      if (atomic_read(&lis3_dev.count))
-+      if (atomic_read_unchecked(&lis3_dev.count))
+@@ -624,7 +624,7 @@ static unsigned int lis3lv02d_misc_poll(struct file *file, poll_table *wait)
+                                             struct lis3lv02d, miscdev);
+       poll_wait(file, &lis3->misc_wait, wait);
+-      if (atomic_read(&lis3->count))
++      if (atomic_read_unchecked(&lis3->count))
                return POLLIN | POLLRDNORM;
        return 0;
  }
 diff --git a/drivers/misc/lis3lv02d/lis3lv02d.h b/drivers/misc/lis3lv02d/lis3lv02d.h
                return POLLIN | POLLRDNORM;
        return 0;
  }
 diff --git a/drivers/misc/lis3lv02d/lis3lv02d.h b/drivers/misc/lis3lv02d/lis3lv02d.h
-index a193958..4d7ecd2 100644
+index 2b1482a..5d33616 100644
 --- a/drivers/misc/lis3lv02d/lis3lv02d.h
 +++ b/drivers/misc/lis3lv02d/lis3lv02d.h
 --- a/drivers/misc/lis3lv02d/lis3lv02d.h
 +++ b/drivers/misc/lis3lv02d/lis3lv02d.h
-@@ -265,7 +265,7 @@ struct lis3lv02d {
+@@ -266,7 +266,7 @@ struct lis3lv02d {
        struct input_polled_dev *idev;     /* input device */
        struct platform_device  *pdev;     /* platform device */
        struct regulator_bulk_data regulators[2];
        struct input_polled_dev *idev;     /* input device */
        struct platform_device  *pdev;     /* platform device */
        struct regulator_bulk_data regulators[2];
@@ -32558,10 +34472,10 @@ index 8d082b4..aa749ae 100644
  /*
   * Timer function to enforce the timelimit on the partition disengage.
 diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
  /*
   * Timer function to enforce the timelimit on the partition disengage.
 diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
-index 26c5286..292d261 100644
+index 6878a94..fe5c5f1 100644
 --- a/drivers/mmc/host/sdhci-pci.c
 +++ b/drivers/mmc/host/sdhci-pci.c
 --- a/drivers/mmc/host/sdhci-pci.c
 +++ b/drivers/mmc/host/sdhci-pci.c
-@@ -542,7 +542,7 @@ static const struct sdhci_pci_fixes sdhci_via = {
+@@ -673,7 +673,7 @@ static const struct sdhci_pci_fixes sdhci_via = {
        .probe          = via_probe,
  };
  
        .probe          = via_probe,
  };
  
@@ -32570,91 +34484,11 @@ index 26c5286..292d261 100644
        {
                .vendor         = PCI_VENDOR_ID_RICOH,
                .device         = PCI_DEVICE_ID_RICOH_R5C822,
        {
                .vendor         = PCI_VENDOR_ID_RICOH,
                .device         = PCI_DEVICE_ID_RICOH_R5C822,
-diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c
-index e1e122f..d99a6ea 100644
---- a/drivers/mtd/chips/cfi_cmdset_0001.c
-+++ b/drivers/mtd/chips/cfi_cmdset_0001.c
-@@ -757,6 +757,8 @@ static int chip_ready (struct map_info *map, struct flchip *chip, unsigned long
-       struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
-       unsigned long timeo = jiffies + HZ;
-+      pax_track_stack();
-+
-       /* Prevent setting state FL_SYNCING for chip in suspended state. */
-       if (mode == FL_SYNCING && chip->oldstate != FL_READY)
-               goto sleep;
-@@ -1653,6 +1655,8 @@ static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
-       unsigned long initial_adr;
-       int initial_len = len;
-+      pax_track_stack();
-+
-       wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
-       adr += chip->start;
-       initial_adr = adr;
-@@ -1871,6 +1875,8 @@ static int __xipram do_erase_oneblock(struct map_info *map, struct flchip *chip,
-       int retries = 3;
-       int ret;
-+      pax_track_stack();
-+
-       adr += chip->start;
-  retry:
-diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c
-index 179814a..abe9d60 100644
---- a/drivers/mtd/chips/cfi_cmdset_0020.c
-+++ b/drivers/mtd/chips/cfi_cmdset_0020.c
-@@ -255,6 +255,8 @@ static inline int do_read_onechip(struct map_info *map, struct flchip *chip, lof
-       unsigned long cmd_addr;
-       struct cfi_private *cfi = map->fldrv_priv;
-+      pax_track_stack();
-+
-       adr += chip->start;
-       /* Ensure cmd read/writes are aligned. */
-@@ -429,6 +431,8 @@ static inline int do_write_buffer(struct map_info *map, struct flchip *chip,
-       DECLARE_WAITQUEUE(wait, current);
-       int wbufsize, z;
-+      pax_track_stack();
-+
-         /* M58LW064A requires bus alignment for buffer wriets -- saw */
-         if (adr & (map_bankwidth(map)-1))
-             return -EINVAL;
-@@ -743,6 +747,8 @@ static inline int do_erase_oneblock(struct map_info *map, struct flchip *chip, u
-       DECLARE_WAITQUEUE(wait, current);
-       int ret = 0;
-+      pax_track_stack();
-+
-       adr += chip->start;
-       /* Let's determine this according to the interleave only once */
-@@ -1048,6 +1054,8 @@ static inline int do_lock_oneblock(struct map_info *map, struct flchip *chip, un
-       unsigned long timeo = jiffies + HZ;
-       DECLARE_WAITQUEUE(wait, current);
-+      pax_track_stack();
-+
-       adr += chip->start;
-       /* Let's determine this according to the interleave only once */
-@@ -1197,6 +1205,8 @@ static inline int do_unlock_oneblock(struct map_info *map, struct flchip *chip,
-       unsigned long timeo = jiffies + HZ;
-       DECLARE_WAITQUEUE(wait, current);
-+      pax_track_stack();
-+
-       adr += chip->start;
-       /* Let's determine this according to the interleave only once */
 diff --git a/drivers/mtd/devices/doc2000.c b/drivers/mtd/devices/doc2000.c
 diff --git a/drivers/mtd/devices/doc2000.c b/drivers/mtd/devices/doc2000.c
-index f7fbf60..9866457 100644
+index e9fad91..0a7a16a 100644
 --- a/drivers/mtd/devices/doc2000.c
 +++ b/drivers/mtd/devices/doc2000.c
 --- a/drivers/mtd/devices/doc2000.c
 +++ b/drivers/mtd/devices/doc2000.c
-@@ -776,7 +776,7 @@ static int doc_write(struct mtd_info *mtd, loff_t to, size_t len,
+@@ -773,7 +773,7 @@ static int doc_write(struct mtd_info *mtd, loff_t to, size_t len,
  
                /* The ECC will not be calculated correctly if less than 512 is written */
  /* DBB-
  
                /* The ECC will not be calculated correctly if less than 512 is written */
  /* DBB-
@@ -32664,10 +34498,10 @@ index f7fbf60..9866457 100644
                               "ECC needs a full sector write (adr: %lx size %lx)\n",
                               (long) to, (long) len);
 diff --git a/drivers/mtd/devices/doc2001.c b/drivers/mtd/devices/doc2001.c
                               "ECC needs a full sector write (adr: %lx size %lx)\n",
                               (long) to, (long) len);
 diff --git a/drivers/mtd/devices/doc2001.c b/drivers/mtd/devices/doc2001.c
-index 241192f..d0c35a3 100644
+index a3f7a27..234016e 100644
 --- a/drivers/mtd/devices/doc2001.c
 +++ b/drivers/mtd/devices/doc2001.c
 --- a/drivers/mtd/devices/doc2001.c
 +++ b/drivers/mtd/devices/doc2001.c
-@@ -393,7 +393,7 @@ static int doc_read (struct mtd_info *mtd, loff_t from, size_t len,
+@@ -392,7 +392,7 @@ static int doc_read (struct mtd_info *mtd, loff_t from, size_t len,
        struct Nand *mychip = &this->chips[from >> (this->chipshift)];
  
        /* Don't allow read past end of device */
        struct Nand *mychip = &this->chips[from >> (this->chipshift)];
  
        /* Don't allow read past end of device */
@@ -32676,73 +34510,8 @@ index 241192f..d0c35a3 100644
                return -EINVAL;
  
        /* Don't allow a single read to cross a 512-byte block boundary */
                return -EINVAL;
  
        /* Don't allow a single read to cross a 512-byte block boundary */
-diff --git a/drivers/mtd/ftl.c b/drivers/mtd/ftl.c
-index 037b399..225a71d 100644
---- a/drivers/mtd/ftl.c
-+++ b/drivers/mtd/ftl.c
-@@ -474,6 +474,8 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,
-     loff_t offset;
-     uint16_t srcunitswap = cpu_to_le16(srcunit);
-+    pax_track_stack();
-+
-     eun = &part->EUNInfo[srcunit];
-     xfer = &part->XferInfo[xferunit];
-     DEBUG(2, "ftl_cs: copying block 0x%x to 0x%x\n",
-diff --git a/drivers/mtd/inftlcore.c b/drivers/mtd/inftlcore.c
-index d7592e6..31c505c 100644
---- a/drivers/mtd/inftlcore.c
-+++ b/drivers/mtd/inftlcore.c
-@@ -259,6 +259,8 @@ static u16 INFTL_foldchain(struct INFTLrecord *inftl, unsigned thisVUC, unsigned
-       struct inftl_oob oob;
-       size_t retlen;
-+      pax_track_stack();
-+
-       DEBUG(MTD_DEBUG_LEVEL3, "INFTL: INFTL_foldchain(inftl=%p,thisVUC=%d,"
-               "pending=%d)\n", inftl, thisVUC, pendingblock);
-diff --git a/drivers/mtd/inftlmount.c b/drivers/mtd/inftlmount.c
-index 104052e..6232be5 100644
---- a/drivers/mtd/inftlmount.c
-+++ b/drivers/mtd/inftlmount.c
-@@ -53,6 +53,8 @@ static int find_boot_record(struct INFTLrecord *inftl)
-       struct INFTLPartition *ip;
-       size_t retlen;
-+      pax_track_stack();
-+
-       DEBUG(MTD_DEBUG_LEVEL3, "INFTL: find_boot_record(inftl=%p)\n", inftl);
-         /*
-diff --git a/drivers/mtd/lpddr/qinfo_probe.c b/drivers/mtd/lpddr/qinfo_probe.c
-index dbfe17b..c7b0918 100644
---- a/drivers/mtd/lpddr/qinfo_probe.c
-+++ b/drivers/mtd/lpddr/qinfo_probe.c
-@@ -106,6 +106,8 @@ static int lpddr_pfow_present(struct map_info *map, struct lpddr_private *lpddr)
- {
-       map_word pfow_val[4];
-+      pax_track_stack();
-+
-       /* Check identification string */
-       pfow_val[0] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_P);
-       pfow_val[1] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_F);
-diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
-index 49e20a4..60fbfa5 100644
---- a/drivers/mtd/mtdchar.c
-+++ b/drivers/mtd/mtdchar.c
-@@ -554,6 +554,8 @@ static int mtd_ioctl(struct file *file, u_int cmd, u_long arg)
-       u_long size;
-       struct mtd_info_user info;
-+      pax_track_stack();
-+
-       DEBUG(MTD_DEBUG_LEVEL0, "MTD_ioctl\n");
-       size = (cmd & IOCSIZE_MASK) >> IOCSIZE_SHIFT;
 diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
 diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
-index d527621..2491fab 100644
+index 3984d48..28aa897 100644
 --- a/drivers/mtd/nand/denali.c
 +++ b/drivers/mtd/nand/denali.c
 @@ -26,6 +26,7 @@
 --- a/drivers/mtd/nand/denali.c
 +++ b/drivers/mtd/nand/denali.c
 @@ -26,6 +26,7 @@
@@ -32753,21 +34522,8 @@ index d527621..2491fab 100644
  
  #include "denali.h"
  
  
  #include "denali.h"
  
-diff --git a/drivers/mtd/nftlcore.c b/drivers/mtd/nftlcore.c
-index b155666..611b801 100644
---- a/drivers/mtd/nftlcore.c
-+++ b/drivers/mtd/nftlcore.c
-@@ -264,6 +264,8 @@ static u16 NFTL_foldchain (struct NFTLrecord *nftl, unsigned thisVUC, unsigned p
-       int inplace = 1;
-       size_t retlen;
-+      pax_track_stack();
-+
-       memset(BlockMap, 0xff, sizeof(BlockMap));
-       memset(BlockFreeFound, 0, sizeof(BlockFreeFound));
 diff --git a/drivers/mtd/nftlmount.c b/drivers/mtd/nftlmount.c
 diff --git a/drivers/mtd/nftlmount.c b/drivers/mtd/nftlmount.c
-index e3cd1ff..0ea79a3 100644
+index ac40925..483b753 100644
 --- a/drivers/mtd/nftlmount.c
 +++ b/drivers/mtd/nftlmount.c
 @@ -24,6 +24,7 @@
 --- a/drivers/mtd/nftlmount.c
 +++ b/drivers/mtd/nftlmount.c
 @@ -24,6 +24,7 @@
@@ -32778,17 +34534,8 @@ index e3cd1ff..0ea79a3 100644
  #include <linux/mtd/mtd.h>
  #include <linux/mtd/nand.h>
  #include <linux/mtd/nftl.h>
  #include <linux/mtd/mtd.h>
  #include <linux/mtd/nand.h>
  #include <linux/mtd/nftl.h>
-@@ -45,6 +46,8 @@ static int find_boot_record(struct NFTLrecord *nftl)
-       struct mtd_info *mtd = nftl->mbd.mtd;
-       unsigned int i;
-+      pax_track_stack();
-+
-         /* Assume logical EraseSize == physical erasesize for starting the scan.
-          We'll sort it out later if we find a MediaHeader which says otherwise */
-       /* Actually, we won't.  The new DiskOnChip driver has already scanned
 diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
 diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
-index 6c3fb5a..c542a81 100644
+index 6c3fb5a..5b2eeb0 100644
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
 @@ -1311,7 +1311,7 @@ module_exit(ubi_exit);
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
 @@ -1311,7 +1311,7 @@ module_exit(ubi_exit);
@@ -32820,7 +34567,7 @@ index 6c3fb5a..c542a81 100644
        }
  
 -      return result;
        }
  
 -      return result;
-+      if ((intoverflow_t)result*scale >= INT_MAX) {
++      if (result*scale >= INT_MAX) {
 +              printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n",
 +                     str);
 +              return -EINVAL;
 +              printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n",
 +                     str);
 +              return -EINVAL;
@@ -32830,10 +34577,23 @@ index 6c3fb5a..c542a81 100644
  }
  
  /**
  }
  
  /**
-diff --git a/drivers/net/atlx/atl2.c b/drivers/net/atlx/atl2.c
-index d4f7dda..d627d46 100644
---- a/drivers/net/atlx/atl2.c
-+++ b/drivers/net/atlx/atl2.c
+diff --git a/drivers/mtd/ubi/debug.c b/drivers/mtd/ubi/debug.c
+index ab80c0d..aec8580 100644
+--- a/drivers/mtd/ubi/debug.c
++++ b/drivers/mtd/ubi/debug.c
+@@ -338,6 +338,8 @@ out:
+ /* Write an UBI debugfs file */
+ static ssize_t dfs_file_write(struct file *file, const char __user *user_buf,
++                            size_t count, loff_t *ppos) __size_overflow(3);
++static ssize_t dfs_file_write(struct file *file, const char __user *user_buf,
+                             size_t count, loff_t *ppos)
+ {
+       unsigned long ubi_num = (unsigned long)file->private_data;
+diff --git a/drivers/net/ethernet/atheros/atlx/atl2.c b/drivers/net/ethernet/atheros/atlx/atl2.c
+index 1feae59..c2a61d2 100644
+--- a/drivers/net/ethernet/atheros/atlx/atl2.c
++++ b/drivers/net/ethernet/atheros/atlx/atl2.c
 @@ -2857,7 +2857,7 @@ static void atl2_force_ps(struct atl2_hw *hw)
   */
  
 @@ -2857,7 +2857,7 @@ static void atl2_force_ps(struct atl2_hw *hw)
   */
  
@@ -32843,149 +34603,10 @@ index d4f7dda..d627d46 100644
      MODULE_PARM(X, "1-" __MODULE_STRING(ATL2_MAX_NIC) "i"); \
      MODULE_PARM_DESC(X, desc);
  #else
      MODULE_PARM(X, "1-" __MODULE_STRING(ATL2_MAX_NIC) "i"); \
      MODULE_PARM_DESC(X, desc);
  #else
-diff --git a/drivers/net/bna/bfa_ioc_ct.c b/drivers/net/bna/bfa_ioc_ct.c
-index 87aecdf..ec23470 100644
---- a/drivers/net/bna/bfa_ioc_ct.c
-+++ b/drivers/net/bna/bfa_ioc_ct.c
-@@ -48,7 +48,21 @@ static void bfa_ioc_ct_sync_ack(struct bfa_ioc *ioc);
- static bool bfa_ioc_ct_sync_complete(struct bfa_ioc *ioc);
- static enum bfa_status bfa_ioc_ct_pll_init(void __iomem *rb, bool fcmode);
--static struct bfa_ioc_hwif nw_hwif_ct;
-+static struct bfa_ioc_hwif nw_hwif_ct = {
-+      .ioc_pll_init = bfa_ioc_ct_pll_init,
-+      .ioc_firmware_lock = bfa_ioc_ct_firmware_lock,
-+      .ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock,
-+      .ioc_reg_init = bfa_ioc_ct_reg_init,
-+      .ioc_map_port = bfa_ioc_ct_map_port,
-+      .ioc_isr_mode_set = bfa_ioc_ct_isr_mode_set,
-+      .ioc_notify_fail = bfa_ioc_ct_notify_fail,
-+      .ioc_ownership_reset = bfa_ioc_ct_ownership_reset,
-+      .ioc_sync_start = bfa_ioc_ct_sync_start,
-+      .ioc_sync_join = bfa_ioc_ct_sync_join,
-+      .ioc_sync_leave = bfa_ioc_ct_sync_leave,
-+      .ioc_sync_ack = bfa_ioc_ct_sync_ack,
-+      .ioc_sync_complete = bfa_ioc_ct_sync_complete
-+};
- /**
-  * Called from bfa_ioc_attach() to map asic specific calls.
-@@ -56,20 +70,6 @@ static struct bfa_ioc_hwif nw_hwif_ct;
- void
- bfa_nw_ioc_set_ct_hwif(struct bfa_ioc *ioc)
- {
--      nw_hwif_ct.ioc_pll_init = bfa_ioc_ct_pll_init;
--      nw_hwif_ct.ioc_firmware_lock = bfa_ioc_ct_firmware_lock;
--      nw_hwif_ct.ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock;
--      nw_hwif_ct.ioc_reg_init = bfa_ioc_ct_reg_init;
--      nw_hwif_ct.ioc_map_port = bfa_ioc_ct_map_port;
--      nw_hwif_ct.ioc_isr_mode_set = bfa_ioc_ct_isr_mode_set;
--      nw_hwif_ct.ioc_notify_fail = bfa_ioc_ct_notify_fail;
--      nw_hwif_ct.ioc_ownership_reset = bfa_ioc_ct_ownership_reset;
--      nw_hwif_ct.ioc_sync_start = bfa_ioc_ct_sync_start;
--      nw_hwif_ct.ioc_sync_join = bfa_ioc_ct_sync_join;
--      nw_hwif_ct.ioc_sync_leave = bfa_ioc_ct_sync_leave;
--      nw_hwif_ct.ioc_sync_ack = bfa_ioc_ct_sync_ack;
--      nw_hwif_ct.ioc_sync_complete = bfa_ioc_ct_sync_complete;
--
-       ioc->ioc_hwif = &nw_hwif_ct;
- }
-diff --git a/drivers/net/bna/bnad.c b/drivers/net/bna/bnad.c
-index 8e35b25..c39f205 100644
---- a/drivers/net/bna/bnad.c
-+++ b/drivers/net/bna/bnad.c
-@@ -1673,7 +1673,14 @@ bnad_setup_tx(struct bnad *bnad, uint tx_id)
-       struct bna_intr_info *intr_info =
-                       &res_info[BNA_TX_RES_INTR_T_TXCMPL].res_u.intr_info;
-       struct bna_tx_config *tx_config = &bnad->tx_config[tx_id];
--      struct bna_tx_event_cbfn tx_cbfn;
-+      static struct bna_tx_event_cbfn tx_cbfn = {
-+              /* Initialize the tx event handlers */
-+              .tcb_setup_cbfn = bnad_cb_tcb_setup,
-+              .tcb_destroy_cbfn = bnad_cb_tcb_destroy,
-+              .tx_stall_cbfn = bnad_cb_tx_stall,
-+              .tx_resume_cbfn = bnad_cb_tx_resume,
-+              .tx_cleanup_cbfn = bnad_cb_tx_cleanup
-+      };
-       struct bna_tx *tx;
-       unsigned long flags;
-@@ -1682,13 +1689,6 @@ bnad_setup_tx(struct bnad *bnad, uint tx_id)
-       tx_config->txq_depth = bnad->txq_depth;
-       tx_config->tx_type = BNA_TX_T_REGULAR;
--      /* Initialize the tx event handlers */
--      tx_cbfn.tcb_setup_cbfn = bnad_cb_tcb_setup;
--      tx_cbfn.tcb_destroy_cbfn = bnad_cb_tcb_destroy;
--      tx_cbfn.tx_stall_cbfn = bnad_cb_tx_stall;
--      tx_cbfn.tx_resume_cbfn = bnad_cb_tx_resume;
--      tx_cbfn.tx_cleanup_cbfn = bnad_cb_tx_cleanup;
--
-       /* Get BNA's resource requirement for one tx object */
-       spin_lock_irqsave(&bnad->bna_lock, flags);
-       bna_tx_res_req(bnad->num_txq_per_tx,
-@@ -1819,21 +1819,21 @@ bnad_setup_rx(struct bnad *bnad, uint rx_id)
-       struct bna_intr_info *intr_info =
-                       &res_info[BNA_RX_RES_T_INTR].res_u.intr_info;
-       struct bna_rx_config *rx_config = &bnad->rx_config[rx_id];
--      struct bna_rx_event_cbfn rx_cbfn;
-+      static struct bna_rx_event_cbfn rx_cbfn = {
-+              /* Initialize the Rx event handlers */
-+              .rcb_setup_cbfn = bnad_cb_rcb_setup,
-+              .rcb_destroy_cbfn = bnad_cb_rcb_destroy,
-+              .ccb_setup_cbfn = bnad_cb_ccb_setup,
-+              .ccb_destroy_cbfn = bnad_cb_ccb_destroy,
-+              .rx_cleanup_cbfn = bnad_cb_rx_cleanup,
-+              .rx_post_cbfn = bnad_cb_rx_post
-+      };
-       struct bna_rx *rx;
-       unsigned long flags;
-       /* Initialize the Rx object configuration */
-       bnad_init_rx_config(bnad, rx_config);
--      /* Initialize the Rx event handlers */
--      rx_cbfn.rcb_setup_cbfn = bnad_cb_rcb_setup;
--      rx_cbfn.rcb_destroy_cbfn = bnad_cb_rcb_destroy;
--      rx_cbfn.ccb_setup_cbfn = bnad_cb_ccb_setup;
--      rx_cbfn.ccb_destroy_cbfn = bnad_cb_ccb_destroy;
--      rx_cbfn.rx_cleanup_cbfn = bnad_cb_rx_cleanup;
--      rx_cbfn.rx_post_cbfn = bnad_cb_rx_post;
--
-       /* Get BNA's resource requirement for one Rx object */
-       spin_lock_irqsave(&bnad->bna_lock, flags);
-       bna_rx_res_req(rx_config, res_info);
-diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
-index 4b2b570..31033f4 100644
---- a/drivers/net/bnx2.c
-+++ b/drivers/net/bnx2.c
-@@ -5877,6 +5877,8 @@ bnx2_test_nvram(struct bnx2 *bp)
-       int rc = 0;
-       u32 magic, csum;
-+      pax_track_stack();
-+
-       if ((rc = bnx2_nvram_read(bp, 0, data, 4)) != 0)
-               goto test_nvram_done;
-diff --git a/drivers/net/bnx2x/bnx2x_ethtool.c b/drivers/net/bnx2x/bnx2x_ethtool.c
-index cf3e479..5dc0ecc 100644
---- a/drivers/net/bnx2x/bnx2x_ethtool.c
-+++ b/drivers/net/bnx2x/bnx2x_ethtool.c
-@@ -1943,6 +1943,8 @@ static int bnx2x_test_nvram(struct bnx2x *bp)
-       int i, rc;
-       u32 magic, crc;
-+      pax_track_stack();
-+
-       if (BP_NOMCP(bp))
-               return 0;
-diff --git a/drivers/net/bnx2x/bnx2x_sp.h b/drivers/net/bnx2x/bnx2x_sp.h
+diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
 index 9a517c2..a50cfcb 100644
 index 9a517c2..a50cfcb 100644
---- a/drivers/net/bnx2x/bnx2x_sp.h
-+++ b/drivers/net/bnx2x/bnx2x_sp.h
+--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
++++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
 @@ -449,7 +449,7 @@ struct bnx2x_rx_mode_obj {
  
        int (*wait_comp)(struct bnx2x *bp,
 @@ -449,7 +449,7 @@ struct bnx2x_rx_mode_obj {
  
        int (*wait_comp)(struct bnx2x *bp,
@@ -32995,10 +34616,22 @@ index 9a517c2..a50cfcb 100644
  
  /********************** Set multicast group ***********************************/
  
  
  /********************** Set multicast group ***********************************/
  
-diff --git a/drivers/net/cxgb3/l2t.h b/drivers/net/cxgb3/l2t.h
+diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h
+index 94b4bd0..73c02de 100644
+--- a/drivers/net/ethernet/broadcom/tg3.h
++++ b/drivers/net/ethernet/broadcom/tg3.h
+@@ -134,6 +134,7 @@
+ #define  CHIPREV_ID_5750_A0            0x4000
+ #define  CHIPREV_ID_5750_A1            0x4001
+ #define  CHIPREV_ID_5750_A3            0x4003
++#define  CHIPREV_ID_5750_C1            0x4201
+ #define  CHIPREV_ID_5750_C2            0x4202
+ #define  CHIPREV_ID_5752_A0_HW                 0x5000
+ #define  CHIPREV_ID_5752_A0            0x6000
+diff --git a/drivers/net/ethernet/chelsio/cxgb3/l2t.h b/drivers/net/ethernet/chelsio/cxgb3/l2t.h
 index c5f5479..2e8c260 100644
 index c5f5479..2e8c260 100644
---- a/drivers/net/cxgb3/l2t.h
-+++ b/drivers/net/cxgb3/l2t.h
+--- a/drivers/net/ethernet/chelsio/cxgb3/l2t.h
++++ b/drivers/net/ethernet/chelsio/cxgb3/l2t.h
 @@ -87,7 +87,7 @@ typedef void (*arp_failure_handler_func)(struct t3cdev * dev,
   */
  struct l2t_skb_cb {
 @@ -87,7 +87,7 @@ typedef void (*arp_failure_handler_func)(struct t3cdev * dev,
   */
  struct l2t_skb_cb {
@@ -33008,62 +34641,190 @@ index c5f5479..2e8c260 100644
  
  #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
  
  
  #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
  
-diff --git a/drivers/net/cxgb4/cxgb4_main.c b/drivers/net/cxgb4/cxgb4_main.c
-index b4efa29..c5f2703 100644
---- a/drivers/net/cxgb4/cxgb4_main.c
-+++ b/drivers/net/cxgb4/cxgb4_main.c
-@@ -3396,6 +3396,8 @@ static int __devinit enable_msix(struct adapter *adap)
-       unsigned int nchan = adap->params.nports;
-       struct msix_entry entries[MAX_INGQ + 1];
+diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
+index cfb60e1..9c76da7 100644
+--- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
++++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
+@@ -611,6 +611,8 @@ static void recycle_rx_buf(struct adapter *adap, struct sge_fl *q,
+  *    of the SW ring.
+  */
+ static void *alloc_ring(struct pci_dev *pdev, size_t nelem, size_t elem_size,
++                      size_t sw_size, dma_addr_t * phys, void *metadata) __size_overflow(2,4);
++static void *alloc_ring(struct pci_dev *pdev, size_t nelem, size_t elem_size,
+                       size_t sw_size, dma_addr_t * phys, void *metadata)
+ {
+       size_t len = nelem * elem_size;
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
+index 140254c..5b8a0a6 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
+@@ -593,6 +593,9 @@ static inline void __refill_fl(struct adapter *adap, struct sge_fl *fl)
+  */
+ static void *alloc_ring(struct device *dev, size_t nelem, size_t elem_size,
+                       size_t sw_size, dma_addr_t *phys, void *metadata,
++                      size_t stat_size, int node) __size_overflow(2,4);
++static void *alloc_ring(struct device *dev, size_t nelem, size_t elem_size,
++                      size_t sw_size, dma_addr_t *phys, void *metadata,
+                       size_t stat_size, int node)
+ {
+       size_t len = nelem * elem_size + stat_size;
+diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
+index 8d5d55a..a3c3474 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
++++ b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
+@@ -730,6 +730,9 @@ static inline void __refill_fl(struct adapter *adapter, struct sge_fl *fl)
+  */
+ static void *alloc_ring(struct device *dev, size_t nelem, size_t hwsize,
+                       size_t swsize, dma_addr_t *busaddrp, void *swringp,
++                      size_t stat_size) __size_overflow(2,4);
++static void *alloc_ring(struct device *dev, size_t nelem, size_t hwsize,
++                      size_t swsize, dma_addr_t *busaddrp, void *swringp,
+                       size_t stat_size)
+ {
+       /*
+diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
+index 871bcaa..4043505 100644
+--- a/drivers/net/ethernet/dec/tulip/de4x5.c
++++ b/drivers/net/ethernet/dec/tulip/de4x5.c
+@@ -5397,7 +5397,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+       for (i=0; i<ETH_ALEN; i++) {
+           tmp.addr[i] = dev->dev_addr[i];
+       }
+-      if (copy_to_user(ioc->data, tmp.addr, ioc->len)) return -EFAULT;
++      if (ioc->len > sizeof tmp.addr || copy_to_user(ioc->data, tmp.addr, ioc->len)) return -EFAULT;
+       break;
  
  
-+      pax_track_stack();
-+
-       for (i = 0; i < ARRAY_SIZE(entries); ++i)
-               entries[i].entry = i;
+     case DE4X5_SET_HWADDR:           /* Set the hardware address */
+@@ -5437,7 +5437,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+       spin_lock_irqsave(&lp->lock, flags);
+       memcpy(&statbuf, &lp->pktStats, ioc->len);
+       spin_unlock_irqrestore(&lp->lock, flags);
+-      if (copy_to_user(ioc->data, &statbuf, ioc->len))
++      if (ioc->len > sizeof statbuf || copy_to_user(ioc->data, &statbuf, ioc->len))
+               return -EFAULT;
+       break;
+     }
+diff --git a/drivers/net/ethernet/dec/tulip/eeprom.c b/drivers/net/ethernet/dec/tulip/eeprom.c
+index 14d5b61..1398636 100644
+--- a/drivers/net/ethernet/dec/tulip/eeprom.c
++++ b/drivers/net/ethernet/dec/tulip/eeprom.c
+@@ -79,7 +79,7 @@ static struct eeprom_fixup eeprom_fixups[] __devinitdata = {
+   {NULL}};
  
  
-diff --git a/drivers/net/cxgb4/t4_hw.c b/drivers/net/cxgb4/t4_hw.c
-index d1ec111..12735bc 100644
---- a/drivers/net/cxgb4/t4_hw.c
-+++ b/drivers/net/cxgb4/t4_hw.c
-@@ -362,6 +362,8 @@ static int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
-       u8 vpd[VPD_LEN], csum;
-       unsigned int vpdr_len, kw_offset, id_len;
  
  
-+      pax_track_stack();
-+
-       ret = pci_read_vpd(adapter->pdev, VPD_BASE, sizeof(vpd), vpd);
-       if (ret < 0)
-               return ret;
-diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c
-index 536b3a5..e6f8dcc 100644
---- a/drivers/net/e1000e/82571.c
-+++ b/drivers/net/e1000e/82571.c
-@@ -239,7 +239,7 @@ static s32 e1000_init_mac_params_82571(struct e1000_adapter *adapter)
+-static const char *block_name[] __devinitdata = {
++static const char *block_name[] __devinitconst = {
+       "21140 non-MII",
+       "21140 MII PHY",
+       "21142 Serial PHY",
+diff --git a/drivers/net/ethernet/dec/tulip/winbond-840.c b/drivers/net/ethernet/dec/tulip/winbond-840.c
+index 4d01219..b58d26d 100644
+--- a/drivers/net/ethernet/dec/tulip/winbond-840.c
++++ b/drivers/net/ethernet/dec/tulip/winbond-840.c
+@@ -236,7 +236,7 @@ struct pci_id_info {
+         int drv_flags;                /* Driver use, intended as capability flags. */
+ };
+-static const struct pci_id_info pci_id_tbl[] __devinitdata = {
++static const struct pci_id_info pci_id_tbl[] __devinitconst = {
+       {                               /* Sometime a Level-One switch card. */
+         "Winbond W89c840",    CanHaveMII | HasBrokenTx | FDXOnNoMII},
+       { "Winbond W89c840",    CanHaveMII | HasBrokenTx},
+diff --git a/drivers/net/ethernet/dlink/sundance.c b/drivers/net/ethernet/dlink/sundance.c
+index dcd7f7a..ecb7fb3 100644
+--- a/drivers/net/ethernet/dlink/sundance.c
++++ b/drivers/net/ethernet/dlink/sundance.c
+@@ -218,7 +218,7 @@ enum {
+ struct pci_id_info {
+         const char *name;
+ };
+-static const struct pci_id_info pci_id_tbl[] __devinitdata = {
++static const struct pci_id_info pci_id_tbl[] __devinitconst = {
+       {"D-Link DFE-550TX FAST Ethernet Adapter"},
+       {"D-Link DFE-550FX 100Mbps Fiber-optics Adapter"},
+       {"D-Link DFE-580TX 4 port Server Adapter"},
+diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
+index bf266a0..e024af7 100644
+--- a/drivers/net/ethernet/emulex/benet/be_main.c
++++ b/drivers/net/ethernet/emulex/benet/be_main.c
+@@ -397,7 +397,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val)
+       if (wrapped)
+               newacc += 65536;
+-      ACCESS_ONCE(*acc) = newacc;
++      ACCESS_ONCE_RW(*acc) = newacc;
+ }
+ void be_parse_stats(struct be_adapter *adapter)
+diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
+index fb5579a..debdffa 100644
+--- a/drivers/net/ethernet/faraday/ftgmac100.c
++++ b/drivers/net/ethernet/faraday/ftgmac100.c
+@@ -30,6 +30,8 @@
+ #include <linux/netdevice.h>
+ #include <linux/phy.h>
+ #include <linux/platform_device.h>
++#include <linux/interrupt.h>
++#include <linux/irqreturn.h>
+ #include <net/ip.h>
+ #include "ftgmac100.h"
+diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c
+index a127cb2..0d043cd 100644
+--- a/drivers/net/ethernet/faraday/ftmac100.c
++++ b/drivers/net/ethernet/faraday/ftmac100.c
+@@ -30,6 +30,8 @@
+ #include <linux/module.h>
+ #include <linux/netdevice.h>
+ #include <linux/platform_device.h>
++#include <linux/interrupt.h>
++#include <linux/irqreturn.h>
+ #include "ftmac100.h"
+diff --git a/drivers/net/ethernet/fealnx.c b/drivers/net/ethernet/fealnx.c
+index 61d2bdd..7f1154a 100644
+--- a/drivers/net/ethernet/fealnx.c
++++ b/drivers/net/ethernet/fealnx.c
+@@ -150,7 +150,7 @@ struct chip_info {
+       int flags;
+ };
+-static const struct chip_info skel_netdrv_tbl[] __devinitdata = {
++static const struct chip_info skel_netdrv_tbl[] __devinitconst = {
+       { "100/10M Ethernet PCI Adapter",       HAS_MII_XCVR },
+       { "100/10M Ethernet PCI Adapter",       HAS_CHIP_XCVR },
+       { "1000/100/10M Ethernet PCI Adapter",  HAS_MII_XCVR },
+diff --git a/drivers/net/ethernet/intel/e1000e/80003es2lan.c b/drivers/net/ethernet/intel/e1000e/80003es2lan.c
+index e1159e5..e18684d 100644
+--- a/drivers/net/ethernet/intel/e1000e/80003es2lan.c
++++ b/drivers/net/ethernet/intel/e1000e/80003es2lan.c
+@@ -205,7 +205,7 @@ static s32 e1000_init_mac_params_80003es2lan(struct e1000_adapter *adapter)
  {
        struct e1000_hw *hw = &adapter->hw;
        struct e1000_mac_info *mac = &hw->mac;
 -      struct e1000_mac_operations *func = &mac->ops;
 +      e1000_mac_operations_no_const *func = &mac->ops;
  {
        struct e1000_hw *hw = &adapter->hw;
        struct e1000_mac_info *mac = &hw->mac;
 -      struct e1000_mac_operations *func = &mac->ops;
 +      e1000_mac_operations_no_const *func = &mac->ops;
-       u32 swsm = 0;
-       u32 swsm2 = 0;
-       bool force_clear_smbi = false;
-diff --git a/drivers/net/e1000e/es2lan.c b/drivers/net/e1000e/es2lan.c
-index e4f4225..24da2ea 100644
---- a/drivers/net/e1000e/es2lan.c
-+++ b/drivers/net/e1000e/es2lan.c
-@@ -205,7 +205,7 @@ static s32 e1000_init_mac_params_80003es2lan(struct e1000_adapter *adapter)
+       /* Set media type */
+       switch (adapter->pdev->device) {
+diff --git a/drivers/net/ethernet/intel/e1000e/82571.c b/drivers/net/ethernet/intel/e1000e/82571.c
+index a3e65fd..f451444 100644
+--- a/drivers/net/ethernet/intel/e1000e/82571.c
++++ b/drivers/net/ethernet/intel/e1000e/82571.c
+@@ -239,7 +239,7 @@ static s32 e1000_init_mac_params_82571(struct e1000_adapter *adapter)
  {
        struct e1000_hw *hw = &adapter->hw;
        struct e1000_mac_info *mac = &hw->mac;
 -      struct e1000_mac_operations *func = &mac->ops;
 +      e1000_mac_operations_no_const *func = &mac->ops;
  {
        struct e1000_hw *hw = &adapter->hw;
        struct e1000_mac_info *mac = &hw->mac;
 -      struct e1000_mac_operations *func = &mac->ops;
 +      e1000_mac_operations_no_const *func = &mac->ops;
-       /* Set media type */
-       switch (adapter->pdev->device) {
-diff --git a/drivers/net/e1000e/hw.h b/drivers/net/e1000e/hw.h
+       u32 swsm = 0;
+       u32 swsm2 = 0;
+       bool force_clear_smbi = false;
+diff --git a/drivers/net/ethernet/intel/e1000e/hw.h b/drivers/net/ethernet/intel/e1000e/hw.h
 index 2967039..ca8c40c 100644
 index 2967039..ca8c40c 100644
---- a/drivers/net/e1000e/hw.h
-+++ b/drivers/net/e1000e/hw.h
+--- a/drivers/net/ethernet/intel/e1000e/hw.h
++++ b/drivers/net/ethernet/intel/e1000e/hw.h
 @@ -778,6 +778,7 @@ struct e1000_mac_operations {
        void (*write_vfta)(struct e1000_hw *, u32, u32);
        s32  (*read_mac_addr)(struct e1000_hw *);
 @@ -778,6 +778,7 @@ struct e1000_mac_operations {
        void (*write_vfta)(struct e1000_hw *, u32, u32);
        s32  (*read_mac_addr)(struct e1000_hw *);
@@ -33110,36 +34871,10 @@ index 2967039..ca8c40c 100644
  
        enum e1000_nvm_type type;
        enum e1000_nvm_override override;
  
        enum e1000_nvm_type type;
        enum e1000_nvm_override override;
-diff --git a/drivers/net/fealnx.c b/drivers/net/fealnx.c
-index fa8677c..196356f 100644
---- a/drivers/net/fealnx.c
-+++ b/drivers/net/fealnx.c
-@@ -150,7 +150,7 @@ struct chip_info {
-       int flags;
- };
--static const struct chip_info skel_netdrv_tbl[] __devinitdata = {
-+static const struct chip_info skel_netdrv_tbl[] __devinitconst = {
-       { "100/10M Ethernet PCI Adapter",       HAS_MII_XCVR },
-       { "100/10M Ethernet PCI Adapter",       HAS_CHIP_XCVR },
-       { "1000/100/10M Ethernet PCI Adapter",  HAS_MII_XCVR },
-diff --git a/drivers/net/hamradio/6pack.c b/drivers/net/hamradio/6pack.c
-index 2a5a34d..be871cc 100644
---- a/drivers/net/hamradio/6pack.c
-+++ b/drivers/net/hamradio/6pack.c
-@@ -463,6 +463,8 @@ static void sixpack_receive_buf(struct tty_struct *tty,
-       unsigned char buf[512];
-       int count1;
-+      pax_track_stack();
-+
-       if (!count)
-               return;
-diff --git a/drivers/net/igb/e1000_hw.h b/drivers/net/igb/e1000_hw.h
+diff --git a/drivers/net/ethernet/intel/igb/e1000_hw.h b/drivers/net/ethernet/intel/igb/e1000_hw.h
 index 4519a13..f97fcd0 100644
 index 4519a13..f97fcd0 100644
---- a/drivers/net/igb/e1000_hw.h
-+++ b/drivers/net/igb/e1000_hw.h
+--- a/drivers/net/ethernet/intel/igb/e1000_hw.h
++++ b/drivers/net/ethernet/intel/igb/e1000_hw.h
 @@ -314,6 +314,7 @@ struct e1000_mac_operations {
        s32  (*read_mac_addr)(struct e1000_hw *);
        s32  (*get_speed_and_duplex)(struct e1000_hw *, u16 *, u16 *);
 @@ -314,6 +314,7 @@ struct e1000_mac_operations {
        s32  (*read_mac_addr)(struct e1000_hw *);
        s32  (*get_speed_and_duplex)(struct e1000_hw *, u16 *, u16 *);
@@ -33208,10 +34943,10 @@ index 4519a13..f97fcd0 100644
        struct e1000_mbx_stats stats;
        u32 timeout;
        u32 usec_delay;
        struct e1000_mbx_stats stats;
        u32 timeout;
        u32 usec_delay;
-diff --git a/drivers/net/igbvf/vf.h b/drivers/net/igbvf/vf.h
+diff --git a/drivers/net/ethernet/intel/igbvf/vf.h b/drivers/net/ethernet/intel/igbvf/vf.h
 index d7ed58f..64cde36 100644
 index d7ed58f..64cde36 100644
---- a/drivers/net/igbvf/vf.h
-+++ b/drivers/net/igbvf/vf.h
+--- a/drivers/net/ethernet/intel/igbvf/vf.h
++++ b/drivers/net/ethernet/intel/igbvf/vf.h
 @@ -189,9 +189,10 @@ struct e1000_mac_operations {
        s32  (*read_mac_addr)(struct e1000_hw *);
        s32  (*set_vfta)(struct e1000_hw *, u16, bool);
 @@ -189,9 +189,10 @@ struct e1000_mac_operations {
        s32  (*read_mac_addr)(struct e1000_hw *);
        s32  (*set_vfta)(struct e1000_hw *, u16, bool);
@@ -33241,38 +34976,11 @@ index d7ed58f..64cde36 100644
        struct e1000_mbx_stats stats;
        u32 timeout;
        u32 usec_delay;
        struct e1000_mbx_stats stats;
        u32 timeout;
        u32 usec_delay;
-diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
-index 6a130eb..1aeb9e4 100644
---- a/drivers/net/ixgb/ixgb_main.c
-+++ b/drivers/net/ixgb/ixgb_main.c
-@@ -1070,6 +1070,8 @@ ixgb_set_multi(struct net_device *netdev)
-       u32 rctl;
-       int i;
-+      pax_track_stack();
-+
-       /* Check for Promiscuous and All Multicast modes */
-       rctl = IXGB_READ_REG(hw, RCTL);
-diff --git a/drivers/net/ixgb/ixgb_param.c b/drivers/net/ixgb/ixgb_param.c
-index dd7fbeb..44b9bbf 100644
---- a/drivers/net/ixgb/ixgb_param.c
-+++ b/drivers/net/ixgb/ixgb_param.c
-@@ -261,6 +261,9 @@ void __devinit
- ixgb_check_options(struct ixgb_adapter *adapter)
- {
-       int bd = adapter->bd_number;
-+
-+      pax_track_stack();
-+
-       if (bd >= IXGB_MAX_NIC) {
-               pr_notice("Warning: no configuration for board #%i\n", bd);
-               pr_notice("Using defaults for all values\n");
-diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/ixgbe/ixgbe_type.h
-index e0d970e..1cfdea5 100644
---- a/drivers/net/ixgbe/ixgbe_type.h
-+++ b/drivers/net/ixgbe/ixgbe_type.h
-@@ -2642,6 +2642,7 @@ struct ixgbe_eeprom_operations {
+diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
+index 6c5cca8..de8ef63 100644
+--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
++++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
+@@ -2708,6 +2708,7 @@ struct ixgbe_eeprom_operations {
        s32 (*update_checksum)(struct ixgbe_hw *);
        u16 (*calc_checksum)(struct ixgbe_hw *);
  };
        s32 (*update_checksum)(struct ixgbe_hw *);
        u16 (*calc_checksum)(struct ixgbe_hw *);
  };
@@ -33280,7 +34988,7 @@ index e0d970e..1cfdea5 100644
  
  struct ixgbe_mac_operations {
        s32 (*init_hw)(struct ixgbe_hw *);
  
  struct ixgbe_mac_operations {
        s32 (*init_hw)(struct ixgbe_hw *);
-@@ -2703,6 +2704,7 @@ struct ixgbe_mac_operations {
+@@ -2769,6 +2770,7 @@ struct ixgbe_mac_operations {
        /* Manageability interface */
        s32 (*set_fw_drv_ver)(struct ixgbe_hw *, u8, u8, u8, u8);
  };
        /* Manageability interface */
        s32 (*set_fw_drv_ver)(struct ixgbe_hw *, u8, u8, u8, u8);
  };
@@ -33288,7 +34996,7 @@ index e0d970e..1cfdea5 100644
  
  struct ixgbe_phy_operations {
        s32 (*identify)(struct ixgbe_hw *);
  
  struct ixgbe_phy_operations {
        s32 (*identify)(struct ixgbe_hw *);
-@@ -2722,9 +2724,10 @@ struct ixgbe_phy_operations {
+@@ -2788,9 +2790,10 @@ struct ixgbe_phy_operations {
        s32 (*write_i2c_eeprom)(struct ixgbe_hw *, u8, u8);
        s32 (*check_overtemp)(struct ixgbe_hw *);
  };
        s32 (*write_i2c_eeprom)(struct ixgbe_hw *, u8, u8);
        s32 (*check_overtemp)(struct ixgbe_hw *);
  };
@@ -33300,7 +35008,7 @@ index e0d970e..1cfdea5 100644
        enum ixgbe_eeprom_type          type;
        u32                             semaphore_delay;
        u16                             word_size;
        enum ixgbe_eeprom_type          type;
        u32                             semaphore_delay;
        u16                             word_size;
-@@ -2734,7 +2737,7 @@ struct ixgbe_eeprom_info {
+@@ -2800,7 +2803,7 @@ struct ixgbe_eeprom_info {
  
  #define IXGBE_FLAGS_DOUBLE_RESET_REQUIRED     0x01
  struct ixgbe_mac_info {
  
  #define IXGBE_FLAGS_DOUBLE_RESET_REQUIRED     0x01
  struct ixgbe_mac_info {
@@ -33309,7 +35017,7 @@ index e0d970e..1cfdea5 100644
        enum ixgbe_mac_type             type;
        u8                              addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
        u8                              perm_addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
        enum ixgbe_mac_type             type;
        u8                              addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
        u8                              perm_addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
-@@ -2762,7 +2765,7 @@ struct ixgbe_mac_info {
+@@ -2828,7 +2831,7 @@ struct ixgbe_mac_info {
  };
  
  struct ixgbe_phy_info {
  };
  
  struct ixgbe_phy_info {
@@ -33318,7 +35026,7 @@ index e0d970e..1cfdea5 100644
        struct mdio_if_info             mdio;
        enum ixgbe_phy_type             type;
        u32                             id;
        struct mdio_if_info             mdio;
        enum ixgbe_phy_type             type;
        u32                             id;
-@@ -2790,6 +2793,7 @@ struct ixgbe_mbx_operations {
+@@ -2856,6 +2859,7 @@ struct ixgbe_mbx_operations {
        s32 (*check_for_ack)(struct ixgbe_hw *, u16);
        s32 (*check_for_rst)(struct ixgbe_hw *, u16);
  };
        s32 (*check_for_ack)(struct ixgbe_hw *, u16);
        s32 (*check_for_rst)(struct ixgbe_hw *, u16);
  };
@@ -33326,7 +35034,7 @@ index e0d970e..1cfdea5 100644
  
  struct ixgbe_mbx_stats {
        u32 msgs_tx;
  
  struct ixgbe_mbx_stats {
        u32 msgs_tx;
-@@ -2801,7 +2805,7 @@ struct ixgbe_mbx_stats {
+@@ -2867,7 +2871,7 @@ struct ixgbe_mbx_stats {
  };
  
  struct ixgbe_mbx_info {
  };
  
  struct ixgbe_mbx_info {
@@ -33335,10 +35043,10 @@ index e0d970e..1cfdea5 100644
        struct ixgbe_mbx_stats stats;
        u32 timeout;
        u32 usec_delay;
        struct ixgbe_mbx_stats stats;
        u32 timeout;
        u32 usec_delay;
-diff --git a/drivers/net/ixgbevf/vf.h b/drivers/net/ixgbevf/vf.h
+diff --git a/drivers/net/ethernet/intel/ixgbevf/vf.h b/drivers/net/ethernet/intel/ixgbevf/vf.h
 index 10306b4..28df758 100644
 index 10306b4..28df758 100644
---- a/drivers/net/ixgbevf/vf.h
-+++ b/drivers/net/ixgbevf/vf.h
+--- a/drivers/net/ethernet/intel/ixgbevf/vf.h
++++ b/drivers/net/ethernet/intel/ixgbevf/vf.h
 @@ -70,6 +70,7 @@ struct ixgbe_mac_operations {
        s32 (*clear_vfta)(struct ixgbe_hw *);
        s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool);
 @@ -70,6 +70,7 @@ struct ixgbe_mac_operations {
        s32 (*clear_vfta)(struct ixgbe_hw *);
        s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool);
@@ -33373,23 +35081,10 @@ index 10306b4..28df758 100644
        struct ixgbe_mbx_stats stats;
        u32 timeout;
        u32 udelay;
        struct ixgbe_mbx_stats stats;
        u32 timeout;
        u32 udelay;
-diff --git a/drivers/net/ksz884x.c b/drivers/net/ksz884x.c
-index 27418d3..adf15bb 100644
---- a/drivers/net/ksz884x.c
-+++ b/drivers/net/ksz884x.c
-@@ -6533,6 +6533,8 @@ static void netdev_get_ethtool_stats(struct net_device *dev,
-       int rc;
-       u64 counter[TOTAL_PORT_COUNTER_NUM];
-+      pax_track_stack();
-+
-       mutex_lock(&hw_priv->lock);
-       n = SWITCH_PORT_NUM;
-       for (i = 0, p = port->first_port; i < port->mib_port_cnt; i++, p++) {
-diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
-index f0ee35d..3831c8a 100644
---- a/drivers/net/mlx4/main.c
-+++ b/drivers/net/mlx4/main.c
+diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
+index 94bbc85..78c12e6 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/main.c
++++ b/drivers/net/ethernet/mellanox/mlx4/main.c
 @@ -40,6 +40,7 @@
  #include <linux/dma-mapping.h>
  #include <linux/slab.h>
 @@ -40,6 +40,7 @@
  #include <linux/dma-mapping.h>
  #include <linux/slab.h>
@@ -33398,649 +35093,89 @@ index f0ee35d..3831c8a 100644
  
  #include <linux/mlx4/device.h>
  #include <linux/mlx4/doorbell.h>
  
  #include <linux/mlx4/device.h>
  #include <linux/mlx4/doorbell.h>
-@@ -762,6 +763,8 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
-       u64 icm_size;
-       int err;
-+      pax_track_stack();
-+
-       err = mlx4_QUERY_FW(dev);
-       if (err) {
-               if (err == -EACCES)
-diff --git a/drivers/net/niu.c b/drivers/net/niu.c
-index ed47585..5e5be8f 100644
---- a/drivers/net/niu.c
-+++ b/drivers/net/niu.c
-@@ -9061,6 +9061,8 @@ static void __devinit niu_try_msix(struct niu *np, u8 *ldg_num_map)
-       int i, num_irqs, err;
-       u8 first_ldg;
-+      pax_track_stack();
-+
-       first_ldg = (NIU_NUM_LDG / parent->num_ports) * np->port;
-       for (i = 0; i < (NIU_NUM_LDG / parent->num_ports); i++)
-               ldg_num_map[i] = first_ldg + i;
-diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
-index 80b6f36..5cd8938 100644
---- a/drivers/net/pcnet32.c
-+++ b/drivers/net/pcnet32.c
-@@ -270,7 +270,7 @@ struct pcnet32_private {
-       struct sk_buff          **rx_skbuff;
-       dma_addr_t              *tx_dma_addr;
-       dma_addr_t              *rx_dma_addr;
--      struct pcnet32_access   a;
-+      struct pcnet32_access   *a;
-       spinlock_t              lock;           /* Guard lock */
-       unsigned int            cur_rx, cur_tx; /* The next free ring entry */
-       unsigned int            rx_ring_size;   /* current rx ring size */
-@@ -460,9 +460,9 @@ static void pcnet32_netif_start(struct net_device *dev)
-       u16 val;
-       netif_wake_queue(dev);
--      val = lp->a.read_csr(ioaddr, CSR3);
-+      val = lp->a->read_csr(ioaddr, CSR3);
-       val &= 0x00ff;
--      lp->a.write_csr(ioaddr, CSR3, val);
-+      lp->a->write_csr(ioaddr, CSR3, val);
-       napi_enable(&lp->napi);
- }
-@@ -730,7 +730,7 @@ static u32 pcnet32_get_link(struct net_device *dev)
-               r = mii_link_ok(&lp->mii_if);
-       } else if (lp->chip_version >= PCNET32_79C970A) {
-               ulong ioaddr = dev->base_addr;  /* card base I/O address */
--              r = (lp->a.read_bcr(ioaddr, 4) != 0xc0);
-+              r = (lp->a->read_bcr(ioaddr, 4) != 0xc0);
-       } else {        /* can not detect link on really old chips */
-               r = 1;
-       }
-@@ -792,7 +792,7 @@ static int pcnet32_set_ringparam(struct net_device *dev,
-               pcnet32_netif_stop(dev);
-       spin_lock_irqsave(&lp->lock, flags);
--      lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);       /* stop the chip */
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);      /* stop the chip */
-       size = min(ering->tx_pending, (unsigned int)TX_MAX_RING_SIZE);
-@@ -868,7 +868,7 @@ static void pcnet32_ethtool_test(struct net_device *dev,
- static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
- {
-       struct pcnet32_private *lp = netdev_priv(dev);
--      struct pcnet32_access *a = &lp->a;      /* access to registers */
-+      struct pcnet32_access *a = lp->a;       /* access to registers */
-       ulong ioaddr = dev->base_addr;  /* card base I/O address */
-       struct sk_buff *skb;    /* sk buff */
-       int x, i;               /* counters */
-@@ -888,21 +888,21 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
-               pcnet32_netif_stop(dev);
-       spin_lock_irqsave(&lp->lock, flags);
--      lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);       /* stop the chip */
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);      /* stop the chip */
-       numbuffs = min(numbuffs, (int)min(lp->rx_ring_size, lp->tx_ring_size));
-       /* Reset the PCNET32 */
--      lp->a.reset(ioaddr);
--      lp->a.write_csr(ioaddr, CSR4, 0x0915);  /* auto tx pad */
-+      lp->a->reset(ioaddr);
-+      lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
-       /* switch pcnet32 to 32bit mode */
--      lp->a.write_bcr(ioaddr, 20, 2);
-+      lp->a->write_bcr(ioaddr, 20, 2);
-       /* purge & init rings but don't actually restart */
-       pcnet32_restart(dev, 0x0000);
--      lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);       /* Set STOP bit */
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);      /* Set STOP bit */
-       /* Initialize Transmit buffers. */
-       size = data_len + 15;
-@@ -947,10 +947,10 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
+diff --git a/drivers/net/ethernet/neterion/vxge/vxge-config.h b/drivers/net/ethernet/neterion/vxge/vxge-config.h
+index 5046a64..71ca936 100644
+--- a/drivers/net/ethernet/neterion/vxge/vxge-config.h
++++ b/drivers/net/ethernet/neterion/vxge/vxge-config.h
+@@ -514,7 +514,7 @@ struct vxge_hw_uld_cbs {
+       void (*link_down)(struct __vxge_hw_device *devh);
+       void (*crit_err)(struct __vxge_hw_device *devh,
+                       enum vxge_hw_event type, u64 ext_data);
+-};
++} __no_const;
  
  
-       /* set int loopback in CSR15 */
-       x = a->read_csr(ioaddr, CSR15) & 0xfffc;
--      lp->a.write_csr(ioaddr, CSR15, x | 0x0044);
-+      lp->a->write_csr(ioaddr, CSR15, x | 0x0044);
+ /*
+  * struct __vxge_hw_blockpool_entry - Block private data structure
+diff --git a/drivers/net/ethernet/neterion/vxge/vxge-traffic.h b/drivers/net/ethernet/neterion/vxge/vxge-traffic.h
+index 4a518a3..936b334 100644
+--- a/drivers/net/ethernet/neterion/vxge/vxge-traffic.h
++++ b/drivers/net/ethernet/neterion/vxge/vxge-traffic.h
+@@ -2088,7 +2088,7 @@ struct vxge_hw_mempool_cbs {
+                       struct vxge_hw_mempool_dma      *dma_object,
+                       u32                     index,
+                       u32                     is_last);
+-};
++} __no_const;
  
  
-       teststatus = cpu_to_le16(0x8000);
--      lp->a.write_csr(ioaddr, CSR0, CSR0_START);      /* Set STRT bit */
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_START);     /* Set STRT bit */
+ #define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath)                            \
+               ((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next)
+diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
+index 0cf2351..56c4cef 100644
+--- a/drivers/net/ethernet/realtek/r8169.c
++++ b/drivers/net/ethernet/realtek/r8169.c
+@@ -698,17 +698,17 @@ struct rtl8169_private {
+       struct mdio_ops {
+               void (*write)(void __iomem *, int, int);
+               int (*read)(void __iomem *, int);
+-      } mdio_ops;
++      } __no_const mdio_ops;
  
  
-       /* Check status of descriptors */
-       for (x = 0; x < numbuffs; x++) {
-@@ -969,7 +969,7 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
-               }
-       }
+       struct pll_power_ops {
+               void (*down)(struct rtl8169_private *);
+               void (*up)(struct rtl8169_private *);
+-      } pll_power_ops;
++      } __no_const pll_power_ops;
  
  
--      lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);       /* Set STOP bit */
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);      /* Set STOP bit */
-       wmb();
-       if (netif_msg_hw(lp) && netif_msg_pktdata(lp)) {
-               netdev_printk(KERN_DEBUG, dev, "RX loopback packets:\n");
-@@ -1015,7 +1015,7 @@ clean_up:
-               pcnet32_restart(dev, CSR0_NORMAL);
-       } else {
-               pcnet32_purge_rx_ring(dev);
--              lp->a.write_bcr(ioaddr, 20, 4); /* return to 16bit mode */
-+              lp->a->write_bcr(ioaddr, 20, 4);        /* return to 16bit mode */
-       }
-       spin_unlock_irqrestore(&lp->lock, flags);
+       struct jumbo_ops {
+               void (*enable)(struct rtl8169_private *);
+               void (*disable)(struct rtl8169_private *);
+-      } jumbo_ops;
++      } __no_const jumbo_ops;
  
  
-@@ -1026,7 +1026,7 @@ static int pcnet32_set_phys_id(struct net_device *dev,
-                              enum ethtool_phys_id_state state)
- {
-       struct pcnet32_private *lp = netdev_priv(dev);
--      struct pcnet32_access *a = &lp->a;
-+      struct pcnet32_access *a = lp->a;
-       ulong ioaddr = dev->base_addr;
-       unsigned long flags;
-       int i;
-@@ -1067,7 +1067,7 @@ static int pcnet32_suspend(struct net_device *dev, unsigned long *flags,
+       int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv);
+       int (*get_settings)(struct net_device *, struct ethtool_cmd *);
+diff --git a/drivers/net/ethernet/sis/sis190.c b/drivers/net/ethernet/sis/sis190.c
+index 1b4658c..a30dabb 100644
+--- a/drivers/net/ethernet/sis/sis190.c
++++ b/drivers/net/ethernet/sis/sis190.c
+@@ -1624,7 +1624,7 @@ static int __devinit sis190_get_mac_addr_from_eeprom(struct pci_dev *pdev,
+ static int __devinit sis190_get_mac_addr_from_apc(struct pci_dev *pdev,
+                                                 struct net_device *dev)
  {
  {
-       int csr5;
-       struct pcnet32_private *lp = netdev_priv(dev);
--      struct pcnet32_access *a = &lp->a;
-+      struct pcnet32_access *a = lp->a;
-       ulong ioaddr = dev->base_addr;
-       int ticks;
-@@ -1324,8 +1324,8 @@ static int pcnet32_poll(struct napi_struct *napi, int budget)
-       spin_lock_irqsave(&lp->lock, flags);
-       if (pcnet32_tx(dev)) {
-               /* reset the chip to clear the error condition, then restart */
--              lp->a.reset(ioaddr);
--              lp->a.write_csr(ioaddr, CSR4, 0x0915);  /* auto tx pad */
-+              lp->a->reset(ioaddr);
-+              lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
-               pcnet32_restart(dev, CSR0_START);
-               netif_wake_queue(dev);
-       }
-@@ -1337,12 +1337,12 @@ static int pcnet32_poll(struct napi_struct *napi, int budget)
-               __napi_complete(napi);
-               /* clear interrupt masks */
--              val = lp->a.read_csr(ioaddr, CSR3);
-+              val = lp->a->read_csr(ioaddr, CSR3);
-               val &= 0x00ff;
--              lp->a.write_csr(ioaddr, CSR3, val);
-+              lp->a->write_csr(ioaddr, CSR3, val);
-               /* Set interrupt enable. */
--              lp->a.write_csr(ioaddr, CSR0, CSR0_INTEN);
-+              lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN);
-               spin_unlock_irqrestore(&lp->lock, flags);
-       }
-@@ -1365,7 +1365,7 @@ static void pcnet32_get_regs(struct net_device *dev, struct ethtool_regs *regs,
-       int i, csr0;
-       u16 *buff = ptr;
-       struct pcnet32_private *lp = netdev_priv(dev);
--      struct pcnet32_access *a = &lp->a;
-+      struct pcnet32_access *a = lp->a;
-       ulong ioaddr = dev->base_addr;
-       unsigned long flags;
-@@ -1401,9 +1401,9 @@ static void pcnet32_get_regs(struct net_device *dev, struct ethtool_regs *regs,
-               for (j = 0; j < PCNET32_MAX_PHYS; j++) {
-                       if (lp->phymask & (1 << j)) {
-                               for (i = 0; i < PCNET32_REGS_PER_PHY; i++) {
--                                      lp->a.write_bcr(ioaddr, 33,
-+                                      lp->a->write_bcr(ioaddr, 33,
-                                                       (j << 5) | i);
--                                      *buff++ = lp->a.read_bcr(ioaddr, 34);
-+                                      *buff++ = lp->a->read_bcr(ioaddr, 34);
-                               }
-                       }
-               }
-@@ -1785,7 +1785,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
-           ((cards_found >= MAX_UNITS) || full_duplex[cards_found]))
-               lp->options |= PCNET32_PORT_FD;
--      lp->a = *a;
-+      lp->a = a;
-       /* prior to register_netdev, dev->name is not yet correct */
-       if (pcnet32_alloc_ring(dev, pci_name(lp->pci_dev))) {
-@@ -1844,7 +1844,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
-       if (lp->mii) {
-               /* lp->phycount and lp->phymask are set to 0 by memset above */
--              lp->mii_if.phy_id = ((lp->a.read_bcr(ioaddr, 33)) >> 5) & 0x1f;
-+              lp->mii_if.phy_id = ((lp->a->read_bcr(ioaddr, 33)) >> 5) & 0x1f;
-               /* scan for PHYs */
-               for (i = 0; i < PCNET32_MAX_PHYS; i++) {
-                       unsigned short id1, id2;
-@@ -1864,7 +1864,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
-                               pr_info("Found PHY %04x:%04x at address %d\n",
-                                       id1, id2, i);
-               }
--              lp->a.write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5);
-+              lp->a->write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5);
-               if (lp->phycount > 1)
-                       lp->options |= PCNET32_PORT_MII;
-       }
-@@ -2020,10 +2020,10 @@ static int pcnet32_open(struct net_device *dev)
-       }
-       /* Reset the PCNET32 */
--      lp->a.reset(ioaddr);
-+      lp->a->reset(ioaddr);
-       /* switch pcnet32 to 32bit mode */
--      lp->a.write_bcr(ioaddr, 20, 2);
-+      lp->a->write_bcr(ioaddr, 20, 2);
-       netif_printk(lp, ifup, KERN_DEBUG, dev,
-                    "%s() irq %d tx/rx rings %#x/%#x init %#x\n",
-@@ -2032,14 +2032,14 @@ static int pcnet32_open(struct net_device *dev)
-                    (u32) (lp->init_dma_addr));
-       /* set/reset autoselect bit */
--      val = lp->a.read_bcr(ioaddr, 2) & ~2;
-+      val = lp->a->read_bcr(ioaddr, 2) & ~2;
-       if (lp->options & PCNET32_PORT_ASEL)
-               val |= 2;
--      lp->a.write_bcr(ioaddr, 2, val);
-+      lp->a->write_bcr(ioaddr, 2, val);
-       /* handle full duplex setting */
-       if (lp->mii_if.full_duplex) {
--              val = lp->a.read_bcr(ioaddr, 9) & ~3;
-+              val = lp->a->read_bcr(ioaddr, 9) & ~3;
-               if (lp->options & PCNET32_PORT_FD) {
-                       val |= 1;
-                       if (lp->options == (PCNET32_PORT_FD | PCNET32_PORT_AUI))
-@@ -2049,14 +2049,14 @@ static int pcnet32_open(struct net_device *dev)
-                       if (lp->chip_version == 0x2627)
-                               val |= 3;
-               }
--              lp->a.write_bcr(ioaddr, 9, val);
-+              lp->a->write_bcr(ioaddr, 9, val);
-       }
-       /* set/reset GPSI bit in test register */
--      val = lp->a.read_csr(ioaddr, 124) & ~0x10;
-+      val = lp->a->read_csr(ioaddr, 124) & ~0x10;
-       if ((lp->options & PCNET32_PORT_PORTSEL) == PCNET32_PORT_GPSI)
-               val |= 0x10;
--      lp->a.write_csr(ioaddr, 124, val);
-+      lp->a->write_csr(ioaddr, 124, val);
-       /* Allied Telesyn AT 2700/2701 FX are 100Mbit only and do not negotiate */
-       if (pdev && pdev->subsystem_vendor == PCI_VENDOR_ID_AT &&
-@@ -2075,24 +2075,24 @@ static int pcnet32_open(struct net_device *dev)
-                * duplex, and/or enable auto negotiation, and clear DANAS
-                */
-               if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) {
--                      lp->a.write_bcr(ioaddr, 32,
--                                      lp->a.read_bcr(ioaddr, 32) | 0x0080);
-+                      lp->a->write_bcr(ioaddr, 32,
-+                                      lp->a->read_bcr(ioaddr, 32) | 0x0080);
-                       /* disable Auto Negotiation, set 10Mpbs, HD */
--                      val = lp->a.read_bcr(ioaddr, 32) & ~0xb8;
-+                      val = lp->a->read_bcr(ioaddr, 32) & ~0xb8;
-                       if (lp->options & PCNET32_PORT_FD)
-                               val |= 0x10;
-                       if (lp->options & PCNET32_PORT_100)
-                               val |= 0x08;
--                      lp->a.write_bcr(ioaddr, 32, val);
-+                      lp->a->write_bcr(ioaddr, 32, val);
-               } else {
-                       if (lp->options & PCNET32_PORT_ASEL) {
--                              lp->a.write_bcr(ioaddr, 32,
--                                              lp->a.read_bcr(ioaddr,
-+                              lp->a->write_bcr(ioaddr, 32,
-+                                              lp->a->read_bcr(ioaddr,
-                                                              32) | 0x0080);
-                               /* enable auto negotiate, setup, disable fd */
--                              val = lp->a.read_bcr(ioaddr, 32) & ~0x98;
-+                              val = lp->a->read_bcr(ioaddr, 32) & ~0x98;
-                               val |= 0x20;
--                              lp->a.write_bcr(ioaddr, 32, val);
-+                              lp->a->write_bcr(ioaddr, 32, val);
-                       }
-               }
-       } else {
-@@ -2105,10 +2105,10 @@ static int pcnet32_open(struct net_device *dev)
-                * There is really no good other way to handle multiple PHYs
-                * other than turning off all automatics
-                */
--              val = lp->a.read_bcr(ioaddr, 2);
--              lp->a.write_bcr(ioaddr, 2, val & ~2);
--              val = lp->a.read_bcr(ioaddr, 32);
--              lp->a.write_bcr(ioaddr, 32, val & ~(1 << 7));   /* stop MII manager */
-+              val = lp->a->read_bcr(ioaddr, 2);
-+              lp->a->write_bcr(ioaddr, 2, val & ~2);
-+              val = lp->a->read_bcr(ioaddr, 32);
-+              lp->a->write_bcr(ioaddr, 32, val & ~(1 << 7));  /* stop MII manager */
-               if (!(lp->options & PCNET32_PORT_ASEL)) {
-                       /* setup ecmd */
-@@ -2118,7 +2118,7 @@ static int pcnet32_open(struct net_device *dev)
-                       ethtool_cmd_speed_set(&ecmd,
-                                             (lp->options & PCNET32_PORT_100) ?
-                                             SPEED_100 : SPEED_10);
--                      bcr9 = lp->a.read_bcr(ioaddr, 9);
-+                      bcr9 = lp->a->read_bcr(ioaddr, 9);
-                       if (lp->options & PCNET32_PORT_FD) {
-                               ecmd.duplex = DUPLEX_FULL;
-@@ -2127,7 +2127,7 @@ static int pcnet32_open(struct net_device *dev)
-                               ecmd.duplex = DUPLEX_HALF;
-                               bcr9 |= ~(1 << 0);
-                       }
--                      lp->a.write_bcr(ioaddr, 9, bcr9);
-+                      lp->a->write_bcr(ioaddr, 9, bcr9);
-               }
-               for (i = 0; i < PCNET32_MAX_PHYS; i++) {
-@@ -2158,9 +2158,9 @@ static int pcnet32_open(struct net_device *dev)
- #ifdef DO_DXSUFLO
-       if (lp->dxsuflo) {      /* Disable transmit stop on underflow */
--              val = lp->a.read_csr(ioaddr, CSR3);
-+              val = lp->a->read_csr(ioaddr, CSR3);
-               val |= 0x40;
--              lp->a.write_csr(ioaddr, CSR3, val);
-+              lp->a->write_csr(ioaddr, CSR3, val);
-       }
- #endif
-@@ -2176,11 +2176,11 @@ static int pcnet32_open(struct net_device *dev)
-       napi_enable(&lp->napi);
-       /* Re-initialize the PCNET32, and start it when done. */
--      lp->a.write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff));
--      lp->a.write_csr(ioaddr, 2, (lp->init_dma_addr >> 16));
-+      lp->a->write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff));
-+      lp->a->write_csr(ioaddr, 2, (lp->init_dma_addr >> 16));
--      lp->a.write_csr(ioaddr, CSR4, 0x0915);  /* auto tx pad */
--      lp->a.write_csr(ioaddr, CSR0, CSR0_INIT);
-+      lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_INIT);
-       netif_start_queue(dev);
-@@ -2192,19 +2192,19 @@ static int pcnet32_open(struct net_device *dev)
-       i = 0;
-       while (i++ < 100)
--              if (lp->a.read_csr(ioaddr, CSR0) & CSR0_IDON)
-+              if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON)
-                       break;
-       /*
-        * We used to clear the InitDone bit, 0x0100, here but Mark Stockton
-        * reports that doing so triggers a bug in the '974.
-        */
--      lp->a.write_csr(ioaddr, CSR0, CSR0_NORMAL);
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_NORMAL);
-       netif_printk(lp, ifup, KERN_DEBUG, dev,
-                    "pcnet32 open after %d ticks, init block %#x csr0 %4.4x\n",
-                    i,
-                    (u32) (lp->init_dma_addr),
--                   lp->a.read_csr(ioaddr, CSR0));
-+                   lp->a->read_csr(ioaddr, CSR0));
-       spin_unlock_irqrestore(&lp->lock, flags);
-@@ -2218,7 +2218,7 @@ err_free_ring:
-        * Switch back to 16bit mode to avoid problems with dumb
-        * DOS packet driver after a warm reboot
-        */
--      lp->a.write_bcr(ioaddr, 20, 4);
-+      lp->a->write_bcr(ioaddr, 20, 4);
- err_free_irq:
-       spin_unlock_irqrestore(&lp->lock, flags);
-@@ -2323,7 +2323,7 @@ static void pcnet32_restart(struct net_device *dev, unsigned int csr0_bits)
-       /* wait for stop */
-       for (i = 0; i < 100; i++)
--              if (lp->a.read_csr(ioaddr, CSR0) & CSR0_STOP)
-+              if (lp->a->read_csr(ioaddr, CSR0) & CSR0_STOP)
-                       break;
-       if (i >= 100)
-@@ -2335,13 +2335,13 @@ static void pcnet32_restart(struct net_device *dev, unsigned int csr0_bits)
-               return;
-       /* ReInit Ring */
--      lp->a.write_csr(ioaddr, CSR0, CSR0_INIT);
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_INIT);
-       i = 0;
-       while (i++ < 1000)
--              if (lp->a.read_csr(ioaddr, CSR0) & CSR0_IDON)
-+              if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON)
-                       break;
--      lp->a.write_csr(ioaddr, CSR0, csr0_bits);
-+      lp->a->write_csr(ioaddr, CSR0, csr0_bits);
- }
- static void pcnet32_tx_timeout(struct net_device *dev)
-@@ -2353,8 +2353,8 @@ static void pcnet32_tx_timeout(struct net_device *dev)
-       /* Transmitter timeout, serious problems. */
-       if (pcnet32_debug & NETIF_MSG_DRV)
-               pr_err("%s: transmit timed out, status %4.4x, resetting\n",
--                     dev->name, lp->a.read_csr(ioaddr, CSR0));
--      lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
-+                     dev->name, lp->a->read_csr(ioaddr, CSR0));
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
-       dev->stats.tx_errors++;
-       if (netif_msg_tx_err(lp)) {
-               int i;
-@@ -2397,7 +2397,7 @@ static netdev_tx_t pcnet32_start_xmit(struct sk_buff *skb,
-       netif_printk(lp, tx_queued, KERN_DEBUG, dev,
-                    "%s() called, csr0 %4.4x\n",
--                   __func__, lp->a.read_csr(ioaddr, CSR0));
-+                   __func__, lp->a->read_csr(ioaddr, CSR0));
-       /* Default status -- will not enable Successful-TxDone
-        * interrupt when that option is available to us.
-@@ -2427,7 +2427,7 @@ static netdev_tx_t pcnet32_start_xmit(struct sk_buff *skb,
-       dev->stats.tx_bytes += skb->len;
-       /* Trigger an immediate send poll. */
--      lp->a.write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
-       if (lp->tx_ring[(entry + 1) & lp->tx_mod_mask].base != 0) {
-               lp->tx_full = 1;
-@@ -2452,16 +2452,16 @@ pcnet32_interrupt(int irq, void *dev_id)
-       spin_lock(&lp->lock);
--      csr0 = lp->a.read_csr(ioaddr, CSR0);
-+      csr0 = lp->a->read_csr(ioaddr, CSR0);
-       while ((csr0 & 0x8f00) && --boguscnt >= 0) {
-               if (csr0 == 0xffff)
-                       break;  /* PCMCIA remove happened */
-               /* Acknowledge all of the current interrupt sources ASAP. */
--              lp->a.write_csr(ioaddr, CSR0, csr0 & ~0x004f);
-+              lp->a->write_csr(ioaddr, CSR0, csr0 & ~0x004f);
-               netif_printk(lp, intr, KERN_DEBUG, dev,
-                            "interrupt  csr0=%#2.2x new csr=%#2.2x\n",
--                           csr0, lp->a.read_csr(ioaddr, CSR0));
-+                           csr0, lp->a->read_csr(ioaddr, CSR0));
-               /* Log misc errors. */
-               if (csr0 & 0x4000)
-@@ -2488,19 +2488,19 @@ pcnet32_interrupt(int irq, void *dev_id)
-               if (napi_schedule_prep(&lp->napi)) {
-                       u16 val;
-                       /* set interrupt masks */
--                      val = lp->a.read_csr(ioaddr, CSR3);
-+                      val = lp->a->read_csr(ioaddr, CSR3);
-                       val |= 0x5f00;
--                      lp->a.write_csr(ioaddr, CSR3, val);
-+                      lp->a->write_csr(ioaddr, CSR3, val);
-                       __napi_schedule(&lp->napi);
-                       break;
-               }
--              csr0 = lp->a.read_csr(ioaddr, CSR0);
-+              csr0 = lp->a->read_csr(ioaddr, CSR0);
-       }
-       netif_printk(lp, intr, KERN_DEBUG, dev,
-                    "exiting interrupt, csr0=%#4.4x\n",
--                   lp->a.read_csr(ioaddr, CSR0));
-+                   lp->a->read_csr(ioaddr, CSR0));
-       spin_unlock(&lp->lock);
-@@ -2520,20 +2520,20 @@ static int pcnet32_close(struct net_device *dev)
-       spin_lock_irqsave(&lp->lock, flags);
--      dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
-+      dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112);
-       netif_printk(lp, ifdown, KERN_DEBUG, dev,
-                    "Shutting down ethercard, status was %2.2x\n",
--                   lp->a.read_csr(ioaddr, CSR0));
-+                   lp->a->read_csr(ioaddr, CSR0));
-       /* We stop the PCNET32 here -- it occasionally polls memory if we don't. */
--      lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
-+      lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
-       /*
-        * Switch back to 16bit mode to avoid problems with dumb
-        * DOS packet driver after a warm reboot
-        */
--      lp->a.write_bcr(ioaddr, 20, 4);
-+      lp->a->write_bcr(ioaddr, 20, 4);
-       spin_unlock_irqrestore(&lp->lock, flags);
-@@ -2556,7 +2556,7 @@ static struct net_device_stats *pcnet32_get_stats(struct net_device *dev)
-       unsigned long flags;
-       spin_lock_irqsave(&lp->lock, flags);
--      dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
-+      dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112);
-       spin_unlock_irqrestore(&lp->lock, flags);
-       return &dev->stats;
-@@ -2577,10 +2577,10 @@ static void pcnet32_load_multicast(struct net_device *dev)
-       if (dev->flags & IFF_ALLMULTI) {
-               ib->filter[0] = cpu_to_le32(~0U);
-               ib->filter[1] = cpu_to_le32(~0U);
--              lp->a.write_csr(ioaddr, PCNET32_MC_FILTER, 0xffff);
--              lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+1, 0xffff);
--              lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+2, 0xffff);
--              lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+3, 0xffff);
-+              lp->a->write_csr(ioaddr, PCNET32_MC_FILTER, 0xffff);
-+              lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+1, 0xffff);
-+              lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+2, 0xffff);
-+              lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+3, 0xffff);
-               return;
-       }
-       /* clear the multicast filter */
-@@ -2594,7 +2594,7 @@ static void pcnet32_load_multicast(struct net_device *dev)
-               mcast_table[crc >> 4] |= cpu_to_le16(1 << (crc & 0xf));
-       }
-       for (i = 0; i < 4; i++)
--              lp->a.write_csr(ioaddr, PCNET32_MC_FILTER + i,
-+              lp->a->write_csr(ioaddr, PCNET32_MC_FILTER + i,
-                               le16_to_cpu(mcast_table[i]));
- }
-@@ -2609,28 +2609,28 @@ static void pcnet32_set_multicast_list(struct net_device *dev)
-       spin_lock_irqsave(&lp->lock, flags);
-       suspended = pcnet32_suspend(dev, &flags, 0);
--      csr15 = lp->a.read_csr(ioaddr, CSR15);
-+      csr15 = lp->a->read_csr(ioaddr, CSR15);
-       if (dev->flags & IFF_PROMISC) {
-               /* Log any net taps. */
-               netif_info(lp, hw, dev, "Promiscuous mode enabled\n");
-               lp->init_block->mode =
-                   cpu_to_le16(0x8000 | (lp->options & PCNET32_PORT_PORTSEL) <<
-                               7);
--              lp->a.write_csr(ioaddr, CSR15, csr15 | 0x8000);
-+              lp->a->write_csr(ioaddr, CSR15, csr15 | 0x8000);
-       } else {
-               lp->init_block->mode =
-                   cpu_to_le16((lp->options & PCNET32_PORT_PORTSEL) << 7);
--              lp->a.write_csr(ioaddr, CSR15, csr15 & 0x7fff);
-+              lp->a->write_csr(ioaddr, CSR15, csr15 & 0x7fff);
-               pcnet32_load_multicast(dev);
-       }
-       if (suspended) {
-               int csr5;
-               /* clear SUSPEND (SPND) - CSR5 bit 0 */
--              csr5 = lp->a.read_csr(ioaddr, CSR5);
--              lp->a.write_csr(ioaddr, CSR5, csr5 & (~CSR5_SUSPEND));
-+              csr5 = lp->a->read_csr(ioaddr, CSR5);
-+              lp->a->write_csr(ioaddr, CSR5, csr5 & (~CSR5_SUSPEND));
-       } else {
--              lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
-+              lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
-               pcnet32_restart(dev, CSR0_NORMAL);
-               netif_wake_queue(dev);
-       }
-@@ -2648,8 +2648,8 @@ static int mdio_read(struct net_device *dev, int phy_id, int reg_num)
-       if (!lp->mii)
-               return 0;
--      lp->a.write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
--      val_out = lp->a.read_bcr(ioaddr, 34);
-+      lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
-+      val_out = lp->a->read_bcr(ioaddr, 34);
+-      static const u16 __devinitdata ids[] = { 0x0965, 0x0966, 0x0968 };
++      static const u16 __devinitconst ids[] = { 0x0965, 0x0966, 0x0968 };
+       struct sis190_private *tp = netdev_priv(dev);
+       struct pci_dev *isa_bridge;
+       u8 reg, tmp8;
+diff --git a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
+index 41e6b33..8e89b0f 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
++++ b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
+@@ -139,8 +139,8 @@ void dwmac_mmc_ctrl(void __iomem *ioaddr, unsigned int mode)
  
  
-       return val_out;
- }
-@@ -2663,8 +2663,8 @@ static void mdio_write(struct net_device *dev, int phy_id, int reg_num, int val)
-       if (!lp->mii)
-               return;
+       writel(value, ioaddr + MMC_CNTRL);
  
  
--      lp->a.write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
--      lp->a.write_bcr(ioaddr, 34, val);
-+      lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
-+      lp->a->write_bcr(ioaddr, 34, val);
+-      pr_debug("stmmac: MMC ctrl register (offset 0x%x): 0x%08x\n",
+-               MMC_CNTRL, value);
++//    pr_debug("stmmac: MMC ctrl register (offset 0x%x): 0x%08x\n",
++//             MMC_CNTRL, value);
  }
  
  }
  
- static int pcnet32_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-@@ -2741,7 +2741,7 @@ static void pcnet32_check_media(struct net_device *dev, int verbose)
-               curr_link = mii_link_ok(&lp->mii_if);
-       } else {
-               ulong ioaddr = dev->base_addr;  /* card base I/O address */
--              curr_link = (lp->a.read_bcr(ioaddr, 4) != 0xc0);
-+              curr_link = (lp->a->read_bcr(ioaddr, 4) != 0xc0);
-       }
-       if (!curr_link) {
-               if (prev_link || verbose) {
-@@ -2764,13 +2764,13 @@ static void pcnet32_check_media(struct net_device *dev, int verbose)
-                                           (ecmd.duplex == DUPLEX_FULL)
-                                           ? "full" : "half");
-                       }
--                      bcr9 = lp->a.read_bcr(dev->base_addr, 9);
-+                      bcr9 = lp->a->read_bcr(dev->base_addr, 9);
-                       if ((bcr9 & (1 << 0)) != lp->mii_if.full_duplex) {
-                               if (lp->mii_if.full_duplex)
-                                       bcr9 |= (1 << 0);
-                               else
-                                       bcr9 &= ~(1 << 0);
--                              lp->a.write_bcr(dev->base_addr, 9, bcr9);
-+                              lp->a->write_bcr(dev->base_addr, 9, bcr9);
-                       }
-               } else {
-                       netif_info(lp, link, dev, "link up\n");
-diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
-index edfa15d..002bfa9 100644
---- a/drivers/net/ppp_generic.c
-+++ b/drivers/net/ppp_generic.c
+ /* To mask all all interrupts.*/
+diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
+index 486b404..0d6677d 100644
+--- a/drivers/net/ppp/ppp_generic.c
++++ b/drivers/net/ppp/ppp_generic.c
 @@ -987,7 +987,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
        void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data;
        struct ppp_stats stats;
 @@ -987,7 +987,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
        void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data;
        struct ppp_stats stats;
@@ -34059,63 +35194,6 @@ index edfa15d..002bfa9 100644
                        break;
                err = 0;
                break;
                        break;
                err = 0;
                break;
-diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
-index 6d657ca..d1be94b 100644
---- a/drivers/net/r8169.c
-+++ b/drivers/net/r8169.c
-@@ -663,12 +663,12 @@ struct rtl8169_private {
-       struct mdio_ops {
-               void (*write)(void __iomem *, int, int);
-               int (*read)(void __iomem *, int);
--      } mdio_ops;
-+      } __no_const mdio_ops;
-       struct pll_power_ops {
-               void (*down)(struct rtl8169_private *);
-               void (*up)(struct rtl8169_private *);
--      } pll_power_ops;
-+      } __no_const pll_power_ops;
-       int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv);
-       int (*get_settings)(struct net_device *, struct ethtool_cmd *);
-diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c
-index 3c0f131..17f8b02 100644
---- a/drivers/net/sis190.c
-+++ b/drivers/net/sis190.c
-@@ -1624,7 +1624,7 @@ static int __devinit sis190_get_mac_addr_from_eeprom(struct pci_dev *pdev,
- static int __devinit sis190_get_mac_addr_from_apc(struct pci_dev *pdev,
-                                                 struct net_device *dev)
- {
--      static const u16 __devinitdata ids[] = { 0x0965, 0x0966, 0x0968 };
-+      static const u16 __devinitconst ids[] = { 0x0965, 0x0966, 0x0968 };
-       struct sis190_private *tp = netdev_priv(dev);
-       struct pci_dev *isa_bridge;
-       u8 reg, tmp8;
-diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
-index 4793df8..44c9849 100644
---- a/drivers/net/sundance.c
-+++ b/drivers/net/sundance.c
-@@ -218,7 +218,7 @@ enum {
- struct pci_id_info {
-         const char *name;
- };
--static const struct pci_id_info pci_id_tbl[] __devinitdata = {
-+static const struct pci_id_info pci_id_tbl[] __devinitconst = {
-       {"D-Link DFE-550TX FAST Ethernet Adapter"},
-       {"D-Link DFE-550FX 100Mbps Fiber-optics Adapter"},
-       {"D-Link DFE-580TX 4 port Server Adapter"},
-diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
-index 2ea456d..3ad9523 100644
---- a/drivers/net/tg3.h
-+++ b/drivers/net/tg3.h
-@@ -134,6 +134,7 @@
- #define  CHIPREV_ID_5750_A0            0x4000
- #define  CHIPREV_ID_5750_A1            0x4001
- #define  CHIPREV_ID_5750_A3            0x4003
-+#define  CHIPREV_ID_5750_C1            0x4201
- #define  CHIPREV_ID_5750_C2            0x4202
- #define  CHIPREV_ID_5752_A0_HW                 0x5000
- #define  CHIPREV_ID_5752_A0            0x6000
 diff --git a/drivers/net/tokenring/abyss.c b/drivers/net/tokenring/abyss.c
 index 515f122..41dd273 100644
 --- a/drivers/net/tokenring/abyss.c
 diff --git a/drivers/net/tokenring/abyss.c b/drivers/net/tokenring/abyss.c
 index 515f122..41dd273 100644
 --- a/drivers/net/tokenring/abyss.c
@@ -34193,67 +35271,60 @@ index 46db5c5..37c1536 100644
  
        err = platform_driver_register(&sk_isa_driver);
        if (err)
  
        err = platform_driver_register(&sk_isa_driver);
        if (err)
-diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
-index ce90efc..2676f89 100644
---- a/drivers/net/tulip/de2104x.c
-+++ b/drivers/net/tulip/de2104x.c
-@@ -1795,6 +1795,8 @@ static void __devinit de21041_get_srom_info (struct de_private *de)
-       struct de_srom_info_leaf *il;
-       void *bufp;
-+      pax_track_stack();
-+
-       /* download entire eeprom */
-       for (i = 0; i < DE_EEPROM_WORDS; i++)
-               ((__le16 *)ee_data)[i] =
-diff --git a/drivers/net/tulip/de4x5.c b/drivers/net/tulip/de4x5.c
-index 959b410..c97fac2 100644
---- a/drivers/net/tulip/de4x5.c
-+++ b/drivers/net/tulip/de4x5.c
-@@ -5397,7 +5397,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-       for (i=0; i<ETH_ALEN; i++) {
-           tmp.addr[i] = dev->dev_addr[i];
-       }
--      if (copy_to_user(ioc->data, tmp.addr, ioc->len)) return -EFAULT;
-+      if (ioc->len > sizeof tmp.addr || copy_to_user(ioc->data, tmp.addr, ioc->len)) return -EFAULT;
-       break;
+diff --git a/drivers/net/tun.c b/drivers/net/tun.c
+index 7bea9c6..7ef073c 100644
+--- a/drivers/net/tun.c
++++ b/drivers/net/tun.c
+@@ -359,7 +359,7 @@ static void tun_free_netdev(struct net_device *dev)
+ {
+       struct tun_struct *tun = netdev_priv(dev);
  
  
-     case DE4X5_SET_HWADDR:           /* Set the hardware address */
-@@ -5437,7 +5437,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-       spin_lock_irqsave(&lp->lock, flags);
-       memcpy(&statbuf, &lp->pktStats, ioc->len);
-       spin_unlock_irqrestore(&lp->lock, flags);
--      if (copy_to_user(ioc->data, &statbuf, ioc->len))
-+      if (ioc->len > sizeof statbuf || copy_to_user(ioc->data, &statbuf, ioc->len))
-               return -EFAULT;
-       break;
-     }
-diff --git a/drivers/net/tulip/eeprom.c b/drivers/net/tulip/eeprom.c
-index fa5eee9..e074432 100644
---- a/drivers/net/tulip/eeprom.c
-+++ b/drivers/net/tulip/eeprom.c
-@@ -81,7 +81,7 @@ static struct eeprom_fixup eeprom_fixups[] __devinitdata = {
-   {NULL}};
+-      sock_put(tun->socket.sk);
++      sk_release_kernel(tun->socket.sk);
+ }
  
  
+ /* Net device open. */
+@@ -979,10 +979,18 @@ static int tun_recvmsg(struct kiocb *iocb, struct socket *sock,
+       return ret;
+ }
  
  
--static const char *block_name[] __devinitdata = {
-+static const char *block_name[] __devinitconst = {
-       "21140 non-MII",
-       "21140 MII PHY",
-       "21142 Serial PHY",
-diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c
-index 862eadf..3eee1e6 100644
---- a/drivers/net/tulip/winbond-840.c
-+++ b/drivers/net/tulip/winbond-840.c
-@@ -236,7 +236,7 @@ struct pci_id_info {
-         int drv_flags;                /* Driver use, intended as capability flags. */
++static int tun_release(struct socket *sock)
++{
++      if (sock->sk)
++              sock_put(sock->sk);
++      return 0;
++}
++
+ /* Ops structure to mimic raw sockets with tun */
+ static const struct proto_ops tun_socket_ops = {
+       .sendmsg = tun_sendmsg,
+       .recvmsg = tun_recvmsg,
++      .release = tun_release,
  };
  
  };
  
--static const struct pci_id_info pci_id_tbl[] __devinitdata = {
-+static const struct pci_id_info pci_id_tbl[] __devinitconst = {
-       {                               /* Sometime a Level-One switch card. */
-         "Winbond W89c840",    CanHaveMII | HasBrokenTx | FDXOnNoMII},
-       { "Winbond W89c840",    CanHaveMII | HasBrokenTx},
+ static struct proto tun_proto = {
+@@ -1109,10 +1117,11 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
+               tun->vnet_hdr_sz = sizeof(struct virtio_net_hdr);
+               err = -ENOMEM;
+-              sk = sk_alloc(net, AF_UNSPEC, GFP_KERNEL, &tun_proto);
++              sk = sk_alloc(&init_net, AF_UNSPEC, GFP_KERNEL, &tun_proto);
+               if (!sk)
+                       goto err_free_dev;
++              sk_change_net(sk, net);
+               tun->socket.wq = &tun->wq;
+               init_waitqueue_head(&tun->wq.wait);
+               tun->socket.ops = &tun_socket_ops;
+@@ -1173,7 +1182,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
+       return 0;
+  err_free_sk:
+-      sock_put(sk);
++      tun_free_netdev(dev);
+  err_free_dev:
+       free_netdev(dev);
+  failed:
 diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
 index 304fe78..db112fa 100644
 --- a/drivers/net/usb/hso.c
 diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
 index 304fe78..db112fa 100644
 --- a/drivers/net/usb/hso.c
@@ -34355,7 +35426,7 @@ index 304fe78..db112fa 100644
                                    hso_start_serial_device(serial_table[i], GFP_NOIO);
                                hso_kick_transmit(dev2ser(serial_table[i]));
 diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c
                                    hso_start_serial_device(serial_table[i], GFP_NOIO);
                                hso_kick_transmit(dev2ser(serial_table[i]));
 diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c
-index 27400ed..c796e05 100644
+index e662cbc..8d4a102 100644
 --- a/drivers/net/vmxnet3/vmxnet3_ethtool.c
 +++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c
 @@ -601,8 +601,7 @@ vmxnet3_set_rss_indir(struct net_device *netdev,
 --- a/drivers/net/vmxnet3/vmxnet3_ethtool.c
 +++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c
 @@ -601,8 +601,7 @@ vmxnet3_set_rss_indir(struct net_device *netdev,
@@ -34368,159 +35439,11 @@ index 27400ed..c796e05 100644
                        return -EINVAL;
        }
  
                        return -EINVAL;
        }
  
-diff --git a/drivers/net/vxge/vxge-config.h b/drivers/net/vxge/vxge-config.h
-index dd36258..e47fd31 100644
---- a/drivers/net/vxge/vxge-config.h
-+++ b/drivers/net/vxge/vxge-config.h
-@@ -514,7 +514,7 @@ struct vxge_hw_uld_cbs {
-       void (*link_down)(struct __vxge_hw_device *devh);
-       void (*crit_err)(struct __vxge_hw_device *devh,
-                       enum vxge_hw_event type, u64 ext_data);
--};
-+} __no_const;
- /*
-  * struct __vxge_hw_blockpool_entry - Block private data structure
-diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c
-index 178348a2..18bb433 100644
---- a/drivers/net/vxge/vxge-main.c
-+++ b/drivers/net/vxge/vxge-main.c
-@@ -100,6 +100,8 @@ static inline void VXGE_COMPLETE_VPATH_TX(struct vxge_fifo *fifo)
-       struct sk_buff *completed[NR_SKB_COMPLETED];
-       int more;
-+      pax_track_stack();
-+
-       do {
-               more = 0;
-               skb_ptr = completed;
-@@ -1915,6 +1917,8 @@ static enum vxge_hw_status vxge_rth_configure(struct vxgedev *vdev)
-       u8 mtable[256] = {0}; /* CPU to vpath mapping  */
-       int index;
-+      pax_track_stack();
-+
-       /*
-        * Filling
-        *      - itable with bucket numbers
-diff --git a/drivers/net/vxge/vxge-traffic.h b/drivers/net/vxge/vxge-traffic.h
-index 4a518a3..936b334 100644
---- a/drivers/net/vxge/vxge-traffic.h
-+++ b/drivers/net/vxge/vxge-traffic.h
-@@ -2088,7 +2088,7 @@ struct vxge_hw_mempool_cbs {
-                       struct vxge_hw_mempool_dma      *dma_object,
-                       u32                     index,
-                       u32                     is_last);
--};
-+} __no_const;
- #define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath)                            \
-               ((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next)
-diff --git a/drivers/net/wan/hdlc_x25.c b/drivers/net/wan/hdlc_x25.c
-index 56aeb01..547f71f 100644
---- a/drivers/net/wan/hdlc_x25.c
-+++ b/drivers/net/wan/hdlc_x25.c
-@@ -134,16 +134,16 @@ static netdev_tx_t x25_xmit(struct sk_buff *skb, struct net_device *dev)
- static int x25_open(struct net_device *dev)
- {
--      struct lapb_register_struct cb;
-+      static struct lapb_register_struct cb = {
-+              .connect_confirmation = x25_connected,
-+              .connect_indication = x25_connected,
-+              .disconnect_confirmation = x25_disconnected,
-+              .disconnect_indication = x25_disconnected,
-+              .data_indication = x25_data_indication,
-+              .data_transmit = x25_data_transmit
-+      };
-       int result;
--      cb.connect_confirmation = x25_connected;
--      cb.connect_indication = x25_connected;
--      cb.disconnect_confirmation = x25_disconnected;
--      cb.disconnect_indication = x25_disconnected;
--      cb.data_indication = x25_data_indication;
--      cb.data_transmit = x25_data_transmit;
--
-       result = lapb_register(dev, &cb);
-       if (result != LAPB_OK)
-               return result;
-diff --git a/drivers/net/wimax/i2400m/usb-fw.c b/drivers/net/wimax/i2400m/usb-fw.c
-index 1fda46c..f2858f2 100644
---- a/drivers/net/wimax/i2400m/usb-fw.c
-+++ b/drivers/net/wimax/i2400m/usb-fw.c
-@@ -287,6 +287,8 @@ ssize_t i2400mu_bus_bm_wait_for_ack(struct i2400m *i2400m,
-       int do_autopm = 1;
-       DECLARE_COMPLETION_ONSTACK(notif_completion);
-+      pax_track_stack();
-+
-       d_fnstart(8, dev, "(i2400m %p ack %p size %zu)\n",
-                 i2400m, ack, ack_size);
-       BUG_ON(_ack == i2400m->bm_ack_buf);
-diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
-index e1b3e3c..e413f18 100644
---- a/drivers/net/wireless/airo.c
-+++ b/drivers/net/wireless/airo.c
-@@ -3003,6 +3003,8 @@ static void airo_process_scan_results (struct airo_info *ai) {
-       BSSListElement * loop_net;
-       BSSListElement * tmp_net;
-+      pax_track_stack();
-+
-       /* Blow away current list of scan results */
-       list_for_each_entry_safe (loop_net, tmp_net, &ai->network_list, list) {
-               list_move_tail (&loop_net->list, &ai->network_free_list);
-@@ -3794,6 +3796,8 @@ static u16 setup_card(struct airo_info *ai, u8 *mac, int lock)
-       WepKeyRid wkr;
-       int rc;
-+      pax_track_stack();
-+
-       memset( &mySsid, 0, sizeof( mySsid ) );
-       kfree (ai->flash);
-       ai->flash = NULL;
-@@ -4753,6 +4757,8 @@ static int proc_stats_rid_open( struct inode *inode,
-       __le32 *vals = stats.vals;
-       int len;
-+      pax_track_stack();
-+
-       if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
-               return -ENOMEM;
-       data = file->private_data;
-@@ -5476,6 +5482,8 @@ static int proc_BSSList_open( struct inode *inode, struct file *file ) {
-       /* If doLoseSync is not 1, we won't do a Lose Sync */
-       int doLoseSync = -1;
-+      pax_track_stack();
-+
-       if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
-               return -ENOMEM;
-       data = file->private_data;
-@@ -7181,6 +7189,8 @@ static int airo_get_aplist(struct net_device *dev,
-       int i;
-       int loseSync = capable(CAP_NET_ADMIN) ? 1: -1;
-+      pax_track_stack();
-+
-       qual = kmalloc(IW_MAX_AP * sizeof(*qual), GFP_KERNEL);
-       if (!qual)
-               return -ENOMEM;
-@@ -7741,6 +7751,8 @@ static void airo_read_wireless_stats(struct airo_info *local)
-       CapabilityRid cap_rid;
-       __le32 *vals = stats_rid.vals;
-+      pax_track_stack();
-+
-       /* Get stats out of the card */
-       clear_bit(JOB_WSTATS, &local->jobs);
-       if (local->power.event) {
 diff --git a/drivers/net/wireless/ath/ath.h b/drivers/net/wireless/ath/ath.h
 diff --git a/drivers/net/wireless/ath/ath.h b/drivers/net/wireless/ath/ath.h
-index 17c4b56..00d836f 100644
+index 0f9ee46..e2d6e65 100644
 --- a/drivers/net/wireless/ath/ath.h
 +++ b/drivers/net/wireless/ath/ath.h
 --- a/drivers/net/wireless/ath/ath.h
 +++ b/drivers/net/wireless/ath/ath.h
-@@ -121,6 +121,7 @@ struct ath_ops {
+@@ -119,6 +119,7 @@ struct ath_ops {
        void (*write_flush) (void *);
        u32 (*rmw)(void *, u32 reg_offset, u32 set, u32 clr);
  };
        void (*write_flush) (void *);
        u32 (*rmw)(void *, u32 reg_offset, u32 set, u32 clr);
  };
@@ -34529,174 +35452,255 @@ index 17c4b56..00d836f 100644
  struct ath_common;
  struct ath_bus_ops;
 diff --git a/drivers/net/wireless/ath/ath5k/debug.c b/drivers/net/wireless/ath/ath5k/debug.c
  struct ath_common;
  struct ath_bus_ops;
 diff --git a/drivers/net/wireless/ath/ath5k/debug.c b/drivers/net/wireless/ath/ath5k/debug.c
-index ccca724..7afbadc 100644
+index 8c5ce8b..abf101b 100644
 --- a/drivers/net/wireless/ath/ath5k/debug.c
 +++ b/drivers/net/wireless/ath/ath5k/debug.c
 --- a/drivers/net/wireless/ath/ath5k/debug.c
 +++ b/drivers/net/wireless/ath/ath5k/debug.c
-@@ -203,6 +203,8 @@ static ssize_t read_file_beacon(struct file *file, char __user *user_buf,
-       unsigned int v;
-       u64 tsf;
-+      pax_track_stack();
-+
-       v = ath5k_hw_reg_read(ah, AR5K_BEACON);
-       len += snprintf(buf + len, sizeof(buf) - len,
-               "%-24s0x%08x\tintval: %d\tTIM: 0x%x\n",
-@@ -321,6 +323,8 @@ static ssize_t read_file_debug(struct file *file, char __user *user_buf,
-       unsigned int len = 0;
-       unsigned int i;
-+      pax_track_stack();
-+
-       len += snprintf(buf + len, sizeof(buf) - len,
-               "DEBUG LEVEL: 0x%08x\n\n", ah->debug.level);
-@@ -492,6 +496,8 @@ static ssize_t read_file_misc(struct file *file, char __user *user_buf,
-       unsigned int len = 0;
-       u32 filt = ath5k_hw_get_rx_filter(ah);
-+      pax_track_stack();
-+
-       len += snprintf(buf + len, sizeof(buf) - len, "bssid-mask: %pM\n",
-                       ah->bssidmask);
-       len += snprintf(buf + len, sizeof(buf) - len, "filter-flags: 0x%x ",
-@@ -548,6 +554,8 @@ static ssize_t read_file_frameerrors(struct file *file, char __user *user_buf,
-       unsigned int len = 0;
-       int i;
-+      pax_track_stack();
-+
-       len += snprintf(buf + len, sizeof(buf) - len,
-                       "RX\n---------------------\n");
-       len += snprintf(buf + len, sizeof(buf) - len, "CRC\t%u\t(%u%%)\n",
-@@ -665,6 +673,8 @@ static ssize_t read_file_ani(struct file *file, char __user *user_buf,
-       char buf[700];
-       unsigned int len = 0;
-+      pax_track_stack();
-+
-       len += snprintf(buf + len, sizeof(buf) - len,
-                       "HW has PHY error counters:\t%s\n",
-                       ah->ah_capabilities.cap_has_phyerr_counters ?
-@@ -829,6 +839,8 @@ static ssize_t read_file_queue(struct file *file, char __user *user_buf,
-       struct ath5k_buf *bf, *bf0;
-       int i, n;
-+      pax_track_stack();
-+
-       len += snprintf(buf + len, sizeof(buf) - len,
-                       "available txbuffers: %d\n", ah->txbuf_len);
-diff --git a/drivers/net/wireless/ath/ath9k/ar9003_calib.c b/drivers/net/wireless/ath/ath9k/ar9003_calib.c
-index 7c2aaad..ad14dee 100644
---- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c
-@@ -758,6 +758,8 @@ static void ar9003_hw_tx_iq_cal_post_proc(struct ath_hw *ah)
-       int i, im, j;
-       int nmeasurement;
-+      pax_track_stack();
-+
-       for (i = 0; i < AR9300_MAX_CHAINS; i++) {
-               if (ah->txchainmask & (1 << i))
-                       num_chains++;
-diff --git a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
-index f80d1d6..08b773d 100644
---- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
-@@ -406,6 +406,8 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
-       int theta_low_bin = 0;
-       int i;
+@@ -343,6 +343,9 @@ static ssize_t read_file_debug(struct file *file, char __user *user_buf,
+ static ssize_t write_file_debug(struct file *file,
+                                const char __user *userbuf,
++                               size_t count, loff_t *ppos) __size_overflow(3);
++static ssize_t write_file_debug(struct file *file,
++                               const char __user *userbuf,
+                                size_t count, loff_t *ppos)
+ {
+       struct ath5k_hw *ah = file->private_data;
+diff --git a/drivers/net/wireless/ath/ath9k/ar9002_mac.c b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
+index b592016..fe47870 100644
+--- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c
++++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
+@@ -183,8 +183,8 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+       ads->ds_txstatus6 = ads->ds_txstatus7 = 0;
+       ads->ds_txstatus8 = ads->ds_txstatus9 = 0;
+-      ACCESS_ONCE(ads->ds_link) = i->link;
+-      ACCESS_ONCE(ads->ds_data) = i->buf_addr[0];
++      ACCESS_ONCE_RW(ads->ds_link) = i->link;
++      ACCESS_ONCE_RW(ads->ds_data) = i->buf_addr[0];
+       ctl1 = i->buf_len[0] | (i->is_last ? 0 : AR_TxMore);
+       ctl6 = SM(i->keytype, AR_EncrType);
+@@ -198,26 +198,26 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+       if ((i->is_first || i->is_last) &&
+           i->aggr != AGGR_BUF_MIDDLE && i->aggr != AGGR_BUF_LAST) {
+-              ACCESS_ONCE(ads->ds_ctl2) = set11nTries(i->rates, 0)
++              ACCESS_ONCE_RW(ads->ds_ctl2) = set11nTries(i->rates, 0)
+                       | set11nTries(i->rates, 1)
+                       | set11nTries(i->rates, 2)
+                       | set11nTries(i->rates, 3)
+                       | (i->dur_update ? AR_DurUpdateEna : 0)
+                       | SM(0, AR_BurstDur);
+-              ACCESS_ONCE(ads->ds_ctl3) = set11nRate(i->rates, 0)
++              ACCESS_ONCE_RW(ads->ds_ctl3) = set11nRate(i->rates, 0)
+                       | set11nRate(i->rates, 1)
+                       | set11nRate(i->rates, 2)
+                       | set11nRate(i->rates, 3);
+       } else {
+-              ACCESS_ONCE(ads->ds_ctl2) = 0;
+-              ACCESS_ONCE(ads->ds_ctl3) = 0;
++              ACCESS_ONCE_RW(ads->ds_ctl2) = 0;
++              ACCESS_ONCE_RW(ads->ds_ctl3) = 0;
+       }
+       if (!i->is_first) {
+-              ACCESS_ONCE(ads->ds_ctl0) = 0;
+-              ACCESS_ONCE(ads->ds_ctl1) = ctl1;
+-              ACCESS_ONCE(ads->ds_ctl6) = ctl6;
++              ACCESS_ONCE_RW(ads->ds_ctl0) = 0;
++              ACCESS_ONCE_RW(ads->ds_ctl1) = ctl1;
++              ACCESS_ONCE_RW(ads->ds_ctl6) = ctl6;
+               return;
+       }
  
  
-+      pax_track_stack();
-+
-       /* disregard any bin that contains <= 16 samples */
-       thresh_accum_cnt = 16;
-       scale_factor = 5;
-diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
-index d1eb896..8b67cd4 100644
---- a/drivers/net/wireless/ath/ath9k/debug.c
-+++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -387,6 +387,8 @@ static ssize_t read_file_interrupt(struct file *file, char __user *user_buf,
-       char buf[512];
-       unsigned int len = 0;
+@@ -242,7 +242,7 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+               break;
+       }
  
  
-+      pax_track_stack();
-+
-       if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
-               len += snprintf(buf + len, sizeof(buf) - len,
-                       "%8s: %10u\n", "RXLP", sc->debug.stats.istats.rxlp);
-@@ -477,6 +479,8 @@ static ssize_t read_file_wiphy(struct file *file, char __user *user_buf,
-       u8 addr[ETH_ALEN];
-       u32 tmp;
+-      ACCESS_ONCE(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
++      ACCESS_ONCE_RW(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
+               | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
+               | SM(i->txpower, AR_XmitPower)
+               | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
+@@ -252,19 +252,19 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+               | (i->flags & ATH9K_TXDESC_RTSENA ? AR_RTSEnable :
+                  (i->flags & ATH9K_TXDESC_CTSENA ? AR_CTSEnable : 0));
  
  
-+      pax_track_stack();
-+
-       len += snprintf(buf + len, sizeof(buf) - len,
-                       "%s (chan=%d  center-freq: %d MHz  channel-type: %d (%s))\n",
-                       wiphy_name(sc->hw->wiphy),
-diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
-index d3ff33c..309398e 100644
---- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
-+++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
-@@ -31,6 +31,8 @@ static ssize_t read_file_tgt_int_stats(struct file *file, char __user *user_buf,
-       unsigned int len = 0;
-       int ret = 0;
+-      ACCESS_ONCE(ads->ds_ctl1) = ctl1;
+-      ACCESS_ONCE(ads->ds_ctl6) = ctl6;
++      ACCESS_ONCE_RW(ads->ds_ctl1) = ctl1;
++      ACCESS_ONCE_RW(ads->ds_ctl6) = ctl6;
  
  
-+      pax_track_stack();
-+
-       memset(&cmd_rsp, 0, sizeof(cmd_rsp));
+       if (i->aggr == AGGR_BUF_MIDDLE || i->aggr == AGGR_BUF_LAST)
+               return;
  
  
-       ath9k_htc_ps_wakeup(priv);
-@@ -89,6 +91,8 @@ static ssize_t read_file_tgt_tx_stats(struct file *file, char __user *user_buf,
-       unsigned int len = 0;
-       int ret = 0;
+-      ACCESS_ONCE(ads->ds_ctl4) = set11nPktDurRTSCTS(i->rates, 0)
++      ACCESS_ONCE_RW(ads->ds_ctl4) = set11nPktDurRTSCTS(i->rates, 0)
+               | set11nPktDurRTSCTS(i->rates, 1);
+-      ACCESS_ONCE(ads->ds_ctl5) = set11nPktDurRTSCTS(i->rates, 2)
++      ACCESS_ONCE_RW(ads->ds_ctl5) = set11nPktDurRTSCTS(i->rates, 2)
+               | set11nPktDurRTSCTS(i->rates, 3);
+-      ACCESS_ONCE(ads->ds_ctl7) = set11nRateFlags(i->rates, 0)
++      ACCESS_ONCE_RW(ads->ds_ctl7) = set11nRateFlags(i->rates, 0)
+               | set11nRateFlags(i->rates, 1)
+               | set11nRateFlags(i->rates, 2)
+               | set11nRateFlags(i->rates, 3)
+diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+index f5ae3c6..7936af3 100644
+--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+@@ -35,47 +35,47 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+             (i->qcu << AR_TxQcuNum_S) | 0x17;
+       checksum += val;
+-      ACCESS_ONCE(ads->info) = val;
++      ACCESS_ONCE_RW(ads->info) = val;
+       checksum += i->link;
+-      ACCESS_ONCE(ads->link) = i->link;
++      ACCESS_ONCE_RW(ads->link) = i->link;
+       checksum += i->buf_addr[0];
+-      ACCESS_ONCE(ads->data0) = i->buf_addr[0];
++      ACCESS_ONCE_RW(ads->data0) = i->buf_addr[0];
+       checksum += i->buf_addr[1];
+-      ACCESS_ONCE(ads->data1) = i->buf_addr[1];
++      ACCESS_ONCE_RW(ads->data1) = i->buf_addr[1];
+       checksum += i->buf_addr[2];
+-      ACCESS_ONCE(ads->data2) = i->buf_addr[2];
++      ACCESS_ONCE_RW(ads->data2) = i->buf_addr[2];
+       checksum += i->buf_addr[3];
+-      ACCESS_ONCE(ads->data3) = i->buf_addr[3];
++      ACCESS_ONCE_RW(ads->data3) = i->buf_addr[3];
+       checksum += (val = (i->buf_len[0] << AR_BufLen_S) & AR_BufLen);
+-      ACCESS_ONCE(ads->ctl3) = val;
++      ACCESS_ONCE_RW(ads->ctl3) = val;
+       checksum += (val = (i->buf_len[1] << AR_BufLen_S) & AR_BufLen);
+-      ACCESS_ONCE(ads->ctl5) = val;
++      ACCESS_ONCE_RW(ads->ctl5) = val;
+       checksum += (val = (i->buf_len[2] << AR_BufLen_S) & AR_BufLen);
+-      ACCESS_ONCE(ads->ctl7) = val;
++      ACCESS_ONCE_RW(ads->ctl7) = val;
+       checksum += (val = (i->buf_len[3] << AR_BufLen_S) & AR_BufLen);
+-      ACCESS_ONCE(ads->ctl9) = val;
++      ACCESS_ONCE_RW(ads->ctl9) = val;
+       checksum = (u16) (((checksum & 0xffff) + (checksum >> 16)) & 0xffff);
+-      ACCESS_ONCE(ads->ctl10) = checksum;
++      ACCESS_ONCE_RW(ads->ctl10) = checksum;
+       if (i->is_first || i->is_last) {
+-              ACCESS_ONCE(ads->ctl13) = set11nTries(i->rates, 0)
++              ACCESS_ONCE_RW(ads->ctl13) = set11nTries(i->rates, 0)
+                       | set11nTries(i->rates, 1)
+                       | set11nTries(i->rates, 2)
+                       | set11nTries(i->rates, 3)
+                       | (i->dur_update ? AR_DurUpdateEna : 0)
+                       | SM(0, AR_BurstDur);
+-              ACCESS_ONCE(ads->ctl14) = set11nRate(i->rates, 0)
++              ACCESS_ONCE_RW(ads->ctl14) = set11nRate(i->rates, 0)
+                       | set11nRate(i->rates, 1)
+                       | set11nRate(i->rates, 2)
+                       | set11nRate(i->rates, 3);
+       } else {
+-              ACCESS_ONCE(ads->ctl13) = 0;
+-              ACCESS_ONCE(ads->ctl14) = 0;
++              ACCESS_ONCE_RW(ads->ctl13) = 0;
++              ACCESS_ONCE_RW(ads->ctl14) = 0;
+       }
+       ads->ctl20 = 0;
+@@ -84,17 +84,17 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+       ctl17 = SM(i->keytype, AR_EncrType);
+       if (!i->is_first) {
+-              ACCESS_ONCE(ads->ctl11) = 0;
+-              ACCESS_ONCE(ads->ctl12) = i->is_last ? 0 : AR_TxMore;
+-              ACCESS_ONCE(ads->ctl15) = 0;
+-              ACCESS_ONCE(ads->ctl16) = 0;
+-              ACCESS_ONCE(ads->ctl17) = ctl17;
+-              ACCESS_ONCE(ads->ctl18) = 0;
+-              ACCESS_ONCE(ads->ctl19) = 0;
++              ACCESS_ONCE_RW(ads->ctl11) = 0;
++              ACCESS_ONCE_RW(ads->ctl12) = i->is_last ? 0 : AR_TxMore;
++              ACCESS_ONCE_RW(ads->ctl15) = 0;
++              ACCESS_ONCE_RW(ads->ctl16) = 0;
++              ACCESS_ONCE_RW(ads->ctl17) = ctl17;
++              ACCESS_ONCE_RW(ads->ctl18) = 0;
++              ACCESS_ONCE_RW(ads->ctl19) = 0;
+               return;
+       }
  
  
-+      pax_track_stack();
-+
-       memset(&cmd_rsp, 0, sizeof(cmd_rsp));
+-      ACCESS_ONCE(ads->ctl11) = (i->pkt_len & AR_FrameLen)
++      ACCESS_ONCE_RW(ads->ctl11) = (i->pkt_len & AR_FrameLen)
+               | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
+               | SM(i->txpower, AR_XmitPower)
+               | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
+@@ -130,22 +130,22 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+       val = (i->flags & ATH9K_TXDESC_PAPRD) >> ATH9K_TXDESC_PAPRD_S;
+       ctl12 |= SM(val, AR_PAPRDChainMask);
  
  
-       ath9k_htc_ps_wakeup(priv);
-@@ -159,6 +163,8 @@ static ssize_t read_file_tgt_rx_stats(struct file *file, char __user *user_buf,
-       unsigned int len = 0;
-       int ret = 0;
+-      ACCESS_ONCE(ads->ctl12) = ctl12;
+-      ACCESS_ONCE(ads->ctl17) = ctl17;
++      ACCESS_ONCE_RW(ads->ctl12) = ctl12;
++      ACCESS_ONCE_RW(ads->ctl17) = ctl17;
  
  
-+      pax_track_stack();
-+
-       memset(&cmd_rsp, 0, sizeof(cmd_rsp));
+-      ACCESS_ONCE(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0)
++      ACCESS_ONCE_RW(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0)
+               | set11nPktDurRTSCTS(i->rates, 1);
  
  
-       ath9k_htc_ps_wakeup(priv);
-@@ -203,6 +209,8 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
-       char buf[512];
-       unsigned int len = 0;
+-      ACCESS_ONCE(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2)
++      ACCESS_ONCE_RW(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2)
+               | set11nPktDurRTSCTS(i->rates, 3);
  
  
-+      pax_track_stack();
-+
-       len += snprintf(buf + len, sizeof(buf) - len,
-                       "%20s : %10u\n", "Buffers queued",
-                       priv->debug.tx_stats.buf_queued);
-@@ -376,6 +384,8 @@ static ssize_t read_file_slot(struct file *file, char __user *user_buf,
-       char buf[512];
-       unsigned int len = 0;
+-      ACCESS_ONCE(ads->ctl18) = set11nRateFlags(i->rates, 0)
++      ACCESS_ONCE_RW(ads->ctl18) = set11nRateFlags(i->rates, 0)
+               | set11nRateFlags(i->rates, 1)
+               | set11nRateFlags(i->rates, 2)
+               | set11nRateFlags(i->rates, 3)
+               | SM(i->rtscts_rate, AR_RTSCTSRate);
  
  
-+      pax_track_stack();
-+
-       spin_lock_bh(&priv->tx.tx_lock);
+-      ACCESS_ONCE(ads->ctl19) = AR_Not_Sounding;
++      ACCESS_ONCE_RW(ads->ctl19) = AR_Not_Sounding;
+ }
  
  
-       len += snprintf(buf + len, sizeof(buf) - len, "TX slot bitmap : ");
-@@ -411,6 +421,8 @@ static ssize_t read_file_queue(struct file *file, char __user *user_buf,
-       char buf[512];
-       unsigned int len = 0;
+ static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
+diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
+index 2741203..837a960 100644
+--- a/drivers/net/wireless/ath/ath9k/debug.c
++++ b/drivers/net/wireless/ath/ath9k/debug.c
+@@ -60,6 +60,8 @@ static ssize_t read_file_debug(struct file *file, char __user *user_buf,
+ }
  
  
-+      pax_track_stack();
-+
-       len += snprintf(buf + len, sizeof(buf) - len, "%20s : %10u\n",
-                       "Mgmt endpoint", skb_queue_len(&priv->tx.mgmt_ep_queue));
+ static ssize_t write_file_debug(struct file *file, const char __user *user_buf,
++                           size_t count, loff_t *ppos) __size_overflow(3);
++static ssize_t write_file_debug(struct file *file, const char __user *user_buf,
+                            size_t count, loff_t *ppos)
+ {
+       struct ath_softc *sc = file->private_data;
+diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
+index d3ff33c..c98bcda 100644
+--- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
++++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
+@@ -464,6 +464,8 @@ static ssize_t read_file_debug(struct file *file, char __user *user_buf,
+ }
  
  
+ static ssize_t write_file_debug(struct file *file, const char __user *user_buf,
++                              size_t count, loff_t *ppos) __size_overflow(3);
++static ssize_t write_file_debug(struct file *file, const char __user *user_buf,
+                               size_t count, loff_t *ppos)
+ {
+       struct ath9k_htc_priv *priv = file->private_data;
 diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
 diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
-index c798890..c19a8fb 100644
+index 1bd8edf..10c6d30 100644
 --- a/drivers/net/wireless/ath/ath9k/hw.h
 +++ b/drivers/net/wireless/ath/ath9k/hw.h
 --- a/drivers/net/wireless/ath/ath9k/hw.h
 +++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -588,7 +588,7 @@ struct ath_hw_private_ops {
+@@ -605,7 +605,7 @@ struct ath_hw_private_ops {
  
        /* ANI */
        void (*ani_cache_ini_regs)(struct ath_hw *ah);
  
        /* ANI */
        void (*ani_cache_ini_regs)(struct ath_hw *ah);
@@ -34705,7 +35709,7 @@ index c798890..c19a8fb 100644
  
  /**
   * struct ath_hw_ops - callbacks used by hardware code and driver code
  
  /**
   * struct ath_hw_ops - callbacks used by hardware code and driver code
-@@ -639,7 +639,7 @@ struct ath_hw_ops {
+@@ -635,7 +635,7 @@ struct ath_hw_ops {
        void (*antdiv_comb_conf_set)(struct ath_hw *ah,
                        struct ath_hw_antcomb_conf *antconf);
  
        void (*antdiv_comb_conf_set)(struct ath_hw *ah,
                        struct ath_hw_antcomb_conf *antconf);
  
@@ -34714,8 +35718,8 @@ index c798890..c19a8fb 100644
  
  struct ath_nf_limits {
        s16 max;
  
  struct ath_nf_limits {
        s16 max;
-@@ -652,7 +652,7 @@ struct ath_nf_limits {
- #define AH_UNPLUGGED    0x2 /* The card has been physically removed. */
+@@ -655,7 +655,7 @@ enum ath_cal_list {
+ #define AH_FASTCC       0x4
  
  struct ath_hw {
 -      struct ath_ops reg_ops;
  
  struct ath_hw {
 -      struct ath_ops reg_ops;
@@ -34723,46 +35727,24 @@ index c798890..c19a8fb 100644
  
        struct ieee80211_hw *hw;
        struct ath_common common;
  
        struct ieee80211_hw *hw;
        struct ath_common common;
-diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
-index ef9ad79..f5f8d80 100644
---- a/drivers/net/wireless/ipw2x00/ipw2100.c
-+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
-@@ -2102,6 +2102,8 @@ static int ipw2100_set_essid(struct ipw2100_priv *priv, char *essid,
-       int err;
-       DECLARE_SSID_BUF(ssid);
-+      pax_track_stack();
-+
-       IPW_DEBUG_HC("SSID: '%s'\n", print_ssid(ssid, essid, ssid_len));
-       if (ssid_len)
-@@ -5451,6 +5453,8 @@ static int ipw2100_set_key(struct ipw2100_priv *priv,
-       struct ipw2100_wep_key *wep_key = (void *)cmd.host_command_parameters;
-       int err;
-+      pax_track_stack();
-+
-       IPW_DEBUG_HC("WEP_KEY_INFO: index = %d, len = %d/%d\n",
-                    idx, keylen, len);
-diff --git a/drivers/net/wireless/ipw2x00/libipw_rx.c b/drivers/net/wireless/ipw2x00/libipw_rx.c
-index 32a9966..de69787 100644
---- a/drivers/net/wireless/ipw2x00/libipw_rx.c
-+++ b/drivers/net/wireless/ipw2x00/libipw_rx.c
-@@ -1565,6 +1565,8 @@ static void libipw_process_probe_response(struct libipw_device
-       unsigned long flags;
-       DECLARE_SSID_BUF(ssid);
+diff --git a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h
+index bea8524..c677c06 100644
+--- a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h
++++ b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h
+@@ -547,7 +547,7 @@ struct phy_func_ptr {
+       void (*carrsuppr)(struct brcms_phy *);
+       s32 (*rxsigpwr)(struct brcms_phy *, s32);
+       void (*detach)(struct brcms_phy *);
+-};
++} __no_const;
  
  
-+      pax_track_stack();
-+
-       LIBIPW_DEBUG_SCAN("'%s' (%pM"
-                    "): %c%c%c%c %c%c%c%c-%c%c%c%c %c%c%c%c\n",
-                    print_ssid(ssid, info_element->data, info_element->len),
+ struct brcms_phy {
+       struct brcms_phy_pub pubpi_ro;
 diff --git a/drivers/net/wireless/iwlegacy/iwl3945-base.c b/drivers/net/wireless/iwlegacy/iwl3945-base.c
 diff --git a/drivers/net/wireless/iwlegacy/iwl3945-base.c b/drivers/net/wireless/iwlegacy/iwl3945-base.c
-index 66ee1562..b90412b 100644
+index 05f2ad1..ae00eea 100644
 --- a/drivers/net/wireless/iwlegacy/iwl3945-base.c
 +++ b/drivers/net/wireless/iwlegacy/iwl3945-base.c
 --- a/drivers/net/wireless/iwlegacy/iwl3945-base.c
 +++ b/drivers/net/wireless/iwlegacy/iwl3945-base.c
-@@ -3687,7 +3687,9 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
+@@ -3685,7 +3685,9 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
         */
        if (iwl3945_mod_params.disable_hw_scan) {
                IWL_DEBUG_INFO(priv, "Disabling hw_scan\n");
         */
        if (iwl3945_mod_params.disable_hw_scan) {
                IWL_DEBUG_INFO(priv, "Disabling hw_scan\n");
@@ -34773,83 +35755,26 @@ index 66ee1562..b90412b 100644
        }
  
        IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n");
        }
  
        IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n");
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-index 3789ff4..22ab151 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
-@@ -920,6 +920,8 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband,
-       struct iwl_station_priv *sta_priv = (void *)sta->drv_priv;
-       struct iwl_rxon_context *ctx = sta_priv->common.ctx;
-+      pax_track_stack();
-+
-       IWL_DEBUG_RATE_LIMIT(priv, "get frame ack response, update rate scale window\n");
-       /* Treat uninitialized rate scaling data same as non-existing. */
-@@ -2931,6 +2933,8 @@ static void rs_fill_link_cmd(struct iwl_priv *priv,
-               container_of(lq_sta, struct iwl_station_priv, lq_sta);
-       struct iwl_link_quality_cmd *lq_cmd = &lq_sta->lq;
-+      pax_track_stack();
-+
-       /* Override starting rate (index 0) if needed for debug purposes */
-       rs_dbgfs_set_mcs(lq_sta, &new_rate, index);
 diff --git a/drivers/net/wireless/iwlwifi/iwl-debug.h b/drivers/net/wireless/iwlwifi/iwl-debug.h
 diff --git a/drivers/net/wireless/iwlwifi/iwl-debug.h b/drivers/net/wireless/iwlwifi/iwl-debug.h
-index f9a407e..a6f2bb7 100644
+index 69a77e2..552b42c 100644
 --- a/drivers/net/wireless/iwlwifi/iwl-debug.h
 +++ b/drivers/net/wireless/iwlwifi/iwl-debug.h
 --- a/drivers/net/wireless/iwlwifi/iwl-debug.h
 +++ b/drivers/net/wireless/iwlwifi/iwl-debug.h
-@@ -68,8 +68,8 @@ do {                                                                 \
+@@ -71,8 +71,8 @@ do {                                                                 \
  } while (0)
  
  #else
  } while (0)
  
  #else
--#define IWL_DEBUG(__priv, level, fmt, args...)
--#define IWL_DEBUG_LIMIT(__priv, level, fmt, args...)
-+#define IWL_DEBUG(__priv, level, fmt, args...) do {} while (0)
-+#define IWL_DEBUG_LIMIT(__priv, level, fmt, args...) do {} while (0)
- static inline void iwl_print_hex_dump(struct iwl_priv *priv, int level,
-                                     const void *p, u32 len)
- {}
-diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
-index ec1485b..900c3bd 100644
---- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
-@@ -561,6 +561,8 @@ static ssize_t iwl_dbgfs_status_read(struct file *file,
-       int pos = 0;
-       const size_t bufsz = sizeof(buf);
-+      pax_track_stack();
-+
-       pos += scnprintf(buf + pos, bufsz - pos, "STATUS_HCMD_ACTIVE:\t %d\n",
-               test_bit(STATUS_HCMD_ACTIVE, &priv->status));
-       pos += scnprintf(buf + pos, bufsz - pos, "STATUS_INT_ENABLED:\t %d\n",
-@@ -693,6 +695,8 @@ static ssize_t iwl_dbgfs_qos_read(struct file *file, char __user *user_buf,
-       char buf[256 * NUM_IWL_RXON_CTX];
-       const size_t bufsz = sizeof(buf);
-+      pax_track_stack();
-+
-       for_each_context(priv, ctx) {
-               pos += scnprintf(buf + pos, bufsz - pos, "context %d:\n",
-                                ctx->ctxid);
-diff --git a/drivers/net/wireless/iwmc3200wifi/debugfs.c b/drivers/net/wireless/iwmc3200wifi/debugfs.c
-index 0a0cc96..fd49ad8 100644
---- a/drivers/net/wireless/iwmc3200wifi/debugfs.c
-+++ b/drivers/net/wireless/iwmc3200wifi/debugfs.c
-@@ -327,6 +327,8 @@ static ssize_t iwm_debugfs_fw_err_read(struct file *filp,
-       int buf_len = 512;
-       size_t len = 0;
-+      pax_track_stack();
-+
-       if (*ppos != 0)
-               return 0;
-       if (count < sizeof(buf))
+-#define IWL_DEBUG(m, level, fmt, args...)
+-#define IWL_DEBUG_LIMIT(m, level, fmt, args...)
++#define IWL_DEBUG(m, level, fmt, args...) do {} while (0)
++#define IWL_DEBUG_LIMIT(m, level, fmt, args...) do {} while (0)
+ #define iwl_print_hex_dump(m, level, p, len)
+ #endif                                /* CONFIG_IWLWIFI_DEBUG */
 diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
 diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
-index 031cd89..bdc8435 100644
+index 523ad55..f8c5dc5 100644
 --- a/drivers/net/wireless/mac80211_hwsim.c
 +++ b/drivers/net/wireless/mac80211_hwsim.c
 --- a/drivers/net/wireless/mac80211_hwsim.c
 +++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -1670,9 +1670,11 @@ static int __init init_mac80211_hwsim(void)
+@@ -1678,9 +1678,11 @@ static int __init init_mac80211_hwsim(void)
                return -EINVAL;
  
        if (fake_hw_scan) {
                return -EINVAL;
  
        if (fake_hw_scan) {
@@ -34865,23 +35790,23 @@ index 031cd89..bdc8435 100644
  
        spin_lock_init(&hwsim_radio_lock);
 diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h
  
        spin_lock_init(&hwsim_radio_lock);
 diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h
-index 2215c3c..64e6a47 100644
+index 30f138b..c904585 100644
 --- a/drivers/net/wireless/mwifiex/main.h
 +++ b/drivers/net/wireless/mwifiex/main.h
 --- a/drivers/net/wireless/mwifiex/main.h
 +++ b/drivers/net/wireless/mwifiex/main.h
-@@ -560,7 +560,7 @@ struct mwifiex_if_ops {
-       void (*update_mp_end_port) (struct mwifiex_adapter *, u16);
+@@ -543,7 +543,7 @@ struct mwifiex_if_ops {
        void (*cleanup_mpa_buf) (struct mwifiex_adapter *);
        void (*cleanup_mpa_buf) (struct mwifiex_adapter *);
+       int (*cmdrsp_complete) (struct mwifiex_adapter *, struct sk_buff *);
+       int (*event_complete) (struct mwifiex_adapter *, struct sk_buff *);
 -};
 +} __no_const;
  
  struct mwifiex_adapter {
 -};
 +} __no_const;
  
  struct mwifiex_adapter {
-       struct mwifiex_private *priv[MWIFIEX_MAX_BSS_NUM];
+       u8 iface_type;
 diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
 diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
-index 29f9389..f6d2ce0 100644
+index 0c13840..a5c3ed6 100644
 --- a/drivers/net/wireless/rndis_wlan.c
 +++ b/drivers/net/wireless/rndis_wlan.c
 --- a/drivers/net/wireless/rndis_wlan.c
 +++ b/drivers/net/wireless/rndis_wlan.c
-@@ -1277,7 +1277,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold)
+@@ -1275,7 +1275,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold)
  
        netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
  
  
        netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
  
@@ -34890,19 +35815,6 @@ index 29f9389..f6d2ce0 100644
                rts_threshold = 2347;
  
        tmp = cpu_to_le32(rts_threshold);
                rts_threshold = 2347;
  
        tmp = cpu_to_le32(rts_threshold);
-diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
-index 3b11642..d6bb049 100644
---- a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
-@@ -837,6 +837,8 @@ bool _rtl92c_phy_sw_chnl_step_by_step(struct ieee80211_hw *hw,
-       u8 rfpath;
-       u8 num_total_rfpath = rtlphy->num_total_rfpath;
-+      pax_track_stack();
-+
-       precommoncmdcnt = 0;
-       _rtl92c_phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++,
-                                        MAX_PRECMD_CNT,
 diff --git a/drivers/net/wireless/wl1251/wl1251.h b/drivers/net/wireless/wl1251/wl1251.h
 index a77f1bb..c608b2b 100644
 --- a/drivers/net/wireless/wl1251/wl1251.h
 diff --git a/drivers/net/wireless/wl1251/wl1251.h b/drivers/net/wireless/wl1251/wl1251.h
 index a77f1bb..c608b2b 100644
 --- a/drivers/net/wireless/wl1251/wl1251.h
@@ -34916,19 +35828,6 @@ index a77f1bb..c608b2b 100644
  
  struct wl1251 {
        struct ieee80211_hw *hw;
  
  struct wl1251 {
        struct ieee80211_hw *hw;
-diff --git a/drivers/net/wireless/wl12xx/spi.c b/drivers/net/wireless/wl12xx/spi.c
-index e0b3736..4b466e6 100644
---- a/drivers/net/wireless/wl12xx/spi.c
-+++ b/drivers/net/wireless/wl12xx/spi.c
-@@ -281,6 +281,8 @@ static void wl1271_spi_raw_write(struct wl1271 *wl, int addr, void *buf,
-       u32 chunk_len;
-       int i;
-+      pax_track_stack();
-+
-       WARN_ON(len > WL1271_AGGR_BUFFER_SIZE);
-       spi_message_init(&m);
 diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c
 index f34b5b2..b5abb9f 100644
 --- a/drivers/oprofile/buffer_sync.c
 diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c
 index f34b5b2..b5abb9f 100644
 --- a/drivers/oprofile/buffer_sync.c
@@ -34969,7 +35868,7 @@ index f34b5b2..b5abb9f 100644
        }
        release_mm(mm);
 diff --git a/drivers/oprofile/event_buffer.c b/drivers/oprofile/event_buffer.c
        }
        release_mm(mm);
 diff --git a/drivers/oprofile/event_buffer.c b/drivers/oprofile/event_buffer.c
-index dd87e86..bc0148c 100644
+index c0cc4e7..44d4e54 100644
 --- a/drivers/oprofile/event_buffer.c
 +++ b/drivers/oprofile/event_buffer.c
 @@ -53,7 +53,7 @@ void add_event_entry(unsigned long value)
 --- a/drivers/oprofile/event_buffer.c
 +++ b/drivers/oprofile/event_buffer.c
 @@ -53,7 +53,7 @@ void add_event_entry(unsigned long value)
@@ -34994,6 +35893,42 @@ index f8c752e..28bf4fc 100644
        start_switch_worker();
  }
  
        start_switch_worker();
  }
  
+diff --git a/drivers/oprofile/oprofile_files.c b/drivers/oprofile/oprofile_files.c
+index 84a208d..f07d177 100644
+--- a/drivers/oprofile/oprofile_files.c
++++ b/drivers/oprofile/oprofile_files.c
+@@ -36,6 +36,8 @@ static ssize_t timeout_read(struct file *file, char __user *buf,
+ static ssize_t timeout_write(struct file *file, char const __user *buf,
++              size_t count, loff_t *offset) __size_overflow(3);
++static ssize_t timeout_write(struct file *file, char const __user *buf,
+               size_t count, loff_t *offset)
+ {
+       unsigned long val;
+@@ -72,6 +74,7 @@ static ssize_t depth_read(struct file *file, char __user *buf, size_t count, lof
+ }
++static ssize_t depth_write(struct file *file, char const __user *buf, size_t count, loff_t *offset) __size_overflow(3);
+ static ssize_t depth_write(struct file *file, char const __user *buf, size_t count, loff_t *offset)
+ {
+       unsigned long val;
+@@ -126,12 +129,14 @@ static const struct file_operations cpu_type_fops = {
+ };
++static ssize_t enable_read(struct file *file, char __user *buf, size_t count, loff_t *offset) __size_overflow(3);
+ static ssize_t enable_read(struct file *file, char __user *buf, size_t count, loff_t *offset)
+ {
+       return oprofilefs_ulong_to_user(oprofile_started, buf, count, offset);
+ }
++static ssize_t enable_write(struct file *file, char const __user *buf, size_t count, loff_t *offset) __size_overflow(3);
+ static ssize_t enable_write(struct file *file, char const __user *buf, size_t count, loff_t *offset)
+ {
+       unsigned long val;
 diff --git a/drivers/oprofile/oprofile_stats.c b/drivers/oprofile/oprofile_stats.c
 index 917d28e..d62d981 100644
 --- a/drivers/oprofile/oprofile_stats.c
 diff --git a/drivers/oprofile/oprofile_stats.c b/drivers/oprofile/oprofile_stats.c
 index 917d28e..d62d981 100644
 --- a/drivers/oprofile/oprofile_stats.c
@@ -35037,10 +35972,18 @@ index 38b6fc0..b5cbfce 100644
  
  extern struct oprofile_stat_struct oprofile_stats;
 diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c
  
  extern struct oprofile_stat_struct oprofile_stats;
 diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c
-index e9ff6f7..28e259a 100644
+index 2f0aa0f..d5246c3 100644
 --- a/drivers/oprofile/oprofilefs.c
 +++ b/drivers/oprofile/oprofilefs.c
 --- a/drivers/oprofile/oprofilefs.c
 +++ b/drivers/oprofile/oprofilefs.c
-@@ -186,7 +186,7 @@ static const struct file_operations atomic_ro_fops = {
+@@ -97,6 +97,7 @@ static ssize_t ulong_read_file(struct file *file, char __user *buf, size_t count
+ }
++static ssize_t ulong_write_file(struct file *file, char const __user *buf, size_t count, loff_t *offset) __size_overflow(3);
+ static ssize_t ulong_write_file(struct file *file, char const __user *buf, size_t count, loff_t *offset)
+ {
+       unsigned long value;
+@@ -193,7 +194,7 @@ static const struct file_operations atomic_ro_fops = {
  
  
  int oprofilefs_create_ro_atomic(struct super_block *sb, struct dentry *root,
  
  
  int oprofilefs_create_ro_atomic(struct super_block *sb, struct dentry *root,
@@ -35103,7 +36046,7 @@ index 76ba8a1..20ca857 100644
  
        /* initialize our int15 lock */
 diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
  
        /* initialize our int15 lock */
 diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
-index cbfbab1..6a9fced 100644
+index 24f049e..051f66e 100644
 --- a/drivers/pci/pcie/aspm.c
 +++ b/drivers/pci/pcie/aspm.c
 @@ -27,9 +27,9 @@
 --- a/drivers/pci/pcie/aspm.c
 +++ b/drivers/pci/pcie/aspm.c
 @@ -27,9 +27,9 @@
@@ -35120,7 +36063,7 @@ index cbfbab1..6a9fced 100644
  #define ASPM_STATE_ALL                (ASPM_STATE_L0S | ASPM_STATE_L1)
  
 diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
  #define ASPM_STATE_ALL                (ASPM_STATE_L0S | ASPM_STATE_L1)
  
 diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
-index 6ab6bd3..72bdc69 100644
+index dfee1b3..a454fb6 100644
 --- a/drivers/pci/probe.c
 +++ b/drivers/pci/probe.c
 @@ -136,7 +136,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
 --- a/drivers/pci/probe.c
 +++ b/drivers/pci/probe.c
 @@ -136,7 +136,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
@@ -35153,57 +36096,21 @@ index 27911b5..5b6db88 100644
        proc_create("devices", 0, proc_bus_pci_dir,
                    &proc_bus_pci_dev_operations);
        proc_initialized = 1;
        proc_create("devices", 0, proc_bus_pci_dir,
                    &proc_bus_pci_dev_operations);
        proc_initialized = 1;
-diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c
-index 90832a9..419089a 100644
---- a/drivers/pci/xen-pcifront.c
-+++ b/drivers/pci/xen-pcifront.c
-@@ -187,6 +187,8 @@ static int pcifront_bus_read(struct pci_bus *bus, unsigned int devfn,
-       struct pcifront_sd *sd = bus->sysdata;
-       struct pcifront_device *pdev = pcifront_get_pdev(sd);
-+      pax_track_stack();
-+
-       if (verbose_request)
-               dev_info(&pdev->xdev->dev,
-                        "read dev=%04x:%02x:%02x.%01x - offset %x size %d\n",
-@@ -226,6 +228,8 @@ static int pcifront_bus_write(struct pci_bus *bus, unsigned int devfn,
-       struct pcifront_sd *sd = bus->sysdata;
-       struct pcifront_device *pdev = pcifront_get_pdev(sd);
-+      pax_track_stack();
-+
-       if (verbose_request)
-               dev_info(&pdev->xdev->dev,
-                        "write dev=%04x:%02x:%02x.%01x - "
-@@ -258,6 +262,8 @@ static int pci_frontend_enable_msix(struct pci_dev *dev,
-       struct pcifront_device *pdev = pcifront_get_pdev(sd);
-       struct msi_desc *entry;
-+      pax_track_stack();
-+
-       if (nvec > SH_INFO_MAX_VEC) {
-               dev_err(&dev->dev, "too much vector for pci frontend: %x."
-                                  " Increase SH_INFO_MAX_VEC.\n", nvec);
-@@ -309,6 +315,8 @@ static void pci_frontend_disable_msix(struct pci_dev *dev)
-       struct pcifront_sd *sd = dev->bus->sysdata;
-       struct pcifront_device *pdev = pcifront_get_pdev(sd);
-+      pax_track_stack();
-+
-       err = do_pci_op(pdev, &op);
-       /* What should do for error ? */
-@@ -328,6 +336,8 @@ static int pci_frontend_enable_msi(struct pci_dev *dev, int vector[])
-       struct pcifront_sd *sd = dev->bus->sysdata;
-       struct pcifront_device *pdev = pcifront_get_pdev(sd);
-+      pax_track_stack();
-+
-       err = do_pci_op(pdev, &op);
-       if (likely(!err)) {
-               vector[0] = op.value;
+diff --git a/drivers/platform/x86/asus_acpi.c b/drivers/platform/x86/asus_acpi.c
+index d9312b3..59f63f2 100644
+--- a/drivers/platform/x86/asus_acpi.c
++++ b/drivers/platform/x86/asus_acpi.c
+@@ -887,6 +887,8 @@ static int lcd_proc_open(struct inode *inode, struct file *file)
+ }
+ static ssize_t lcd_proc_write(struct file *file, const char __user *buffer,
++             size_t count, loff_t *pos) __size_overflow(3);
++static ssize_t lcd_proc_write(struct file *file, const char __user *buffer,
+              size_t count, loff_t *pos)
+ {
+       int rv, value;
 diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
 diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
-index 7bd829f..a3237ad 100644
+index 7b82868..b9344c9 100644
 --- a/drivers/platform/x86/thinkpad_acpi.c
 +++ b/drivers/platform/x86/thinkpad_acpi.c
 @@ -2094,7 +2094,7 @@ static int hotkey_mask_get(void)
 --- a/drivers/platform/x86/thinkpad_acpi.c
 +++ b/drivers/platform/x86/thinkpad_acpi.c
 @@ -2094,7 +2094,7 @@ static int hotkey_mask_get(void)
@@ -35334,6 +36241,19 @@ index 7bd829f..a3237ad 100644
  
  /*
   * Polling driver
  
  /*
   * Polling driver
+diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c
+index dcdc1f4..85cee16 100644
+--- a/drivers/platform/x86/toshiba_acpi.c
++++ b/drivers/platform/x86/toshiba_acpi.c
+@@ -517,6 +517,8 @@ static int set_lcd_status(struct backlight_device *bd)
+ }
+ static ssize_t lcd_proc_write(struct file *file, const char __user *buf,
++                            size_t count, loff_t *pos) __size_overflow(3);
++static ssize_t lcd_proc_write(struct file *file, const char __user *buf,
+                             size_t count, loff_t *pos)
+ {
+       struct toshiba_acpi_dev *dev = PDE(file->f_path.dentry->d_inode)->data;
 diff --git a/drivers/pnp/pnpbios/bioscalls.c b/drivers/pnp/pnpbios/bioscalls.c
 index b859d16..5cc6b1a 100644
 --- a/drivers/pnp/pnpbios/bioscalls.c
 diff --git a/drivers/pnp/pnpbios/bioscalls.c b/drivers/pnp/pnpbios/bioscalls.c
 index b859d16..5cc6b1a 100644
 --- a/drivers/pnp/pnpbios/bioscalls.c
@@ -35447,10 +36367,10 @@ index 33f5d9a..d957d3f 100644
  
        /*
 diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c
  
        /*
 diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c
-index 3285d41..ab7c22a 100644
+index 023d17d..74ef35b 100644
 --- a/drivers/regulator/mc13892-regulator.c
 +++ b/drivers/regulator/mc13892-regulator.c
 --- a/drivers/regulator/mc13892-regulator.c
 +++ b/drivers/regulator/mc13892-regulator.c
-@@ -564,10 +564,12 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev)
+@@ -565,10 +565,12 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev)
        }
        mc13xxx_unlock(mc13892);
  
        }
        mc13xxx_unlock(mc13892);
  
@@ -35486,19 +36406,6 @@ index cace6d3..f623fda 100644
                return rtc_set_time(rtc, &tm);
  
        case RTC_PIE_ON:
                return rtc_set_time(rtc, &tm);
  
        case RTC_PIE_ON:
-diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c
-index f66c33b..7ae5823 100644
---- a/drivers/scsi/BusLogic.c
-+++ b/drivers/scsi/BusLogic.c
-@@ -962,6 +962,8 @@ static int __init BusLogic_InitializeFlashPointProbeInfo(struct BusLogic_HostAda
- static void __init BusLogic_InitializeProbeInfoList(struct BusLogic_HostAdapter
-                                                   *PrototypeHostAdapter)
- {
-+      pax_track_stack();
-+
-       /*
-          If a PCI BIOS is present, interrogate it for MultiMaster and FlashPoint
-          Host Adapters; otherwise, default to the standard ISA MultiMaster probe.
 diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
 index ffb5878..e6d785c 100644
 --- a/drivers/scsi/aacraid/aacraid.h
 diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
 index ffb5878..e6d785c 100644
 --- a/drivers/scsi/aacraid/aacraid.h
@@ -35512,20 +36419,8 @@ index ffb5878..e6d785c 100644
  
  /*
   *    Define which interrupt handler needs to be installed
  
  /*
   *    Define which interrupt handler needs to be installed
-diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
-index 8a0b330..b4286de 100644
---- a/drivers/scsi/aacraid/commctrl.c
-+++ b/drivers/scsi/aacraid/commctrl.c
-@@ -482,6 +482,7 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
-       u32 actual_fibsize64, actual_fibsize = 0;
-       int i;
-+      pax_track_stack();
-       if (dev->in_reset) {
-               dprintk((KERN_DEBUG"aacraid: send raw srb -EBUSY\n"));
 diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
 diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
-index c7b6fed..4db0569 100644
+index 705e13e..91c873c 100644
 --- a/drivers/scsi/aacraid/linit.c
 +++ b/drivers/scsi/aacraid/linit.c
 @@ -93,7 +93,7 @@ static DECLARE_PCI_DEVICE_TABLE(aac_pci_tbl) = {
 --- a/drivers/scsi/aacraid/linit.c
 +++ b/drivers/scsi/aacraid/linit.c
 @@ -93,7 +93,7 @@ static DECLARE_PCI_DEVICE_TABLE(aac_pci_tbl) = {
@@ -35564,9 +36459,18 @@ index a796de9..1ef20e1 100644
  
  struct bfa_faa_cbfn_s {
 diff --git a/drivers/scsi/bfa/bfa_fcpim.c b/drivers/scsi/bfa/bfa_fcpim.c
  
  struct bfa_faa_cbfn_s {
 diff --git a/drivers/scsi/bfa/bfa_fcpim.c b/drivers/scsi/bfa/bfa_fcpim.c
-index e07bd47..dbd260a 100644
+index e07bd47..cd1bbbb 100644
 --- a/drivers/scsi/bfa/bfa_fcpim.c
 +++ b/drivers/scsi/bfa/bfa_fcpim.c
 --- a/drivers/scsi/bfa/bfa_fcpim.c
 +++ b/drivers/scsi/bfa/bfa_fcpim.c
+@@ -4121,7 +4121,7 @@ bfa_fcp_attach(struct bfa_s *bfa, void *bfad, struct bfa_iocfc_cfg_s *cfg,
+       bfa_iotag_attach(fcp);
+-      fcp->itn_arr = (struct bfa_itn_s *) bfa_mem_kva_curp(fcp);
++      fcp->itn_arr = (bfa_itn_s_no_const *) bfa_mem_kva_curp(fcp);
+       bfa_mem_kva_curp(fcp) = (u8 *)fcp->itn_arr +
+                       (fcp->num_itns * sizeof(struct bfa_itn_s));
+       memset(fcp->itn_arr, 0,
 @@ -4179,7 +4179,7 @@ bfa_itn_create(struct bfa_s *bfa, struct bfa_rport_s *rport,
                void (*isr)(struct bfa_s *bfa, struct bfi_msg_s *m))
  {
 @@ -4179,7 +4179,7 @@ bfa_itn_create(struct bfa_s *bfa, struct bfa_rport_s *rport,
                void (*isr)(struct bfa_s *bfa, struct bfi_msg_s *m))
  {
@@ -35597,41 +36501,6 @@ index 1080bcb..a3b39e3 100644
        int                     num_ioim_reqs;
        int                     num_fwtio_reqs;
        int                     num_itns;
        int                     num_ioim_reqs;
        int                     num_fwtio_reqs;
        int                     num_itns;
-diff --git a/drivers/scsi/bfa/bfa_fcs_lport.c b/drivers/scsi/bfa/bfa_fcs_lport.c
-index d4f951f..197c350 100644
---- a/drivers/scsi/bfa/bfa_fcs_lport.c
-+++ b/drivers/scsi/bfa/bfa_fcs_lport.c
-@@ -1700,6 +1700,8 @@ bfa_fcs_lport_fdmi_build_rhba_pyld(struct bfa_fcs_lport_fdmi_s *fdmi, u8 *pyld)
-       u16        len, count;
-       u16     templen;
-+      pax_track_stack();
-+
-       /*
-        * get hba attributes
-        */
-@@ -1977,6 +1979,8 @@ bfa_fcs_lport_fdmi_build_portattr_block(struct bfa_fcs_lport_fdmi_s *fdmi,
-       u8      count = 0;
-       u16     templen;
-+      pax_track_stack();
-+
-       /*
-        * get port attributes
-        */
-diff --git a/drivers/scsi/bfa/bfa_fcs_rport.c b/drivers/scsi/bfa/bfa_fcs_rport.c
-index 52628d5..f89d033 100644
---- a/drivers/scsi/bfa/bfa_fcs_rport.c
-+++ b/drivers/scsi/bfa/bfa_fcs_rport.c
-@@ -1871,6 +1871,8 @@ bfa_fcs_rport_process_rpsc(struct bfa_fcs_rport_s *rport,
-       struct fc_rpsc_speed_info_s speeds;
-       struct bfa_port_attr_s pport_attr;
-+      pax_track_stack();
-+
-       bfa_trc(port->fcs, rx_fchs->s_id);
-       bfa_trc(port->fcs, rx_fchs->d_id);
 diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h
 index 546d46b..642fa5b 100644
 --- a/drivers/scsi/bfa/bfa_ioc.h
 diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h
 index 546d46b..642fa5b 100644
 --- a/drivers/scsi/bfa/bfa_ioc.h
@@ -35654,131 +36523,6 @@ index 546d46b..642fa5b 100644
  
  /*
   * Queue element to wait for room in request queue. FIFO order is
  
  /*
   * Queue element to wait for room in request queue. FIFO order is
-diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
-index 66fb725..0fe05ab 100644
---- a/drivers/scsi/bfa/bfad.c
-+++ b/drivers/scsi/bfa/bfad.c
-@@ -1019,6 +1019,8 @@ bfad_start_ops(struct bfad_s *bfad) {
-       struct bfad_vport_s *vport, *vport_new;
-       struct bfa_fcs_driver_info_s driver_info;
-+      pax_track_stack();
-+
-       /* Limit min/max. xfer size to [64k-32MB] */
-       if (max_xfer_size < BFAD_MIN_SECTORS >> 1)
-               max_xfer_size = BFAD_MIN_SECTORS >> 1;
-diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
-index b4f6c9a..0eb1938 100644
---- a/drivers/scsi/dpt_i2o.c
-+++ b/drivers/scsi/dpt_i2o.c
-@@ -1811,6 +1811,8 @@ static int adpt_i2o_passthru(adpt_hba* pHba, u32 __user *arg)
-       dma_addr_t addr;
-       ulong flags = 0;
-+      pax_track_stack();
-+
-       memset(&msg, 0, MAX_MESSAGE_SIZE*4);
-       // get user msg size in u32s 
-       if(get_user(size, &user_msg[0])){
-@@ -2317,6 +2319,8 @@ static s32 adpt_scsi_to_i2o(adpt_hba* pHba, struct scsi_cmnd* cmd, struct adpt_d
-       s32 rcode;
-       dma_addr_t addr;
-+      pax_track_stack();
-+
-       memset(msg, 0 , sizeof(msg));
-       len = scsi_bufflen(cmd);
-       direction = 0x00000000; 
-diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c
-index 94de889..ca4f0cf 100644
---- a/drivers/scsi/eata.c
-+++ b/drivers/scsi/eata.c
-@@ -1087,6 +1087,8 @@ static int port_detect(unsigned long port_base, unsigned int j,
-       struct hostdata *ha;
-       char name[16];
-+      pax_track_stack();
-+
-       sprintf(name, "%s%d", driver_name, j);
-       if (!request_region(port_base, REGION_SIZE, driver_name)) {
-diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
-index c74c4b8..c41ca3f 100644
---- a/drivers/scsi/fcoe/fcoe_ctlr.c
-+++ b/drivers/scsi/fcoe/fcoe_ctlr.c
-@@ -2503,6 +2503,8 @@ static int fcoe_ctlr_vn_recv(struct fcoe_ctlr *fip, struct sk_buff *skb)
-       } buf;
-       int rc;
-+      pax_track_stack();
-+
-       fiph = (struct fip_header *)skb->data;
-       sub = fiph->fip_subcode;
-diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
-index 3242bca..45a83e7 100644
---- a/drivers/scsi/gdth.c
-+++ b/drivers/scsi/gdth.c
-@@ -4107,6 +4107,8 @@ static int ioc_lockdrv(void __user *arg)
-     unsigned long flags;
-     gdth_ha_str *ha;
-+    pax_track_stack();
-+
-     if (copy_from_user(&ldrv, arg, sizeof(gdth_ioctl_lockdrv)))
-         return -EFAULT;
-     ha = gdth_find_ha(ldrv.ionode);
-@@ -4139,6 +4141,8 @@ static int ioc_resetdrv(void __user *arg, char *cmnd)
-     gdth_ha_str *ha;
-     int rval;
-+    pax_track_stack();
-+
-     if (copy_from_user(&res, arg, sizeof(gdth_ioctl_reset)) ||
-         res.number >= MAX_HDRIVES)
-         return -EFAULT;
-@@ -4174,6 +4178,8 @@ static int ioc_general(void __user *arg, char *cmnd)
-     gdth_ha_str *ha;
-     int rval;
-+    pax_track_stack();
-+
-     if (copy_from_user(&gen, arg, sizeof(gdth_ioctl_general)))
-         return -EFAULT;
-     ha = gdth_find_ha(gen.ionode);
-@@ -4642,6 +4648,9 @@ static void gdth_flush(gdth_ha_str *ha)
-     int             i;
-     gdth_cmd_str    gdtcmd;
-     char            cmnd[MAX_COMMAND_SIZE];   
-+
-+    pax_track_stack();
-+
-     memset(cmnd, 0xff, MAX_COMMAND_SIZE);
-     TRACE2(("gdth_flush() hanum %d\n", ha->hanum));
-diff --git a/drivers/scsi/gdth_proc.c b/drivers/scsi/gdth_proc.c
-index 6527543..81e4fe2 100644
---- a/drivers/scsi/gdth_proc.c
-+++ b/drivers/scsi/gdth_proc.c
-@@ -47,6 +47,9 @@ static int gdth_set_asc_info(struct Scsi_Host *host, char *buffer,
-     u64         paddr;
-     char            cmnd[MAX_COMMAND_SIZE];
-+
-+    pax_track_stack();
-+
-     memset(cmnd, 0xff, 12);
-     memset(&gdtcmd, 0, sizeof(gdth_cmd_str));
-@@ -175,6 +178,8 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length,
-     gdth_hget_str *phg;
-     char cmnd[MAX_COMMAND_SIZE];
-+    pax_track_stack();
-+
-     gdtcmd = kmalloc(sizeof(*gdtcmd), GFP_KERNEL);
-     estr = kmalloc(sizeof(*estr), GFP_KERNEL);
-     if (!gdtcmd || !estr)
 diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
 index 351dc0b..951dc32 100644
 --- a/drivers/scsi/hosts.c
 diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
 index 351dc0b..951dc32 100644
 --- a/drivers/scsi/hosts.c
@@ -35802,10 +36546,10 @@ index 351dc0b..951dc32 100644
  
        /* These three are default values which can be overridden */
 diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
  
        /* These three are default values which can be overridden */
 diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
-index 418ce83..7ee1225 100644
+index 865d452..e9b7fa7 100644
 --- a/drivers/scsi/hpsa.c
 +++ b/drivers/scsi/hpsa.c
 --- a/drivers/scsi/hpsa.c
 +++ b/drivers/scsi/hpsa.c
-@@ -499,7 +499,7 @@ static inline u32 next_command(struct ctlr_info *h)
+@@ -505,7 +505,7 @@ static inline u32 next_command(struct ctlr_info *h)
        u32 a;
  
        if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
        u32 a;
  
        if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
@@ -35814,7 +36558,7 @@ index 418ce83..7ee1225 100644
  
        if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
                a = *(h->reply_pool_head); /* Next cmd in ring buffer */
  
        if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
                a = *(h->reply_pool_head); /* Next cmd in ring buffer */
-@@ -2956,7 +2956,7 @@ static void start_io(struct ctlr_info *h)
+@@ -2989,7 +2989,7 @@ static void start_io(struct ctlr_info *h)
        while (!list_empty(&h->reqQ)) {
                c = list_entry(h->reqQ.next, struct CommandList, list);
                /* can't do anything if fifo is full */
        while (!list_empty(&h->reqQ)) {
                c = list_entry(h->reqQ.next, struct CommandList, list);
                /* can't do anything if fifo is full */
@@ -35823,7 +36567,7 @@ index 418ce83..7ee1225 100644
                        dev_warn(&h->pdev->dev, "fifo full\n");
                        break;
                }
                        dev_warn(&h->pdev->dev, "fifo full\n");
                        break;
                }
-@@ -2966,7 +2966,7 @@ static void start_io(struct ctlr_info *h)
+@@ -2999,7 +2999,7 @@ static void start_io(struct ctlr_info *h)
                h->Qdepth--;
  
                /* Tell the controller execute command */
                h->Qdepth--;
  
                /* Tell the controller execute command */
@@ -35832,7 +36576,7 @@ index 418ce83..7ee1225 100644
  
                /* Put job onto the completed Q */
                addQ(&h->cmpQ, c);
  
                /* Put job onto the completed Q */
                addQ(&h->cmpQ, c);
-@@ -2975,17 +2975,17 @@ static void start_io(struct ctlr_info *h)
+@@ -3008,17 +3008,17 @@ static void start_io(struct ctlr_info *h)
  
  static inline unsigned long get_next_completion(struct ctlr_info *h)
  {
  
  static inline unsigned long get_next_completion(struct ctlr_info *h)
  {
@@ -35853,7 +36597,7 @@ index 418ce83..7ee1225 100644
                (h->interrupts_enabled == 0);
  }
  
                (h->interrupts_enabled == 0);
  }
  
-@@ -3882,7 +3882,7 @@ static int __devinit hpsa_pci_init(struct ctlr_info *h)
+@@ -3917,7 +3917,7 @@ static int __devinit hpsa_pci_init(struct ctlr_info *h)
        if (prod_index < 0)
                return -ENODEV;
        h->product_name = products[prod_index].product_name;
        if (prod_index < 0)
                return -ENODEV;
        h->product_name = products[prod_index].product_name;
@@ -35862,7 +36606,16 @@ index 418ce83..7ee1225 100644
  
        if (hpsa_board_disabled(h->pdev)) {
                dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
  
        if (hpsa_board_disabled(h->pdev)) {
                dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
-@@ -4163,7 +4163,7 @@ reinit_after_soft_reset:
+@@ -4162,7 +4162,7 @@ static void controller_lockup_detected(struct ctlr_info *h)
+       assert_spin_locked(&lockup_detector_lock);
+       remove_ctlr_from_lockup_detector_list(h);
+-      h->access.set_intr_mask(h, HPSA_INTR_OFF);
++      h->access->set_intr_mask(h, HPSA_INTR_OFF);
+       spin_lock_irqsave(&h->lock, flags);
+       h->lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
+       spin_unlock_irqrestore(&h->lock, flags);
+@@ -4340,7 +4340,7 @@ reinit_after_soft_reset:
        }
  
        /* make sure the board interrupts are off */
        }
  
        /* make sure the board interrupts are off */
@@ -35871,7 +36624,7 @@ index 418ce83..7ee1225 100644
  
        if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx))
                goto clean2;
  
        if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx))
                goto clean2;
-@@ -4197,7 +4197,7 @@ reinit_after_soft_reset:
+@@ -4374,7 +4374,7 @@ reinit_after_soft_reset:
                 * fake ones to scoop up any residual completions.
                 */
                spin_lock_irqsave(&h->lock, flags);
                 * fake ones to scoop up any residual completions.
                 */
                spin_lock_irqsave(&h->lock, flags);
@@ -35880,7 +36633,7 @@ index 418ce83..7ee1225 100644
                spin_unlock_irqrestore(&h->lock, flags);
                free_irq(h->intr[h->intr_mode], h);
                rc = hpsa_request_irq(h, hpsa_msix_discard_completions,
                spin_unlock_irqrestore(&h->lock, flags);
                free_irq(h->intr[h->intr_mode], h);
                rc = hpsa_request_irq(h, hpsa_msix_discard_completions,
-@@ -4216,9 +4216,9 @@ reinit_after_soft_reset:
+@@ -4393,9 +4393,9 @@ reinit_after_soft_reset:
                dev_info(&h->pdev->dev, "Board READY.\n");
                dev_info(&h->pdev->dev,
                        "Waiting for stale completions to drain.\n");
                dev_info(&h->pdev->dev, "Board READY.\n");
                dev_info(&h->pdev->dev,
                        "Waiting for stale completions to drain.\n");
@@ -35892,7 +36645,7 @@ index 418ce83..7ee1225 100644
  
                rc = controller_reset_failed(h->cfgtable);
                if (rc)
  
                rc = controller_reset_failed(h->cfgtable);
                if (rc)
-@@ -4239,7 +4239,7 @@ reinit_after_soft_reset:
+@@ -4416,7 +4416,7 @@ reinit_after_soft_reset:
        }
  
        /* Turn the interrupts on so we can service requests */
        }
  
        /* Turn the interrupts on so we can service requests */
@@ -35901,7 +36654,7 @@ index 418ce83..7ee1225 100644
  
        hpsa_hba_inquiry(h);
        hpsa_register_scsi(h);  /* hook ourselves into SCSI subsystem */
  
        hpsa_hba_inquiry(h);
        hpsa_register_scsi(h);  /* hook ourselves into SCSI subsystem */
-@@ -4292,7 +4292,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
+@@ -4468,7 +4468,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
         * To write all data in the battery backed cache to disks
         */
        hpsa_flush_cache(h);
         * To write all data in the battery backed cache to disks
         */
        hpsa_flush_cache(h);
@@ -35910,7 +36663,7 @@ index 418ce83..7ee1225 100644
        free_irq(h->intr[h->intr_mode], h);
  #ifdef CONFIG_PCI_MSI
        if (h->msix_vector)
        free_irq(h->intr[h->intr_mode], h);
  #ifdef CONFIG_PCI_MSI
        if (h->msix_vector)
-@@ -4455,7 +4455,7 @@ static __devinit void hpsa_enter_performant_mode(struct ctlr_info *h,
+@@ -4632,7 +4632,7 @@ static __devinit void hpsa_enter_performant_mode(struct ctlr_info *h,
                return;
        }
        /* Change the access methods to the performant access methods */
                return;
        }
        /* Change the access methods to the performant access methods */
@@ -35920,7 +36673,7 @@ index 418ce83..7ee1225 100644
  }
  
 diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h
  }
  
 diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h
-index 7f53cea..a8c7188 100644
+index 91edafb..a9b88ec 100644
 --- a/drivers/scsi/hpsa.h
 +++ b/drivers/scsi/hpsa.h
 @@ -73,7 +73,7 @@ struct ctlr_info {
 --- a/drivers/scsi/hpsa.h
 +++ b/drivers/scsi/hpsa.h
 @@ -73,7 +73,7 @@ struct ctlr_info {
@@ -35946,7 +36699,7 @@ index f2df059..a3a9930 100644
  typedef struct ips_ha {
     uint8_t            ha_id[IPS_MAX_CHANNELS+1];
 diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
  typedef struct ips_ha {
     uint8_t            ha_id[IPS_MAX_CHANNELS+1];
 diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
-index d261e98..1e00f35 100644
+index 9de9db2..1e09660 100644
 --- a/drivers/scsi/libfc/fc_exch.c
 +++ b/drivers/scsi/libfc/fc_exch.c
 @@ -105,12 +105,12 @@ struct fc_exch_mgr {
 --- a/drivers/scsi/libfc/fc_exch.c
 +++ b/drivers/scsi/libfc/fc_exch.c
 @@ -105,12 +105,12 @@ struct fc_exch_mgr {
@@ -35968,7 +36721,7 @@ index d261e98..1e00f35 100644
        } stats;
  };
  
        } stats;
  };
  
-@@ -718,7 +718,7 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport,
+@@ -719,7 +719,7 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport,
        /* allocate memory for exchange */
        ep = mempool_alloc(mp->ep_pool, GFP_ATOMIC);
        if (!ep) {
        /* allocate memory for exchange */
        ep = mempool_alloc(mp->ep_pool, GFP_ATOMIC);
        if (!ep) {
@@ -35977,7 +36730,7 @@ index d261e98..1e00f35 100644
                goto out;
        }
        memset(ep, 0, sizeof(*ep));
                goto out;
        }
        memset(ep, 0, sizeof(*ep));
-@@ -779,7 +779,7 @@ out:
+@@ -780,7 +780,7 @@ out:
        return ep;
  err:
        spin_unlock_bh(&pool->lock);
        return ep;
  err:
        spin_unlock_bh(&pool->lock);
@@ -35986,7 +36739,7 @@ index d261e98..1e00f35 100644
        mempool_free(ep, mp->ep_pool);
        return NULL;
  }
        mempool_free(ep, mp->ep_pool);
        return NULL;
  }
-@@ -922,7 +922,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
+@@ -923,7 +923,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
                xid = ntohs(fh->fh_ox_id);      /* we originated exch */
                ep = fc_exch_find(mp, xid);
                if (!ep) {
                xid = ntohs(fh->fh_ox_id);      /* we originated exch */
                ep = fc_exch_find(mp, xid);
                if (!ep) {
@@ -35995,7 +36748,7 @@ index d261e98..1e00f35 100644
                        reject = FC_RJT_OX_ID;
                        goto out;
                }
                        reject = FC_RJT_OX_ID;
                        goto out;
                }
-@@ -952,7 +952,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
+@@ -953,7 +953,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
                ep = fc_exch_find(mp, xid);
                if ((f_ctl & FC_FC_FIRST_SEQ) && fc_sof_is_init(fr_sof(fp))) {
                        if (ep) {
                ep = fc_exch_find(mp, xid);
                if ((f_ctl & FC_FC_FIRST_SEQ) && fc_sof_is_init(fr_sof(fp))) {
                        if (ep) {
@@ -36004,7 +36757,7 @@ index d261e98..1e00f35 100644
                                reject = FC_RJT_RX_ID;
                                goto rel;
                        }
                                reject = FC_RJT_RX_ID;
                                goto rel;
                        }
-@@ -963,7 +963,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
+@@ -964,7 +964,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
                        }
                        xid = ep->xid;  /* get our XID */
                } else if (!ep) {
                        }
                        xid = ep->xid;  /* get our XID */
                } else if (!ep) {
@@ -36013,7 +36766,7 @@ index d261e98..1e00f35 100644
                        reject = FC_RJT_RX_ID;  /* XID not found */
                        goto out;
                }
                        reject = FC_RJT_RX_ID;  /* XID not found */
                        goto out;
                }
-@@ -980,7 +980,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
+@@ -981,7 +981,7 @@ static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_lport *lport,
        } else {
                sp = &ep->seq;
                if (sp->id != fh->fh_seq_id) {
        } else {
                sp = &ep->seq;
                if (sp->id != fh->fh_seq_id) {
@@ -36022,7 +36775,7 @@ index d261e98..1e00f35 100644
                        if (f_ctl & FC_FC_END_SEQ) {
                                /*
                                 * Update sequence_id based on incoming last
                        if (f_ctl & FC_FC_END_SEQ) {
                                /*
                                 * Update sequence_id based on incoming last
-@@ -1430,22 +1430,22 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
+@@ -1431,22 +1431,22 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
  
        ep = fc_exch_find(mp, ntohs(fh->fh_ox_id));
        if (!ep) {
  
        ep = fc_exch_find(mp, ntohs(fh->fh_ox_id));
        if (!ep) {
@@ -36049,7 +36802,7 @@ index d261e98..1e00f35 100644
                goto rel;
        }
        sof = fr_sof(fp);
                goto rel;
        }
        sof = fr_sof(fp);
-@@ -1454,7 +1454,7 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
+@@ -1455,7 +1455,7 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
                sp->ssb_stat |= SSB_ST_RESP;
                sp->id = fh->fh_seq_id;
        } else if (sp->id != fh->fh_seq_id) {
                sp->ssb_stat |= SSB_ST_RESP;
                sp->id = fh->fh_seq_id;
        } else if (sp->id != fh->fh_seq_id) {
@@ -36058,7 +36811,7 @@ index d261e98..1e00f35 100644
                goto rel;
        }
  
                goto rel;
        }
  
-@@ -1518,9 +1518,9 @@ static void fc_exch_recv_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
+@@ -1519,9 +1519,9 @@ static void fc_exch_recv_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
        sp = fc_seq_lookup_orig(mp, fp);        /* doesn't hold sequence */
  
        if (!sp)
        sp = fc_seq_lookup_orig(mp, fp);        /* doesn't hold sequence */
  
        if (!sp)
@@ -36084,7 +36837,7 @@ index db9238f..4378ed2 100644
        .qc_issue               = sas_ata_qc_issue,
        .qc_fill_rtf            = sas_ata_qc_fill_rtf,
 diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
        .qc_issue               = sas_ata_qc_issue,
        .qc_fill_rtf            = sas_ata_qc_fill_rtf,
 diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
-index c088a36..01c73b0 100644
+index bb4c8e0..f33d849 100644
 --- a/drivers/scsi/lpfc/lpfc.h
 +++ b/drivers/scsi/lpfc/lpfc.h
 @@ -425,7 +425,7 @@ struct lpfc_vport {
 --- a/drivers/scsi/lpfc/lpfc.h
 +++ b/drivers/scsi/lpfc/lpfc.h
 @@ -425,7 +425,7 @@ struct lpfc_vport {
@@ -36107,8 +36860,8 @@ index c088a36..01c73b0 100644
        unsigned long last_rsrc_error_time;
        unsigned long last_ramp_down_time;
        unsigned long last_ramp_up_time;
        unsigned long last_rsrc_error_time;
        unsigned long last_ramp_down_time;
        unsigned long last_ramp_up_time;
-@@ -850,7 +850,7 @@ struct lpfc_hba {
-       struct dentry *debug_dumpDif;    /* BlockGuard BPL*/
+@@ -866,7 +866,7 @@ struct lpfc_hba {
        struct dentry *debug_slow_ring_trc;
        struct lpfc_debugfs_trc *slow_ring_trc;
 -      atomic_t slow_ring_trc_cnt;
        struct dentry *debug_slow_ring_trc;
        struct lpfc_debugfs_trc *slow_ring_trc;
 -      atomic_t slow_ring_trc_cnt;
@@ -36117,10 +36870,10 @@ index c088a36..01c73b0 100644
        struct dentry *idiag_root;
        struct dentry *idiag_pci_cfg;
 diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c
        struct dentry *idiag_root;
        struct dentry *idiag_pci_cfg;
 diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c
-index a0424dd..2499b6b 100644
+index 2838259..a07cfb5 100644
 --- a/drivers/scsi/lpfc/lpfc_debugfs.c
 +++ b/drivers/scsi/lpfc/lpfc_debugfs.c
 --- a/drivers/scsi/lpfc/lpfc_debugfs.c
 +++ b/drivers/scsi/lpfc/lpfc_debugfs.c
-@@ -105,7 +105,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc,
+@@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc,
  
  #include <linux/debugfs.h>
  
  
  #include <linux/debugfs.h>
  
@@ -36129,7 +36882,7 @@ index a0424dd..2499b6b 100644
  static unsigned long lpfc_debugfs_start_time = 0L;
  
  /* iDiag */
  static unsigned long lpfc_debugfs_start_time = 0L;
  
  /* iDiag */
-@@ -146,7 +146,7 @@ lpfc_debugfs_disc_trc_data(struct lpfc_vport *vport, char *buf, int size)
+@@ -147,7 +147,7 @@ lpfc_debugfs_disc_trc_data(struct lpfc_vport *vport, char *buf, int size)
        lpfc_debugfs_enable = 0;
  
        len = 0;
        lpfc_debugfs_enable = 0;
  
        len = 0;
@@ -36138,7 +36891,7 @@ index a0424dd..2499b6b 100644
                (lpfc_debugfs_max_disc_trc - 1);
        for (i = index; i < lpfc_debugfs_max_disc_trc; i++) {
                dtp = vport->disc_trc + i;
                (lpfc_debugfs_max_disc_trc - 1);
        for (i = index; i < lpfc_debugfs_max_disc_trc; i++) {
                dtp = vport->disc_trc + i;
-@@ -212,7 +212,7 @@ lpfc_debugfs_slow_ring_trc_data(struct lpfc_hba *phba, char *buf, int size)
+@@ -213,7 +213,7 @@ lpfc_debugfs_slow_ring_trc_data(struct lpfc_hba *phba, char *buf, int size)
        lpfc_debugfs_enable = 0;
  
        len = 0;
        lpfc_debugfs_enable = 0;
  
        len = 0;
@@ -36147,7 +36900,7 @@ index a0424dd..2499b6b 100644
                (lpfc_debugfs_max_slow_ring_trc - 1);
        for (i = index; i < lpfc_debugfs_max_slow_ring_trc; i++) {
                dtp = phba->slow_ring_trc + i;
                (lpfc_debugfs_max_slow_ring_trc - 1);
        for (i = index; i < lpfc_debugfs_max_slow_ring_trc; i++) {
                dtp = phba->slow_ring_trc + i;
-@@ -635,14 +635,14 @@ lpfc_debugfs_disc_trc(struct lpfc_vport *vport, int mask, char *fmt,
+@@ -636,14 +636,14 @@ lpfc_debugfs_disc_trc(struct lpfc_vport *vport, int mask, char *fmt,
                !vport || !vport->disc_trc)
                return;
  
                !vport || !vport->disc_trc)
                return;
  
@@ -36164,7 +36917,7 @@ index a0424dd..2499b6b 100644
        dtp->jif = jiffies;
  #endif
        return;
        dtp->jif = jiffies;
  #endif
        return;
-@@ -673,14 +673,14 @@ lpfc_debugfs_slow_ring_trc(struct lpfc_hba *phba, char *fmt,
+@@ -674,14 +674,14 @@ lpfc_debugfs_slow_ring_trc(struct lpfc_hba *phba, char *fmt,
                !phba || !phba->slow_ring_trc)
                return;
  
                !phba || !phba->slow_ring_trc)
                return;
  
@@ -36181,7 +36934,7 @@ index a0424dd..2499b6b 100644
        dtp->jif = jiffies;
  #endif
        return;
        dtp->jif = jiffies;
  #endif
        return;
-@@ -3828,7 +3828,7 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
+@@ -3986,7 +3986,7 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                                                 "slow_ring buffer\n");
                                goto debug_failed;
                        }
                                                 "slow_ring buffer\n");
                                goto debug_failed;
                        }
@@ -36190,7 +36943,7 @@ index a0424dd..2499b6b 100644
                        memset(phba->slow_ring_trc, 0,
                                (sizeof(struct lpfc_debugfs_trc) *
                                lpfc_debugfs_max_slow_ring_trc));
                        memset(phba->slow_ring_trc, 0,
                                (sizeof(struct lpfc_debugfs_trc) *
                                lpfc_debugfs_max_slow_ring_trc));
-@@ -3874,7 +3874,7 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
+@@ -4032,7 +4032,7 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                                 "buffer\n");
                goto debug_failed;
        }
                                 "buffer\n");
                goto debug_failed;
        }
@@ -36200,10 +36953,10 @@ index a0424dd..2499b6b 100644
        snprintf(name, sizeof(name), "discovery_trace");
        vport->debug_disc_trc =
 diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
        snprintf(name, sizeof(name), "discovery_trace");
        vport->debug_disc_trc =
 diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
-index a3c8200..31e562e 100644
+index 55bc4fc..a2a109c 100644
 --- a/drivers/scsi/lpfc/lpfc_init.c
 +++ b/drivers/scsi/lpfc/lpfc_init.c
 --- a/drivers/scsi/lpfc/lpfc_init.c
 +++ b/drivers/scsi/lpfc/lpfc_init.c
-@@ -9969,8 +9969,10 @@ lpfc_init(void)
+@@ -10027,8 +10027,10 @@ lpfc_init(void)
        printk(LPFC_COPYRIGHT "\n");
  
        if (lpfc_enable_npiv) {
        printk(LPFC_COPYRIGHT "\n");
  
        if (lpfc_enable_npiv) {
@@ -36217,10 +36970,10 @@ index a3c8200..31e562e 100644
        lpfc_transport_template =
                                fc_attach_transport(&lpfc_transport_functions);
 diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
        lpfc_transport_template =
                                fc_attach_transport(&lpfc_transport_functions);
 diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
-index eadd241..26c8e0f 100644
+index 2e1e54e..1af0a0d 100644
 --- a/drivers/scsi/lpfc/lpfc_scsi.c
 +++ b/drivers/scsi/lpfc/lpfc_scsi.c
 --- a/drivers/scsi/lpfc/lpfc_scsi.c
 +++ b/drivers/scsi/lpfc/lpfc_scsi.c
-@@ -297,7 +297,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba)
+@@ -305,7 +305,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba)
        uint32_t evt_posted;
  
        spin_lock_irqsave(&phba->hbalock, flags);
        uint32_t evt_posted;
  
        spin_lock_irqsave(&phba->hbalock, flags);
@@ -36229,7 +36982,7 @@ index eadd241..26c8e0f 100644
        phba->last_rsrc_error_time = jiffies;
  
        if ((phba->last_ramp_down_time + QUEUE_RAMP_DOWN_INTERVAL) > jiffies) {
        phba->last_rsrc_error_time = jiffies;
  
        if ((phba->last_ramp_down_time + QUEUE_RAMP_DOWN_INTERVAL) > jiffies) {
-@@ -338,7 +338,7 @@ lpfc_rampup_queue_depth(struct lpfc_vport  *vport,
+@@ -346,7 +346,7 @@ lpfc_rampup_queue_depth(struct lpfc_vport  *vport,
        unsigned long flags;
        struct lpfc_hba *phba = vport->phba;
        uint32_t evt_posted;
        unsigned long flags;
        struct lpfc_hba *phba = vport->phba;
        uint32_t evt_posted;
@@ -36238,7 +36991,7 @@ index eadd241..26c8e0f 100644
  
        if (vport->cfg_lun_queue_depth <= queue_depth)
                return;
  
        if (vport->cfg_lun_queue_depth <= queue_depth)
                return;
-@@ -382,8 +382,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
+@@ -390,8 +390,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
        unsigned long num_rsrc_err, num_cmd_success;
        int i;
  
        unsigned long num_rsrc_err, num_cmd_success;
        int i;
  
@@ -36249,7 +37002,7 @@ index eadd241..26c8e0f 100644
  
        vports = lpfc_create_vport_work_array(phba);
        if (vports != NULL)
  
        vports = lpfc_create_vport_work_array(phba);
        if (vports != NULL)
-@@ -403,8 +403,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
+@@ -411,8 +411,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
                        }
                }
        lpfc_destroy_vport_work_array(phba, vports);
                        }
                }
        lpfc_destroy_vport_work_array(phba, vports);
@@ -36260,7 +37013,7 @@ index eadd241..26c8e0f 100644
  }
  
  /**
  }
  
  /**
-@@ -438,8 +438,8 @@ lpfc_ramp_up_queue_handler(struct lpfc_hba *phba)
+@@ -446,8 +446,8 @@ lpfc_ramp_up_queue_handler(struct lpfc_hba *phba)
                        }
                }
        lpfc_destroy_vport_work_array(phba, vports);
                        }
                }
        lpfc_destroy_vport_work_array(phba, vports);
@@ -36271,37 +37024,11 @@ index eadd241..26c8e0f 100644
  }
  
  /**
  }
  
  /**
-diff --git a/drivers/scsi/megaraid/megaraid_mbox.c b/drivers/scsi/megaraid/megaraid_mbox.c
-index 2e6619e..fa64494 100644
---- a/drivers/scsi/megaraid/megaraid_mbox.c
-+++ b/drivers/scsi/megaraid/megaraid_mbox.c
-@@ -3503,6 +3503,8 @@ megaraid_cmm_register(adapter_t *adapter)
-       int             rval;
-       int             i;
-+      pax_track_stack();
-+
-       // Allocate memory for the base list of scb for management module.
-       adapter->uscb_list = kcalloc(MBOX_MAX_USER_CMDS, sizeof(scb_t), GFP_KERNEL);
-diff --git a/drivers/scsi/osd/osd_initiator.c b/drivers/scsi/osd/osd_initiator.c
-index 86afb13f..c912398 100644
---- a/drivers/scsi/osd/osd_initiator.c
-+++ b/drivers/scsi/osd/osd_initiator.c
-@@ -97,6 +97,8 @@ static int _osd_get_print_system_info(struct osd_dev *od,
-       int nelem = ARRAY_SIZE(get_attrs), a = 0;
-       int ret;
-+      pax_track_stack();
-+
-       or = osd_start_request(od, GFP_KERNEL);
-       if (!or)
-               return -ENOMEM;
 diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
 diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
-index d079f9a..d26072c 100644
+index 5163edb..7b142bc 100644
 --- a/drivers/scsi/pmcraid.c
 +++ b/drivers/scsi/pmcraid.c
 --- a/drivers/scsi/pmcraid.c
 +++ b/drivers/scsi/pmcraid.c
-@@ -201,8 +201,8 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev)
+@@ -200,8 +200,8 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev)
                res->scsi_dev = scsi_dev;
                scsi_dev->hostdata = res;
                res->change_detected = 0;
                res->scsi_dev = scsi_dev;
                scsi_dev->hostdata = res;
                res->change_detected = 0;
@@ -36312,7 +37039,7 @@ index d079f9a..d26072c 100644
                rc = 0;
        }
        spin_unlock_irqrestore(&pinstance->resource_lock, lock_flags);
                rc = 0;
        }
        spin_unlock_irqrestore(&pinstance->resource_lock, lock_flags);
-@@ -2677,9 +2677,9 @@ static int pmcraid_error_handler(struct pmcraid_cmd *cmd)
+@@ -2676,9 +2676,9 @@ static int pmcraid_error_handler(struct pmcraid_cmd *cmd)
  
        /* If this was a SCSI read/write command keep count of errors */
        if (SCSI_CMD_TYPE(scsi_cmd->cmnd[0]) == SCSI_READ_CMD)
  
        /* If this was a SCSI read/write command keep count of errors */
        if (SCSI_CMD_TYPE(scsi_cmd->cmnd[0]) == SCSI_READ_CMD)
@@ -36324,7 +37051,7 @@ index d079f9a..d26072c 100644
  
        if (!RES_IS_GSCSI(res->cfg_entry) &&
                masked_ioasc != PMCRAID_IOASC_HW_DEVICE_BUS_STATUS_ERROR) {
  
        if (!RES_IS_GSCSI(res->cfg_entry) &&
                masked_ioasc != PMCRAID_IOASC_HW_DEVICE_BUS_STATUS_ERROR) {
-@@ -3535,7 +3535,7 @@ static int pmcraid_queuecommand_lck(
+@@ -3534,7 +3534,7 @@ static int pmcraid_queuecommand_lck(
         * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses
         * hrrq_id assigned here in queuecommand
         */
         * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses
         * hrrq_id assigned here in queuecommand
         */
@@ -36333,7 +37060,7 @@ index d079f9a..d26072c 100644
                          pinstance->num_hrrq;
        cmd->cmd_done = pmcraid_io_done;
  
                          pinstance->num_hrrq;
        cmd->cmd_done = pmcraid_io_done;
  
-@@ -3860,7 +3860,7 @@ static long pmcraid_ioctl_passthrough(
+@@ -3859,7 +3859,7 @@ static long pmcraid_ioctl_passthrough(
         * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses
         * hrrq_id assigned here in queuecommand
         */
         * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses
         * hrrq_id assigned here in queuecommand
         */
@@ -36342,7 +37069,7 @@ index d079f9a..d26072c 100644
                          pinstance->num_hrrq;
  
        if (request_size) {
                          pinstance->num_hrrq;
  
        if (request_size) {
-@@ -4498,7 +4498,7 @@ static void pmcraid_worker_function(struct work_struct *workp)
+@@ -4497,7 +4497,7 @@ static void pmcraid_worker_function(struct work_struct *workp)
  
        pinstance = container_of(workp, struct pmcraid_instance, worker_q);
        /* add resources only after host is added into system */
  
        pinstance = container_of(workp, struct pmcraid_instance, worker_q);
        /* add resources only after host is added into system */
@@ -36351,7 +37078,7 @@ index d079f9a..d26072c 100644
                return;
  
        fw_version = be16_to_cpu(pinstance->inq_data->fw_version);
                return;
  
        fw_version = be16_to_cpu(pinstance->inq_data->fw_version);
-@@ -5332,8 +5332,8 @@ static int __devinit pmcraid_init_instance(
+@@ -5331,8 +5331,8 @@ static int __devinit pmcraid_init_instance(
        init_waitqueue_head(&pinstance->reset_wait_q);
  
        atomic_set(&pinstance->outstanding_cmds, 0);
        init_waitqueue_head(&pinstance->reset_wait_q);
  
        atomic_set(&pinstance->outstanding_cmds, 0);
@@ -36362,7 +37089,7 @@ index d079f9a..d26072c 100644
  
        INIT_LIST_HEAD(&pinstance->free_res_q);
        INIT_LIST_HEAD(&pinstance->used_res_q);
  
        INIT_LIST_HEAD(&pinstance->free_res_q);
        INIT_LIST_HEAD(&pinstance->used_res_q);
-@@ -6048,7 +6048,7 @@ static int __devinit pmcraid_probe(
+@@ -6047,7 +6047,7 @@ static int __devinit pmcraid_probe(
        /* Schedule worker thread to handle CCN and take care of adding and
         * removing devices to OS
         */
        /* Schedule worker thread to handle CCN and take care of adding and
         * removing devices to OS
         */
@@ -36372,10 +37099,10 @@ index d079f9a..d26072c 100644
        return rc;
  
 diff --git a/drivers/scsi/pmcraid.h b/drivers/scsi/pmcraid.h
        return rc;
  
 diff --git a/drivers/scsi/pmcraid.h b/drivers/scsi/pmcraid.h
-index f920baf..4417389 100644
+index ca496c7..9c791d5 100644
 --- a/drivers/scsi/pmcraid.h
 +++ b/drivers/scsi/pmcraid.h
 --- a/drivers/scsi/pmcraid.h
 +++ b/drivers/scsi/pmcraid.h
-@@ -749,7 +749,7 @@ struct pmcraid_instance {
+@@ -748,7 +748,7 @@ struct pmcraid_instance {
        struct pmcraid_isr_param hrrq_vector[PMCRAID_NUM_MSIX_VECTORS];
  
        /* Message id as filled in last fired IOARCB, used to identify HRRQ */
        struct pmcraid_isr_param hrrq_vector[PMCRAID_NUM_MSIX_VECTORS];
  
        /* Message id as filled in last fired IOARCB, used to identify HRRQ */
@@ -36384,7 +37111,7 @@ index f920baf..4417389 100644
  
        /* configuration table */
        struct pmcraid_config_table *cfg_table;
  
        /* configuration table */
        struct pmcraid_config_table *cfg_table;
-@@ -778,7 +778,7 @@ struct pmcraid_instance {
+@@ -777,7 +777,7 @@ struct pmcraid_instance {
        atomic_t outstanding_cmds;
  
        /* should add/delete resources to mid-layer now ?*/
        atomic_t outstanding_cmds;
  
        /* should add/delete resources to mid-layer now ?*/
@@ -36393,7 +37120,7 @@ index f920baf..4417389 100644
  
  
  
  
  
  
-@@ -814,8 +814,8 @@ struct pmcraid_resource_entry {
+@@ -813,8 +813,8 @@ struct pmcraid_resource_entry {
                struct pmcraid_config_table_entry_ext cfg_entry_ext;
        };
        struct scsi_device *scsi_dev;   /* Link scsi_device structure */
                struct pmcraid_config_table_entry_ext cfg_entry_ext;
        };
        struct scsi_device *scsi_dev;   /* Link scsi_device structure */
@@ -36405,7 +37132,7 @@ index f920baf..4417389 100644
        /* To indicate add/delete/modify during CCN */
        u8 change_detected;
 diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
        /* To indicate add/delete/modify during CCN */
        u8 change_detected;
 diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
-index a03eaf4..a6b3fd9 100644
+index fcf052c..a8025a4 100644
 --- a/drivers/scsi/qla2xxx/qla_def.h
 +++ b/drivers/scsi/qla2xxx/qla_def.h
 @@ -2244,7 +2244,7 @@ struct isp_operations {
 --- a/drivers/scsi/qla2xxx/qla_def.h
 +++ b/drivers/scsi/qla2xxx/qla_def.h
 @@ -2244,7 +2244,7 @@ struct isp_operations {
@@ -36418,60 +37145,46 @@ index a03eaf4..a6b3fd9 100644
  /* MSI-X Support *************************************************************/
  
 diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h
  /* MSI-X Support *************************************************************/
  
 diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h
-index 473c5c8..4e2f24a 100644
+index fd5edc6..4906148 100644
 --- a/drivers/scsi/qla4xxx/ql4_def.h
 +++ b/drivers/scsi/qla4xxx/ql4_def.h
 --- a/drivers/scsi/qla4xxx/ql4_def.h
 +++ b/drivers/scsi/qla4xxx/ql4_def.h
-@@ -256,7 +256,7 @@ struct ddb_entry {
-       atomic_t retry_relogin_timer; /* Min Time between relogins
-                                      * (4000 only) */
-       atomic_t relogin_timer; /* Max Time to wait for relogin to complete */
--      atomic_t relogin_retry_count; /* Num of times relogin has been
-+      atomic_unchecked_t relogin_retry_count; /* Num of times relogin has been
-                                      * retried */
-       uint16_t port;
-diff --git a/drivers/scsi/qla4xxx/ql4_init.c b/drivers/scsi/qla4xxx/ql4_init.c
-index 42ed5db..0262f9e 100644
---- a/drivers/scsi/qla4xxx/ql4_init.c
-+++ b/drivers/scsi/qla4xxx/ql4_init.c
-@@ -680,7 +680,7 @@ static struct ddb_entry * qla4xxx_alloc_ddb(struct scsi_qla_host *ha,
-       ddb_entry->fw_ddb_index = fw_ddb_index;
+@@ -258,7 +258,7 @@ struct ddb_entry {
+                                          * (4000 only) */
+       atomic_t relogin_timer;           /* Max Time to wait for
+                                          * relogin to complete */
+-      atomic_t relogin_retry_count;     /* Num of times relogin has been
++      atomic_unchecked_t relogin_retry_count;   /* Num of times relogin has been
+                                          * retried */
+       uint32_t default_time2wait;       /* Default Min time between
+                                          * relogins (+aens) */
+diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
+index 4169c8b..a8b896b 100644
+--- a/drivers/scsi/qla4xxx/ql4_os.c
++++ b/drivers/scsi/qla4xxx/ql4_os.c
+@@ -2104,12 +2104,12 @@ void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess)
+                */
+               if (!iscsi_is_session_online(cls_sess)) {
+                       /* Reset retry relogin timer */
+-                      atomic_inc(&ddb_entry->relogin_retry_count);
++                      atomic_inc_unchecked(&ddb_entry->relogin_retry_count);
+                       DEBUG2(ql4_printk(KERN_INFO, ha,
+                               "%s: index[%d] relogin timed out-retrying"
+                               " relogin (%d), retry (%d)\n", __func__,
+                               ddb_entry->fw_ddb_index,
+-                              atomic_read(&ddb_entry->relogin_retry_count),
++                              atomic_read_unchecked(&ddb_entry->relogin_retry_count),
+                               ddb_entry->default_time2wait + 4));
+                       set_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags);
+                       atomic_set(&ddb_entry->retry_relogin_timer,
+@@ -3835,7 +3835,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha,
        atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
        atomic_set(&ddb_entry->relogin_timer, 0);
 -      atomic_set(&ddb_entry->relogin_retry_count, 0);
 +      atomic_set_unchecked(&ddb_entry->relogin_retry_count, 0);
        atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
        atomic_set(&ddb_entry->relogin_timer, 0);
 -      atomic_set(&ddb_entry->relogin_retry_count, 0);
 +      atomic_set_unchecked(&ddb_entry->relogin_retry_count, 0);
-       atomic_set(&ddb_entry->state, DDB_STATE_ONLINE);
-       list_add_tail(&ddb_entry->list, &ha->ddb_list);
-       ha->fw_ddb_index_map[fw_ddb_index] = ddb_entry;
-@@ -1433,7 +1433,7 @@ int qla4xxx_process_ddb_changed(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
-       if ((ddb_entry->fw_ddb_device_state == DDB_DS_SESSION_ACTIVE) &&
-          (atomic_read(&ddb_entry->state) != DDB_STATE_ONLINE)) {
-               atomic_set(&ddb_entry->state, DDB_STATE_ONLINE);
--              atomic_set(&ddb_entry->relogin_retry_count, 0);
-+              atomic_set_unchecked(&ddb_entry->relogin_retry_count, 0);
-               atomic_set(&ddb_entry->relogin_timer, 0);
-               clear_bit(DF_RELOGIN, &ddb_entry->flags);
-               iscsi_unblock_session(ddb_entry->sess);
-diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
-index f2364ec..44c42b1 100644
---- a/drivers/scsi/qla4xxx/ql4_os.c
-+++ b/drivers/scsi/qla4xxx/ql4_os.c
-@@ -811,13 +811,13 @@ static void qla4xxx_timer(struct scsi_qla_host *ha)
-                           ddb_entry->fw_ddb_device_state ==
-                           DDB_DS_SESSION_FAILED) {
-                               /* Reset retry relogin timer */
--                              atomic_inc(&ddb_entry->relogin_retry_count);
-+                              atomic_inc_unchecked(&ddb_entry->relogin_retry_count);
-                               DEBUG2(printk("scsi%ld: ddb [%d] relogin"
-                                             " timed out-retrying"
-                                             " relogin (%d)\n",
-                                             ha->host_no,
-                                             ddb_entry->fw_ddb_index,
--                                            atomic_read(&ddb_entry->
-+                                            atomic_read_unchecked(&ddb_entry->
-                                                         relogin_retry_count))
-                                       );
-                               start_dpc++;
+       ddb_entry->default_relogin_timeout =
+               le16_to_cpu(ddb_entry->fw_ddb_entry.def_timeout);
 diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
 index 2aeb2e9..46e3925 100644
 --- a/drivers/scsi/scsi.c
 diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
 index 2aeb2e9..46e3925 100644
 --- a/drivers/scsi/scsi.c
@@ -36485,33 +37198,11 @@ index 2aeb2e9..46e3925 100644
  
        /* check if the device is still usable */
        if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
  
        /* check if the device is still usable */
        if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
-diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
-index 6888b2c..45befa1 100644
---- a/drivers/scsi/scsi_debug.c
-+++ b/drivers/scsi/scsi_debug.c
-@@ -1493,6 +1493,8 @@ static int resp_mode_select(struct scsi_cmnd * scp, int mselect6,
-       unsigned char arr[SDEBUG_MAX_MSELECT_SZ];
-       unsigned char *cmd = (unsigned char *)scp->cmnd;
-+      pax_track_stack();
-+
-       if ((errsts = check_readiness(scp, 1, devip)))
-               return errsts;
-       memset(arr, 0, sizeof(arr));
-@@ -1590,6 +1592,8 @@ static int resp_log_sense(struct scsi_cmnd * scp,
-       unsigned char arr[SDEBUG_MAX_LSENSE_SZ];
-       unsigned char *cmd = (unsigned char *)scp->cmnd;
-+      pax_track_stack();
-+
-       if ((errsts = check_readiness(scp, 1, devip)))
-               return errsts;
-       memset(arr, 0, sizeof(arr));
 diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
 diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
-index 6d219e4..eb3ded3 100644
+index f85cfa6..a57c9e8 100644
 --- a/drivers/scsi/scsi_lib.c
 +++ b/drivers/scsi/scsi_lib.c
 --- a/drivers/scsi/scsi_lib.c
 +++ b/drivers/scsi/scsi_lib.c
-@@ -1415,7 +1415,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
+@@ -1416,7 +1416,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
        shost = sdev->host;
        scsi_init_cmd_errh(cmd);
        cmd->result = DID_NO_CONNECT << 16;
        shost = sdev->host;
        scsi_init_cmd_errh(cmd);
        cmd->result = DID_NO_CONNECT << 16;
@@ -36520,7 +37211,7 @@ index 6d219e4..eb3ded3 100644
  
        /*
         * SCSI request completion path will do scsi_device_unbusy(),
  
        /*
         * SCSI request completion path will do scsi_device_unbusy(),
-@@ -1441,9 +1441,9 @@ static void scsi_softirq_done(struct request *rq)
+@@ -1442,9 +1442,9 @@ static void scsi_softirq_done(struct request *rq)
  
        INIT_LIST_HEAD(&cmd->eh_entry);
  
  
        INIT_LIST_HEAD(&cmd->eh_entry);
  
@@ -36533,10 +37224,10 @@ index 6d219e4..eb3ded3 100644
        disposition = scsi_decide_disposition(cmd);
        if (disposition != SUCCESS &&
 diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
        disposition = scsi_decide_disposition(cmd);
        if (disposition != SUCCESS &&
 diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
-index e0bd3f7..816b8a6 100644
+index 04c2a27..9d8bd66 100644
 --- a/drivers/scsi/scsi_sysfs.c
 +++ b/drivers/scsi/scsi_sysfs.c
 --- a/drivers/scsi/scsi_sysfs.c
 +++ b/drivers/scsi/scsi_sysfs.c
-@@ -622,7 +622,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr,     \
+@@ -660,7 +660,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr,     \
                    char *buf)                                          \
  {                                                                     \
        struct scsi_device *sdev = to_scsi_device(dev);                 \
                    char *buf)                                          \
  {                                                                     \
        struct scsi_device *sdev = to_scsi_device(dev);                 \
@@ -36599,28 +37290,28 @@ index 1b21491..1b7f60e 100644
        /*
         * Check for overflow; dev_loss_tmo is u32
 diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
        /*
         * Check for overflow; dev_loss_tmo is u32
 diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
-index 3fd16d7..ba0871f 100644
+index 96029e6..4d77fa0 100644
 --- a/drivers/scsi/scsi_transport_iscsi.c
 +++ b/drivers/scsi/scsi_transport_iscsi.c
 --- a/drivers/scsi/scsi_transport_iscsi.c
 +++ b/drivers/scsi/scsi_transport_iscsi.c
-@@ -83,7 +83,7 @@ struct iscsi_internal {
-       struct device_attribute *session_attrs[ISCSI_SESSION_ATTRS + 1];
+@@ -79,7 +79,7 @@ struct iscsi_internal {
+       struct transport_container session_cont;
  };
  
 -static atomic_t iscsi_session_nr; /* sysfs session id for next new session */
 +static atomic_unchecked_t iscsi_session_nr; /* sysfs session id for next new session */
  static struct workqueue_struct *iscsi_eh_timer_workq;
  
  };
  
 -static atomic_t iscsi_session_nr; /* sysfs session id for next new session */
 +static atomic_unchecked_t iscsi_session_nr; /* sysfs session id for next new session */
  static struct workqueue_struct *iscsi_eh_timer_workq;
  
- /*
-@@ -761,7 +761,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
+ static DEFINE_IDA(iscsi_sess_ida);
+@@ -1062,7 +1062,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
        int err;
  
        ihost = shost->shost_data;
 -      session->sid = atomic_add_return(1, &iscsi_session_nr);
 +      session->sid = atomic_add_return_unchecked(1, &iscsi_session_nr);
  
        int err;
  
        ihost = shost->shost_data;
 -      session->sid = atomic_add_return(1, &iscsi_session_nr);
 +      session->sid = atomic_add_return_unchecked(1, &iscsi_session_nr);
  
-       if (id == ISCSI_MAX_TARGET) {
-               for (id = 0; id < ISCSI_MAX_TARGET; id++) {
-@@ -2200,7 +2200,7 @@ static __init int iscsi_transport_init(void)
+       if (target_id == ISCSI_MAX_TARGET) {
+               id = ida_simple_get(&iscsi_sess_ida, 0, 0, GFP_KERNEL);
+@@ -2663,7 +2663,7 @@ static __init int iscsi_transport_init(void)
        printk(KERN_INFO "Loading iSCSI transport class v%s.\n",
                ISCSI_TRANSPORT_VERSION);
  
        printk(KERN_INFO "Loading iSCSI transport class v%s.\n",
                ISCSI_TRANSPORT_VERSION);
  
@@ -36661,10 +37352,10 @@ index 21a045e..ec89e03 100644
  
        transport_setup_device(&rport->dev);
 diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
  
        transport_setup_device(&rport->dev);
 diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
-index 909ed9e..1ae290a 100644
+index 441a1c5..07cece7 100644
 --- a/drivers/scsi/sg.c
 +++ b/drivers/scsi/sg.c
 --- a/drivers/scsi/sg.c
 +++ b/drivers/scsi/sg.c
-@@ -1075,7 +1075,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
+@@ -1077,7 +1077,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
                                       sdp->disk->disk_name,
                                       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
                                       NULL,
                                       sdp->disk->disk_name,
                                       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
                                       NULL,
@@ -36673,7 +37364,7 @@ index 909ed9e..1ae290a 100644
        case BLKTRACESTART:
                return blk_trace_startstop(sdp->device->request_queue, 1);
        case BLKTRACESTOP:
        case BLKTRACESTART:
                return blk_trace_startstop(sdp->device->request_queue, 1);
        case BLKTRACESTOP:
-@@ -2310,7 +2310,7 @@ struct sg_proc_leaf {
+@@ -2312,7 +2312,7 @@ struct sg_proc_leaf {
        const struct file_operations * fops;
  };
  
        const struct file_operations * fops;
  };
  
@@ -36682,7 +37373,7 @@ index 909ed9e..1ae290a 100644
        {"allow_dio", &adio_fops},
        {"debug", &debug_fops},
        {"def_reserved_size", &dressz_fops},
        {"allow_dio", &adio_fops},
        {"debug", &debug_fops},
        {"def_reserved_size", &dressz_fops},
-@@ -2325,7 +2325,7 @@ sg_proc_init(void)
+@@ -2327,7 +2327,7 @@ sg_proc_init(void)
  {
        int k, mask;
        int num_leaves = ARRAY_SIZE(sg_proc_leaf_arr);
  {
        int k, mask;
        int num_leaves = ARRAY_SIZE(sg_proc_leaf_arr);
@@ -36691,37 +37382,11 @@ index 909ed9e..1ae290a 100644
  
        sg_proc_sgp = proc_mkdir(sg_proc_sg_dirname, NULL);
        if (!sg_proc_sgp)
  
        sg_proc_sgp = proc_mkdir(sg_proc_sg_dirname, NULL);
        if (!sg_proc_sgp)
-diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c
-index b4543f5..e1b34b8 100644
---- a/drivers/scsi/sym53c8xx_2/sym_glue.c
-+++ b/drivers/scsi/sym53c8xx_2/sym_glue.c
-@@ -1756,6 +1756,8 @@ static int __devinit sym2_probe(struct pci_dev *pdev,
-       int do_iounmap = 0;
-       int do_disable_device = 1;
-+      pax_track_stack();
-+
-       memset(&sym_dev, 0, sizeof(sym_dev));
-       memset(&nvram, 0, sizeof(nvram));
-       sym_dev.pdev = pdev;
-diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c
-index a18996d..fe993cb 100644
---- a/drivers/scsi/vmw_pvscsi.c
-+++ b/drivers/scsi/vmw_pvscsi.c
-@@ -447,6 +447,8 @@ static void pvscsi_setup_all_rings(const struct pvscsi_adapter *adapter)
-       dma_addr_t base;
-       unsigned i;
-+      pax_track_stack();
-+
-       cmd.ringsStatePPN   = adapter->ringStatePA >> PAGE_SHIFT;
-       cmd.reqRingNumPages = adapter->req_pages;
-       cmd.cmpRingNumPages = adapter->cmp_pages;
 diff --git a/drivers/spi/spi-dw-pci.c b/drivers/spi/spi-dw-pci.c
 diff --git a/drivers/spi/spi-dw-pci.c b/drivers/spi/spi-dw-pci.c
-index c5f37f0..898d202 100644
+index f64250e..1ee3049 100644
 --- a/drivers/spi/spi-dw-pci.c
 +++ b/drivers/spi/spi-dw-pci.c
 --- a/drivers/spi/spi-dw-pci.c
 +++ b/drivers/spi/spi-dw-pci.c
-@@ -148,7 +148,7 @@ static int spi_resume(struct pci_dev *pdev)
+@@ -149,7 +149,7 @@ static int spi_resume(struct pci_dev *pdev)
  #define spi_resume    NULL
  #endif
  
  #define spi_resume    NULL
  #endif
  
@@ -36731,10 +37396,10 @@ index c5f37f0..898d202 100644
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0800) },
        {},
 diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0800) },
        {},
 diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
-index 4d1b9f5..8408fe3 100644
+index 77eae99..b7cdcc9 100644
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -1023,7 +1023,7 @@ int spi_bus_unlock(struct spi_master *master)
+@@ -1024,7 +1024,7 @@ int spi_bus_unlock(struct spi_master *master)
  EXPORT_SYMBOL_GPL(spi_bus_unlock);
  
  /* portable code must never pass more than 32 bytes */
  EXPORT_SYMBOL_GPL(spi_bus_unlock);
  
  /* portable code must never pass more than 32 bytes */
@@ -36743,216 +37408,33 @@ index 4d1b9f5..8408fe3 100644
  
  static u8     *buf;
  
  
  static u8     *buf;
  
-diff --git a/drivers/staging/ath6kl/os/linux/ar6000_drv.c b/drivers/staging/ath6kl/os/linux/ar6000_drv.c
-index 32ee39a..3004c3d 100644
---- a/drivers/staging/ath6kl/os/linux/ar6000_drv.c
-+++ b/drivers/staging/ath6kl/os/linux/ar6000_drv.c
-@@ -362,7 +362,7 @@ static struct ar_cookie s_ar_cookie_mem[MAX_COOKIE_NUM];
-         (((ar)->arTargetType == TARGET_TYPE_AR6003) ? AR6003_HOST_INTEREST_ITEM_ADDRESS(item) : 0))
--static struct net_device_ops ar6000_netdev_ops = {
-+static net_device_ops_no_const ar6000_netdev_ops = {
-     .ndo_init               = NULL,
-     .ndo_open               = ar6000_open,
-     .ndo_stop               = ar6000_close,
-diff --git a/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h b/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h
-index 39e0873..0925710 100644
---- a/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h
-+++ b/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h
-@@ -30,7 +30,7 @@ typedef bool (*ar6k_pal_recv_pkt_t)(void *pHciPalInfo, void *skb);
- typedef struct ar6k_pal_config_s
- {
-       ar6k_pal_recv_pkt_t fpar6k_pal_recv_pkt;
--}ar6k_pal_config_t;
-+} __no_const ar6k_pal_config_t;
- void register_pal_cb(ar6k_pal_config_t *palConfig_p);
- #endif /* _AR6K_PAL_H_ */
-diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_linux.c b/drivers/staging/brcm80211/brcmfmac/dhd_linux.c
-index 05dada9..96171c6 100644
---- a/drivers/staging/brcm80211/brcmfmac/dhd_linux.c
-+++ b/drivers/staging/brcm80211/brcmfmac/dhd_linux.c
-@@ -451,14 +451,14 @@ static void brcmf_op_if(struct brcmf_if *ifp)
-                       free_netdev(ifp->net);
-               }
-               /* Allocate etherdev, including space for private structure */
--              ifp->net = alloc_etherdev(sizeof(drvr_priv));
-+              ifp->net = alloc_etherdev(sizeof(*drvr_priv));
-               if (!ifp->net) {
-                       BRCMF_ERROR(("%s: OOM - alloc_etherdev\n", __func__));
-                       ret = -ENOMEM;
-               }
-               if (ret == 0) {
-                       strcpy(ifp->net->name, ifp->name);
--                      memcpy(netdev_priv(ifp->net), &drvr_priv, sizeof(drvr_priv));
-+                      memcpy(netdev_priv(ifp->net), &drvr_priv, sizeof(*drvr_priv));
-                       err = brcmf_net_attach(&drvr_priv->pub, ifp->idx);
-                       if (err != 0) {
-                               BRCMF_ERROR(("%s: brcmf_net_attach failed, "
-@@ -1279,7 +1279,7 @@ struct brcmf_pub *brcmf_attach(struct brcmf_bus *bus, uint bus_hdrlen)
-       BRCMF_TRACE(("%s: Enter\n", __func__));
-       /* Allocate etherdev, including space for private structure */
--      net = alloc_etherdev(sizeof(drvr_priv));
-+      net = alloc_etherdev(sizeof(*drvr_priv));
-       if (!net) {
-               BRCMF_ERROR(("%s: OOM - alloc_etherdev\n", __func__));
-               goto fail;
-@@ -1295,7 +1295,7 @@ struct brcmf_pub *brcmf_attach(struct brcmf_bus *bus, uint bus_hdrlen)
-       /*
-        * Save the brcmf_info into the priv
-        */
--      memcpy(netdev_priv(net), &drvr_priv, sizeof(drvr_priv));
-+      memcpy(netdev_priv(net), &drvr_priv, sizeof(*drvr_priv));
-       /* Set network interface name if it was provided as module parameter */
-       if (iface_name[0]) {
-@@ -1352,7 +1352,7 @@ struct brcmf_pub *brcmf_attach(struct brcmf_bus *bus, uint bus_hdrlen)
-       /*
-        * Save the brcmf_info into the priv
-        */
--      memcpy(netdev_priv(net), &drvr_priv, sizeof(drvr_priv));
-+      memcpy(netdev_priv(net), &drvr_priv, sizeof(*drvr_priv));
- #if defined(CONFIG_PM_SLEEP)
-       atomic_set(&brcmf_mmc_suspend, false);
-diff --git a/drivers/staging/brcm80211/brcmfmac/sdio_host.h b/drivers/staging/brcm80211/brcmfmac/sdio_host.h
-index d345472..cedb19e 100644
---- a/drivers/staging/brcm80211/brcmfmac/sdio_host.h
-+++ b/drivers/staging/brcm80211/brcmfmac/sdio_host.h
-@@ -263,7 +263,7 @@ struct brcmf_sdioh_driver {
-                        u16 func, uint bustype, u32 regsva, void *param);
-       /* detach from device */
-       void (*detach) (void *ch);
--};
-+} __no_const;
- struct sdioh_info;
-diff --git a/drivers/staging/brcm80211/brcmsmac/phy/phy_int.h b/drivers/staging/brcm80211/brcmsmac/phy/phy_int.h
-index a01b01c..b3f721c 100644
---- a/drivers/staging/brcm80211/brcmsmac/phy/phy_int.h
-+++ b/drivers/staging/brcm80211/brcmsmac/phy/phy_int.h
-@@ -591,7 +591,7 @@ struct phy_func_ptr {
-       initfn_t carrsuppr;
-       rxsigpwrfn_t rxsigpwr;
-       detachfn_t detach;
--};
-+} __no_const;
- struct brcms_phy {
-       struct brcms_phy_pub pubpi_ro;
-diff --git a/drivers/staging/et131x/et1310_tx.c b/drivers/staging/et131x/et1310_tx.c
-index 8fb3051..a8b6c67 100644
---- a/drivers/staging/et131x/et1310_tx.c
-+++ b/drivers/staging/et131x/et1310_tx.c
-@@ -635,11 +635,11 @@ inline void et131x_free_send_packet(struct et131x_adapter *etdev,
-       struct net_device_stats *stats = &etdev->net_stats;
-       if (tcb->flags & fMP_DEST_BROAD)
--              atomic_inc(&etdev->stats.brdcstxmt);
-+              atomic_inc_unchecked(&etdev->stats.brdcstxmt);
-       else if (tcb->flags & fMP_DEST_MULTI)
--              atomic_inc(&etdev->stats.multixmt);
-+              atomic_inc_unchecked(&etdev->stats.multixmt);
-       else
--              atomic_inc(&etdev->stats.unixmt);
-+              atomic_inc_unchecked(&etdev->stats.unixmt);
-       if (tcb->skb) {
-               stats->tx_bytes += tcb->skb->len;
-diff --git a/drivers/staging/et131x/et131x_adapter.h b/drivers/staging/et131x/et131x_adapter.h
-index 408c50b..fd65e9f 100644
---- a/drivers/staging/et131x/et131x_adapter.h
-+++ b/drivers/staging/et131x/et131x_adapter.h
-@@ -106,11 +106,11 @@ struct ce_stats {
-        * operations
-        */
-       u32 unircv;     /* # multicast packets received */
--      atomic_t unixmt;        /* # multicast packets for Tx */
-+      atomic_unchecked_t unixmt;      /* # multicast packets for Tx */
-       u32 multircv;   /* # multicast packets received */
--      atomic_t multixmt;      /* # multicast packets for Tx */
-+      atomic_unchecked_t multixmt;    /* # multicast packets for Tx */
-       u32 brdcstrcv;  /* # broadcast packets received */
--      atomic_t brdcstxmt;     /* # broadcast packets for Tx */
-+      atomic_unchecked_t brdcstxmt;   /* # broadcast packets for Tx */
-       u32 norcvbuf;   /* # Rx packets discarded */
-       u32 noxmtbuf;   /* # Tx packets discarded */
-diff --git a/drivers/staging/hv/channel.c b/drivers/staging/hv/channel.c
-index 455f47a..86205ff 100644
---- a/drivers/staging/hv/channel.c
-+++ b/drivers/staging/hv/channel.c
-@@ -447,8 +447,8 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
-       int ret = 0;
-       int t;
--      next_gpadl_handle = atomic_read(&vmbus_connection.next_gpadl_handle);
--      atomic_inc(&vmbus_connection.next_gpadl_handle);
-+      next_gpadl_handle = atomic_read_unchecked(&vmbus_connection.next_gpadl_handle);
-+      atomic_inc_unchecked(&vmbus_connection.next_gpadl_handle);
-       ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount);
-       if (ret)
-diff --git a/drivers/staging/hv/hv.c b/drivers/staging/hv/hv.c
-index 824f816..a800af7 100644
---- a/drivers/staging/hv/hv.c
-+++ b/drivers/staging/hv/hv.c
-@@ -132,7 +132,7 @@ static u64 do_hypercall(u64 control, void *input, void *output)
-       u64 output_address = (output) ? virt_to_phys(output) : 0;
-       u32 output_address_hi = output_address >> 32;
-       u32 output_address_lo = output_address & 0xFFFFFFFF;
--      volatile void *hypercall_page = hv_context.hypercall_page;
-+      volatile void *hypercall_page = ktva_ktla(hv_context.hypercall_page);
-       __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi),
-                             "=a"(hv_status_lo) : "d" (control_hi),
-diff --git a/drivers/staging/hv/hv_mouse.c b/drivers/staging/hv/hv_mouse.c
-index d957fc2..43cedd9 100644
---- a/drivers/staging/hv/hv_mouse.c
-+++ b/drivers/staging/hv/hv_mouse.c
-@@ -878,8 +878,10 @@ static void reportdesc_callback(struct hv_device *dev, void *packet, u32 len)
-       if (hid_dev) {
-               DPRINT_INFO(INPUTVSC_DRV, "hid_device created");
--              hid_dev->ll_driver->open  = mousevsc_hid_open;
--              hid_dev->ll_driver->close = mousevsc_hid_close;
-+              pax_open_kernel();
-+              *(void **)&hid_dev->ll_driver->open  = mousevsc_hid_open;
-+              *(void **)&hid_dev->ll_driver->close = mousevsc_hid_close;
-+              pax_close_kernel();
-               hid_dev->bus = BUS_VIRTUAL;
-               hid_dev->vendor = input_device_ctx->device_info.vendor;
-diff --git a/drivers/staging/hv/hyperv_vmbus.h b/drivers/staging/hv/hyperv_vmbus.h
-index 349ad80..3f75719 100644
---- a/drivers/staging/hv/hyperv_vmbus.h
-+++ b/drivers/staging/hv/hyperv_vmbus.h
-@@ -559,7 +559,7 @@ enum vmbus_connect_state {
- struct vmbus_connection {
-       enum vmbus_connect_state conn_state;
--      atomic_t next_gpadl_handle;
-+      atomic_unchecked_t next_gpadl_handle;
-       /*
-        * Represents channel interrupts. Each bit position represents a
+diff --git a/drivers/staging/gma500/power.c b/drivers/staging/gma500/power.c
+index 436fe97..4082570 100644
+--- a/drivers/staging/gma500/power.c
++++ b/drivers/staging/gma500/power.c
+@@ -266,7 +266,7 @@ bool gma_power_begin(struct drm_device *dev, bool force_on)
+       ret = gma_resume_pci(dev->pdev);
+       if (ret == 0) {
+               /* FIXME: we want to defer this for Medfield/Oaktrail */
+-              gma_resume_display(dev);
++              gma_resume_display(dev->pdev);
+               psb_irq_preinstall(dev);
+               psb_irq_postinstall(dev);
+               pm_runtime_get(&dev->pdev->dev);
 diff --git a/drivers/staging/hv/rndis_filter.c b/drivers/staging/hv/rndis_filter.c
 diff --git a/drivers/staging/hv/rndis_filter.c b/drivers/staging/hv/rndis_filter.c
-index dbb5201..d6047c6 100644
+index bafccb3..e3ac78d 100644
 --- a/drivers/staging/hv/rndis_filter.c
 +++ b/drivers/staging/hv/rndis_filter.c
 --- a/drivers/staging/hv/rndis_filter.c
 +++ b/drivers/staging/hv/rndis_filter.c
-@@ -43,7 +43,7 @@ struct rndis_device {
+@@ -42,7 +42,7 @@ struct rndis_device {
  
        enum rndis_device_state state;
  
        enum rndis_device_state state;
-       u32 link_stat;
+       bool link_state;
 -      atomic_t new_req_id;
 +      atomic_unchecked_t new_req_id;
  
        spinlock_t request_lock;
        struct list_head req_list;
 -      atomic_t new_req_id;
 +      atomic_unchecked_t new_req_id;
  
        spinlock_t request_lock;
        struct list_head req_list;
-@@ -117,7 +117,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
+@@ -116,7 +116,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
         * template
         */
        set = &rndis_msg->msg.set_req;
         * template
         */
        set = &rndis_msg->msg.set_req;
@@ -36961,7 +37443,7 @@ index dbb5201..d6047c6 100644
  
        /* Add to the request list */
        spin_lock_irqsave(&dev->request_lock, flags);
  
        /* Add to the request list */
        spin_lock_irqsave(&dev->request_lock, flags);
-@@ -622,7 +622,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev)
+@@ -646,7 +646,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev)
  
        /* Setup the rndis set */
        halt = &request->request_msg.msg.halt_req;
  
        /* Setup the rndis set */
        halt = &request->request_msg.msg.halt_req;
@@ -36970,59 +37452,19 @@ index dbb5201..d6047c6 100644
  
        /* Ignore return since this msg is optional. */
        rndis_filter_send_request(dev, request);
  
        /* Ignore return since this msg is optional. */
        rndis_filter_send_request(dev, request);
-diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c
-index 1c949f5..7a8b104 100644
---- a/drivers/staging/hv/vmbus_drv.c
-+++ b/drivers/staging/hv/vmbus_drv.c
-@@ -660,11 +660,11 @@ int vmbus_child_device_register(struct hv_device *child_device_obj)
- {
-       int ret = 0;
--      static atomic_t device_num = ATOMIC_INIT(0);
-+      static atomic_unchecked_t device_num = ATOMIC_INIT(0);
-       /* Set the device name. Otherwise, device_register() will fail. */
-       dev_set_name(&child_device_obj->device, "vmbus_0_%d",
--                   atomic_inc_return(&device_num));
-+                   atomic_inc_return_unchecked(&device_num));
-       /* The new device belongs to this bus */
-       child_device_obj->device.bus = &hv_bus; /* device->dev.bus; */
-diff --git a/drivers/staging/iio/ring_generic.h b/drivers/staging/iio/ring_generic.h
-index 3f26f71..fb5c787 100644
---- a/drivers/staging/iio/ring_generic.h
-+++ b/drivers/staging/iio/ring_generic.h
-@@ -62,7 +62,7 @@ struct iio_ring_access_funcs {
-       int (*is_enabled)(struct iio_ring_buffer *ring);
-       int (*enable)(struct iio_ring_buffer *ring);
+diff --git a/drivers/staging/iio/buffer_generic.h b/drivers/staging/iio/buffer_generic.h
+index 9e8f010..af9efb56 100644
+--- a/drivers/staging/iio/buffer_generic.h
++++ b/drivers/staging/iio/buffer_generic.h
+@@ -64,7 +64,7 @@ struct iio_buffer_access_funcs {
+       int (*is_enabled)(struct iio_buffer *buffer);
+       int (*enable)(struct iio_buffer *buffer);
 -};
 +} __no_const;
  
 -};
 +} __no_const;
  
- struct iio_ring_setup_ops {
-       int                             (*preenable)(struct iio_dev *);
-diff --git a/drivers/staging/mei/interface.c b/drivers/staging/mei/interface.c
-index cfec92d..a65dacf 100644
---- a/drivers/staging/mei/interface.c
-+++ b/drivers/staging/mei/interface.c
-@@ -332,7 +332,7 @@ int mei_send_flow_control(struct mei_device *dev, struct mei_cl *cl)
-       mei_hdr->reserved = 0;
-       mei_flow_control = (struct hbm_flow_control *) &dev->wr_msg_buf[1];
--      memset(mei_flow_control, 0, sizeof(mei_flow_control));
-+      memset(mei_flow_control, 0, sizeof(*mei_flow_control));
-       mei_flow_control->host_addr = cl->host_client_id;
-       mei_flow_control->me_addr = cl->me_client_id;
-       mei_flow_control->cmd.cmd = MEI_FLOW_CONTROL_CMD;
-@@ -396,7 +396,7 @@ int mei_disconnect(struct mei_device *dev, struct mei_cl *cl)
-       mei_cli_disconnect =
-           (struct hbm_client_disconnect_request *) &dev->wr_msg_buf[1];
--      memset(mei_cli_disconnect, 0, sizeof(mei_cli_disconnect));
-+      memset(mei_cli_disconnect, 0, sizeof(*mei_cli_disconnect));
-       mei_cli_disconnect->host_addr = cl->host_client_id;
-       mei_cli_disconnect->me_addr = cl->me_client_id;
-       mei_cli_disconnect->cmd.cmd = CLIENT_DISCONNECT_REQ_CMD;
+ /**
+  * struct iio_buffer_setup_ops - buffer setup related callbacks
 diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
 index 8b307b4..a97ac91 100644
 --- a/drivers/staging/octeon/ethernet-rx.c
 diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
 index 8b307b4..a97ac91 100644
 --- a/drivers/staging/octeon/ethernet-rx.c
@@ -37056,7 +37498,7 @@ index 8b307b4..a97ac91 100644
                                dev_kfree_skb_irq(skb);
                        }
 diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
                                dev_kfree_skb_irq(skb);
                        }
 diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
-index a8f780e..aef1098 100644
+index 076f866..2308070 100644
 --- a/drivers/staging/octeon/ethernet.c
 +++ b/drivers/staging/octeon/ethernet.c
 @@ -258,11 +258,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev)
 --- a/drivers/staging/octeon/ethernet.c
 +++ b/drivers/staging/octeon/ethernet.c
 @@ -258,11 +258,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev)
@@ -37076,7 +37518,7 @@ index a8f780e..aef1098 100644
        }
  
 diff --git a/drivers/staging/pohmelfs/inode.c b/drivers/staging/pohmelfs/inode.c
        }
  
 diff --git a/drivers/staging/pohmelfs/inode.c b/drivers/staging/pohmelfs/inode.c
-index f3c6060..56bf826 100644
+index 7a19555..466456d 100644
 --- a/drivers/staging/pohmelfs/inode.c
 +++ b/drivers/staging/pohmelfs/inode.c
 @@ -1861,7 +1861,7 @@ static int pohmelfs_fill_super(struct super_block *sb, void *data, int silent)
 --- a/drivers/staging/pohmelfs/inode.c
 +++ b/drivers/staging/pohmelfs/inode.c
 @@ -1861,7 +1861,7 @@ static int pohmelfs_fill_super(struct super_block *sb, void *data, int silent)
@@ -37132,7 +37574,7 @@ index 985b6b7..7699e05 100644
        unsigned int            crypto_attached_size;
        unsigned int            crypto_align_size;
 diff --git a/drivers/staging/pohmelfs/trans.c b/drivers/staging/pohmelfs/trans.c
        unsigned int            crypto_attached_size;
        unsigned int            crypto_align_size;
 diff --git a/drivers/staging/pohmelfs/trans.c b/drivers/staging/pohmelfs/trans.c
-index 36a2535..0591bf4 100644
+index 06c1a74..866eebc 100644
 --- a/drivers/staging/pohmelfs/trans.c
 +++ b/drivers/staging/pohmelfs/trans.c
 @@ -492,7 +492,7 @@ int netfs_trans_finish(struct netfs_trans *t, struct pohmelfs_sb *psb)
 --- a/drivers/staging/pohmelfs/trans.c
 +++ b/drivers/staging/pohmelfs/trans.c
 @@ -492,7 +492,7 @@ int netfs_trans_finish(struct netfs_trans *t, struct pohmelfs_sb *psb)
@@ -37144,11 +37586,37 @@ index 36a2535..0591bf4 100644
  
        cmd->size = t->iovec.iov_len - sizeof(struct netfs_cmd) +
                t->attached_size + t->attached_pages * sizeof(struct netfs_cmd);
  
        cmd->size = t->iovec.iov_len - sizeof(struct netfs_cmd) +
                t->attached_size + t->attached_pages * sizeof(struct netfs_cmd);
+diff --git a/drivers/staging/rtl8192e/rtllib_module.c b/drivers/staging/rtl8192e/rtllib_module.c
+index c36a140..dd27fda 100644
+--- a/drivers/staging/rtl8192e/rtllib_module.c
++++ b/drivers/staging/rtl8192e/rtllib_module.c
+@@ -228,6 +228,8 @@ static int show_debug_level(char *page, char **start, off_t offset,
+ }
+ static int store_debug_level(struct file *file, const char __user *buffer,
++                           unsigned long count, void *data) __size_overflow(3);
++static int store_debug_level(struct file *file, const char __user *buffer,
+                            unsigned long count, void *data)
+ {
+       char buf[] = "0x00000000";
+diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_module.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_module.c
+index e3d47bc..85f4d0d 100644
+--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_module.c
++++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_module.c
+@@ -250,6 +250,8 @@ static int show_debug_level(char *page, char **start, off_t offset,
+ }
+ static int store_debug_level(struct file *file, const char *buffer,
++                           unsigned long count, void *data) __size_overflow(3);
++static int store_debug_level(struct file *file, const char *buffer,
+                            unsigned long count, void *data)
+ {
+       char buf[] = "0x00000000";
 diff --git a/drivers/staging/rtl8712/rtl871x_io.h b/drivers/staging/rtl8712/rtl871x_io.h
 diff --git a/drivers/staging/rtl8712/rtl871x_io.h b/drivers/staging/rtl8712/rtl871x_io.h
-index b70cb2b..4db41a7 100644
+index 86308a0..feaa925 100644
 --- a/drivers/staging/rtl8712/rtl871x_io.h
 +++ b/drivers/staging/rtl8712/rtl871x_io.h
 --- a/drivers/staging/rtl8712/rtl871x_io.h
 +++ b/drivers/staging/rtl8712/rtl871x_io.h
-@@ -83,7 +83,7 @@ struct       _io_ops {
+@@ -108,7 +108,7 @@ struct     _io_ops {
                          u8 *pmem);
        u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
                           u8 *pmem);
                          u8 *pmem);
        u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
                           u8 *pmem);
@@ -37184,10 +37652,10 @@ index be21617..0954e45 100644
  
  #if 0
 diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h
  
  #if 0
 diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h
-index 71a586e..4d8a91a 100644
+index 88b3298..3783eee 100644
 --- a/drivers/staging/usbip/vhci.h
 +++ b/drivers/staging/usbip/vhci.h
 --- a/drivers/staging/usbip/vhci.h
 +++ b/drivers/staging/usbip/vhci.h
-@@ -85,7 +85,7 @@ struct vhci_hcd {
+@@ -88,7 +88,7 @@ struct vhci_hcd {
        unsigned resuming:1;
        unsigned long re_timeout;
  
        unsigned resuming:1;
        unsigned long re_timeout;
  
@@ -37356,10 +37824,10 @@ index ed147c4..94fc3c6 100644
  
  /* core tmem accessor functions */
 diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
  
  /* core tmem accessor functions */
 diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
-index 26a5d8b..74434f8 100644
+index 03d3528..6bbe82f 100644
 --- a/drivers/target/iscsi/iscsi_target.c
 +++ b/drivers/target/iscsi/iscsi_target.c
 --- a/drivers/target/iscsi/iscsi_target.c
 +++ b/drivers/target/iscsi/iscsi_target.c
-@@ -1368,7 +1368,7 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf)
+@@ -1364,7 +1364,7 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf)
                 * outstanding_r2ts reaches zero, go ahead and send the delayed
                 * TASK_ABORTED status.
                 */
                 * outstanding_r2ts reaches zero, go ahead and send the delayed
                 * TASK_ABORTED status.
                 */
@@ -37368,90 +37836,11 @@ index 26a5d8b..74434f8 100644
                        if (hdr->flags & ISCSI_FLAG_CMD_FINAL)
                                if (--cmd->outstanding_r2ts < 1) {
                                        iscsit_stop_dataout_timer(cmd);
                        if (hdr->flags & ISCSI_FLAG_CMD_FINAL)
                                if (--cmd->outstanding_r2ts < 1) {
                                        iscsit_stop_dataout_timer(cmd);
-diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
-index 8badcb4..94c9ac6 100644
---- a/drivers/target/target_core_alua.c
-+++ b/drivers/target/target_core_alua.c
-@@ -723,6 +723,8 @@ static int core_alua_update_tpg_primary_metadata(
-       char path[ALUA_METADATA_PATH_LEN];
-       int len;
-+      pax_track_stack();
-+
-       memset(path, 0, ALUA_METADATA_PATH_LEN);
-       len = snprintf(md_buf, tg_pt_gp->tg_pt_gp_md_buf_len,
-@@ -986,6 +988,8 @@ static int core_alua_update_tpg_secondary_metadata(
-       char path[ALUA_METADATA_PATH_LEN], wwn[ALUA_SECONDARY_METADATA_WWN_LEN];
-       int len;
-+      pax_track_stack();
-+
-       memset(path, 0, ALUA_METADATA_PATH_LEN);
-       memset(wwn, 0, ALUA_SECONDARY_METADATA_WWN_LEN);
-diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
-index f04d4ef..7de212b 100644
---- a/drivers/target/target_core_cdb.c
-+++ b/drivers/target/target_core_cdb.c
-@@ -933,6 +933,8 @@ target_emulate_modesense(struct se_cmd *cmd, int ten)
-       int length = 0;
-       unsigned char buf[SE_MODE_PAGE_BUF];
-+      pax_track_stack();
-+
-       memset(buf, 0, SE_MODE_PAGE_BUF);
-       switch (cdb[2] & 0x3f) {
-diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c
-index b2575d8..b6b28fd 100644
---- a/drivers/target/target_core_configfs.c
-+++ b/drivers/target/target_core_configfs.c
-@@ -1267,6 +1267,8 @@ static ssize_t target_core_dev_pr_show_attr_res_pr_registered_i_pts(
-       ssize_t len = 0;
-       int reg_count = 0, prf_isid;
-+      pax_track_stack();
-+
-       if (!su_dev->se_dev_ptr)
-               return -ENODEV;
-diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
-index 7fd3a16..bc2fb3e 100644
---- a/drivers/target/target_core_pr.c
-+++ b/drivers/target/target_core_pr.c
-@@ -918,6 +918,8 @@ static int __core_scsi3_check_aptpl_registration(
-       unsigned char t_port[PR_APTPL_MAX_TPORT_LEN];
-       u16 tpgt;
-+      pax_track_stack();
-+
-       memset(i_port, 0, PR_APTPL_MAX_IPORT_LEN);
-       memset(t_port, 0, PR_APTPL_MAX_TPORT_LEN);
-       /*
-@@ -1867,6 +1869,8 @@ static int __core_scsi3_update_aptpl_buf(
-       ssize_t len = 0;
-       int reg_count = 0;
-+      pax_track_stack();
-+
-       memset(buf, 0, pr_aptpl_buf_len);
-       /*
-        * Called to clear metadata once APTPL has been deactivated.
-@@ -1989,6 +1993,8 @@ static int __core_scsi3_write_aptpl_to_file(
-       char path[512];
-       int ret;
-+      pax_track_stack();
-+
-       memset(iov, 0, sizeof(struct iovec));
-       memset(path, 0, 512);
 diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c
 diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c
-index 5c1b8c5..0cb7d0e 100644
+index 6845228..df77141 100644
 --- a/drivers/target/target_core_tmr.c
 +++ b/drivers/target/target_core_tmr.c
 --- a/drivers/target/target_core_tmr.c
 +++ b/drivers/target/target_core_tmr.c
-@@ -255,7 +255,7 @@ static void core_tmr_drain_task_list(
+@@ -250,7 +250,7 @@ static void core_tmr_drain_task_list(
                        cmd->se_tfo->get_task_tag(cmd), cmd->pr_res_key,
                        cmd->t_task_list_num,
                        atomic_read(&cmd->t_task_cdbs_left),
                        cmd->se_tfo->get_task_tag(cmd), cmd->pr_res_key,
                        cmd->t_task_list_num,
                        atomic_read(&cmd->t_task_cdbs_left),
@@ -37460,7 +37849,7 @@ index 5c1b8c5..0cb7d0e 100644
                        atomic_read(&cmd->t_transport_active),
                        atomic_read(&cmd->t_transport_stop),
                        atomic_read(&cmd->t_transport_sent));
                        atomic_read(&cmd->t_transport_active),
                        atomic_read(&cmd->t_transport_stop),
                        atomic_read(&cmd->t_transport_sent));
-@@ -291,7 +291,7 @@ static void core_tmr_drain_task_list(
+@@ -281,7 +281,7 @@ static void core_tmr_drain_task_list(
                        pr_debug("LUN_RESET: got t_transport_active = 1 for"
                                " task: %p, t_fe_count: %d dev: %p\n", task,
                                fe_count, dev);
                        pr_debug("LUN_RESET: got t_transport_active = 1 for"
                                " task: %p, t_fe_count: %d dev: %p\n", task,
                                fe_count, dev);
@@ -37469,7 +37858,7 @@ index 5c1b8c5..0cb7d0e 100644
                        spin_unlock_irqrestore(&cmd->t_state_lock, flags);
  
                        core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
                        spin_unlock_irqrestore(&cmd->t_state_lock, flags);
  
                        core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
-@@ -299,7 +299,7 @@ static void core_tmr_drain_task_list(
+@@ -289,7 +289,7 @@ static void core_tmr_drain_task_list(
                }
                pr_debug("LUN_RESET: Got t_transport_active = 0 for task: %p,"
                        " t_fe_count: %d dev: %p\n", task, fe_count, dev);
                }
                pr_debug("LUN_RESET: Got t_transport_active = 0 for task: %p,"
                        " t_fe_count: %d dev: %p\n", task, fe_count, dev);
@@ -37479,10 +37868,10 @@ index 5c1b8c5..0cb7d0e 100644
  
                core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
 diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
  
                core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
 diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index 013c100..8fd2e57 100644
+index cdb774b..8753593 100644
 --- a/drivers/target/target_core_transport.c
 +++ b/drivers/target/target_core_transport.c
 --- a/drivers/target/target_core_transport.c
 +++ b/drivers/target/target_core_transport.c
-@@ -1445,7 +1445,7 @@ struct se_device *transport_add_device_to_core_hba(
+@@ -1343,7 +1343,7 @@ struct se_device *transport_add_device_to_core_hba(
  
        dev->queue_depth        = dev_limits->queue_depth;
        atomic_set(&dev->depth_left, dev->queue_depth);
  
        dev->queue_depth        = dev_limits->queue_depth;
        atomic_set(&dev->depth_left, dev->queue_depth);
@@ -37491,7 +37880,7 @@ index 013c100..8fd2e57 100644
  
        se_dev_set_default_attribs(dev, dev_limits);
  
  
        se_dev_set_default_attribs(dev, dev_limits);
  
-@@ -1633,7 +1633,7 @@ static int transport_check_alloc_task_attr(struct se_cmd *cmd)
+@@ -1530,7 +1530,7 @@ static int transport_check_alloc_task_attr(struct se_cmd *cmd)
         * Used to determine when ORDERED commands should go from
         * Dormant to Active status.
         */
         * Used to determine when ORDERED commands should go from
         * Dormant to Active status.
         */
@@ -37500,7 +37889,7 @@ index 013c100..8fd2e57 100644
        smp_mb__after_atomic_inc();
        pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
                        cmd->se_ordered_id, cmd->sam_task_attr,
        smp_mb__after_atomic_inc();
        pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
                        cmd->se_ordered_id, cmd->sam_task_attr,
-@@ -1960,7 +1960,7 @@ static void transport_generic_request_failure(
+@@ -1800,7 +1800,7 @@ static void transport_generic_request_failure(struct se_cmd *cmd)
                " t_transport_active: %d t_transport_stop: %d"
                " t_transport_sent: %d\n", cmd->t_task_list_num,
                atomic_read(&cmd->t_task_cdbs_left),
                " t_transport_active: %d t_transport_stop: %d"
                " t_transport_sent: %d\n", cmd->t_task_list_num,
                atomic_read(&cmd->t_task_cdbs_left),
@@ -37509,28 +37898,28 @@ index 013c100..8fd2e57 100644
                atomic_read(&cmd->t_task_cdbs_ex_left),
                atomic_read(&cmd->t_transport_active),
                atomic_read(&cmd->t_transport_stop),
                atomic_read(&cmd->t_task_cdbs_ex_left),
                atomic_read(&cmd->t_transport_active),
                atomic_read(&cmd->t_transport_stop),
-@@ -2460,9 +2460,9 @@ check_depth:
+@@ -2089,9 +2089,9 @@ check_depth:
        spin_lock_irqsave(&cmd->t_state_lock, flags);
        spin_lock_irqsave(&cmd->t_state_lock, flags);
-       atomic_set(&task->task_active, 1);
-       atomic_set(&task->task_sent, 1);
+       task->task_flags |= (TF_ACTIVE | TF_SENT);
 -      atomic_inc(&cmd->t_task_cdbs_sent);
 +      atomic_inc_unchecked(&cmd->t_task_cdbs_sent);
  
 -      if (atomic_read(&cmd->t_task_cdbs_sent) ==
 +      if (atomic_read_unchecked(&cmd->t_task_cdbs_sent) ==
            cmd->t_task_list_num)
 -      atomic_inc(&cmd->t_task_cdbs_sent);
 +      atomic_inc_unchecked(&cmd->t_task_cdbs_sent);
  
 -      if (atomic_read(&cmd->t_task_cdbs_sent) ==
 +      if (atomic_read_unchecked(&cmd->t_task_cdbs_sent) ==
            cmd->t_task_list_num)
-               atomic_set(&cmd->transport_sent, 1);
+               atomic_set(&cmd->t_transport_sent, 1);
  
  
-@@ -4665,7 +4665,7 @@ static void transport_generic_wait_for_tasks(
+@@ -4297,7 +4297,7 @@ bool transport_wait_for_tasks(struct se_cmd *cmd)
                atomic_set(&cmd->transport_lun_stop, 0);
        }
        if (!atomic_read(&cmd->t_transport_active) ||
                atomic_set(&cmd->transport_lun_stop, 0);
        }
        if (!atomic_read(&cmd->t_transport_active) ||
--           atomic_read(&cmd->t_transport_aborted))
-+           atomic_read_unchecked(&cmd->t_transport_aborted))
-               goto remove;
-       atomic_set(&cmd->t_transport_stop, 1);
-@@ -4900,7 +4900,7 @@ int transport_check_aborted_status(struct se_cmd *cmd, int send_status)
+-           atomic_read(&cmd->t_transport_aborted)) {
++           atomic_read_unchecked(&cmd->t_transport_aborted)) {
+               spin_unlock_irqrestore(&cmd->t_state_lock, flags);
+               return false;
+       }
+@@ -4546,7 +4546,7 @@ int transport_check_aborted_status(struct se_cmd *cmd, int send_status)
  {
        int ret = 0;
  
  {
        int ret = 0;
  
@@ -37539,39 +37928,17 @@ index 013c100..8fd2e57 100644
                if (!send_status ||
                     (cmd->se_cmd_flags & SCF_SENT_DELAYED_TAS))
                        return 1;
                if (!send_status ||
                     (cmd->se_cmd_flags & SCF_SENT_DELAYED_TAS))
                        return 1;
-@@ -4937,7 +4937,7 @@ void transport_send_task_abort(struct se_cmd *cmd)
+@@ -4583,7 +4583,7 @@ void transport_send_task_abort(struct se_cmd *cmd)
         */
        if (cmd->data_direction == DMA_TO_DEVICE) {
                if (cmd->se_tfo->write_pending_status(cmd) != 0) {
 -                      atomic_inc(&cmd->t_transport_aborted);
 +                      atomic_inc_unchecked(&cmd->t_transport_aborted);
                        smp_mb__after_atomic_inc();
         */
        if (cmd->data_direction == DMA_TO_DEVICE) {
                if (cmd->se_tfo->write_pending_status(cmd) != 0) {
 -                      atomic_inc(&cmd->t_transport_aborted);
 +                      atomic_inc_unchecked(&cmd->t_transport_aborted);
                        smp_mb__after_atomic_inc();
-                       cmd->scsi_status = SAM_STAT_TASK_ABORTED;
-                       transport_new_cmd_failure(cmd);
-@@ -5051,7 +5051,7 @@ static void transport_processing_shutdown(struct se_device *dev)
-                       cmd->se_tfo->get_task_tag(cmd),
-                       cmd->t_task_list_num,
-                       atomic_read(&cmd->t_task_cdbs_left),
--                      atomic_read(&cmd->t_task_cdbs_sent),
-+                      atomic_read_unchecked(&cmd->t_task_cdbs_sent),
-                       atomic_read(&cmd->t_transport_active),
-                       atomic_read(&cmd->t_transport_stop),
-                       atomic_read(&cmd->t_transport_sent));
-diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
-index d5f923b..9c78228 100644
---- a/drivers/telephony/ixj.c
-+++ b/drivers/telephony/ixj.c
-@@ -4976,6 +4976,8 @@ static int ixj_daa_cid_read(IXJ *j)
-       bool mContinue;
-       char *pIn, *pOut;
-+      pax_track_stack();
-+
-       if (!SCI_Prepare(j))
-               return 0;
+               }
+       }
 diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c
 diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c
-index 4c8b665..1d931eb 100644
+index b9040be..e3f5aab 100644
 --- a/drivers/tty/hvc/hvcs.c
 +++ b/drivers/tty/hvc/hvcs.c
 @@ -83,6 +83,7 @@
 --- a/drivers/tty/hvc/hvcs.c
 +++ b/drivers/tty/hvc/hvcs.c
 @@ -83,6 +83,7 @@
@@ -37803,10 +38170,10 @@ index ef92869..f4ebd88 100644
                        ipwireless_disassociate_network_ttys(network,
                                                             ttyj->channel_idx);
 diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
                        ipwireless_disassociate_network_ttys(network,
                                                             ttyj->channel_idx);
 diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
-index 8a50e4e..7d9ca3d 100644
+index fc7bbba..9527e93 100644
 --- a/drivers/tty/n_gsm.c
 +++ b/drivers/tty/n_gsm.c
 --- a/drivers/tty/n_gsm.c
 +++ b/drivers/tty/n_gsm.c
-@@ -1625,7 +1625,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr)
+@@ -1629,7 +1629,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr)
        kref_init(&dlci->ref);
        mutex_init(&dlci->mutex);
        dlci->fifo = &dlci->_fifo;
        kref_init(&dlci->ref);
        mutex_init(&dlci->mutex);
        dlci->fifo = &dlci->_fifo;
@@ -37844,24 +38211,11 @@ index e18604b..a7d5a11 100644
  
        cdev_init(&ptmx_cdev, &ptmx_fops);
        if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
  
        cdev_init(&ptmx_cdev, &ptmx_fops);
        if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
-diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c
-index 6a1241c..d04ab0d 100644
---- a/drivers/tty/rocket.c
-+++ b/drivers/tty/rocket.c
-@@ -1277,6 +1277,8 @@ static int get_ports(struct r_port *info, struct rocket_ports __user *retports)
-       struct rocket_ports tmp;
-       int board;
-+      pax_track_stack();
-+
-       if (!retports)
-               return -EFAULT;
-       memset(&tmp, 0, sizeof (tmp));
 diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c
 diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c
-index 87e7e6c..89744e0 100644
+index 2b42a01..32a2ed3 100644
 --- a/drivers/tty/serial/kgdboc.c
 +++ b/drivers/tty/serial/kgdboc.c
 --- a/drivers/tty/serial/kgdboc.c
 +++ b/drivers/tty/serial/kgdboc.c
-@@ -23,8 +23,9 @@
+@@ -24,8 +24,9 @@
  #define MAX_CONFIG_LEN                40
  
  static struct kgdb_io         kgdboc_io_ops;
  #define MAX_CONFIG_LEN                40
  
  static struct kgdb_io         kgdboc_io_ops;
@@ -37872,7 +38226,7 @@ index 87e7e6c..89744e0 100644
  static int configured         = -1;
  
  static char config[MAX_CONFIG_LEN];
  static int configured         = -1;
  
  static char config[MAX_CONFIG_LEN];
-@@ -147,6 +148,8 @@ static void cleanup_kgdboc(void)
+@@ -148,6 +149,8 @@ static void cleanup_kgdboc(void)
        kgdboc_unregister_kbd();
        if (configured == 1)
                kgdb_unregister_io_module(&kgdboc_io_ops);
        kgdboc_unregister_kbd();
        if (configured == 1)
                kgdb_unregister_io_module(&kgdboc_io_ops);
@@ -37881,7 +38235,7 @@ index 87e7e6c..89744e0 100644
  }
  
  static int configure_kgdboc(void)
  }
  
  static int configure_kgdboc(void)
-@@ -156,13 +159,13 @@ static int configure_kgdboc(void)
+@@ -157,13 +160,13 @@ static int configure_kgdboc(void)
        int err;
        char *cptr = config;
        struct console *cons;
        int err;
        char *cptr = config;
        struct console *cons;
@@ -37896,7 +38250,7 @@ index 87e7e6c..89744e0 100644
        kgdb_tty_driver = NULL;
  
        kgdboc_use_kms = 0;
        kgdb_tty_driver = NULL;
  
        kgdboc_use_kms = 0;
-@@ -183,7 +186,7 @@ static int configure_kgdboc(void)
+@@ -184,7 +187,7 @@ static int configure_kgdboc(void)
                int idx;
                if (cons->device && cons->device(cons, &idx) == p &&
                    idx == tty_line) {
                int idx;
                if (cons->device && cons->device(cons, &idx) == p &&
                    idx == tty_line) {
@@ -37905,7 +38259,7 @@ index 87e7e6c..89744e0 100644
                        break;
                }
                cons = cons->next;
                        break;
                }
                cons = cons->next;
-@@ -193,12 +196,16 @@ static int configure_kgdboc(void)
+@@ -194,12 +197,16 @@ static int configure_kgdboc(void)
        kgdb_tty_line = tty_line;
  
  do_register:
        kgdb_tty_line = tty_line;
  
  do_register:
@@ -37925,7 +38279,7 @@ index 87e7e6c..89744e0 100644
        return 0;
  
  noconfig:
        return 0;
  
  noconfig:
-@@ -212,7 +219,7 @@ noconfig:
+@@ -213,7 +220,7 @@ noconfig:
  static int __init init_kgdboc(void)
  {
        /* Already configured? */
  static int __init init_kgdboc(void)
  {
        /* Already configured? */
@@ -37934,7 +38288,7 @@ index 87e7e6c..89744e0 100644
                return 0;
  
        return configure_kgdboc();
                return 0;
  
        return configure_kgdboc();
-@@ -261,7 +268,7 @@ static int param_set_kgdboc_var(const char *kmessage, struct kernel_param *kp)
+@@ -262,7 +269,7 @@ static int param_set_kgdboc_var(const char *kmessage, struct kernel_param *kp)
        if (config[len - 1] == '\n')
                config[len - 1] = '\0';
  
        if (config[len - 1] == '\n')
                config[len - 1] = '\0';
  
@@ -37943,7 +38297,7 @@ index 87e7e6c..89744e0 100644
                cleanup_kgdboc();
  
        /* Go and configure with the new params. */
                cleanup_kgdboc();
  
        /* Go and configure with the new params. */
-@@ -301,6 +308,15 @@ static struct kgdb_io kgdboc_io_ops = {
+@@ -302,6 +309,15 @@ static struct kgdb_io kgdboc_io_ops = {
        .post_exception         = kgdboc_post_exp_handler,
  };
  
        .post_exception         = kgdboc_post_exp_handler,
  };
  
@@ -37959,37 +38313,11 @@ index 87e7e6c..89744e0 100644
  #ifdef CONFIG_KGDB_SERIAL_CONSOLE
  /* This is only available if kgdboc is a built in for early debugging */
  static int __init kgdboc_early_init(char *opt)
  #ifdef CONFIG_KGDB_SERIAL_CONSOLE
  /* This is only available if kgdboc is a built in for early debugging */
  static int __init kgdboc_early_init(char *opt)
-diff --git a/drivers/tty/serial/mfd.c b/drivers/tty/serial/mfd.c
-index cab52f4..29fc6aa 100644
---- a/drivers/tty/serial/mfd.c
-+++ b/drivers/tty/serial/mfd.c
-@@ -1423,7 +1423,7 @@ static void serial_hsu_remove(struct pci_dev *pdev)
- }
- /* First 3 are UART ports, and the 4th is the DMA */
--static const struct pci_device_id pci_ids[] __devinitdata = {
-+static const struct pci_device_id pci_ids[] __devinitconst = {
-       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081B) },
-       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081C) },
-       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081D) },
-diff --git a/drivers/tty/serial/mrst_max3110.c b/drivers/tty/serial/mrst_max3110.c
-index 23bc743..d425c07 100644
---- a/drivers/tty/serial/mrst_max3110.c
-+++ b/drivers/tty/serial/mrst_max3110.c
-@@ -393,6 +393,8 @@ static void max3110_con_receive(struct uart_max3110 *max)
-       int loop = 1, num, total = 0;
-       u8 recv_buf[512], *pbuf;
-+      pax_track_stack();
-+
-       pbuf = recv_buf;
-       do {
-               num = max3110_read_multi(max, pbuf);
 diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
 diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
-index 1a890e2..1d8139c 100644
+index 05085be..67eadb0 100644
 --- a/drivers/tty/tty_io.c
 +++ b/drivers/tty/tty_io.c
 --- a/drivers/tty/tty_io.c
 +++ b/drivers/tty/tty_io.c
-@@ -3238,7 +3238,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
+@@ -3240,7 +3240,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
  
  void tty_default_fops(struct file_operations *fops)
  {
  
  void tty_default_fops(struct file_operations *fops)
  {
@@ -37999,7 +38327,7 @@ index 1a890e2..1d8139c 100644
  
  /*
 diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
  
  /*
 diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
-index a76c808..ecbc743 100644
+index 8e0924f..4204eb4 100644
 --- a/drivers/tty/tty_ldisc.c
 +++ b/drivers/tty/tty_ldisc.c
 @@ -75,7 +75,7 @@ static void put_ldisc(struct tty_ldisc *ld)
 --- a/drivers/tty/tty_ldisc.c
 +++ b/drivers/tty/tty_ldisc.c
 @@ -75,7 +75,7 @@ static void put_ldisc(struct tty_ldisc *ld)
@@ -38048,10 +38376,10 @@ index a76c808..ecbc743 100644
        spin_unlock_irqrestore(&tty_ldisc_lock, flags);
  }
 diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
        spin_unlock_irqrestore(&tty_ldisc_lock, flags);
  }
 diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
-index 3761ccf..2c613b3 100644
+index a605549..6bd3c96 100644
 --- a/drivers/tty/vt/keyboard.c
 +++ b/drivers/tty/vt/keyboard.c
 --- a/drivers/tty/vt/keyboard.c
 +++ b/drivers/tty/vt/keyboard.c
-@@ -656,6 +656,16 @@ static void k_spec(struct vc_data *vc, unsigned char value, char up_flag)
+@@ -657,6 +657,16 @@ static void k_spec(struct vc_data *vc, unsigned char value, char up_flag)
             kbd->kbdmode == VC_OFF) &&
             value != KVAL(K_SAK))
                return;         /* SAK is allowed even in raw mode */
             kbd->kbdmode == VC_OFF) &&
             value != KVAL(K_SAK))
                return;         /* SAK is allowed even in raw mode */
@@ -38068,21 +38396,8 @@ index 3761ccf..2c613b3 100644
        fn_handler[value](vc);
  }
  
        fn_handler[value](vc);
  }
  
-diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
-index b3915b7..e716839 100644
---- a/drivers/tty/vt/vt.c
-+++ b/drivers/tty/vt/vt.c
-@@ -259,7 +259,7 @@ EXPORT_SYMBOL_GPL(unregister_vt_notifier);
- static void notify_write(struct vc_data *vc, unsigned int unicode)
- {
--      struct vt_notifier_param param = { .vc = vc, unicode = unicode };
-+      struct vt_notifier_param param = { .vc = vc, .c = unicode };
-       atomic_notifier_call_chain(&vt_notifier_list, VT_WRITE, &param);
- }
 diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c
 diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c
-index 5e096f4..0da1363 100644
+index 65447c5..0526f0a 100644
 --- a/drivers/tty/vt/vt_ioctl.c
 +++ b/drivers/tty/vt/vt_ioctl.c
 @@ -207,9 +207,6 @@ do_kdsk_ioctl(int cmd, struct kbentry __user *user_kbe, int perm, struct kbd_str
 --- a/drivers/tty/vt/vt_ioctl.c
 +++ b/drivers/tty/vt/vt_ioctl.c
 @@ -207,9 +207,6 @@ do_kdsk_ioctl(int cmd, struct kbentry __user *user_kbe, int perm, struct kbd_str
@@ -38126,7 +38441,7 @@ index 5e096f4..0da1363 100644
                        ret = -EPERM;
                        goto reterr;
 diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
                        ret = -EPERM;
                        goto reterr;
 diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
-index d2efe82..9440ab6 100644
+index a783d53..cb30d94 100644
 --- a/drivers/uio/uio.c
 +++ b/drivers/uio/uio.c
 @@ -25,6 +25,7 @@
 --- a/drivers/uio/uio.c
 +++ b/drivers/uio/uio.c
 @@ -25,6 +25,7 @@
@@ -38211,7 +38526,7 @@ index d2efe82..9440ab6 100644
  }
  
  static int uio_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
  }
  
  static int uio_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
-@@ -823,7 +824,7 @@ int __uio_register_device(struct module *owner,
+@@ -821,7 +822,7 @@ int __uio_register_device(struct module *owner,
        idev->owner = owner;
        idev->info = info;
        init_waitqueue_head(&idev->wait);
        idev->owner = owner;
        idev->info = info;
        init_waitqueue_head(&idev->wait);
@@ -38317,7 +38632,7 @@ index d3448ca..d2864ca 100644
        if (!left--) {
                if (instance->disconnected)
 diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c
        if (!left--) {
                if (instance->disconnected)
 diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c
-index 0149c09..f108812 100644
+index d956965..4179a77 100644
 --- a/drivers/usb/core/devices.c
 +++ b/drivers/usb/core/devices.c
 @@ -126,7 +126,7 @@ static const char format_endpt[] =
 --- a/drivers/usb/core/devices.c
 +++ b/drivers/usb/core/devices.c
 @@ -126,7 +126,7 @@ static const char format_endpt[] =
@@ -38347,21 +38662,6 @@ index 0149c09..f108812 100644
        if (file->f_version != event_count) {
                file->f_version = event_count;
                return POLLIN | POLLRDNORM;
        if (file->f_version != event_count) {
                file->f_version = event_count;
                return POLLIN | POLLRDNORM;
-diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
-index 0b5ec23..0da3d76 100644
---- a/drivers/usb/core/message.c
-+++ b/drivers/usb/core/message.c
-@@ -869,8 +869,8 @@ char *usb_cache_string(struct usb_device *udev, int index)
-       buf = kmalloc(MAX_USB_STRING_SIZE, GFP_NOIO);
-       if (buf) {
-               len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE);
--              if (len > 0) {
--                      smallbuf = kmalloc(++len, GFP_NOIO);
-+              if (len++ > 0) {
-+                      smallbuf = kmalloc(len, GFP_NOIO);
-                       if (!smallbuf)
-                               return buf;
-                       memcpy(smallbuf, buf, len);
 diff --git a/drivers/usb/early/ehci-dbgp.c b/drivers/usb/early/ehci-dbgp.c
 index 1fc8f12..20647c1 100644
 --- a/drivers/usb/early/ehci-dbgp.c
 diff --git a/drivers/usb/early/ehci-dbgp.c b/drivers/usb/early/ehci-dbgp.c
 index 1fc8f12..20647c1 100644
 --- a/drivers/usb/early/ehci-dbgp.c
@@ -38403,19 +38703,6 @@ index 1fc8f12..20647c1 100644
  
        return 0;
  }
  
        return 0;
  }
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index d718033..6075579 100644
---- a/drivers/usb/host/xhci-mem.c
-+++ b/drivers/usb/host/xhci-mem.c
-@@ -1685,6 +1685,8 @@ static int xhci_check_trb_in_td_math(struct xhci_hcd *xhci, gfp_t mem_flags)
-       unsigned int num_tests;
-       int i, ret;
-+      pax_track_stack();
-+
-       num_tests = ARRAY_SIZE(simple_test_vector);
-       for (i = 0; i < num_tests; i++) {
-               ret = xhci_test_trb_in_td(xhci,
 diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h
 index d6bea3e..60b250e 100644
 --- a/drivers/usb/wusbcore/wa-hc.h
 diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h
 index d6bea3e..60b250e 100644
 --- a/drivers/usb/wusbcore/wa-hc.h
@@ -38439,10 +38726,10 @@ index d6bea3e..60b250e 100644
  
  /**
 diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c
  
  /**
 diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c
-index 4193345..49ae93d 100644
+index 57c01ab..8a05959 100644
 --- a/drivers/usb/wusbcore/wa-xfer.c
 +++ b/drivers/usb/wusbcore/wa-xfer.c
 --- a/drivers/usb/wusbcore/wa-xfer.c
 +++ b/drivers/usb/wusbcore/wa-xfer.c
-@@ -295,7 +295,7 @@ out:
+@@ -296,7 +296,7 @@ out:
   */
  static void wa_xfer_id_init(struct wa_xfer *xfer)
  {
   */
  static void wa_xfer_id_init(struct wa_xfer *xfer)
  {
@@ -38477,6 +38764,19 @@ index b0b2ac3..89a4399 100644
        "AGP",
        "PCI",
        "PRO AGP",
        "AGP",
        "PCI",
        "PRO AGP",
+diff --git a/drivers/video/backlight/s6e63m0.c b/drivers/video/backlight/s6e63m0.c
+index e132157..516db70 100644
+--- a/drivers/video/backlight/s6e63m0.c
++++ b/drivers/video/backlight/s6e63m0.c
+@@ -690,7 +690,7 @@ static ssize_t s6e63m0_sysfs_store_gamma_mode(struct device *dev,
+       struct backlight_device *bd = NULL;
+       int brightness, rc;
+-      rc = strict_strtoul(buf, 0, (unsigned long *)&lcd->gamma_mode);
++      rc = kstrtouint(buf, 0, &lcd->gamma_mode);
+       if (rc < 0)
+               return rc;
 diff --git a/drivers/video/fbcmap.c b/drivers/video/fbcmap.c
 index 5c3960d..15cf8fc 100644
 --- a/drivers/video/fbcmap.c
 diff --git a/drivers/video/fbcmap.c b/drivers/video/fbcmap.c
 index 5c3960d..15cf8fc 100644
 --- a/drivers/video/fbcmap.c
@@ -38492,7 +38792,7 @@ index 5c3960d..15cf8fc 100644
                goto out1;
        }
 diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
                goto out1;
        }
 diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
-index ad93629..ca6a218 100644
+index ad93629..e020fc3 100644
 --- a/drivers/video/fbmem.c
 +++ b/drivers/video/fbmem.c
 @@ -428,7 +428,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
 --- a/drivers/video/fbmem.c
 +++ b/drivers/video/fbmem.c
 @@ -428,7 +428,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
@@ -38513,25 +38813,7 @@ index ad93629..ca6a218 100644
                        info->fbops->fb_imageblit(info, image);
                        image->dy -= image->height + 8;
                }
                        info->fbops->fb_imageblit(info, image);
                        image->dy -= image->height + 8;
                }
-@@ -939,6 +939,8 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
-       int flags = info->flags;
-       int ret = 0;
-+      pax_track_stack();
-+
-       if (var->activate & FB_ACTIVATE_INV_MODE) {
-               struct fb_videomode mode1, mode2;
-@@ -1064,6 +1066,8 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
-       void __user *argp = (void __user *)arg;
-       long ret = 0;
-+      pax_track_stack();
-+
-       switch (cmd) {
-       case FBIOGET_VSCREENINFO:
-               if (!lock_fb_info(info))
-@@ -1143,7 +1147,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
+@@ -1143,7 +1143,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
                        return -EFAULT;
                if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
                        return -EINVAL;
                        return -EFAULT;
                if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
                        return -EINVAL;
@@ -38554,7 +38836,7 @@ index 5a5d092..265c5ed 100644
        { NULL, 60, 640, 480, 39682,  48, 16, 33, 10, 96, 2,
          0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
 diff --git a/drivers/video/gxt4500.c b/drivers/video/gxt4500.c
        { NULL, 60, 640, 480, 39682,  48, 16, 33, 10, 96, 2,
          0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
 diff --git a/drivers/video/gxt4500.c b/drivers/video/gxt4500.c
-index 896e53d..4d87d0b 100644
+index 0fad23f..0e9afa4 100644
 --- a/drivers/video/gxt4500.c
 +++ b/drivers/video/gxt4500.c
 @@ -156,7 +156,7 @@ struct gxt4500_par {
 --- a/drivers/video/gxt4500.c
 +++ b/drivers/video/gxt4500.c
 @@ -156,7 +156,7 @@ struct gxt4500_par {
@@ -41343,10 +41625,10 @@ index 3c14e43..eafa544 100644
 +4 4 4  4 4 4  4 4 4  4 4 4  4 4 4  4 4 4
 +4 4 4  4 4 4
 diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c
 +4 4 4  4 4 4  4 4 4  4 4 4  4 4 4  4 4 4
 +4 4 4  4 4 4
 diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c
-index 087fc99..f85ed76 100644
+index 3473e75..c930142 100644
 --- a/drivers/video/udlfb.c
 +++ b/drivers/video/udlfb.c
 --- a/drivers/video/udlfb.c
 +++ b/drivers/video/udlfb.c
-@@ -585,11 +585,11 @@ int dlfb_handle_damage(struct dlfb_data *dev, int x, int y,
+@@ -619,11 +619,11 @@ int dlfb_handle_damage(struct dlfb_data *dev, int x, int y,
                dlfb_urb_completion(urb);
  
  error:
                dlfb_urb_completion(urb);
  
  error:
@@ -41362,7 +41644,7 @@ index 087fc99..f85ed76 100644
                    >> 10)), /* Kcycles */
                   &dev->cpu_kcycles_used);
  
                    >> 10)), /* Kcycles */
                   &dev->cpu_kcycles_used);
  
-@@ -710,11 +710,11 @@ static void dlfb_dpy_deferred_io(struct fb_info *info,
+@@ -744,11 +744,11 @@ static void dlfb_dpy_deferred_io(struct fb_info *info,
                dlfb_urb_completion(urb);
  
  error:
                dlfb_urb_completion(urb);
  
  error:
@@ -41378,7 +41660,7 @@ index 087fc99..f85ed76 100644
                    >> 10)), /* Kcycles */
                   &dev->cpu_kcycles_used);
  }
                    >> 10)), /* Kcycles */
                   &dev->cpu_kcycles_used);
  }
-@@ -1306,7 +1306,7 @@ static ssize_t metrics_bytes_rendered_show(struct device *fbdev,
+@@ -1368,7 +1368,7 @@ static ssize_t metrics_bytes_rendered_show(struct device *fbdev,
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
        return snprintf(buf, PAGE_SIZE, "%u\n",
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
        return snprintf(buf, PAGE_SIZE, "%u\n",
@@ -41387,7 +41669,7 @@ index 087fc99..f85ed76 100644
  }
  
  static ssize_t metrics_bytes_identical_show(struct device *fbdev,
  }
  
  static ssize_t metrics_bytes_identical_show(struct device *fbdev,
-@@ -1314,7 +1314,7 @@ static ssize_t metrics_bytes_identical_show(struct device *fbdev,
+@@ -1376,7 +1376,7 @@ static ssize_t metrics_bytes_identical_show(struct device *fbdev,
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
        return snprintf(buf, PAGE_SIZE, "%u\n",
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
        return snprintf(buf, PAGE_SIZE, "%u\n",
@@ -41396,7 +41678,7 @@ index 087fc99..f85ed76 100644
  }
  
  static ssize_t metrics_bytes_sent_show(struct device *fbdev,
  }
  
  static ssize_t metrics_bytes_sent_show(struct device *fbdev,
-@@ -1322,7 +1322,7 @@ static ssize_t metrics_bytes_sent_show(struct device *fbdev,
+@@ -1384,7 +1384,7 @@ static ssize_t metrics_bytes_sent_show(struct device *fbdev,
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
        return snprintf(buf, PAGE_SIZE, "%u\n",
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
        return snprintf(buf, PAGE_SIZE, "%u\n",
@@ -41405,7 +41687,7 @@ index 087fc99..f85ed76 100644
  }
  
  static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
  }
  
  static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
-@@ -1330,7 +1330,7 @@ static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
+@@ -1392,7 +1392,7 @@ static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
        return snprintf(buf, PAGE_SIZE, "%u\n",
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
        return snprintf(buf, PAGE_SIZE, "%u\n",
@@ -41414,7 +41696,7 @@ index 087fc99..f85ed76 100644
  }
  
  static ssize_t edid_show(
  }
  
  static ssize_t edid_show(
-@@ -1387,10 +1387,10 @@ static ssize_t metrics_reset_store(struct device *fbdev,
+@@ -1449,10 +1449,10 @@ static ssize_t metrics_reset_store(struct device *fbdev,
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
  
        struct fb_info *fb_info = dev_get_drvdata(fbdev);
        struct dlfb_data *dev = fb_info->par;
  
@@ -41627,19 +41909,6 @@ index 88714ae..16c2e11 100644
  
  
  static inline u32 get_pll_internal_frequency(u32 ref_freq,
  
  
  static inline u32 get_pll_internal_frequency(u32 ref_freq,
-diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
-index e058ace..2424d93 100644
---- a/drivers/virtio/virtio_balloon.c
-+++ b/drivers/virtio/virtio_balloon.c
-@@ -174,6 +174,8 @@ static void update_balloon_stats(struct virtio_balloon *vb)
-       struct sysinfo i;
-       int idx = 0;
-+      pax_track_stack();
-+
-       all_vm_events(events);
-       si_meminfo(&i);
 diff --git a/drivers/xen/xen-pciback/conf_space.h b/drivers/xen/xen-pciback/conf_space.h
 index e56c934..fc22f4b 100644
 --- a/drivers/xen/xen-pciback/conf_space.h
 diff --git a/drivers/xen/xen-pciback/conf_space.h b/drivers/xen/xen-pciback/conf_space.h
 index e56c934..fc22f4b 100644
 --- a/drivers/xen/xen-pciback/conf_space.h
@@ -41664,10 +41933,10 @@ index e56c934..fc22f4b 100644
        struct list_head list;
  };
 diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
        struct list_head list;
  };
 diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
-index e3c03db..93b0172 100644
+index 879ed88..bc03a01 100644
 --- a/fs/9p/vfs_inode.c
 +++ b/fs/9p/vfs_inode.c
 --- a/fs/9p/vfs_inode.c
 +++ b/fs/9p/vfs_inode.c
-@@ -1288,7 +1288,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
+@@ -1286,7 +1286,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
  void
  v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
  {
  void
  v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
  {
@@ -41690,7 +41959,7 @@ index 79e2ca7..5828ad1 100644
          A.out (Assembler.OUTput) is a set of formats for libraries and
          executables used in the earliest versions of UNIX.  Linux used
 diff --git a/fs/aio.c b/fs/aio.c
          A.out (Assembler.OUTput) is a set of formats for libraries and
          executables used in the earliest versions of UNIX.  Linux used
 diff --git a/fs/aio.c b/fs/aio.c
-index e29ec48..f083e5e 100644
+index b9d64d8..86cb1d5 100644
 --- a/fs/aio.c
 +++ b/fs/aio.c
 @@ -119,7 +119,7 @@ static int aio_setup_ring(struct kioctx *ctx)
 --- a/fs/aio.c
 +++ b/fs/aio.c
 @@ -119,7 +119,7 @@ static int aio_setup_ring(struct kioctx *ctx)
@@ -41702,16 +41971,7 @@ index e29ec48..f083e5e 100644
                return -EINVAL;
  
        nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring)) / sizeof(struct io_event);
                return -EINVAL;
  
        nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring)) / sizeof(struct io_event);
-@@ -1088,6 +1088,8 @@ static int read_events(struct kioctx *ctx,
-       struct aio_timeout      to;
-       int                     retry = 0;
-+      pax_track_stack();
-+
-       /* needed to zero any padding within an entry (there shouldn't be 
-        * any, but C is fun!
-        */
-@@ -1381,22 +1383,27 @@ static ssize_t aio_fsync(struct kiocb *iocb)
+@@ -1461,22 +1461,27 @@ static ssize_t aio_fsync(struct kiocb *iocb)
  static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb, bool compat)
  {
        ssize_t ret;
  static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb, bool compat)
  {
        ssize_t ret;
@@ -41723,14 +41983,14 @@ index e29ec48..f083e5e 100644
                                (struct compat_iovec __user *)kiocb->ki_buf,
 -                              kiocb->ki_nbytes, 1, &kiocb->ki_inline_vec,
 +                              kiocb->ki_nbytes, 1, &iovstack,
                                (struct compat_iovec __user *)kiocb->ki_buf,
 -                              kiocb->ki_nbytes, 1, &kiocb->ki_inline_vec,
 +                              kiocb->ki_nbytes, 1, &iovstack,
-                               &kiocb->ki_iovec);
+                               &kiocb->ki_iovec, 1);
        else
  #endif
                ret = rw_copy_check_uvector(type,
                                (struct iovec __user *)kiocb->ki_buf,
 -                              kiocb->ki_nbytes, 1, &kiocb->ki_inline_vec,
 +                              kiocb->ki_nbytes, 1, &iovstack,
        else
  #endif
                ret = rw_copy_check_uvector(type,
                                (struct iovec __user *)kiocb->ki_buf,
 -                              kiocb->ki_nbytes, 1, &kiocb->ki_inline_vec,
 +                              kiocb->ki_nbytes, 1, &iovstack,
-                               &kiocb->ki_iovec);
+                               &kiocb->ki_iovec, 1);
        if (ret < 0)
                goto out;
  
        if (ret < 0)
                goto out;
  
@@ -41742,10 +42002,10 @@ index e29ec48..f083e5e 100644
        kiocb->ki_cur_seg = 0;
        /* ki_nbytes/left now reflect bytes instead of segs */
 diff --git a/fs/attr.c b/fs/attr.c
        kiocb->ki_cur_seg = 0;
        /* ki_nbytes/left now reflect bytes instead of segs */
 diff --git a/fs/attr.c b/fs/attr.c
-index 538e279..046cc6d 100644
+index 7ee7ba4..0c61a60 100644
 --- a/fs/attr.c
 +++ b/fs/attr.c
 --- a/fs/attr.c
 +++ b/fs/attr.c
-@@ -98,6 +98,7 @@ int inode_newsize_ok(const struct inode *inode, loff_t offset)
+@@ -99,6 +99,7 @@ int inode_newsize_ok(const struct inode *inode, loff_t offset)
                unsigned long limit;
  
                limit = rlimit(RLIMIT_FSIZE);
                unsigned long limit;
  
                limit = rlimit(RLIMIT_FSIZE);
@@ -41754,7 +42014,7 @@ index 538e279..046cc6d 100644
                        goto out_sig;
                if (offset > inode->i_sb->s_maxbytes)
 diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
                        goto out_sig;
                if (offset > inode->i_sb->s_maxbytes)
 diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
-index e1fbdee..cd5ea56 100644
+index 6861f61..a25f010 100644
 --- a/fs/autofs4/waitq.c
 +++ b/fs/autofs4/waitq.c
 @@ -60,7 +60,7 @@ static int autofs4_write(struct file *file, const void *addr, int bytes)
 --- a/fs/autofs4/waitq.c
 +++ b/fs/autofs4/waitq.c
 @@ -60,7 +60,7 @@ static int autofs4_write(struct file *file, const void *addr, int bytes)
@@ -41767,7 +42027,7 @@ index e1fbdee..cd5ea56 100644
  
        /** WARNING: this is not safe for writing more than PIPE_BUF bytes! **/
 diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
  
        /** WARNING: this is not safe for writing more than PIPE_BUF bytes! **/
 diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
-index 720d885..012e7f0 100644
+index 8342ca6..82fd192 100644
 --- a/fs/befs/linuxvfs.c
 +++ b/fs/befs/linuxvfs.c
 @@ -503,7 +503,7 @@ static void befs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
 --- a/fs/befs/linuxvfs.c
 +++ b/fs/befs/linuxvfs.c
 @@ -503,7 +503,7 @@ static void befs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
@@ -41780,7 +42040,7 @@ index 720d885..012e7f0 100644
                        kfree(link);
        }
 diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
                        kfree(link);
        }
 diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
-index a6395bd..a5b24c4 100644
+index a6395bd..f1e376a 100644
 --- a/fs/binfmt_aout.c
 +++ b/fs/binfmt_aout.c
 @@ -16,6 +16,7 @@
 --- a/fs/binfmt_aout.c
 +++ b/fs/binfmt_aout.c
 @@ -16,6 +16,7 @@
@@ -41822,7 +42082,17 @@ index a6395bd..a5b24c4 100644
        if (ex.a_data + ex.a_bss > rlim)
                return -ENOMEM;
  
        if (ex.a_data + ex.a_bss > rlim)
                return -ENOMEM;
  
-@@ -262,6 +269,27 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
+@@ -259,9 +266,37 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
+       current->mm->free_area_cache = current->mm->mmap_base;
+       current->mm->cached_hole_size = 0;
++      retval = setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT);
++      if (retval < 0) {
++              /* Someone check-me: is this error path enough? */
++              send_sig(SIGKILL, current, 0);
++              return retval;
++      }
++
        install_exec_creds(bprm);
        current->flags &= ~PF_FORKNOEXEC;
  
        install_exec_creds(bprm);
        current->flags &= ~PF_FORKNOEXEC;
  
@@ -41850,7 +42120,7 @@ index a6395bd..a5b24c4 100644
        if (N_MAGIC(ex) == OMAGIC) {
                unsigned long text_addr, map_size;
                loff_t pos;
        if (N_MAGIC(ex) == OMAGIC) {
                unsigned long text_addr, map_size;
                loff_t pos;
-@@ -334,7 +362,7 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
+@@ -334,7 +369,7 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
  
                down_write(&current->mm->mmap_sem);
                error = do_mmap(bprm->file, N_DATADDR(ex), ex.a_data,
  
                down_write(&current->mm->mmap_sem);
                error = do_mmap(bprm->file, N_DATADDR(ex), ex.a_data,
@@ -41859,11 +42129,33 @@ index a6395bd..a5b24c4 100644
                                MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE,
                                fd_offset + ex.a_text);
                up_write(&current->mm->mmap_sem);
                                MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE,
                                fd_offset + ex.a_text);
                up_write(&current->mm->mmap_sem);
+@@ -352,13 +387,6 @@ beyond_if:
+               return retval;
+       }
+-      retval = setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT);
+-      if (retval < 0) { 
+-              /* Someone check-me: is this error path enough? */ 
+-              send_sig(SIGKILL, current, 0); 
+-              return retval;
+-      }
+-
+       current->mm->start_stack =
+               (unsigned long) create_aout_tables((char __user *) bprm->p, bprm);
+ #ifdef __alpha__
 diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
 diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
-index 21ac5ee..171b1d0 100644
+index 6ff96c6..b5fb43a 100644
 --- a/fs/binfmt_elf.c
 +++ b/fs/binfmt_elf.c
 --- a/fs/binfmt_elf.c
 +++ b/fs/binfmt_elf.c
-@@ -51,6 +51,10 @@ static int elf_core_dump(struct coredump_params *cprm);
+@@ -32,6 +32,7 @@
+ #include <linux/elf.h>
+ #include <linux/utsname.h>
+ #include <linux/coredump.h>
++#include <linux/xattr.h>
+ #include <asm/uaccess.h>
+ #include <asm/param.h>
+ #include <asm/page.h>
+@@ -51,6 +52,10 @@ static int elf_core_dump(struct coredump_params *cprm);
  #define elf_core_dump NULL
  #endif
  
  #define elf_core_dump NULL
  #endif
  
@@ -41874,19 +42166,19 @@ index 21ac5ee..171b1d0 100644
  #if ELF_EXEC_PAGESIZE > PAGE_SIZE
  #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE
  #else
  #if ELF_EXEC_PAGESIZE > PAGE_SIZE
  #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE
  #else
-@@ -70,6 +74,11 @@ static struct linux_binfmt elf_format = {
+@@ -70,6 +75,11 @@ static struct linux_binfmt elf_format = {
        .load_binary    = load_elf_binary,
        .load_shlib     = load_elf_library,
        .core_dump      = elf_core_dump,
 +
 +#ifdef CONFIG_PAX_MPROTECT
        .load_binary    = load_elf_binary,
        .load_shlib     = load_elf_library,
        .core_dump      = elf_core_dump,
 +
 +#ifdef CONFIG_PAX_MPROTECT
-+              .handle_mprotect= elf_handle_mprotect,
++      .handle_mprotect= elf_handle_mprotect,
 +#endif
 +
        .min_coredump   = ELF_EXEC_PAGESIZE,
  };
  
 +#endif
 +
        .min_coredump   = ELF_EXEC_PAGESIZE,
  };
  
-@@ -77,6 +86,8 @@ static struct linux_binfmt elf_format = {
+@@ -77,6 +87,8 @@ static struct linux_binfmt elf_format = {
  
  static int set_brk(unsigned long start, unsigned long end)
  {
  
  static int set_brk(unsigned long start, unsigned long end)
  {
@@ -41895,7 +42187,7 @@ index 21ac5ee..171b1d0 100644
        start = ELF_PAGEALIGN(start);
        end = ELF_PAGEALIGN(end);
        if (end > start) {
        start = ELF_PAGEALIGN(start);
        end = ELF_PAGEALIGN(end);
        if (end > start) {
-@@ -87,7 +98,7 @@ static int set_brk(unsigned long start, unsigned long end)
+@@ -87,7 +99,7 @@ static int set_brk(unsigned long start, unsigned long end)
                if (BAD_ADDR(addr))
                        return addr;
        }
                if (BAD_ADDR(addr))
                        return addr;
        }
@@ -41904,7 +42196,7 @@ index 21ac5ee..171b1d0 100644
        return 0;
  }
  
        return 0;
  }
  
-@@ -148,12 +159,15 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
+@@ -148,12 +160,13 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
        elf_addr_t __user *u_rand_bytes;
        const char *k_platform = ELF_PLATFORM;
        const char *k_base_platform = ELF_BASE_PLATFORM;
        elf_addr_t __user *u_rand_bytes;
        const char *k_platform = ELF_PLATFORM;
        const char *k_base_platform = ELF_BASE_PLATFORM;
@@ -41916,12 +42208,10 @@ index 21ac5ee..171b1d0 100644
        const struct cred *cred = current_cred();
        struct vm_area_struct *vma;
 +      unsigned long saved_auxv[AT_VECTOR_SIZE];
        const struct cred *cred = current_cred();
        struct vm_area_struct *vma;
 +      unsigned long saved_auxv[AT_VECTOR_SIZE];
-+
-+      pax_track_stack();
  
        /*
         * In some cases (e.g. Hyper-Threading), we want to avoid L1
  
        /*
         * In some cases (e.g. Hyper-Threading), we want to avoid L1
-@@ -195,8 +209,12 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
+@@ -195,8 +208,12 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
         * Generate 16 random bytes for userspace PRNG seeding.
         */
        get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));
         * Generate 16 random bytes for userspace PRNG seeding.
         */
        get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));
@@ -41936,7 +42226,7 @@ index 21ac5ee..171b1d0 100644
        if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))
                return -EFAULT;
  
        if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))
                return -EFAULT;
  
-@@ -308,9 +326,11 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
+@@ -308,9 +325,11 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
                return -EFAULT;
        current->mm->env_end = p;
  
                return -EFAULT;
        current->mm->env_end = p;
  
@@ -41949,7 +42239,7 @@ index 21ac5ee..171b1d0 100644
                return -EFAULT;
        return 0;
  }
                return -EFAULT;
        return 0;
  }
-@@ -381,10 +401,10 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
+@@ -381,10 +400,10 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
  {
        struct elf_phdr *elf_phdata;
        struct elf_phdr *eppnt;
  {
        struct elf_phdr *elf_phdata;
        struct elf_phdr *eppnt;
@@ -41962,7 +42252,7 @@ index 21ac5ee..171b1d0 100644
        unsigned long total_size;
        int retval, i, size;
  
        unsigned long total_size;
        int retval, i, size;
  
-@@ -430,6 +450,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
+@@ -430,6 +449,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
                goto out_close;
        }
  
                goto out_close;
        }
  
@@ -41974,7 +42264,7 @@ index 21ac5ee..171b1d0 100644
        eppnt = elf_phdata;
        for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) {
                if (eppnt->p_type == PT_LOAD) {
        eppnt = elf_phdata;
        for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) {
                if (eppnt->p_type == PT_LOAD) {
-@@ -473,8 +498,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
+@@ -473,8 +497,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
                        k = load_addr + eppnt->p_vaddr;
                        if (BAD_ADDR(k) ||
                            eppnt->p_filesz > eppnt->p_memsz ||
                        k = load_addr + eppnt->p_vaddr;
                        if (BAD_ADDR(k) ||
                            eppnt->p_filesz > eppnt->p_memsz ||
@@ -41985,15 +42275,17 @@ index 21ac5ee..171b1d0 100644
                                error = -ENOMEM;
                                goto out_close;
                        }
                                error = -ENOMEM;
                                goto out_close;
                        }
-@@ -528,6 +553,193 @@ out:
+@@ -528,6 +552,351 @@ out:
        return error;
  }
  
        return error;
  }
  
-+#if (defined(CONFIG_PAX_EI_PAX) || defined(CONFIG_PAX_PT_PAX_FLAGS)) && defined(CONFIG_PAX_SOFTMODE)
-+static unsigned long pax_parse_softmode(const struct elf_phdr * const elf_phdata)
++#if defined(CONFIG_PAX_EI_PAX) || defined(CONFIG_PAX_PT_PAX_FLAGS) || defined(CONFIG_PAX_XATTR_PAX_FLAGS)
++static unsigned long pax_parse_pt_pax_softmode(const struct elf_phdr * const elf_phdata)
 +{
 +      unsigned long pax_flags = 0UL;
 +
 +{
 +      unsigned long pax_flags = 0UL;
 +
++#ifdef CONFIG_PAX_PT_PAX_FLAGS
++
 +#ifdef CONFIG_PAX_PAGEEXEC
 +      if (elf_phdata->p_flags & PF_PAGEEXEC)
 +              pax_flags |= MF_PAX_PAGEEXEC;
 +#ifdef CONFIG_PAX_PAGEEXEC
 +      if (elf_phdata->p_flags & PF_PAGEEXEC)
 +              pax_flags |= MF_PAX_PAGEEXEC;
@@ -42028,15 +42320,17 @@ index 21ac5ee..171b1d0 100644
 +              pax_flags |= MF_PAX_RANDMMAP;
 +#endif
 +
 +              pax_flags |= MF_PAX_RANDMMAP;
 +#endif
 +
++#endif
++
 +      return pax_flags;
 +}
 +      return pax_flags;
 +}
-+#endif
 +
 +
-+#ifdef CONFIG_PAX_PT_PAX_FLAGS
-+static unsigned long pax_parse_hardmode(const struct elf_phdr * const elf_phdata)
++static unsigned long pax_parse_pt_pax_hardmode(const struct elf_phdr * const elf_phdata)
 +{
 +      unsigned long pax_flags = 0UL;
 +
 +{
 +      unsigned long pax_flags = 0UL;
 +
++#ifdef CONFIG_PAX_PT_PAX_FLAGS
++
 +#ifdef CONFIG_PAX_PAGEEXEC
 +      if (!(elf_phdata->p_flags & PF_NOPAGEEXEC))
 +              pax_flags |= MF_PAX_PAGEEXEC;
 +#ifdef CONFIG_PAX_PAGEEXEC
 +      if (!(elf_phdata->p_flags & PF_NOPAGEEXEC))
 +              pax_flags |= MF_PAX_PAGEEXEC;
@@ -42071,15 +42365,17 @@ index 21ac5ee..171b1d0 100644
 +              pax_flags |= MF_PAX_RANDMMAP;
 +#endif
 +
 +              pax_flags |= MF_PAX_RANDMMAP;
 +#endif
 +
++#endif
++
 +      return pax_flags;
 +}
 +      return pax_flags;
 +}
-+#endif
 +
 +
-+#ifdef CONFIG_PAX_EI_PAX
 +static unsigned long pax_parse_ei_pax(const struct elfhdr * const elf_ex)
 +{
 +      unsigned long pax_flags = 0UL;
 +
 +static unsigned long pax_parse_ei_pax(const struct elfhdr * const elf_ex)
 +{
 +      unsigned long pax_flags = 0UL;
 +
++#ifdef CONFIG_PAX_EI_PAX
++
 +#ifdef CONFIG_PAX_PAGEEXEC
 +      if (!(elf_ex->e_ident[EI_PAX] & EF_PAX_PAGEEXEC))
 +              pax_flags |= MF_PAX_PAGEEXEC;
 +#ifdef CONFIG_PAX_PAGEEXEC
 +      if (!(elf_ex->e_ident[EI_PAX] & EF_PAX_PAGEEXEC))
 +              pax_flags |= MF_PAX_PAGEEXEC;
@@ -42114,25 +42410,38 @@ index 21ac5ee..171b1d0 100644
 +              pax_flags |= MF_PAX_RANDMMAP;
 +#endif
 +
 +              pax_flags |= MF_PAX_RANDMMAP;
 +#endif
 +
-+      return pax_flags;
-+}
++#else
++
++#ifdef CONFIG_PAX_PAGEEXEC
++      pax_flags |= MF_PAX_PAGEEXEC;
 +#endif
 +
 +#endif
 +
-+#if defined(CONFIG_PAX_EI_PAX) || defined(CONFIG_PAX_PT_PAX_FLAGS)
-+static long pax_parse_elf_flags(const struct elfhdr * const elf_ex, const struct elf_phdr * const elf_phdata)
-+{
-+      unsigned long pax_flags = 0UL;
++#ifdef CONFIG_PAX_MPROTECT
++      pax_flags |= MF_PAX_MPROTECT;
++#endif
 +
 +
-+#ifdef CONFIG_PAX_PT_PAX_FLAGS
-+      unsigned long i;
-+      int found_flags = 0;
++#ifdef CONFIG_PAX_RANDMMAP
++      pax_flags |= MF_PAX_RANDMMAP;
 +#endif
 +
 +#endif
 +
-+#ifdef CONFIG_PAX_EI_PAX
-+      pax_flags = pax_parse_ei_pax(elf_ex);
++#ifdef CONFIG_PAX_SEGMEXEC
++      if (!(pax_flags & MF_PAX_PAGEEXEC) || !(__supported_pte_mask & _PAGE_NX)) {
++              pax_flags &= ~MF_PAX_PAGEEXEC;
++              pax_flags |= MF_PAX_SEGMEXEC;
++      }
 +#endif
 +
 +#endif
 +
++#endif
++
++      return pax_flags;
++}
++
++static unsigned long pax_parse_pt_pax(const struct elfhdr * const elf_ex, const struct elf_phdr * const elf_phdata)
++{
++
 +#ifdef CONFIG_PAX_PT_PAX_FLAGS
 +#ifdef CONFIG_PAX_PT_PAX_FLAGS
++      unsigned long i;
++
 +      for (i = 0UL; i < elf_ex->e_phnum; i++)
 +              if (elf_phdata[i].p_type == PT_PAX_FLAGS) {
 +                      if (((elf_phdata[i].p_flags & PF_PAGEEXEC) && (elf_phdata[i].p_flags & PF_NOPAGEEXEC)) ||
 +      for (i = 0UL; i < elf_ex->e_phnum; i++)
 +              if (elf_phdata[i].p_type == PT_PAX_FLAGS) {
 +                      if (((elf_phdata[i].p_flags & PF_PAGEEXEC) && (elf_phdata[i].p_flags & PF_NOPAGEEXEC)) ||
@@ -42140,34 +42449,173 @@ index 21ac5ee..171b1d0 100644
 +                          ((elf_phdata[i].p_flags & PF_EMUTRAMP) && (elf_phdata[i].p_flags & PF_NOEMUTRAMP)) ||
 +                          ((elf_phdata[i].p_flags & PF_MPROTECT) && (elf_phdata[i].p_flags & PF_NOMPROTECT)) ||
 +                          ((elf_phdata[i].p_flags & PF_RANDMMAP) && (elf_phdata[i].p_flags & PF_NORANDMMAP)))
 +                          ((elf_phdata[i].p_flags & PF_EMUTRAMP) && (elf_phdata[i].p_flags & PF_NOEMUTRAMP)) ||
 +                          ((elf_phdata[i].p_flags & PF_MPROTECT) && (elf_phdata[i].p_flags & PF_NOMPROTECT)) ||
 +                          ((elf_phdata[i].p_flags & PF_RANDMMAP) && (elf_phdata[i].p_flags & PF_NORANDMMAP)))
-+                              return -EINVAL;
++                              return ~0UL;
 +
 +#ifdef CONFIG_PAX_SOFTMODE
 +                      if (pax_softmode)
 +
 +#ifdef CONFIG_PAX_SOFTMODE
 +                      if (pax_softmode)
-+                              pax_flags = pax_parse_softmode(&elf_phdata[i]);
++                              return pax_parse_pt_pax_softmode(&elf_phdata[i]);
 +                      else
 +#endif
 +
 +                      else
 +#endif
 +
-+                              pax_flags = pax_parse_hardmode(&elf_phdata[i]);
-+                      found_flags = 1;
++                              return pax_parse_pt_pax_hardmode(&elf_phdata[i]);
 +                      break;
 +              }
 +#endif
 +
 +                      break;
 +              }
 +#endif
 +
-+#if !defined(CONFIG_PAX_EI_PAX) && defined(CONFIG_PAX_PT_PAX_FLAGS)
-+      if (found_flags == 0) {
-+              struct elf_phdr phdr;
-+              memset(&phdr, 0, sizeof(phdr));
-+              phdr.p_flags = PF_NOEMUTRAMP;
-+#ifdef CONFIG_PAX_SOFTMODE
-+              if (pax_softmode)
-+                      pax_flags = pax_parse_softmode(&phdr);
++      return ~0UL;
++}
++
++#ifdef CONFIG_PAX_XATTR_PAX_FLAGS
++static unsigned long pax_parse_xattr_pax_softmode(unsigned long pax_flags_softmode)
++{
++      unsigned long pax_flags = 0UL;
++
++#ifdef CONFIG_PAX_PAGEEXEC
++      if (pax_flags_softmode & MF_PAX_PAGEEXEC)
++              pax_flags |= MF_PAX_PAGEEXEC;
++#endif
++
++#ifdef CONFIG_PAX_SEGMEXEC
++      if (pax_flags_softmode & MF_PAX_SEGMEXEC)
++              pax_flags |= MF_PAX_SEGMEXEC;
++#endif
++
++#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_PAX_SEGMEXEC)
++      if ((pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) == (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
++              if ((__supported_pte_mask & _PAGE_NX))
++                      pax_flags &= ~MF_PAX_SEGMEXEC;
 +              else
 +              else
++                      pax_flags &= ~MF_PAX_PAGEEXEC;
++      }
 +#endif
 +#endif
-+                      pax_flags = pax_parse_hardmode(&phdr);
++
++#ifdef CONFIG_PAX_EMUTRAMP
++      if (pax_flags_softmode & MF_PAX_EMUTRAMP)
++              pax_flags |= MF_PAX_EMUTRAMP;
++#endif
++
++#ifdef CONFIG_PAX_MPROTECT
++      if (pax_flags_softmode & MF_PAX_MPROTECT)
++              pax_flags |= MF_PAX_MPROTECT;
++#endif
++
++#if defined(CONFIG_PAX_RANDMMAP) || defined(CONFIG_PAX_RANDUSTACK)
++      if (randomize_va_space && (pax_flags_softmode & MF_PAX_RANDMMAP))
++              pax_flags |= MF_PAX_RANDMMAP;
++#endif
++
++      return pax_flags;
++}
++
++static unsigned long pax_parse_xattr_pax_hardmode(unsigned long pax_flags_hardmode)
++{
++      unsigned long pax_flags = 0UL;
++
++#ifdef CONFIG_PAX_PAGEEXEC
++      if (!(pax_flags_hardmode & MF_PAX_PAGEEXEC))
++              pax_flags |= MF_PAX_PAGEEXEC;
++#endif
++
++#ifdef CONFIG_PAX_SEGMEXEC
++      if (!(pax_flags_hardmode & MF_PAX_SEGMEXEC))
++              pax_flags |= MF_PAX_SEGMEXEC;
++#endif
++
++#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_PAX_SEGMEXEC)
++      if ((pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) == (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
++              if ((__supported_pte_mask & _PAGE_NX))
++                      pax_flags &= ~MF_PAX_SEGMEXEC;
++              else
++                      pax_flags &= ~MF_PAX_PAGEEXEC;
 +      }
 +#endif
 +
 +      }
 +#endif
 +
++#ifdef CONFIG_PAX_EMUTRAMP
++      if (!(pax_flags_hardmode & MF_PAX_EMUTRAMP))
++              pax_flags |= MF_PAX_EMUTRAMP;
++#endif
++
++#ifdef CONFIG_PAX_MPROTECT
++      if (!(pax_flags_hardmode & MF_PAX_MPROTECT))
++              pax_flags |= MF_PAX_MPROTECT;
++#endif
++
++#if defined(CONFIG_PAX_RANDMMAP) || defined(CONFIG_PAX_RANDUSTACK)
++      if (randomize_va_space && !(pax_flags_hardmode & MF_PAX_RANDMMAP))
++              pax_flags |= MF_PAX_RANDMMAP;
++#endif
++
++      return pax_flags;
++}
++#endif
++
++static unsigned long pax_parse_xattr_pax(struct file * const file)
++{
++
++#ifdef CONFIG_PAX_XATTR_PAX_FLAGS
++      ssize_t xattr_size, i;
++      unsigned char xattr_value[5];
++      unsigned long pax_flags_hardmode = 0UL, pax_flags_softmode = 0UL;
++
++      xattr_size = vfs_getxattr(file->f_path.dentry, XATTR_NAME_PAX_FLAGS, xattr_value, sizeof xattr_value);
++      if (xattr_size <= 0)
++              return ~0UL;
++
++      for (i = 0; i < xattr_size; i++)
++              switch (xattr_value[i]) {
++              default:
++                      return ~0UL;
++
++#define parse_flag(option1, option2, flag)                    \
++              case option1:                                   \
++                      pax_flags_hardmode |= MF_PAX_##flag;    \
++                      break;                                  \
++              case option2:                                   \
++                      pax_flags_softmode |= MF_PAX_##flag;    \
++                      break;
++
++              parse_flag('p', 'P', PAGEEXEC);
++              parse_flag('e', 'E', EMUTRAMP);
++              parse_flag('m', 'M', MPROTECT);
++              parse_flag('r', 'R', RANDMMAP);
++              parse_flag('s', 'S', SEGMEXEC);
++
++#undef parse_flag
++              }
++
++      if (pax_flags_hardmode & pax_flags_softmode)
++              return ~0UL;
++
++#ifdef CONFIG_PAX_SOFTMODE
++      if (pax_softmode)
++              return pax_parse_xattr_pax_softmode(pax_flags_softmode);
++      else
++#endif
++
++              return pax_parse_xattr_pax_hardmode(pax_flags_hardmode);
++#else
++      return ~0UL;
++#endif
++
++}
++
++static long pax_parse_pax_flags(const struct elfhdr * const elf_ex, const struct elf_phdr * const elf_phdata, struct file * const file)
++{
++      unsigned long pax_flags, pt_pax_flags, xattr_pax_flags;
++
++      pax_flags = pax_parse_ei_pax(elf_ex);
++      pt_pax_flags = pax_parse_pt_pax(elf_ex, elf_phdata);
++      xattr_pax_flags = pax_parse_xattr_pax(file);
++
++      if (pt_pax_flags == ~0UL)
++              pt_pax_flags = xattr_pax_flags;
++      else if (xattr_pax_flags == ~0UL)
++              xattr_pax_flags = pt_pax_flags;
++      if (pt_pax_flags != xattr_pax_flags)
++              return -EINVAL;
++      if (pt_pax_flags != ~0UL)
++              pax_flags = pt_pax_flags;
++
 +      if (0 > pax_check_flags(&pax_flags))
 +              return -EINVAL;
 +
 +      if (0 > pax_check_flags(&pax_flags))
 +              return -EINVAL;
 +
@@ -42179,7 +42627,7 @@ index 21ac5ee..171b1d0 100644
  /*
   * These are the functions used to load ELF style executables and shared
   * libraries.  There is no binary dependent code anywhere else.
  /*
   * These are the functions used to load ELF style executables and shared
   * libraries.  There is no binary dependent code anywhere else.
-@@ -544,6 +756,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top)
+@@ -544,6 +913,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top)
  {
        unsigned int random_variable = 0;
  
  {
        unsigned int random_variable = 0;
  
@@ -42191,7 +42639,7 @@ index 21ac5ee..171b1d0 100644
        if ((current->flags & PF_RANDOMIZE) &&
                !(current->personality & ADDR_NO_RANDOMIZE)) {
                random_variable = get_random_int() & STACK_RND_MASK;
        if ((current->flags & PF_RANDOMIZE) &&
                !(current->personality & ADDR_NO_RANDOMIZE)) {
                random_variable = get_random_int() & STACK_RND_MASK;
-@@ -562,7 +779,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
+@@ -562,7 +936,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
        unsigned long load_addr = 0, load_bias = 0;
        int load_addr_set = 0;
        char * elf_interpreter = NULL;
        unsigned long load_addr = 0, load_bias = 0;
        int load_addr_set = 0;
        char * elf_interpreter = NULL;
@@ -42200,7 +42648,7 @@ index 21ac5ee..171b1d0 100644
        struct elf_phdr *elf_ppnt, *elf_phdata;
        unsigned long elf_bss, elf_brk;
        int retval, i;
        struct elf_phdr *elf_ppnt, *elf_phdata;
        unsigned long elf_bss, elf_brk;
        int retval, i;
-@@ -572,11 +789,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
+@@ -572,11 +946,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
        unsigned long start_code, end_code, start_data, end_data;
        unsigned long reloc_func_desc __maybe_unused = 0;
        int executable_stack = EXSTACK_DEFAULT;
        unsigned long start_code, end_code, start_data, end_data;
        unsigned long reloc_func_desc __maybe_unused = 0;
        int executable_stack = EXSTACK_DEFAULT;
@@ -42213,7 +42661,7 @@ index 21ac5ee..171b1d0 100644
  
        loc = kmalloc(sizeof(*loc), GFP_KERNEL);
        if (!loc) {
  
        loc = kmalloc(sizeof(*loc), GFP_KERNEL);
        if (!loc) {
-@@ -713,11 +930,81 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
+@@ -713,11 +1087,81 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
  
        /* OK, This is the point of no return */
        current->flags &= ~PF_FORKNOEXEC;
  
        /* OK, This is the point of no return */
        current->flags &= ~PF_FORKNOEXEC;
@@ -42238,8 +42686,8 @@ index 21ac5ee..171b1d0 100644
 +
 +      current->mm->def_flags = 0;
 +
 +
 +      current->mm->def_flags = 0;
 +
-+#if defined(CONFIG_PAX_EI_PAX) || defined(CONFIG_PAX_PT_PAX_FLAGS)
-+      if (0 > pax_parse_elf_flags(&loc->elf_ex, elf_phdata)) {
++#if defined(CONFIG_PAX_EI_PAX) || defined(CONFIG_PAX_PT_PAX_FLAGS) || defined(CONFIG_PAX_XATTR_PAX_FLAGS)
++      if (0 > pax_parse_pax_flags(&loc->elf_ex, elf_phdata, bprm->file)) {
 +              send_sig(SIGKILL, current, 0);
 +              goto out_free_dentry;
 +      }
 +              send_sig(SIGKILL, current, 0);
 +              goto out_free_dentry;
 +      }
@@ -42296,7 +42744,7 @@ index 21ac5ee..171b1d0 100644
        if (elf_read_implies_exec(loc->elf_ex, executable_stack))
                current->personality |= READ_IMPLIES_EXEC;
  
        if (elf_read_implies_exec(loc->elf_ex, executable_stack))
                current->personality |= READ_IMPLIES_EXEC;
  
-@@ -808,6 +1095,20 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
+@@ -808,6 +1252,20 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
  #else
                        load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
  #endif
  #else
                        load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
  #endif
@@ -42317,7 +42765,7 @@ index 21ac5ee..171b1d0 100644
                }
  
                error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
                }
  
                error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
-@@ -840,9 +1141,9 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
+@@ -840,9 +1298,9 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
                 * allowed task size. Note that p_filesz must always be
                 * <= p_memsz so it is only necessary to check p_memsz.
                 */
                 * allowed task size. Note that p_filesz must always be
                 * <= p_memsz so it is only necessary to check p_memsz.
                 */
@@ -42330,19 +42778,19 @@ index 21ac5ee..171b1d0 100644
                        /* set_brk can never work. Avoid overflows. */
                        send_sig(SIGKILL, current, 0);
                        retval = -EINVAL;
                        /* set_brk can never work. Avoid overflows. */
                        send_sig(SIGKILL, current, 0);
                        retval = -EINVAL;
-@@ -870,6 +1171,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
+@@ -870,6 +1328,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
        start_data += load_bias;
        end_data += load_bias;
  
 +#ifdef CONFIG_PAX_RANDMMAP
 +      if (current->mm->pax_flags & MF_PAX_RANDMMAP)
        start_data += load_bias;
        end_data += load_bias;
  
 +#ifdef CONFIG_PAX_RANDMMAP
 +      if (current->mm->pax_flags & MF_PAX_RANDMMAP)
-+              elf_brk += PAGE_SIZE + ((pax_get_random_long() & ~PAGE_MASK) << 4);
++              elf_brk += PAGE_SIZE + ((pax_get_random_long() & ((1UL << 22) - 1UL)) << 4);
 +#endif
 +
        /* Calling set_brk effectively mmaps the pages that we need
         * for the bss and break sections.  We must do this before
         * mapping in the interpreter, to make sure it doesn't wind
 +#endif
 +
        /* Calling set_brk effectively mmaps the pages that we need
         * for the bss and break sections.  We must do this before
         * mapping in the interpreter, to make sure it doesn't wind
-@@ -881,9 +1187,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
+@@ -881,9 +1344,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
                goto out_free_dentry;
        }
        if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
                goto out_free_dentry;
        }
        if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
@@ -42357,7 +42805,7 @@ index 21ac5ee..171b1d0 100644
        }
  
        if (elf_interpreter) {
        }
  
        if (elf_interpreter) {
-@@ -1098,7 +1406,7 @@ out:
+@@ -1098,7 +1563,7 @@ out:
   * Decide what to dump of a segment, part, all or none.
   */
  static unsigned long vma_dump_size(struct vm_area_struct *vma,
   * Decide what to dump of a segment, part, all or none.
   */
  static unsigned long vma_dump_size(struct vm_area_struct *vma,
@@ -42366,7 +42814,7 @@ index 21ac5ee..171b1d0 100644
  {
  #define FILTER(type)  (mm_flags & (1UL << MMF_DUMP_##type))
  
  {
  #define FILTER(type)  (mm_flags & (1UL << MMF_DUMP_##type))
  
-@@ -1132,7 +1440,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
+@@ -1132,7 +1597,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
        if (vma->vm_file == NULL)
                return 0;
  
        if (vma->vm_file == NULL)
                return 0;
  
@@ -42375,7 +42823,7 @@ index 21ac5ee..171b1d0 100644
                goto whole;
  
        /*
                goto whole;
  
        /*
-@@ -1354,9 +1662,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
+@@ -1354,9 +1819,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
  {
        elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
        int i = 0;
  {
        elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
        int i = 0;
@@ -42387,7 +42835,7 @@ index 21ac5ee..171b1d0 100644
        fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
  }
  
        fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
  }
  
-@@ -1862,14 +2170,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
+@@ -1862,14 +2327,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
  }
  
  static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma,
  }
  
  static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma,
@@ -42404,7 +42852,7 @@ index 21ac5ee..171b1d0 100644
        return size;
  }
  
        return size;
  }
  
-@@ -1963,7 +2271,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -1963,7 +2428,7 @@ static int elf_core_dump(struct coredump_params *cprm)
  
        dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
  
  
        dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
  
@@ -42413,7 +42861,7 @@ index 21ac5ee..171b1d0 100644
        offset += elf_core_extra_data_size();
        e_shoff = offset;
  
        offset += elf_core_extra_data_size();
        e_shoff = offset;
  
-@@ -1977,10 +2285,12 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -1977,10 +2442,12 @@ static int elf_core_dump(struct coredump_params *cprm)
        offset = dataoff;
  
        size += sizeof(*elf);
        offset = dataoff;
  
        size += sizeof(*elf);
@@ -42426,7 +42874,7 @@ index 21ac5ee..171b1d0 100644
        if (size > cprm->limit
            || !dump_write(cprm->file, phdr4note, sizeof(*phdr4note)))
                goto end_coredump;
        if (size > cprm->limit
            || !dump_write(cprm->file, phdr4note, sizeof(*phdr4note)))
                goto end_coredump;
-@@ -1994,7 +2304,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -1994,7 +2461,7 @@ static int elf_core_dump(struct coredump_params *cprm)
                phdr.p_offset = offset;
                phdr.p_vaddr = vma->vm_start;
                phdr.p_paddr = 0;
                phdr.p_offset = offset;
                phdr.p_vaddr = vma->vm_start;
                phdr.p_paddr = 0;
@@ -42435,7 +42883,7 @@ index 21ac5ee..171b1d0 100644
                phdr.p_memsz = vma->vm_end - vma->vm_start;
                offset += phdr.p_filesz;
                phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
                phdr.p_memsz = vma->vm_end - vma->vm_start;
                offset += phdr.p_filesz;
                phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
-@@ -2005,6 +2315,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -2005,6 +2472,7 @@ static int elf_core_dump(struct coredump_params *cprm)
                phdr.p_align = ELF_EXEC_PAGESIZE;
  
                size += sizeof(phdr);
                phdr.p_align = ELF_EXEC_PAGESIZE;
  
                size += sizeof(phdr);
@@ -42443,7 +42891,7 @@ index 21ac5ee..171b1d0 100644
                if (size > cprm->limit
                    || !dump_write(cprm->file, &phdr, sizeof(phdr)))
                        goto end_coredump;
                if (size > cprm->limit
                    || !dump_write(cprm->file, &phdr, sizeof(phdr)))
                        goto end_coredump;
-@@ -2029,7 +2340,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -2029,7 +2497,7 @@ static int elf_core_dump(struct coredump_params *cprm)
                unsigned long addr;
                unsigned long end;
  
                unsigned long addr;
                unsigned long end;
  
@@ -42452,7 +42900,7 @@ index 21ac5ee..171b1d0 100644
  
                for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
                        struct page *page;
  
                for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
                        struct page *page;
-@@ -2038,6 +2349,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -2038,6 +2506,7 @@ static int elf_core_dump(struct coredump_params *cprm)
                        page = get_dump_page(addr);
                        if (page) {
                                void *kaddr = kmap(page);
                        page = get_dump_page(addr);
                        if (page) {
                                void *kaddr = kmap(page);
@@ -42460,7 +42908,7 @@ index 21ac5ee..171b1d0 100644
                                stop = ((size += PAGE_SIZE) > cprm->limit) ||
                                        !dump_write(cprm->file, kaddr,
                                                    PAGE_SIZE);
                                stop = ((size += PAGE_SIZE) > cprm->limit) ||
                                        !dump_write(cprm->file, kaddr,
                                                    PAGE_SIZE);
-@@ -2055,6 +2367,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -2055,6 +2524,7 @@ static int elf_core_dump(struct coredump_params *cprm)
  
        if (e_phnum == PN_XNUM) {
                size += sizeof(*shdr4extnum);
  
        if (e_phnum == PN_XNUM) {
                size += sizeof(*shdr4extnum);
@@ -42468,7 +42916,7 @@ index 21ac5ee..171b1d0 100644
                if (size > cprm->limit
                    || !dump_write(cprm->file, shdr4extnum,
                                   sizeof(*shdr4extnum)))
                if (size > cprm->limit
                    || !dump_write(cprm->file, shdr4extnum,
                                   sizeof(*shdr4extnum)))
-@@ -2075,6 +2388,97 @@ out:
+@@ -2075,6 +2545,97 @@ out:
  
  #endif                /* CONFIG_ELF_CORE */
  
  
  #endif                /* CONFIG_ELF_CORE */
  
@@ -42603,7 +43051,7 @@ index 1bffbe0..c8c283e 100644
                        goto err;
                }
 diff --git a/fs/bio.c b/fs/bio.c
                        goto err;
                }
 diff --git a/fs/bio.c b/fs/bio.c
-index 9bfade8..782f3b9 100644
+index b1fe82c..84da0a9 100644
 --- a/fs/bio.c
 +++ b/fs/bio.c
 @@ -1233,7 +1233,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
 --- a/fs/bio.c
 +++ b/fs/bio.c
 @@ -1233,7 +1233,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
@@ -42616,7 +43064,7 @@ index 9bfade8..782f3b9 100644
        __bio_for_each_segment(bvec, bio, i, 0) {
                char *addr = page_address(bvec->bv_page);
 diff --git a/fs/block_dev.c b/fs/block_dev.c
        __bio_for_each_segment(bvec, bio, i, 0) {
                char *addr = page_address(bvec->bv_page);
 diff --git a/fs/block_dev.c b/fs/block_dev.c
-index 1c44b8d..e2507b4 100644
+index abe9b48..5df59e8 100644
 --- a/fs/block_dev.c
 +++ b/fs/block_dev.c
 @@ -681,7 +681,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole,
 --- a/fs/block_dev.c
 +++ b/fs/block_dev.c
 @@ -681,7 +681,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole,
@@ -42629,7 +43077,7 @@ index 1c44b8d..e2507b4 100644
        else if (whole->bd_holder != NULL)
                return false;    /* is a partition of a held device */
 diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
        else if (whole->bd_holder != NULL)
                return false;    /* is a partition of a held device */
 diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
-index 011cab3..9ace713 100644
+index dede441..f2a2507 100644
 --- a/fs/btrfs/ctree.c
 +++ b/fs/btrfs/ctree.c
 @@ -488,9 +488,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
 --- a/fs/btrfs/ctree.c
 +++ b/fs/btrfs/ctree.c
 @@ -488,9 +488,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
@@ -42649,10 +43097,10 @@ index 011cab3..9ace713 100644
  
                WARN_ON(trans->transid != btrfs_header_generation(parent));
 diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
  
                WARN_ON(trans->transid != btrfs_header_generation(parent));
 diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
-index b2d004a..6bb543d 100644
+index fd1a06d..6e9033d 100644
 --- a/fs/btrfs/inode.c
 +++ b/fs/btrfs/inode.c
 --- a/fs/btrfs/inode.c
 +++ b/fs/btrfs/inode.c
-@@ -6922,7 +6922,7 @@ fail:
+@@ -6895,7 +6895,7 @@ fail:
        return -ENOMEM;
  }
  
        return -ENOMEM;
  }
  
@@ -42661,7 +43109,7 @@ index b2d004a..6bb543d 100644
                         struct dentry *dentry, struct kstat *stat)
  {
        struct inode *inode = dentry->d_inode;
                         struct dentry *dentry, struct kstat *stat)
  {
        struct inode *inode = dentry->d_inode;
-@@ -6934,6 +6934,14 @@ static int btrfs_getattr(struct vfsmount *mnt,
+@@ -6909,6 +6909,14 @@ static int btrfs_getattr(struct vfsmount *mnt,
        return 0;
  }
  
        return 0;
  }
  
@@ -42677,10 +43125,10 @@ index b2d004a..6bb543d 100644
   * If a file is moved, it will inherit the cow and compression flags of the new
   * directory.
 diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
   * If a file is moved, it will inherit the cow and compression flags of the new
   * directory.
 diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
-index dae5dfe..6aa01b1 100644
+index c04f02c..f5c9e2e 100644
 --- a/fs/btrfs/ioctl.c
 +++ b/fs/btrfs/ioctl.c
 --- a/fs/btrfs/ioctl.c
 +++ b/fs/btrfs/ioctl.c
-@@ -2704,9 +2704,12 @@ long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
+@@ -2733,9 +2733,12 @@ long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
        for (i = 0; i < num_types; i++) {
                struct btrfs_space_info *tmp;
  
        for (i = 0; i < num_types; i++) {
                struct btrfs_space_info *tmp;
  
@@ -42693,7 +43141,7 @@ index dae5dfe..6aa01b1 100644
                info = NULL;
                rcu_read_lock();
                list_for_each_entry_rcu(tmp, &root->fs_info->space_info,
                info = NULL;
                rcu_read_lock();
                list_for_each_entry_rcu(tmp, &root->fs_info->space_info,
-@@ -2728,15 +2731,12 @@ long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
+@@ -2757,15 +2760,12 @@ long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
                                memcpy(dest, &space, sizeof(space));
                                dest++;
                                space_args.total_spaces++;
                                memcpy(dest, &space, sizeof(space));
                                dest++;
                                space_args.total_spaces++;
@@ -42711,10 +43159,10 @@ index dae5dfe..6aa01b1 100644
  
        if (copy_to_user(user_dest, dest_orig, alloc_size))
 diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
  
        if (copy_to_user(user_dest, dest_orig, alloc_size))
 diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
-index 59bb176..be9977d 100644
+index cfb5543..1ae7347 100644
 --- a/fs/btrfs/relocation.c
 +++ b/fs/btrfs/relocation.c
 --- a/fs/btrfs/relocation.c
 +++ b/fs/btrfs/relocation.c
-@@ -1242,7 +1242,7 @@ static int __update_reloc_root(struct btrfs_root *root, int del)
+@@ -1244,7 +1244,7 @@ static int __update_reloc_root(struct btrfs_root *root, int del)
        }
        spin_unlock(&rc->reloc_root_tree.lock);
  
        }
        spin_unlock(&rc->reloc_root_tree.lock);
  
@@ -42878,7 +43326,7 @@ index 0e3c092..818480e 100644
                        kunmap(page);
                        if (ret != len)
 diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
                        kunmap(page);
                        if (ret != len)
 diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
-index 382abc9..bd89646 100644
+index 9895400..78a67e7 100644
 --- a/fs/ceph/dir.c
 +++ b/fs/ceph/dir.c
 @@ -244,7 +244,7 @@ static int ceph_readdir(struct file *filp, void *dirent, filldir_t filldir)
 --- a/fs/ceph/dir.c
 +++ b/fs/ceph/dir.c
 @@ -244,7 +244,7 @@ static int ceph_readdir(struct file *filp, void *dirent, filldir_t filldir)
@@ -42890,8 +43338,31 @@ index 382abc9..bd89646 100644
        int err;
        u32 ftype;
        struct ceph_mds_reply_info_parsed *rinfo;
        int err;
        u32 ftype;
        struct ceph_mds_reply_info_parsed *rinfo;
+@@ -598,7 +598,7 @@ static struct dentry *ceph_lookup(struct inode *dir, struct dentry *dentry,
+       if (nd &&
+           (nd->flags & LOOKUP_OPEN) &&
+           !(nd->intent.open.flags & O_CREAT)) {
+-              int mode = nd->intent.open.create_mode & ~current->fs->umask;
++              int mode = nd->intent.open.create_mode & ~current_umask();
+               return ceph_lookup_open(dir, dentry, nd, mode, 1);
+       }
+diff --git a/fs/cifs/asn1.c b/fs/cifs/asn1.c
+index cfd1ce3..6b13a74 100644
+--- a/fs/cifs/asn1.c
++++ b/fs/cifs/asn1.c
+@@ -416,6 +416,9 @@ asn1_subid_decode(struct asn1_ctx *ctx, unsigned long *subid)
+ static int
+ asn1_oid_decode(struct asn1_ctx *ctx,
++              unsigned char *eoc, unsigned long **oid, unsigned int *len) __size_overflow(2);
++static int
++asn1_oid_decode(struct asn1_ctx *ctx,
+               unsigned char *eoc, unsigned long **oid, unsigned int *len)
+ {
+       unsigned long subid;
 diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
 diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
-index 6d40656..bc1f825 100644
+index 84e8c07..6170d31 100644
 --- a/fs/cifs/cifs_debug.c
 +++ b/fs/cifs/cifs_debug.c
 @@ -265,8 +265,8 @@ static ssize_t cifs_stats_proc_write(struct file *file,
 --- a/fs/cifs/cifs_debug.c
 +++ b/fs/cifs/cifs_debug.c
 @@ -265,8 +265,8 @@ static ssize_t cifs_stats_proc_write(struct file *file,
@@ -43024,10 +43495,10 @@ index 6d40656..bc1f825 100644
                }
        }
 diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
                }
        }
 diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
-index 54b8f1e..f6a4c00 100644
+index 8f1fe32..38f9e27 100644
 --- a/fs/cifs/cifsfs.c
 +++ b/fs/cifs/cifsfs.c
 --- a/fs/cifs/cifsfs.c
 +++ b/fs/cifs/cifsfs.c
-@@ -981,7 +981,7 @@ cifs_init_request_bufs(void)
+@@ -989,7 +989,7 @@ cifs_init_request_bufs(void)
        cifs_req_cachep = kmem_cache_create("cifs_request",
                                            CIFSMaxBufSize +
                                            MAX_CIFS_HDR_SIZE, 0,
        cifs_req_cachep = kmem_cache_create("cifs_request",
                                            CIFSMaxBufSize +
                                            MAX_CIFS_HDR_SIZE, 0,
@@ -43036,7 +43507,7 @@ index 54b8f1e..f6a4c00 100644
        if (cifs_req_cachep == NULL)
                return -ENOMEM;
  
        if (cifs_req_cachep == NULL)
                return -ENOMEM;
  
-@@ -1008,7 +1008,7 @@ cifs_init_request_bufs(void)
+@@ -1016,7 +1016,7 @@ cifs_init_request_bufs(void)
        efficient to alloc 1 per page off the slab compared to 17K (5page)
        alloc of large cifs buffers even when page debugging is on */
        cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq",
        efficient to alloc 1 per page off the slab compared to 17K (5page)
        alloc of large cifs buffers even when page debugging is on */
        cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq",
@@ -43045,7 +43516,7 @@ index 54b8f1e..f6a4c00 100644
                        NULL);
        if (cifs_sm_req_cachep == NULL) {
                mempool_destroy(cifs_req_poolp);
                        NULL);
        if (cifs_sm_req_cachep == NULL) {
                mempool_destroy(cifs_req_poolp);
-@@ -1093,8 +1093,8 @@ init_cifs(void)
+@@ -1101,8 +1101,8 @@ init_cifs(void)
        atomic_set(&bufAllocCount, 0);
        atomic_set(&smBufAllocCount, 0);
  #ifdef CONFIG_CIFS_STATS2
        atomic_set(&bufAllocCount, 0);
        atomic_set(&smBufAllocCount, 0);
  #ifdef CONFIG_CIFS_STATS2
@@ -43057,10 +43528,10 @@ index 54b8f1e..f6a4c00 100644
  
        atomic_set(&midCount, 0);
 diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
  
        atomic_set(&midCount, 0);
 diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
-index 95dad9d..fe7af1a 100644
+index 8238aa1..0347196 100644
 --- a/fs/cifs/cifsglob.h
 +++ b/fs/cifs/cifsglob.h
 --- a/fs/cifs/cifsglob.h
 +++ b/fs/cifs/cifsglob.h
-@@ -381,28 +381,28 @@ struct cifs_tcon {
+@@ -392,28 +392,28 @@ struct cifs_tcon {
        __u16 Flags;            /* optional support bits */
        enum statusEnum tidStatus;
  #ifdef CONFIG_CIFS_STATS
        __u16 Flags;            /* optional support bits */
        enum statusEnum tidStatus;
  #ifdef CONFIG_CIFS_STATS
@@ -43111,7 +43582,7 @@ index 95dad9d..fe7af1a 100644
  #ifdef CONFIG_CIFS_STATS2
        unsigned long long time_writes;
        unsigned long long time_reads;
  #ifdef CONFIG_CIFS_STATS2
        unsigned long long time_writes;
        unsigned long long time_reads;
-@@ -613,7 +613,7 @@ convert_delimiter(char *path, char delim)
+@@ -628,7 +628,7 @@ convert_delimiter(char *path, char delim)
  }
  
  #ifdef CONFIG_CIFS_STATS
  }
  
  #ifdef CONFIG_CIFS_STATS
@@ -43120,7 +43591,7 @@ index 95dad9d..fe7af1a 100644
  
  static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
                                            unsigned int bytes)
  
  static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
                                            unsigned int bytes)
-@@ -953,8 +953,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
+@@ -985,8 +985,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
  /* Various Debug counters */
  GLOBAL_EXTERN atomic_t bufAllocCount;    /* current number allocated  */
  #ifdef CONFIG_CIFS_STATS2
  /* Various Debug counters */
  GLOBAL_EXTERN atomic_t bufAllocCount;    /* current number allocated  */
  #ifdef CONFIG_CIFS_STATS2
@@ -43132,10 +43603,10 @@ index 95dad9d..fe7af1a 100644
  GLOBAL_EXTERN atomic_t smBufAllocCount;
  GLOBAL_EXTERN atomic_t midCount;
 diff --git a/fs/cifs/link.c b/fs/cifs/link.c
  GLOBAL_EXTERN atomic_t smBufAllocCount;
  GLOBAL_EXTERN atomic_t midCount;
 diff --git a/fs/cifs/link.c b/fs/cifs/link.c
-index db3f18c..1f5955e 100644
+index 6b0e064..94e6c3c 100644
 --- a/fs/cifs/link.c
 +++ b/fs/cifs/link.c
 --- a/fs/cifs/link.c
 +++ b/fs/cifs/link.c
-@@ -593,7 +593,7 @@ symlink_exit:
+@@ -600,7 +600,7 @@ symlink_exit:
  
  void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *cookie)
  {
  
  void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *cookie)
  {
@@ -43145,7 +43616,7 @@ index db3f18c..1f5955e 100644
                kfree(p);
  }
 diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
                kfree(p);
  }
 diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
-index 7c16933..c8212b5 100644
+index 703ef5c..2a44ed5 100644
 --- a/fs/cifs/misc.c
 +++ b/fs/cifs/misc.c
 @@ -156,7 +156,7 @@ cifs_buf_get(void)
 --- a/fs/cifs/misc.c
 +++ b/fs/cifs/misc.c
 @@ -156,7 +156,7 @@ cifs_buf_get(void)
@@ -43215,10 +43686,10 @@ index 6901578..d402eb5 100644
  
        return hit;
 diff --git a/fs/compat.c b/fs/compat.c
  
        return hit;
 diff --git a/fs/compat.c b/fs/compat.c
-index 58b1da4..afcd9b8 100644
+index c987875..08771ca 100644
 --- a/fs/compat.c
 +++ b/fs/compat.c
 --- a/fs/compat.c
 +++ b/fs/compat.c
-@@ -133,8 +133,8 @@ asmlinkage long compat_sys_utimes(const char __user *filename, struct compat_tim
+@@ -132,8 +132,8 @@ asmlinkage long compat_sys_utimes(const char __user *filename, struct compat_tim
  static int cp_compat_stat(struct kstat *stat, struct compat_stat __user *ubuf)
  {
        compat_ino_t ino = stat->ino;
  static int cp_compat_stat(struct kstat *stat, struct compat_stat __user *ubuf)
  {
        compat_ino_t ino = stat->ino;
@@ -43229,7 +43700,7 @@ index 58b1da4..afcd9b8 100644
        int err;
  
        SET_UID(uid, stat->uid);
        int err;
  
        SET_UID(uid, stat->uid);
-@@ -508,7 +508,7 @@ compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p)
+@@ -504,7 +504,7 @@ compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p)
  
        set_fs(KERNEL_DS);
        /* The __user pointer cast is valid because of the set_fs() */
  
        set_fs(KERNEL_DS);
        /* The __user pointer cast is valid because of the set_fs() */
@@ -43238,7 +43709,7 @@ index 58b1da4..afcd9b8 100644
        set_fs(oldfs);
        /* truncating is ok because it's a user address */
        if (!ret)
        set_fs(oldfs);
        /* truncating is ok because it's a user address */
        if (!ret)
-@@ -566,7 +566,7 @@ ssize_t compat_rw_copy_check_uvector(int type,
+@@ -562,7 +562,7 @@ ssize_t compat_rw_copy_check_uvector(int type,
                goto out;
  
        ret = -EINVAL;
                goto out;
  
        ret = -EINVAL;
@@ -43247,7 +43718,7 @@ index 58b1da4..afcd9b8 100644
                goto out;
        if (nr_segs > fast_segs) {
                ret = -ENOMEM;
                goto out;
        if (nr_segs > fast_segs) {
                ret = -ENOMEM;
-@@ -848,6 +848,7 @@ struct compat_old_linux_dirent {
+@@ -845,6 +845,7 @@ struct compat_old_linux_dirent {
  
  struct compat_readdir_callback {
        struct compat_old_linux_dirent __user *dirent;
  
  struct compat_readdir_callback {
        struct compat_old_linux_dirent __user *dirent;
@@ -43255,7 +43726,7 @@ index 58b1da4..afcd9b8 100644
        int result;
  };
  
        int result;
  };
  
-@@ -865,6 +866,10 @@ static int compat_fillonedir(void *__buf, const char *name, int namlen,
+@@ -862,6 +863,10 @@ static int compat_fillonedir(void *__buf, const char *name, int namlen,
                buf->result = -EOVERFLOW;
                return -EOVERFLOW;
        }
                buf->result = -EOVERFLOW;
                return -EOVERFLOW;
        }
@@ -43266,7 +43737,7 @@ index 58b1da4..afcd9b8 100644
        buf->result++;
        dirent = buf->dirent;
        if (!access_ok(VERIFY_WRITE, dirent,
        buf->result++;
        dirent = buf->dirent;
        if (!access_ok(VERIFY_WRITE, dirent,
-@@ -897,6 +902,7 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd,
+@@ -894,6 +899,7 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd,
  
        buf.result = 0;
        buf.dirent = dirent;
  
        buf.result = 0;
        buf.dirent = dirent;
@@ -43274,7 +43745,7 @@ index 58b1da4..afcd9b8 100644
  
        error = vfs_readdir(file, compat_fillonedir, &buf);
        if (buf.result)
  
        error = vfs_readdir(file, compat_fillonedir, &buf);
        if (buf.result)
-@@ -917,6 +923,7 @@ struct compat_linux_dirent {
+@@ -914,6 +920,7 @@ struct compat_linux_dirent {
  struct compat_getdents_callback {
        struct compat_linux_dirent __user *current_dir;
        struct compat_linux_dirent __user *previous;
  struct compat_getdents_callback {
        struct compat_linux_dirent __user *current_dir;
        struct compat_linux_dirent __user *previous;
@@ -43282,7 +43753,7 @@ index 58b1da4..afcd9b8 100644
        int count;
        int error;
  };
        int count;
        int error;
  };
-@@ -938,6 +945,10 @@ static int compat_filldir(void *__buf, const char *name, int namlen,
+@@ -935,6 +942,10 @@ static int compat_filldir(void *__buf, const char *name, int namlen,
                buf->error = -EOVERFLOW;
                return -EOVERFLOW;
        }
                buf->error = -EOVERFLOW;
                return -EOVERFLOW;
        }
@@ -43293,7 +43764,7 @@ index 58b1da4..afcd9b8 100644
        dirent = buf->previous;
        if (dirent) {
                if (__put_user(offset, &dirent->d_off))
        dirent = buf->previous;
        if (dirent) {
                if (__put_user(offset, &dirent->d_off))
-@@ -985,6 +996,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd,
+@@ -982,6 +993,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd,
        buf.previous = NULL;
        buf.count = count;
        buf.error = 0;
        buf.previous = NULL;
        buf.count = count;
        buf.error = 0;
@@ -43301,7 +43772,7 @@ index 58b1da4..afcd9b8 100644
  
        error = vfs_readdir(file, compat_filldir, &buf);
        if (error >= 0)
  
        error = vfs_readdir(file, compat_filldir, &buf);
        if (error >= 0)
-@@ -1006,6 +1018,7 @@ out:
+@@ -1003,6 +1015,7 @@ out:
  struct compat_getdents_callback64 {
        struct linux_dirent64 __user *current_dir;
        struct linux_dirent64 __user *previous;
  struct compat_getdents_callback64 {
        struct linux_dirent64 __user *current_dir;
        struct linux_dirent64 __user *previous;
@@ -43309,7 +43780,7 @@ index 58b1da4..afcd9b8 100644
        int count;
        int error;
  };
        int count;
        int error;
  };
-@@ -1022,6 +1035,10 @@ static int compat_filldir64(void * __buf, const char * name, int namlen, loff_t
+@@ -1019,6 +1032,10 @@ static int compat_filldir64(void * __buf, const char * name, int namlen, loff_t
        buf->error = -EINVAL;   /* only used if we fail.. */
        if (reclen > buf->count)
                return -EINVAL;
        buf->error = -EINVAL;   /* only used if we fail.. */
        if (reclen > buf->count)
                return -EINVAL;
@@ -43320,7 +43791,7 @@ index 58b1da4..afcd9b8 100644
        dirent = buf->previous;
  
        if (dirent) {
        dirent = buf->previous;
  
        if (dirent) {
-@@ -1073,13 +1090,14 @@ asmlinkage long compat_sys_getdents64(unsigned int fd,
+@@ -1070,13 +1087,14 @@ asmlinkage long compat_sys_getdents64(unsigned int fd,
        buf.previous = NULL;
        buf.count = count;
        buf.error = 0;
        buf.previous = NULL;
        buf.count = count;
        buf.error = 0;
@@ -43336,15 +43807,6 @@ index 58b1da4..afcd9b8 100644
                if (__put_user_unaligned(d_off, &lastdirent->d_off))
                        error = -EFAULT;
                else
                if (__put_user_unaligned(d_off, &lastdirent->d_off))
                        error = -EFAULT;
                else
-@@ -1446,6 +1464,8 @@ int compat_core_sys_select(int n, compat_ulong_t __user *inp,
-       struct fdtable *fdt;
-       long stack_fds[SELECT_STACK_ALLOC/sizeof(long)];
-+      pax_track_stack();
-+
-       if (n < 0)
-               goto out_nofds;
 diff --git a/fs/compat_binfmt_elf.c b/fs/compat_binfmt_elf.c
 index 112e45a..b59845b 100644
 --- a/fs/compat_binfmt_elf.c
 diff --git a/fs/compat_binfmt_elf.c b/fs/compat_binfmt_elf.c
 index 112e45a..b59845b 100644
 --- a/fs/compat_binfmt_elf.c
@@ -43434,10 +43896,10 @@ index 9a37a9b..35792b6 100644
                                /*
                                 * We'll have a dentry and an inode for
 diff --git a/fs/dcache.c b/fs/dcache.c
                                /*
                                 * We'll have a dentry and an inode for
 diff --git a/fs/dcache.c b/fs/dcache.c
-index a88948b..1e32160 100644
+index f7908ae..920a680 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
-@@ -2998,7 +2998,7 @@ void __init vfs_caches_init(unsigned long mempages)
+@@ -3042,7 +3042,7 @@ void __init vfs_caches_init(unsigned long mempages)
        mempages -= reserve;
  
        names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
        mempages -= reserve;
  
        names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
@@ -43446,8 +43908,24 @@ index a88948b..1e32160 100644
  
        dcache_init();
        inode_init();
  
        dcache_init();
        inode_init();
+diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
+index f3a257d..715ac0f 100644
+--- a/fs/debugfs/inode.c
++++ b/fs/debugfs/inode.c
+@@ -261,7 +261,11 @@ EXPORT_SYMBOL_GPL(debugfs_create_file);
+ struct dentry *debugfs_create_dir(const char *name, struct dentry *parent)
+ {
+       return debugfs_create_file(name, 
++#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
++                                 S_IFDIR | S_IRWXU,
++#else
+                                  S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO,
++#endif
+                                  parent, NULL, NULL);
+ }
+ EXPORT_SYMBOL_GPL(debugfs_create_dir);
 diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
 diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
-index 528da01..bd8c23d 100644
+index af11098..81e3bbe 100644
 --- a/fs/ecryptfs/inode.c
 +++ b/fs/ecryptfs/inode.c
 @@ -691,7 +691,7 @@ static int ecryptfs_readlink_lower(struct dentry *dentry, char **buf,
 --- a/fs/ecryptfs/inode.c
 +++ b/fs/ecryptfs/inode.c
 @@ -691,7 +691,7 @@ static int ecryptfs_readlink_lower(struct dentry *dentry, char **buf,
@@ -43478,7 +43956,7 @@ index 528da01..bd8c23d 100644
                /* Free the char* */
                kfree(buf);
 diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
                /* Free the char* */
                kfree(buf);
 diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
-index 940a82e..63af89e 100644
+index 0dc5a3d..d3cdeea 100644
 --- a/fs/ecryptfs/miscdev.c
 +++ b/fs/ecryptfs/miscdev.c
 @@ -328,7 +328,7 @@ check_list:
 --- a/fs/ecryptfs/miscdev.c
 +++ b/fs/ecryptfs/miscdev.c
 @@ -328,7 +328,7 @@ check_list:
@@ -43491,7 +43969,7 @@ index 940a82e..63af89e 100644
                i += packet_length_size;
                if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
 diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c
                i += packet_length_size;
                if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
 diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c
-index 3745f7c..89cc7a3 100644
+index 608c1c3..7d040a8 100644
 --- a/fs/ecryptfs/read_write.c
 +++ b/fs/ecryptfs/read_write.c
 @@ -48,7 +48,7 @@ int ecryptfs_write_lower(struct inode *ecryptfs_inode, char *data,
 --- a/fs/ecryptfs/read_write.c
 +++ b/fs/ecryptfs/read_write.c
 @@ -48,7 +48,7 @@ int ecryptfs_write_lower(struct inode *ecryptfs_inode, char *data,
@@ -43503,7 +43981,7 @@ index 3745f7c..89cc7a3 100644
        set_fs(fs_save);
        mark_inode_dirty_sync(ecryptfs_inode);
        return rc;
        set_fs(fs_save);
        mark_inode_dirty_sync(ecryptfs_inode);
        return rc;
-@@ -235,7 +235,7 @@ int ecryptfs_read_lower(char *data, loff_t offset, size_t size,
+@@ -244,7 +244,7 @@ int ecryptfs_read_lower(char *data, loff_t offset, size_t size,
                return -EIO;
        fs_save = get_fs();
        set_fs(get_ds());
                return -EIO;
        fs_save = get_fs();
        set_fs(get_ds());
@@ -43513,10 +43991,10 @@ index 3745f7c..89cc7a3 100644
        return rc;
  }
 diff --git a/fs/exec.c b/fs/exec.c
        return rc;
  }
 diff --git a/fs/exec.c b/fs/exec.c
-index 25dcbe5..4ffaa78 100644
+index 3625464..ff895b9 100644
 --- a/fs/exec.c
 +++ b/fs/exec.c
 --- a/fs/exec.c
 +++ b/fs/exec.c
-@@ -55,12 +55,24 @@
+@@ -55,12 +55,28 @@
  #include <linux/pipe_fs_i.h>
  #include <linux/oom.h>
  #include <linux/compat.h>
  #include <linux/pipe_fs_i.h>
  #include <linux/oom.h>
  #include <linux/compat.h>
@@ -43533,6 +44011,10 @@ index 25dcbe5..4ffaa78 100644
  #include <asm/tlb.h>
  #include "internal.h"
  
  #include <asm/tlb.h>
  #include "internal.h"
  
++#ifndef CONFIG_PAX_HAVE_ACL_FLAGS
++void __weak pax_set_initial_flags(struct linux_binprm *bprm) {}
++#endif
++
 +#ifdef CONFIG_PAX_HOOK_ACL_FLAGS
 +void (*pax_set_initial_flags_func)(struct linux_binprm *bprm);
 +EXPORT_SYMBOL(pax_set_initial_flags_func);
 +#ifdef CONFIG_PAX_HOOK_ACL_FLAGS
 +void (*pax_set_initial_flags_func)(struct linux_binprm *bprm);
 +EXPORT_SYMBOL(pax_set_initial_flags_func);
@@ -43541,7 +44023,7 @@ index 25dcbe5..4ffaa78 100644
  int core_uses_pid;
  char core_pattern[CORENAME_MAX_SIZE] = "core";
  unsigned int core_pipe_limit;
  int core_uses_pid;
  char core_pattern[CORENAME_MAX_SIZE] = "core";
  unsigned int core_pipe_limit;
-@@ -70,7 +82,7 @@ struct core_name {
+@@ -70,7 +86,7 @@ struct core_name {
        char *corename;
        int used, size;
  };
        char *corename;
        int used, size;
  };
@@ -43550,7 +44032,7 @@ index 25dcbe5..4ffaa78 100644
  
  /* The maximal length of core_pattern is also specified in sysctl.c */
  
  
  /* The maximal length of core_pattern is also specified in sysctl.c */
  
-@@ -188,18 +200,10 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
+@@ -188,18 +204,10 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
                int write)
  {
        struct page *page;
                int write)
  {
        struct page *page;
@@ -43572,7 +44054,25 @@ index 25dcbe5..4ffaa78 100644
                return NULL;
  
        if (write) {
                return NULL;
  
        if (write) {
-@@ -274,6 +278,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
+@@ -215,6 +223,17 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
+               if (size <= ARG_MAX)
+                       return page;
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++              // only allow 512KB for argv+env on suid/sgid binaries
++              // to prevent easy ASLR exhaustion
++              if (((bprm->cred->euid != current_euid()) ||
++                   (bprm->cred->egid != current_egid())) &&
++                  (size > (512 * 1024))) {
++                      put_page(page);
++                      return NULL;
++              }
++#endif
++
+               /*
+                * Limit to 1/4-th the stack size for the argv+env strings.
+                * This ensures that:
+@@ -274,6 +293,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
        vma->vm_end = STACK_TOP_MAX;
        vma->vm_start = vma->vm_end - PAGE_SIZE;
        vma->vm_flags = VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP;
        vma->vm_end = STACK_TOP_MAX;
        vma->vm_start = vma->vm_end - PAGE_SIZE;
        vma->vm_flags = VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP;
@@ -43584,20 +44084,20 @@ index 25dcbe5..4ffaa78 100644
        vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
        INIT_LIST_HEAD(&vma->anon_vma_chain);
  
        vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
        INIT_LIST_HEAD(&vma->anon_vma_chain);
  
-@@ -288,6 +297,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
+@@ -288,6 +312,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
        mm->stack_vm = mm->total_vm = 1;
        up_write(&mm->mmap_sem);
        bprm->p = vma->vm_end - sizeof(void *);
 +
 +#ifdef CONFIG_PAX_RANDUSTACK
 +      if (randomize_va_space)
        mm->stack_vm = mm->total_vm = 1;
        up_write(&mm->mmap_sem);
        bprm->p = vma->vm_end - sizeof(void *);
 +
 +#ifdef CONFIG_PAX_RANDUSTACK
 +      if (randomize_va_space)
-+              bprm->p ^= (pax_get_random_long() & ~15) & ~PAGE_MASK;
++              bprm->p ^= random32() & ~PAGE_MASK;
 +#endif
 +
        return 0;
  err:
        up_write(&mm->mmap_sem);
 +#endif
 +
        return 0;
  err:
        up_write(&mm->mmap_sem);
-@@ -396,19 +411,7 @@ err:
+@@ -396,19 +426,7 @@ err:
        return err;
  }
  
        return err;
  }
  
@@ -43618,7 +44118,7 @@ index 25dcbe5..4ffaa78 100644
  {
        const char __user *native;
  
  {
        const char __user *native;
  
-@@ -417,14 +420,14 @@ static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
+@@ -417,14 +435,14 @@ static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
                compat_uptr_t compat;
  
                if (get_user(compat, argv.ptr.compat + nr))
                compat_uptr_t compat;
  
                if (get_user(compat, argv.ptr.compat + nr))
@@ -43635,7 +44135,7 @@ index 25dcbe5..4ffaa78 100644
  
        return native;
  }
  
        return native;
  }
-@@ -443,7 +446,7 @@ static int count(struct user_arg_ptr argv, int max)
+@@ -443,7 +461,7 @@ static int count(struct user_arg_ptr argv, int max)
                        if (!p)
                                break;
  
                        if (!p)
                                break;
  
@@ -43644,7 +44144,7 @@ index 25dcbe5..4ffaa78 100644
                                return -EFAULT;
  
                        if (i++ >= max)
                                return -EFAULT;
  
                        if (i++ >= max)
-@@ -477,7 +480,7 @@ static int copy_strings(int argc, struct user_arg_ptr argv,
+@@ -477,7 +495,7 @@ static int copy_strings(int argc, struct user_arg_ptr argv,
  
                ret = -EFAULT;
                str = get_user_arg_ptr(argv, argc);
  
                ret = -EFAULT;
                str = get_user_arg_ptr(argv, argc);
@@ -43653,7 +44153,7 @@ index 25dcbe5..4ffaa78 100644
                        goto out;
  
                len = strnlen_user(str, MAX_ARG_STRLEN);
                        goto out;
  
                len = strnlen_user(str, MAX_ARG_STRLEN);
-@@ -559,7 +562,7 @@ int copy_strings_kernel(int argc, const char *const *__argv,
+@@ -559,7 +577,7 @@ int copy_strings_kernel(int argc, const char *const *__argv,
        int r;
        mm_segment_t oldfs = get_fs();
        struct user_arg_ptr argv = {
        int r;
        mm_segment_t oldfs = get_fs();
        struct user_arg_ptr argv = {
@@ -43662,7 +44162,7 @@ index 25dcbe5..4ffaa78 100644
        };
  
        set_fs(KERNEL_DS);
        };
  
        set_fs(KERNEL_DS);
-@@ -594,7 +597,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
+@@ -594,7 +612,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
        unsigned long new_end = old_end - shift;
        struct mmu_gather tlb;
  
        unsigned long new_end = old_end - shift;
        struct mmu_gather tlb;
  
@@ -43672,7 +44172,7 @@ index 25dcbe5..4ffaa78 100644
  
        /*
         * ensure there are no vmas between where we want to go
  
        /*
         * ensure there are no vmas between where we want to go
-@@ -603,6 +607,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
+@@ -603,6 +622,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
        if (vma != find_vma(mm, new_start))
                return -EFAULT;
  
        if (vma != find_vma(mm, new_start))
                return -EFAULT;
  
@@ -43683,7 +44183,7 @@ index 25dcbe5..4ffaa78 100644
        /*
         * cover the whole range: [new_start, old_end)
         */
        /*
         * cover the whole range: [new_start, old_end)
         */
-@@ -683,10 +691,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -683,10 +706,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
        stack_top = arch_align_stack(stack_top);
        stack_top = PAGE_ALIGN(stack_top);
  
        stack_top = arch_align_stack(stack_top);
        stack_top = PAGE_ALIGN(stack_top);
  
@@ -43694,7 +44194,7 @@ index 25dcbe5..4ffaa78 100644
        stack_shift = vma->vm_end - stack_top;
  
        bprm->p -= stack_shift;
        stack_shift = vma->vm_end - stack_top;
  
        bprm->p -= stack_shift;
-@@ -698,8 +702,28 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -698,8 +717,28 @@ int setup_arg_pages(struct linux_binprm *bprm,
        bprm->exec -= stack_shift;
  
        down_write(&mm->mmap_sem);
        bprm->exec -= stack_shift;
  
        down_write(&mm->mmap_sem);
@@ -43723,7 +44223,7 @@ index 25dcbe5..4ffaa78 100644
        /*
         * Adjust stack execute permissions; explicitly enable for
         * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone
        /*
         * Adjust stack execute permissions; explicitly enable for
         * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone
-@@ -718,13 +742,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -718,13 +757,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
                goto out_unlock;
        BUG_ON(prev != vma);
  
                goto out_unlock;
        BUG_ON(prev != vma);
  
@@ -43737,7 +44237,7 @@ index 25dcbe5..4ffaa78 100644
        /* mprotect_fixup is overkill to remove the temporary stack flags */
        vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
  
        /* mprotect_fixup is overkill to remove the temporary stack flags */
        vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
  
-@@ -805,7 +822,7 @@ int kernel_read(struct file *file, loff_t offset,
+@@ -805,7 +837,7 @@ int kernel_read(struct file *file, loff_t offset,
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
@@ -43746,7 +44246,68 @@ index 25dcbe5..4ffaa78 100644
        set_fs(old_fs);
        return result;
  }
        set_fs(old_fs);
        return result;
  }
-@@ -1251,7 +1268,7 @@ int check_unsafe_exec(struct linux_binprm *bprm)
+@@ -1067,6 +1099,21 @@ void set_task_comm(struct task_struct *tsk, char *buf)
+       perf_event_comm(tsk);
+ }
++static void filename_to_taskname(char *tcomm, const char *fn, unsigned int len)
++{
++      int i, ch;
++
++      /* Copies the binary name from after last slash */
++      for (i = 0; (ch = *(fn++)) != '\0';) {
++              if (ch == '/')
++                      i = 0; /* overwrite what we wrote */
++              else
++                      if (i < len - 1)
++                              tcomm[i++] = ch;
++      }
++      tcomm[i] = '\0';
++}
++
+ int flush_old_exec(struct linux_binprm * bprm)
+ {
+       int retval;
+@@ -1081,6 +1128,7 @@ int flush_old_exec(struct linux_binprm * bprm)
+       set_mm_exe_file(bprm->mm, bprm->file);
++      filename_to_taskname(bprm->tcomm, bprm->filename, sizeof(bprm->tcomm));
+       /*
+        * Release all of the old mmap stuff
+        */
+@@ -1112,10 +1160,6 @@ EXPORT_SYMBOL(would_dump);
+ void setup_new_exec(struct linux_binprm * bprm)
+ {
+-      int i, ch;
+-      const char *name;
+-      char tcomm[sizeof(current->comm)];
+-
+       arch_pick_mmap_layout(current->mm);
+       /* This is the point of no return */
+@@ -1126,18 +1170,7 @@ void setup_new_exec(struct linux_binprm * bprm)
+       else
+               set_dumpable(current->mm, suid_dumpable);
+-      name = bprm->filename;
+-
+-      /* Copies the binary name from after last slash */
+-      for (i=0; (ch = *(name++)) != '\0';) {
+-              if (ch == '/')
+-                      i = 0; /* overwrite what we wrote */
+-              else
+-                      if (i < (sizeof(tcomm) - 1))
+-                              tcomm[i++] = ch;
+-      }
+-      tcomm[i] = '\0';
+-      set_task_comm(current, tcomm);
++      set_task_comm(current, bprm->tcomm);
+       /* Set the new mm task size. We have to do that late because it may
+        * depend on TIF_32BIT which is only updated in flush_thread() on
+@@ -1247,7 +1280,7 @@ int check_unsafe_exec(struct linux_binprm *bprm)
        }
        rcu_read_unlock();
  
        }
        rcu_read_unlock();
  
@@ -43755,7 +44316,36 @@ index 25dcbe5..4ffaa78 100644
                bprm->unsafe |= LSM_UNSAFE_SHARE;
        } else {
                res = -EAGAIN;
                bprm->unsafe |= LSM_UNSAFE_SHARE;
        } else {
                res = -EAGAIN;
-@@ -1454,6 +1471,11 @@ static int do_execve_common(const char *filename,
+@@ -1442,6 +1475,28 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
+ EXPORT_SYMBOL(search_binary_handler);
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++static DEFINE_PER_CPU(u64, exec_counter);
++static int __init init_exec_counters(void)
++{
++      unsigned int cpu;
++
++      for_each_possible_cpu(cpu) {
++              per_cpu(exec_counter, cpu) = (u64)cpu;
++      }
++
++      return 0;
++}
++early_initcall(init_exec_counters);
++static inline void increment_exec_counter(void)
++{
++      BUILD_BUG_ON(NR_CPUS > (1 << 16));
++      current->exec_id = this_cpu_add_return(exec_counter, 1 << 16);
++}
++#else
++static inline void increment_exec_counter(void) {}
++#endif
++
+ /*
+  * sys_execve() executes a new program.
+  */
+@@ -1450,6 +1505,11 @@ static int do_execve_common(const char *filename,
                                struct user_arg_ptr envp,
                                struct pt_regs *regs)
  {
                                struct user_arg_ptr envp,
                                struct pt_regs *regs)
  {
@@ -43767,7 +44357,7 @@ index 25dcbe5..4ffaa78 100644
        struct linux_binprm *bprm;
        struct file *file;
        struct files_struct *displaced;
        struct linux_binprm *bprm;
        struct file *file;
        struct files_struct *displaced;
-@@ -1461,6 +1483,8 @@ static int do_execve_common(const char *filename,
+@@ -1457,6 +1517,8 @@ static int do_execve_common(const char *filename,
        int retval;
        const struct cred *cred = current_cred();
  
        int retval;
        const struct cred *cred = current_cred();
  
@@ -43776,7 +44366,18 @@ index 25dcbe5..4ffaa78 100644
        /*
         * We move the actual failure in case of RLIMIT_NPROC excess from
         * set*uid() to execve() because too many poorly written programs
        /*
         * We move the actual failure in case of RLIMIT_NPROC excess from
         * set*uid() to execve() because too many poorly written programs
-@@ -1507,6 +1531,16 @@ static int do_execve_common(const char *filename,
+@@ -1497,12 +1559,27 @@ static int do_execve_common(const char *filename,
+       if (IS_ERR(file))
+               goto out_unmark;
++      if (gr_ptrace_readexec(file, bprm->unsafe)) {
++              retval = -EPERM;
++              goto out_file;
++      }
++
+       sched_exec();
+       bprm->file = file;
        bprm->filename = filename;
        bprm->interp = filename;
  
        bprm->filename = filename;
        bprm->interp = filename;
  
@@ -43793,24 +44394,10 @@ index 25dcbe5..4ffaa78 100644
        retval = bprm_mm_init(bprm);
        if (retval)
                goto out_file;
        retval = bprm_mm_init(bprm);
        if (retval)
                goto out_file;
-@@ -1536,9 +1570,40 @@ static int do_execve_common(const char *filename,
+@@ -1519,24 +1596,65 @@ static int do_execve_common(const char *filename,
        if (retval < 0)
                goto out;
  
        if (retval < 0)
                goto out;
  
-+      if (!gr_tpe_allow(file)) {
-+              retval = -EACCES;
-+              goto out;
-+      }
-+
-+      if (gr_check_crash_exec(file)) {
-+              retval = -EACCES;
-+              goto out;
-+      }
-+
-+      gr_log_chroot_exec(file->f_dentry, file->f_vfsmnt);
-+
-+      gr_handle_exec_args(bprm, argv);
-+
 +#ifdef CONFIG_GRKERNSEC
 +      old_acl = current->acl;
 +      memcpy(old_rlim, current->signal->rlim, sizeof(old_rlim));
 +#ifdef CONFIG_GRKERNSEC
 +      old_acl = current->acl;
 +      memcpy(old_rlim, current->signal->rlim, sizeof(old_rlim));
@@ -43818,12 +44405,50 @@ index 25dcbe5..4ffaa78 100644
 +      get_file(file);
 +      current->exec_file = file;
 +#endif
 +      get_file(file);
 +      current->exec_file = file;
 +#endif
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      /* limit suid stack to 8MB
++         we saved the old limits above and will restore them if this exec fails
++      */
++      if (((bprm->cred->euid != current_euid()) || (bprm->cred->egid != current_egid())) &&
++          (old_rlim[RLIMIT_STACK].rlim_cur > (8 * 1024 * 1024)))
++              current->signal->rlim[RLIMIT_STACK].rlim_cur = 8 * 1024 * 1024;
++#endif
++
++      if (!gr_tpe_allow(file)) {
++              retval = -EACCES;
++              goto out_fail;
++      }
++
++      if (gr_check_crash_exec(file)) {
++              retval = -EACCES;
++              goto out_fail;
++      }
 +
 +      retval = gr_set_proc_label(file->f_dentry, file->f_vfsmnt,
 +
 +      retval = gr_set_proc_label(file->f_dentry, file->f_vfsmnt,
-+                                      bprm->unsafe & LSM_UNSAFE_SHARE);
++                                      bprm->unsafe);
 +      if (retval < 0)
 +              goto out_fail;
 +
 +      if (retval < 0)
 +              goto out_fail;
 +
+       retval = copy_strings_kernel(1, &bprm->filename, bprm);
+       if (retval < 0)
+-              goto out;
++              goto out_fail;
+       bprm->exec = bprm->p;
+       retval = copy_strings(bprm->envc, envp, bprm);
+       if (retval < 0)
+-              goto out;
++              goto out_fail;
+       retval = copy_strings(bprm->argc, argv, bprm);
+       if (retval < 0)
+-              goto out;
++              goto out_fail;
++
++      gr_log_chroot_exec(file->f_dentry, file->f_vfsmnt);
++
++      gr_handle_exec_args(bprm, argv);
        retval = search_binary_handler(bprm,regs);
        if (retval < 0)
 -              goto out;
        retval = search_binary_handler(bprm,regs);
        if (retval < 0)
 -              goto out;
@@ -43834,8 +44459,12 @@ index 25dcbe5..4ffaa78 100644
 +#endif
  
        /* execve succeeded */
 +#endif
  
        /* execve succeeded */
++
++      increment_exec_counter();
        current->fs->in_exec = 0;
        current->fs->in_exec = 0;
-@@ -1549,6 +1614,14 @@ static int do_execve_common(const char *filename,
+       current->in_execve = 0;
+       acct_update_integrals(current);
+@@ -1545,6 +1663,14 @@ static int do_execve_common(const char *filename,
                put_files_struct(displaced);
        return retval;
  
                put_files_struct(displaced);
        return retval;
  
@@ -43850,7 +44479,7 @@ index 25dcbe5..4ffaa78 100644
  out:
        if (bprm->mm) {
                acct_arg_size(bprm, 0);
  out:
        if (bprm->mm) {
                acct_arg_size(bprm, 0);
-@@ -1622,7 +1695,7 @@ static int expand_corename(struct core_name *cn)
+@@ -1618,7 +1744,7 @@ static int expand_corename(struct core_name *cn)
  {
        char *old_corename = cn->corename;
  
  {
        char *old_corename = cn->corename;
  
@@ -43859,7 +44488,7 @@ index 25dcbe5..4ffaa78 100644
        cn->corename = krealloc(old_corename, cn->size, GFP_KERNEL);
  
        if (!cn->corename) {
        cn->corename = krealloc(old_corename, cn->size, GFP_KERNEL);
  
        if (!cn->corename) {
-@@ -1719,7 +1792,7 @@ static int format_corename(struct core_name *cn, long signr)
+@@ -1715,7 +1841,7 @@ static int format_corename(struct core_name *cn, long signr)
        int pid_in_pattern = 0;
        int err = 0;
  
        int pid_in_pattern = 0;
        int err = 0;
  
@@ -43868,7 +44497,7 @@ index 25dcbe5..4ffaa78 100644
        cn->corename = kmalloc(cn->size, GFP_KERNEL);
        cn->used = 0;
  
        cn->corename = kmalloc(cn->size, GFP_KERNEL);
        cn->used = 0;
  
-@@ -1816,6 +1889,218 @@ out:
+@@ -1812,6 +1938,228 @@ out:
        return ispipe;
  }
  
        return ispipe;
  }
  
@@ -44059,7 +44688,7 @@ index 25dcbe5..4ffaa78 100644
 +#endif
 +}
 +
 +#endif
 +}
 +
-+NORET_TYPE void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type)
++__noreturn void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type)
 +{
 +      if (current->signal->curr_ip)
 +              printk(KERN_ERR "PAX: From %pI4: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
 +{
 +      if (current->signal->curr_ip)
 +              printk(KERN_ERR "PAX: From %pI4: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
@@ -44083,11 +44712,21 @@ index 25dcbe5..4ffaa78 100644
 +}
 +EXPORT_SYMBOL(pax_track_stack);
 +#endif
 +}
 +EXPORT_SYMBOL(pax_track_stack);
 +#endif
++
++#ifdef CONFIG_PAX_SIZE_OVERFLOW
++void report_size_overflow(const char *file, unsigned int line, const char *func)
++{
++      printk(KERN_ERR "PAX: size overflow detected in function %s %s:%u\n", func, file, line);
++      dump_stack();
++      do_group_exit(SIGKILL);
++}
++EXPORT_SYMBOL(report_size_overflow);
++#endif
 +
  static int zap_process(struct task_struct *start, int exit_code)
  {
        struct task_struct *t;
 +
  static int zap_process(struct task_struct *start, int exit_code)
  {
        struct task_struct *t;
-@@ -2027,17 +2312,17 @@ static void wait_for_dump_helpers(struct file *file)
+@@ -2023,17 +2371,17 @@ static void wait_for_dump_helpers(struct file *file)
        pipe = file->f_path.dentry->d_inode->i_pipe;
  
        pipe_lock(pipe);
        pipe = file->f_path.dentry->d_inode->i_pipe;
  
        pipe_lock(pipe);
@@ -44110,7 +44749,7 @@ index 25dcbe5..4ffaa78 100644
        pipe_unlock(pipe);
  
  }
        pipe_unlock(pipe);
  
  }
-@@ -2098,7 +2383,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
+@@ -2094,7 +2442,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
        int retval = 0;
        int flag = 0;
        int ispipe;
        int retval = 0;
        int flag = 0;
        int ispipe;
@@ -44119,7 +44758,7 @@ index 25dcbe5..4ffaa78 100644
        struct coredump_params cprm = {
                .signr = signr,
                .regs = regs,
        struct coredump_params cprm = {
                .signr = signr,
                .regs = regs,
-@@ -2113,6 +2398,9 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
+@@ -2109,6 +2457,9 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
  
        audit_core_dumps(signr);
  
  
        audit_core_dumps(signr);
  
@@ -44129,7 +44768,7 @@ index 25dcbe5..4ffaa78 100644
        binfmt = mm->binfmt;
        if (!binfmt || !binfmt->core_dump)
                goto fail;
        binfmt = mm->binfmt;
        if (!binfmt || !binfmt->core_dump)
                goto fail;
-@@ -2180,7 +2468,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
+@@ -2176,7 +2527,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
                }
                cprm.limit = RLIM_INFINITY;
  
                }
                cprm.limit = RLIM_INFINITY;
  
@@ -44138,7 +44777,7 @@ index 25dcbe5..4ffaa78 100644
                if (core_pipe_limit && (core_pipe_limit < dump_count)) {
                        printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n",
                               task_tgid_vnr(current), current->comm);
                if (core_pipe_limit && (core_pipe_limit < dump_count)) {
                        printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n",
                               task_tgid_vnr(current), current->comm);
-@@ -2207,6 +2495,8 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
+@@ -2203,6 +2554,8 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
        } else {
                struct inode *inode;
  
        } else {
                struct inode *inode;
  
@@ -44147,7 +44786,7 @@ index 25dcbe5..4ffaa78 100644
                if (cprm.limit < binfmt->min_coredump)
                        goto fail_unlock;
  
                if (cprm.limit < binfmt->min_coredump)
                        goto fail_unlock;
  
-@@ -2250,7 +2540,7 @@ close_fail:
+@@ -2246,7 +2599,7 @@ close_fail:
                filp_close(cprm.file, NULL);
  fail_dropcount:
        if (ispipe)
                filp_close(cprm.file, NULL);
  fail_dropcount:
        if (ispipe)
@@ -44156,7 +44795,7 @@ index 25dcbe5..4ffaa78 100644
  fail_unlock:
        kfree(cn.corename);
  fail_corename:
  fail_unlock:
        kfree(cn.corename);
  fail_corename:
-@@ -2269,7 +2559,7 @@ fail:
+@@ -2265,7 +2618,7 @@ fail:
   */
  int dump_write(struct file *file, const void *addr, int nr)
  {
   */
  int dump_write(struct file *file, const void *addr, int nr)
  {
@@ -44166,7 +44805,7 @@ index 25dcbe5..4ffaa78 100644
  EXPORT_SYMBOL(dump_write);
  
 diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
  EXPORT_SYMBOL(dump_write);
  
 diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
-index 8f44cef..cb07120 100644
+index a8cbe1b..fed04cb 100644
 --- a/fs/ext2/balloc.c
 +++ b/fs/ext2/balloc.c
 @@ -1192,7 +1192,7 @@ static int ext2_has_free_blocks(struct ext2_sb_info *sbi)
 --- a/fs/ext2/balloc.c
 +++ b/fs/ext2/balloc.c
 @@ -1192,7 +1192,7 @@ static int ext2_has_free_blocks(struct ext2_sb_info *sbi)
@@ -44179,38 +44818,42 @@ index 8f44cef..cb07120 100644
                (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
                return 0;
 diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
                (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
                return 0;
 diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
-index 6386d76..0a266b1 100644
+index a203892..4e64db5 100644
 --- a/fs/ext3/balloc.c
 +++ b/fs/ext3/balloc.c
 --- a/fs/ext3/balloc.c
 +++ b/fs/ext3/balloc.c
-@@ -1446,7 +1446,7 @@ static int ext3_has_free_blocks(struct ext3_sb_info *sbi)
+@@ -1446,9 +1446,10 @@ static int ext3_has_free_blocks(struct ext3_sb_info *sbi, int use_reservation)
  
        free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
        root_blocks = le32_to_cpu(sbi->s_es->s_r_blocks_count);
 -      if (free_blocks < root_blocks + 1 && !capable(CAP_SYS_RESOURCE) &&
  
        free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
        root_blocks = le32_to_cpu(sbi->s_es->s_r_blocks_count);
 -      if (free_blocks < root_blocks + 1 && !capable(CAP_SYS_RESOURCE) &&
-+      if (free_blocks < root_blocks + 1 && !capable_nolog(CAP_SYS_RESOURCE) &&
-               sbi->s_resuid != current_fsuid() &&
-               (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
++      if (free_blocks < root_blocks + 1 &&
+               !use_reservation && sbi->s_resuid != current_fsuid() &&
+-              (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
++              (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid)) &&
++              !capable_nolog(CAP_SYS_RESOURCE)) {
                return 0;
                return 0;
+       }
+       return 1;
 diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
 diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
-index f8224ad..fbef97c 100644
+index 12ccacd..a6035fce0 100644
 --- a/fs/ext4/balloc.c
 +++ b/fs/ext4/balloc.c
 --- a/fs/ext4/balloc.c
 +++ b/fs/ext4/balloc.c
-@@ -394,8 +394,8 @@ static int ext4_has_free_blocks(struct ext4_sb_info *sbi,
-       /* Hm, nope.  Are (enough) root reserved blocks available? */
+@@ -436,8 +436,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi,
+       /* Hm, nope.  Are (enough) root reserved clusters available? */
        if (sbi->s_resuid == current_fsuid() ||
            ((sbi->s_resgid != 0) && in_group_p(sbi->s_resgid)) ||
 -          capable(CAP_SYS_RESOURCE) ||
 -              (flags & EXT4_MB_USE_ROOT_BLOCKS)) {
        if (sbi->s_resuid == current_fsuid() ||
            ((sbi->s_resgid != 0) && in_group_p(sbi->s_resgid)) ||
 -          capable(CAP_SYS_RESOURCE) ||
 -              (flags & EXT4_MB_USE_ROOT_BLOCKS)) {
-+              (flags & EXT4_MB_USE_ROOT_BLOCKS) ||
-+              capable_nolog(CAP_SYS_RESOURCE)) {
++          (flags & EXT4_MB_USE_ROOT_BLOCKS) ||
++          capable_nolog(CAP_SYS_RESOURCE)) {
  
  
-               if (free_blocks >= (nblocks + dirty_blocks))
+               if (free_clusters >= (nclusters + dirty_clusters))
                        return 1;
 diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
                        return 1;
 diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
-index 5c38120..2291d18 100644
+index 5b0e26a..0aa002d 100644
 --- a/fs/ext4/ext4.h
 +++ b/fs/ext4/ext4.h
 --- a/fs/ext4/ext4.h
 +++ b/fs/ext4/ext4.h
-@@ -1180,19 +1180,19 @@ struct ext4_sb_info {
+@@ -1208,19 +1208,19 @@ struct ext4_sb_info {
        unsigned long s_mb_last_start;
  
        /* stats for buddy allocator */
        unsigned long s_mb_last_start;
  
        /* stats for buddy allocator */
@@ -44240,48 +44883,11 @@ index 5c38120..2291d18 100644
        atomic_t s_lock_busy;
  
        /* locality groups */
        atomic_t s_lock_busy;
  
        /* locality groups */
-diff --git a/fs/ext4/file.c b/fs/ext4/file.c
-index e4095e9..1c006c5 100644
---- a/fs/ext4/file.c
-+++ b/fs/ext4/file.c
-@@ -181,8 +181,8 @@ static int ext4_file_open(struct inode * inode, struct file * filp)
-               path.dentry = mnt->mnt_root;
-               cp = d_path(&path, buf, sizeof(buf));
-               if (!IS_ERR(cp)) {
--                      memcpy(sbi->s_es->s_last_mounted, cp,
--                             sizeof(sbi->s_es->s_last_mounted));
-+                      strlcpy(sbi->s_es->s_last_mounted, cp,
-+                              sizeof(sbi->s_es->s_last_mounted));
-                       ext4_mark_super_dirty(sb);
-               }
-       }
-diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
-index f18bfe3..43759b1 100644
---- a/fs/ext4/ioctl.c
-+++ b/fs/ext4/ioctl.c
-@@ -348,7 +348,7 @@ mext_out:
-               if (!blk_queue_discard(q))
-                       return -EOPNOTSUPP;
--              if (copy_from_user(&range, (struct fstrim_range *)arg,
-+              if (copy_from_user(&range, (struct fstrim_range __user *)arg,
-                   sizeof(range)))
-                       return -EFAULT;
-@@ -358,7 +358,7 @@ mext_out:
-               if (ret < 0)
-                       return ret;
--              if (copy_to_user((struct fstrim_range *)arg, &range,
-+              if (copy_to_user((struct fstrim_range __user *)arg, &range,
-                   sizeof(range)))
-                       return -EFAULT;
 diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
 diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
-index 17a5a57..b6be3c5 100644
+index e2d8be8..c7f0ce9 100644
 --- a/fs/ext4/mballoc.c
 +++ b/fs/ext4/mballoc.c
 --- a/fs/ext4/mballoc.c
 +++ b/fs/ext4/mballoc.c
-@@ -1795,7 +1795,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
+@@ -1794,7 +1794,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
                BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len);
  
                if (EXT4_SB(sb)->s_mb_stats)
                BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len);
  
                if (EXT4_SB(sb)->s_mb_stats)
@@ -44290,7 +44896,7 @@ index 17a5a57..b6be3c5 100644
  
                break;
        }
  
                break;
        }
-@@ -2089,7 +2089,7 @@ repeat:
+@@ -2088,7 +2088,7 @@ repeat:
                        ac->ac_status = AC_STATUS_CONTINUE;
                        ac->ac_flags |= EXT4_MB_HINT_FIRST;
                        cr = 3;
                        ac->ac_status = AC_STATUS_CONTINUE;
                        ac->ac_flags |= EXT4_MB_HINT_FIRST;
                        cr = 3;
@@ -44299,16 +44905,7 @@ index 17a5a57..b6be3c5 100644
                        goto repeat;
                }
        }
                        goto repeat;
                }
        }
-@@ -2132,6 +2132,8 @@ static int ext4_mb_seq_groups_show(struct seq_file *seq, void *v)
-               ext4_grpblk_t counters[16];
-       } sg;
-+      pax_track_stack();
-+
-       group--;
-       if (group == 0)
-               seq_printf(seq, "#%-5s: %-5s %-5s %-5s "
-@@ -2573,25 +2575,25 @@ int ext4_mb_release(struct super_block *sb)
+@@ -2592,25 +2592,25 @@ int ext4_mb_release(struct super_block *sb)
        if (sbi->s_mb_stats) {
                ext4_msg(sb, KERN_INFO,
                       "mballoc: %u blocks %u reqs (%u success)",
        if (sbi->s_mb_stats) {
                ext4_msg(sb, KERN_INFO,
                       "mballoc: %u blocks %u reqs (%u success)",
@@ -44344,7 +44941,7 @@ index 17a5a57..b6be3c5 100644
        }
  
        free_percpu(sbi->s_locality_groups);
        }
  
        free_percpu(sbi->s_locality_groups);
-@@ -3070,16 +3072,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
+@@ -3096,16 +3096,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
        struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
  
        if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
        struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
  
        if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
@@ -44367,16 +44964,16 @@ index 17a5a57..b6be3c5 100644
        }
  
        if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
        }
  
        if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
-@@ -3477,7 +3479,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
+@@ -3509,7 +3509,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
        trace_ext4_mb_new_inode_pa(ac, pa);
  
        ext4_mb_use_inode_pa(ac, pa);
        trace_ext4_mb_new_inode_pa(ac, pa);
  
        ext4_mb_use_inode_pa(ac, pa);
--      atomic_add(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated);
-+      atomic_add_unchecked(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated);
+-      atomic_add(pa->pa_free, &sbi->s_mb_preallocated);
++      atomic_add_unchecked(pa->pa_free, &sbi->s_mb_preallocated);
  
        ei = EXT4_I(ac->ac_inode);
        grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
  
        ei = EXT4_I(ac->ac_inode);
        grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
-@@ -3537,7 +3539,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
+@@ -3569,7 +3569,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
        trace_ext4_mb_new_group_pa(ac, pa);
  
        ext4_mb_use_group_pa(ac, pa);
        trace_ext4_mb_new_group_pa(ac, pa);
  
        ext4_mb_use_group_pa(ac, pa);
@@ -44385,7 +44982,7 @@ index 17a5a57..b6be3c5 100644
  
        grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
        lg = ac->ac_lg;
  
        grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
        lg = ac->ac_lg;
-@@ -3625,7 +3627,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
+@@ -3658,7 +3658,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
                 * from the bitmap and continue.
                 */
        }
                 * from the bitmap and continue.
                 */
        }
@@ -44394,7 +44991,7 @@ index 17a5a57..b6be3c5 100644
  
        return err;
  }
  
        return err;
  }
-@@ -3643,7 +3645,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
+@@ -3676,7 +3676,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
        ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
        BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
        mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
        ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
        BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
        mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
@@ -44557,7 +45154,7 @@ index 0845f84..7b4ebef 100644
  
        if (dot && fs && !(fs->fs_flags & FS_HAS_SUBTYPE)) {
 diff --git a/fs/fs_struct.c b/fs/fs_struct.c
  
        if (dot && fs && !(fs->fs_flags & FS_HAS_SUBTYPE)) {
 diff --git a/fs/fs_struct.c b/fs/fs_struct.c
-index 78b519c..212c0d0 100644
+index 78b519c..a8b4979 100644
 --- a/fs/fs_struct.c
 +++ b/fs/fs_struct.c
 @@ -4,6 +4,7 @@
 --- a/fs/fs_struct.c
 +++ b/fs/fs_struct.c
 @@ -4,6 +4,7 @@
@@ -44624,7 +45221,14 @@ index 78b519c..212c0d0 100644
        spin_unlock(&fs->lock);
        task_unlock(current);
  
        spin_unlock(&fs->lock);
        task_unlock(current);
  
-@@ -170,7 +178,7 @@ EXPORT_SYMBOL(current_umask);
+@@ -164,13 +172,13 @@ EXPORT_SYMBOL_GPL(unshare_fs_struct);
+ int current_umask(void)
+ {
+-      return current->fs->umask;
++      return current->fs->umask | gr_acl_umask();
+ }
+ EXPORT_SYMBOL(current_umask);
  
  /* to be mentioned only in INIT_TASK */
  struct fs_struct init_fs = {
  
  /* to be mentioned only in INIT_TASK */
  struct fs_struct init_fs = {
@@ -45955,10 +46559,10 @@ index 4765190..2a067f2 100644
        seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
                   atomic_read(&fscache_n_cop_alloc_object),
 diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c
        seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
                   atomic_read(&fscache_n_cop_alloc_object),
 diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c
-index b6cca47..ec782c3 100644
+index 3426521..3b75162 100644
 --- a/fs/fuse/cuse.c
 +++ b/fs/fuse/cuse.c
 --- a/fs/fuse/cuse.c
 +++ b/fs/fuse/cuse.c
-@@ -586,10 +586,12 @@ static int __init cuse_init(void)
+@@ -587,10 +587,12 @@ static int __init cuse_init(void)
                INIT_LIST_HEAD(&cuse_conntbl[i]);
  
        /* inherit and extend fuse_dev_operations */
                INIT_LIST_HEAD(&cuse_conntbl[i]);
  
        /* inherit and extend fuse_dev_operations */
@@ -45976,7 +46580,7 @@ index b6cca47..ec782c3 100644
        cuse_class = class_create(THIS_MODULE, "cuse");
        if (IS_ERR(cuse_class))
 diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
        cuse_class = class_create(THIS_MODULE, "cuse");
        if (IS_ERR(cuse_class))
 diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
-index 5cb8614..6865b11 100644
+index 2aaf3ea..8e50863 100644
 --- a/fs/fuse/dev.c
 +++ b/fs/fuse/dev.c
 @@ -1242,7 +1242,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
 --- a/fs/fuse/dev.c
 +++ b/fs/fuse/dev.c
 @@ -1242,7 +1242,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
@@ -46002,10 +46606,10 @@ index 9f63e49..d8a64c0 100644
        if (!IS_ERR(link))
                free_page((unsigned long) link);
 diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
        if (!IS_ERR(link))
                free_page((unsigned long) link);
 diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
-index 900cf98..3896726 100644
+index cfd4959..a780959 100644
 --- a/fs/gfs2/inode.c
 +++ b/fs/gfs2/inode.c
 --- a/fs/gfs2/inode.c
 +++ b/fs/gfs2/inode.c
-@@ -1517,7 +1517,7 @@ out:
+@@ -1490,7 +1490,7 @@ out:
  
  static void gfs2_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
  {
  
  static void gfs2_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
  {
@@ -46014,153 +46618,8 @@ index 900cf98..3896726 100644
        if (!IS_ERR(s))
                kfree(s);
  }
        if (!IS_ERR(s))
                kfree(s);
  }
-diff --git a/fs/hfs/btree.c b/fs/hfs/btree.c
-index 3ebc437..eb23952 100644
---- a/fs/hfs/btree.c
-+++ b/fs/hfs/btree.c
-@@ -46,11 +46,27 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke
-       case HFS_EXT_CNID:
-               hfs_inode_read_fork(tree->inode, mdb->drXTExtRec, mdb->drXTFlSize,
-                                   mdb->drXTFlSize, be32_to_cpu(mdb->drXTClpSiz));
-+
-+              if (HFS_I(tree->inode)->alloc_blocks >
-+                                      HFS_I(tree->inode)->first_blocks) {
-+                      printk(KERN_ERR "hfs: invalid btree extent records\n");
-+                      unlock_new_inode(tree->inode);
-+                      goto free_inode;
-+              }
-+
-               tree->inode->i_mapping->a_ops = &hfs_btree_aops;
-               break;
-       case HFS_CAT_CNID:
-               hfs_inode_read_fork(tree->inode, mdb->drCTExtRec, mdb->drCTFlSize,
-                                   mdb->drCTFlSize, be32_to_cpu(mdb->drCTClpSiz));
-+
-+              if (!HFS_I(tree->inode)->first_blocks) {
-+                      printk(KERN_ERR "hfs: invalid btree extent records "
-+                                                              "(0 size).\n");
-+                      unlock_new_inode(tree->inode);
-+                      goto free_inode;
-+              }
-+
-               tree->inode->i_mapping->a_ops = &hfs_btree_aops;
-               break;
-       default:
-@@ -59,11 +75,6 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke
-       }
-       unlock_new_inode(tree->inode);
--      if (!HFS_I(tree->inode)->first_blocks) {
--              printk(KERN_ERR "hfs: invalid btree extent records (0 size).\n");
--              goto free_inode;
--      }
--
-       mapping = tree->inode->i_mapping;
-       page = read_mapping_page(mapping, 0, NULL);
-       if (IS_ERR(page))
-diff --git a/fs/hfsplus/catalog.c b/fs/hfsplus/catalog.c
-index 4dfbfec..947c9c2 100644
---- a/fs/hfsplus/catalog.c
-+++ b/fs/hfsplus/catalog.c
-@@ -179,6 +179,8 @@ int hfsplus_find_cat(struct super_block *sb, u32 cnid,
-       int err;
-       u16 type;
-+      pax_track_stack();
-+
-       hfsplus_cat_build_key(sb, fd->search_key, cnid, NULL);
-       err = hfs_brec_read(fd, &tmp, sizeof(hfsplus_cat_entry));
-       if (err)
-@@ -210,6 +212,8 @@ int hfsplus_create_cat(u32 cnid, struct inode *dir,
-       int entry_size;
-       int err;
-+      pax_track_stack();
-+
-       dprint(DBG_CAT_MOD, "create_cat: %s,%u(%d)\n",
-               str->name, cnid, inode->i_nlink);
-       err = hfs_find_init(HFSPLUS_SB(sb)->cat_tree, &fd);
-@@ -353,6 +357,8 @@ int hfsplus_rename_cat(u32 cnid,
-       int entry_size, type;
-       int err;
-+      pax_track_stack();
-+
-       dprint(DBG_CAT_MOD, "rename_cat: %u - %lu,%s - %lu,%s\n",
-               cnid, src_dir->i_ino, src_name->name,
-               dst_dir->i_ino, dst_name->name);
-diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c
-index 25b2443..09a3341 100644
---- a/fs/hfsplus/dir.c
-+++ b/fs/hfsplus/dir.c
-@@ -131,6 +131,8 @@ static int hfsplus_readdir(struct file *filp, void *dirent, filldir_t filldir)
-       struct hfsplus_readdir_data *rd;
-       u16 type;
-+      pax_track_stack();
-+
-       if (filp->f_pos >= inode->i_size)
-               return 0;
-diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
-index 4cc1e3a..ad0f70b 100644
---- a/fs/hfsplus/inode.c
-+++ b/fs/hfsplus/inode.c
-@@ -501,6 +501,8 @@ int hfsplus_cat_read_inode(struct inode *inode, struct hfs_find_data *fd)
-       int res = 0;
-       u16 type;
-+      pax_track_stack();
-+
-       type = hfs_bnode_read_u16(fd->bnode, fd->entryoffset);
-       HFSPLUS_I(inode)->linkid = 0;
-@@ -564,6 +566,8 @@ int hfsplus_cat_write_inode(struct inode *inode)
-       struct hfs_find_data fd;
-       hfsplus_cat_entry entry;
-+      pax_track_stack();
-+
-       if (HFSPLUS_IS_RSRC(inode))
-               main_inode = HFSPLUS_I(inode)->rsrc_inode;
-diff --git a/fs/hfsplus/ioctl.c b/fs/hfsplus/ioctl.c
-index fbaa669..c548cd0 100644
---- a/fs/hfsplus/ioctl.c
-+++ b/fs/hfsplus/ioctl.c
-@@ -122,6 +122,8 @@ int hfsplus_setxattr(struct dentry *dentry, const char *name,
-       struct hfsplus_cat_file *file;
-       int res;
-+      pax_track_stack();
-+
-       if (!S_ISREG(inode->i_mode) || HFSPLUS_IS_RSRC(inode))
-               return -EOPNOTSUPP;
-@@ -166,6 +168,8 @@ ssize_t hfsplus_getxattr(struct dentry *dentry, const char *name,
-       struct hfsplus_cat_file *file;
-       ssize_t res = 0;
-+      pax_track_stack();
-+
-       if (!S_ISREG(inode->i_mode) || HFSPLUS_IS_RSRC(inode))
-               return -EOPNOTSUPP;
-diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
-index d24a9b6..dd9b3dd 100644
---- a/fs/hfsplus/super.c
-+++ b/fs/hfsplus/super.c
-@@ -347,6 +347,8 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent)
-       u64 last_fs_block, last_fs_page;
-       int err;
-+      pax_track_stack();
-+
-       err = -EINVAL;
-       sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
-       if (!sbi)
 diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
 diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
-index ec88953..cb5e98e 100644
+index 0be5a78..9cfb853 100644
 --- a/fs/hugetlbfs/inode.c
 +++ b/fs/hugetlbfs/inode.c
 @@ -915,7 +915,7 @@ static struct file_system_type hugetlbfs_fs_type = {
 --- a/fs/hugetlbfs/inode.c
 +++ b/fs/hugetlbfs/inode.c
 @@ -915,7 +915,7 @@ static struct file_system_type hugetlbfs_fs_type = {
@@ -46173,7 +46632,7 @@ index ec88953..cb5e98e 100644
  static int can_do_hugetlb_shm(void)
  {
 diff --git a/fs/inode.c b/fs/inode.c
  static int can_do_hugetlb_shm(void)
  {
 diff --git a/fs/inode.c b/fs/inode.c
-index ec79246..054c36a 100644
+index ee4e66b..9a39f9c 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
 @@ -787,8 +787,8 @@ unsigned int get_next_ino(void)
 --- a/fs/inode.c
 +++ b/fs/inode.c
 @@ -787,8 +787,8 @@ unsigned int get_next_ino(void)
@@ -46187,54 +46646,24 @@ index ec79246..054c36a 100644
  
                res = next - LAST_INO_BATCH;
        }
  
                res = next - LAST_INO_BATCH;
        }
-diff --git a/fs/jbd/checkpoint.c b/fs/jbd/checkpoint.c
-index f94fc48..3bb8d30 100644
---- a/fs/jbd/checkpoint.c
-+++ b/fs/jbd/checkpoint.c
-@@ -358,6 +358,8 @@ int log_do_checkpoint(journal_t *journal)
-       tid_t this_tid;
-       int result;
-+      pax_track_stack();
-+
-       jbd_debug(1, "Start checkpoint\n");
-       /*
-diff --git a/fs/jffs2/compr_rtime.c b/fs/jffs2/compr_rtime.c
-index 16a5047..88ff6ca 100644
---- a/fs/jffs2/compr_rtime.c
-+++ b/fs/jffs2/compr_rtime.c
-@@ -37,6 +37,8 @@ static int jffs2_rtime_compress(unsigned char *data_in,
-       int outpos = 0;
-       int pos=0;
-+      pax_track_stack();
-+
-       memset(positions,0,sizeof(positions));
-       while (pos < (*sourcelen) && outpos <= (*dstlen)-2) {
-@@ -78,6 +80,8 @@ static int jffs2_rtime_decompress(unsigned char *data_in,
-       int outpos = 0;
-       int pos=0;
-+      pax_track_stack();
-+
-       memset(positions,0,sizeof(positions));
-       while (outpos<destlen) {
-diff --git a/fs/jffs2/compr_rubin.c b/fs/jffs2/compr_rubin.c
-index 9e7cec8..4713089 100644
---- a/fs/jffs2/compr_rubin.c
-+++ b/fs/jffs2/compr_rubin.c
-@@ -314,6 +314,8 @@ static int jffs2_dynrubin_compress(unsigned char *data_in,
-       int ret;
-       uint32_t mysrclen, mydstlen;
-+      pax_track_stack();
-+
-       mysrclen = *sourcelen;
-       mydstlen = *dstlen - 8;
+@@ -855,8 +855,7 @@ void lockdep_annotate_inode_mutex_key(struct inode *inode)
+               struct file_system_type *type = inode->i_sb->s_type;
  
  
+               /* Set new key only if filesystem hasn't already changed it */
+-              if (!lockdep_match_class(&inode->i_mutex,
+-                  &type->i_mutex_key)) {
++              if (lockdep_match_class(&inode->i_mutex, &type->i_mutex_key)) {
+                       /*
+                        * ensure nobody is actually holding i_mutex
+                        */
+@@ -883,6 +882,7 @@ void unlock_new_inode(struct inode *inode)
+       spin_lock(&inode->i_lock);
+       WARN_ON(!(inode->i_state & I_NEW));
+       inode->i_state &= ~I_NEW;
++      smp_mb();
+       wake_up_bit(&inode->i_state, __I_NEW);
+       spin_unlock(&inode->i_lock);
+ }
 diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c
 index e513f19..2ab1351 100644
 --- a/fs/jffs2/erase.c
 diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c
 index e513f19..2ab1351 100644
 --- a/fs/jffs2/erase.c
@@ -46250,10 +46679,10 @@ index e513f19..2ab1351 100644
  
                jffs2_prealloc_raw_node_refs(c, jeb, 1);
 diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
  
                jffs2_prealloc_raw_node_refs(c, jeb, 1);
 diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
-index 4515bea..178f2d6 100644
+index b09e51d..e482afa 100644
 --- a/fs/jffs2/wbuf.c
 +++ b/fs/jffs2/wbuf.c
 --- a/fs/jffs2/wbuf.c
 +++ b/fs/jffs2/wbuf.c
-@@ -1012,7 +1012,8 @@ static const struct jffs2_unknown_node oob_cleanmarker =
+@@ -1011,7 +1011,8 @@ static const struct jffs2_unknown_node oob_cleanmarker =
  {
        .magic = constant_cpu_to_je16(JFFS2_MAGIC_BITMASK),
        .nodetype = constant_cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER),
  {
        .magic = constant_cpu_to_je16(JFFS2_MAGIC_BITMASK),
        .nodetype = constant_cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER),
@@ -46263,24 +46692,11 @@ index 4515bea..178f2d6 100644
  };
  
  /*
  };
  
  /*
-diff --git a/fs/jffs2/xattr.c b/fs/jffs2/xattr.c
-index 3e93cdd..c8a80e1 100644
---- a/fs/jffs2/xattr.c
-+++ b/fs/jffs2/xattr.c
-@@ -773,6 +773,8 @@ void jffs2_build_xattr_subsystem(struct jffs2_sb_info *c)
-       BUG_ON(!(c->flags & JFFS2_SB_FLAG_BUILDING));
-+      pax_track_stack();
-+
-       /* Phase.1 : Merge same xref */
-       for (i=0; i < XREF_TMPHASH_SIZE; i++)
-               xref_tmphash[i] = NULL;
 diff --git a/fs/jfs/super.c b/fs/jfs/super.c
 diff --git a/fs/jfs/super.c b/fs/jfs/super.c
-index 06c8a67..589dbbd 100644
+index a44eff0..462e07d 100644
 --- a/fs/jfs/super.c
 +++ b/fs/jfs/super.c
 --- a/fs/jfs/super.c
 +++ b/fs/jfs/super.c
-@@ -803,7 +803,7 @@ static int __init init_jfs_fs(void)
+@@ -802,7 +802,7 @@ static int __init init_jfs_fs(void)
  
        jfs_inode_cachep =
            kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
  
        jfs_inode_cachep =
            kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
@@ -46290,7 +46706,7 @@ index 06c8a67..589dbbd 100644
        if (jfs_inode_cachep == NULL)
                return -ENOMEM;
 diff --git a/fs/libfs.c b/fs/libfs.c
        if (jfs_inode_cachep == NULL)
                return -ENOMEM;
 diff --git a/fs/libfs.c b/fs/libfs.c
-index c18e9a1..0b04e2c 100644
+index f6d411e..e82a08d 100644
 --- a/fs/libfs.c
 +++ b/fs/libfs.c
 @@ -165,6 +165,9 @@ int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir)
 --- a/fs/libfs.c
 +++ b/fs/libfs.c
 @@ -165,6 +165,9 @@ int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir)
@@ -46318,7 +46734,7 @@ index c18e9a1..0b04e2c 100644
                                            next->d_inode->i_ino, 
                                            dt_type(next->d_inode)) < 0)
 diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c
                                            next->d_inode->i_ino, 
                                            dt_type(next->d_inode)) < 0)
 diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c
-index 8392cb8..ae8ed40 100644
+index 8392cb8..80d6193 100644
 --- a/fs/lockd/clntproc.c
 +++ b/fs/lockd/clntproc.c
 @@ -36,11 +36,11 @@ static const struct rpc_call_ops nlmclnt_cancel_ops;
 --- a/fs/lockd/clntproc.c
 +++ b/fs/lockd/clntproc.c
 @@ -36,11 +36,11 @@ static const struct rpc_call_ops nlmclnt_cancel_ops;
@@ -46335,20 +46751,11 @@ index 8392cb8..ae8ed40 100644
  
        memcpy(c->data, &cookie, 4);
        c->len=4;
  
        memcpy(c->data, &cookie, 4);
        c->len=4;
-@@ -621,6 +621,8 @@ nlmclnt_reclaim(struct nlm_host *host, struct file_lock *fl)
-       struct nlm_rqst reqst, *req;
-       int             status;
-+      pax_track_stack();
-+
-       req = &reqst;
-       memset(req, 0, sizeof(*req));
-       locks_init_lock(&req->a_args.lock.fl);
 diff --git a/fs/locks.c b/fs/locks.c
 diff --git a/fs/locks.c b/fs/locks.c
-index 703f545..150a552 100644
+index 637694b..f84a121 100644
 --- a/fs/locks.c
 +++ b/fs/locks.c
 --- a/fs/locks.c
 +++ b/fs/locks.c
-@@ -2022,16 +2022,16 @@ void locks_remove_flock(struct file *filp)
+@@ -2074,16 +2074,16 @@ void locks_remove_flock(struct file *filp)
                return;
  
        if (filp->f_op && filp->f_op->flock) {
                return;
  
        if (filp->f_op && filp->f_op->flock) {
@@ -46369,144 +46776,11 @@ index 703f545..150a552 100644
        }
  
        lock_flocks();
        }
  
        lock_flocks();
-diff --git a/fs/logfs/super.c b/fs/logfs/super.c
-index ce03a18..ac8c14f 100644
---- a/fs/logfs/super.c
-+++ b/fs/logfs/super.c
-@@ -266,6 +266,8 @@ static int logfs_recover_sb(struct super_block *sb)
-       struct logfs_disk_super _ds1, *ds1 = &_ds1;
-       int err, valid0, valid1;
-+      pax_track_stack();
-+
-       /* read first superblock */
-       err = wbuf_read(sb, super->s_sb_ofs[0], sizeof(*ds0), ds0);
-       if (err)
-diff --git a/fs/minix/bitmap.c b/fs/minix/bitmap.c
-index 3f32bcb..7c82c29 100644
---- a/fs/minix/bitmap.c
-+++ b/fs/minix/bitmap.c
-@@ -20,10 +20,11 @@ static const int nibblemap[] = { 4,3,3,2,3,2,2,1,3,2,2,1,2,1,1,0 };
- static DEFINE_SPINLOCK(bitmap_lock);
--static unsigned long count_free(struct buffer_head *map[], unsigned numblocks, __u32 numbits)
-+static unsigned long count_free(struct buffer_head *map[], unsigned blocksize, __u32 numbits)
- {
-       unsigned i, j, sum = 0;
-       struct buffer_head *bh;
-+      unsigned numblocks = minix_blocks_needed(numbits, blocksize);
-   
-       for (i=0; i<numblocks-1; i++) {
-               if (!(bh=map[i])) 
-@@ -105,10 +106,12 @@ int minix_new_block(struct inode * inode)
-       return 0;
- }
--unsigned long minix_count_free_blocks(struct minix_sb_info *sbi)
-+unsigned long minix_count_free_blocks(struct super_block *sb)
- {
--      return (count_free(sbi->s_zmap, sbi->s_zmap_blocks,
--              sbi->s_nzones - sbi->s_firstdatazone + 1)
-+      struct minix_sb_info *sbi = minix_sb(sb);
-+      u32 bits = sbi->s_nzones - (sbi->s_firstdatazone + 1);
-+
-+      return (count_free(sbi->s_zmap, sb->s_blocksize, bits)
-               << sbi->s_log_zone_size);
- }
-@@ -273,7 +276,10 @@ struct inode *minix_new_inode(const struct inode *dir, int mode, int *error)
-       return inode;
- }
--unsigned long minix_count_free_inodes(struct minix_sb_info *sbi)
-+unsigned long minix_count_free_inodes(struct super_block *sb)
- {
--      return count_free(sbi->s_imap, sbi->s_imap_blocks, sbi->s_ninodes + 1);
-+      struct minix_sb_info *sbi = minix_sb(sb);
-+      u32 bits = sbi->s_ninodes + 1;
-+
-+      return count_free(sbi->s_imap, sb->s_blocksize, bits);
- }
-diff --git a/fs/minix/inode.c b/fs/minix/inode.c
-index e7d23e2..1ed1351 100644
---- a/fs/minix/inode.c
-+++ b/fs/minix/inode.c
-@@ -279,6 +279,27 @@ static int minix_fill_super(struct super_block *s, void *data, int silent)
-       else if (sbi->s_mount_state & MINIX_ERROR_FS)
-               printk("MINIX-fs: mounting file system with errors, "
-                       "running fsck is recommended\n");
-+
-+      /* Apparently minix can create filesystems that allocate more blocks for
-+       * the bitmaps than needed.  We simply ignore that, but verify it didn't
-+       * create one with not enough blocks and bail out if so.
-+       */
-+      block = minix_blocks_needed(sbi->s_ninodes, s->s_blocksize);
-+      if (sbi->s_imap_blocks < block) {
-+              printk("MINIX-fs: file system does not have enough "
-+                              "imap blocks allocated.  Refusing to mount\n");
-+              goto out_iput;
-+      }
-+
-+      block = minix_blocks_needed(
-+                      (sbi->s_nzones - (sbi->s_firstdatazone + 1)),
-+                      s->s_blocksize);
-+      if (sbi->s_zmap_blocks < block) {
-+              printk("MINIX-fs: file system does not have enough "
-+                              "zmap blocks allocated.  Refusing to mount.\n");
-+              goto out_iput;
-+      }
-+
-       return 0;
- out_iput:
-@@ -339,10 +360,10 @@ static int minix_statfs(struct dentry *dentry, struct kstatfs *buf)
-       buf->f_type = sb->s_magic;
-       buf->f_bsize = sb->s_blocksize;
-       buf->f_blocks = (sbi->s_nzones - sbi->s_firstdatazone) << sbi->s_log_zone_size;
--      buf->f_bfree = minix_count_free_blocks(sbi);
-+      buf->f_bfree = minix_count_free_blocks(sb);
-       buf->f_bavail = buf->f_bfree;
-       buf->f_files = sbi->s_ninodes;
--      buf->f_ffree = minix_count_free_inodes(sbi);
-+      buf->f_ffree = minix_count_free_inodes(sb);
-       buf->f_namelen = sbi->s_namelen;
-       buf->f_fsid.val[0] = (u32)id;
-       buf->f_fsid.val[1] = (u32)(id >> 32);
-diff --git a/fs/minix/minix.h b/fs/minix/minix.h
-index 341e212..6415fe0 100644
---- a/fs/minix/minix.h
-+++ b/fs/minix/minix.h
-@@ -48,10 +48,10 @@ extern struct minix_inode * minix_V1_raw_inode(struct super_block *, ino_t, stru
- extern struct minix2_inode * minix_V2_raw_inode(struct super_block *, ino_t, struct buffer_head **);
- extern struct inode * minix_new_inode(const struct inode *, int, int *);
- extern void minix_free_inode(struct inode * inode);
--extern unsigned long minix_count_free_inodes(struct minix_sb_info *sbi);
-+extern unsigned long minix_count_free_inodes(struct super_block *sb);
- extern int minix_new_block(struct inode * inode);
- extern void minix_free_block(struct inode *inode, unsigned long block);
--extern unsigned long minix_count_free_blocks(struct minix_sb_info *sbi);
-+extern unsigned long minix_count_free_blocks(struct super_block *sb);
- extern int minix_getattr(struct vfsmount *, struct dentry *, struct kstat *);
- extern int minix_prepare_chunk(struct page *page, loff_t pos, unsigned len);
-@@ -88,6 +88,11 @@ static inline struct minix_inode_info *minix_i(struct inode *inode)
-       return list_entry(inode, struct minix_inode_info, vfs_inode);
- }
-+static inline unsigned minix_blocks_needed(unsigned bits, unsigned blocksize)
-+{
-+      return DIV_ROUND_UP(bits, blocksize * 8);
-+}
-+
- #if defined(CONFIG_MINIX_FS_NATIVE_ENDIAN) && \
-       defined(CONFIG_MINIX_FS_BIG_ENDIAN_16BIT_INDEXED)
 diff --git a/fs/namei.c b/fs/namei.c
 diff --git a/fs/namei.c b/fs/namei.c
-index 3d15072..c1ddf9c 100644
+index 9680cef..a19f203 100644
 --- a/fs/namei.c
 +++ b/fs/namei.c
 --- a/fs/namei.c
 +++ b/fs/namei.c
-@@ -281,16 +281,32 @@ int generic_permission(struct inode *inode, int mask)
+@@ -279,16 +279,32 @@ int generic_permission(struct inode *inode, int mask)
        if (ret != -EACCES)
                return ret;
  
        if (ret != -EACCES)
                return ret;
  
@@ -46542,7 +46816,7 @@ index 3d15072..c1ddf9c 100644
         * Read/write DACs are always overridable.
         * Executable DACs are overridable when there is
         * at least one exec bit set.
         * Read/write DACs are always overridable.
         * Executable DACs are overridable when there is
         * at least one exec bit set.
-@@ -299,14 +315,6 @@ int generic_permission(struct inode *inode, int mask)
+@@ -297,14 +313,6 @@ int generic_permission(struct inode *inode, int mask)
                if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
                        return 0;
  
                if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
                        return 0;
  
@@ -46578,7 +46852,7 @@ index 3d15072..c1ddf9c 100644
                error = 0;
                if (s)
                        error = __vfs_follow_link(nd, s);
                error = 0;
                if (s)
                        error = __vfs_follow_link(nd, s);
-@@ -1622,6 +1638,21 @@ static int path_lookupat(int dfd, const char *name,
+@@ -1624,6 +1640,21 @@ static int path_lookupat(int dfd, const char *name,
        if (!err)
                err = complete_walk(nd);
  
        if (!err)
                err = complete_walk(nd);
  
@@ -46600,7 +46874,7 @@ index 3d15072..c1ddf9c 100644
        if (!err && nd->flags & LOOKUP_DIRECTORY) {
                if (!nd->inode->i_op->lookup) {
                        path_put(&nd->path);
        if (!err && nd->flags & LOOKUP_DIRECTORY) {
                if (!nd->inode->i_op->lookup) {
                        path_put(&nd->path);
-@@ -1649,6 +1680,15 @@ static int do_path_lookup(int dfd, const char *name,
+@@ -1651,6 +1682,15 @@ static int do_path_lookup(int dfd, const char *name,
                retval = path_lookupat(dfd, name, flags | LOOKUP_REVAL, nd);
  
        if (likely(!retval)) {
                retval = path_lookupat(dfd, name, flags | LOOKUP_REVAL, nd);
  
        if (likely(!retval)) {
@@ -46616,36 +46890,21 @@ index 3d15072..c1ddf9c 100644
                if (unlikely(!audit_dummy_context())) {
                        if (nd->path.dentry && nd->inode)
                                audit_inode(name, nd->path.dentry);
                if (unlikely(!audit_dummy_context())) {
                        if (nd->path.dentry && nd->inode)
                                audit_inode(name, nd->path.dentry);
-@@ -2049,7 +2089,27 @@ static int may_open(struct path *path, int acc_mode, int flag)
-       /*
-        * Ensure there are no outstanding leases on the file.
-        */
--      return break_lease(inode, flag);
-+      error = break_lease(inode, flag);
-+
-+      if (error)
-+              return error;
-+
-+      if (gr_handle_rofs_blockwrite(dentry, path->mnt, acc_mode)) {
-+              error = -EPERM;
-+              goto exit;
-+      }
-+
-+      if (gr_handle_rawio(inode)) {
-+              error = -EPERM;
-+              goto exit;
-+      }
+@@ -2048,6 +2088,13 @@ static int may_open(struct path *path, int acc_mode, int flag)
+       if (flag & O_NOATIME && !inode_owner_or_capable(inode))
+               return -EPERM;
++      if (gr_handle_rofs_blockwrite(dentry, path->mnt, acc_mode))
++              return -EPERM;
++      if (gr_handle_rawio(inode))
++              return -EPERM;
++      if (!gr_acl_handle_open(dentry, path->mnt, acc_mode))
++              return -EACCES;
 +
 +
-+      if (!gr_acl_handle_open(dentry, path->mnt, acc_mode)) {
-+              error = -EACCES;
-+              goto exit;
-+      }
-+exit:
-+      return error;
+       return 0;
  }
  
  }
  
- static int handle_truncate(struct file *filp)
-@@ -2110,6 +2170,16 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
+@@ -2109,6 +2156,16 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
                error = complete_walk(nd);
                if (error)
                        return ERR_PTR(error);
                error = complete_walk(nd);
                if (error)
                        return ERR_PTR(error);
@@ -46662,7 +46921,7 @@ index 3d15072..c1ddf9c 100644
                audit_inode(pathname, nd->path.dentry);
                if (open_flag & O_CREAT) {
                        error = -EISDIR;
                audit_inode(pathname, nd->path.dentry);
                if (open_flag & O_CREAT) {
                        error = -EISDIR;
-@@ -2120,6 +2190,16 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
+@@ -2119,6 +2176,16 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
                error = complete_walk(nd);
                if (error)
                        return ERR_PTR(error);
                error = complete_walk(nd);
                if (error)
                        return ERR_PTR(error);
@@ -46679,10 +46938,10 @@ index 3d15072..c1ddf9c 100644
                audit_inode(pathname, dir);
                goto ok;
        }
                audit_inode(pathname, dir);
                goto ok;
        }
-@@ -2141,6 +2221,16 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
+@@ -2140,6 +2207,16 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
                error = complete_walk(nd);
                if (error)
                error = complete_walk(nd);
                if (error)
-                       return ERR_PTR(-ECHILD);
+                       return ERR_PTR(error);
 +#ifdef CONFIG_GRKERNSEC
 +              if (nd->flags & LOOKUP_RCU) {
 +                      error = -ECHILD;
 +#ifdef CONFIG_GRKERNSEC
 +              if (nd->flags & LOOKUP_RCU) {
 +                      error = -ECHILD;
@@ -46696,7 +46955,7 @@ index 3d15072..c1ddf9c 100644
  
                error = -ENOTDIR;
                if (nd->flags & LOOKUP_DIRECTORY) {
  
                error = -ENOTDIR;
                if (nd->flags & LOOKUP_DIRECTORY) {
-@@ -2181,6 +2271,12 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
+@@ -2180,6 +2257,12 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
        /* Negative dentry, just create the file */
        if (!dentry->d_inode) {
                int mode = op->mode;
        /* Negative dentry, just create the file */
        if (!dentry->d_inode) {
                int mode = op->mode;
@@ -46709,7 +46968,7 @@ index 3d15072..c1ddf9c 100644
                if (!IS_POSIXACL(dir->d_inode))
                        mode &= ~current_umask();
                /*
                if (!IS_POSIXACL(dir->d_inode))
                        mode &= ~current_umask();
                /*
-@@ -2204,6 +2300,8 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
+@@ -2203,6 +2286,8 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
                error = vfs_create(dir->d_inode, dentry, mode, nd);
                if (error)
                        goto exit_mutex_unlock;
                error = vfs_create(dir->d_inode, dentry, mode, nd);
                if (error)
                        goto exit_mutex_unlock;
@@ -46718,7 +46977,7 @@ index 3d15072..c1ddf9c 100644
                mutex_unlock(&dir->d_inode->i_mutex);
                dput(nd->path.dentry);
                nd->path.dentry = dentry;
                mutex_unlock(&dir->d_inode->i_mutex);
                dput(nd->path.dentry);
                nd->path.dentry = dentry;
-@@ -2213,6 +2311,19 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
+@@ -2212,6 +2297,19 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
        /*
         * It already exists.
         */
        /*
         * It already exists.
         */
@@ -46738,7 +46997,7 @@ index 3d15072..c1ddf9c 100644
        mutex_unlock(&dir->d_inode->i_mutex);
        audit_inode(pathname, path->dentry);
  
        mutex_unlock(&dir->d_inode->i_mutex);
        audit_inode(pathname, path->dentry);
  
-@@ -2425,6 +2536,11 @@ struct dentry *kern_path_create(int dfd, const char *pathname, struct path *path
+@@ -2424,6 +2522,11 @@ struct dentry *kern_path_create(int dfd, const char *pathname, struct path *path
        *path = nd.path;
        return dentry;
  eexist:
        *path = nd.path;
        return dentry;
  eexist:
@@ -46750,7 +47009,7 @@ index 3d15072..c1ddf9c 100644
        dput(dentry);
        dentry = ERR_PTR(-EEXIST);
  fail:
        dput(dentry);
        dentry = ERR_PTR(-EEXIST);
  fail:
-@@ -2447,6 +2563,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname, struct pat
+@@ -2446,6 +2549,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname, struct pat
  }
  EXPORT_SYMBOL(user_path_create);
  
  }
  EXPORT_SYMBOL(user_path_create);
  
@@ -46771,7 +47030,7 @@ index 3d15072..c1ddf9c 100644
  int vfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev)
  {
        int error = may_create(dir, dentry);
  int vfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev)
  {
        int error = may_create(dir, dentry);
-@@ -2514,6 +2644,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode,
+@@ -2513,6 +2630,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode,
        error = mnt_want_write(path.mnt);
        if (error)
                goto out_dput;
        error = mnt_want_write(path.mnt);
        if (error)
                goto out_dput;
@@ -46789,7 +47048,7 @@ index 3d15072..c1ddf9c 100644
        error = security_path_mknod(&path, dentry, mode, dev);
        if (error)
                goto out_drop_write;
        error = security_path_mknod(&path, dentry, mode, dev);
        if (error)
                goto out_drop_write;
-@@ -2531,6 +2672,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode,
+@@ -2530,6 +2658,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode,
        }
  out_drop_write:
        mnt_drop_write(path.mnt);
        }
  out_drop_write:
        mnt_drop_write(path.mnt);
@@ -46799,7 +47058,7 @@ index 3d15072..c1ddf9c 100644
  out_dput:
        dput(dentry);
        mutex_unlock(&path.dentry->d_inode->i_mutex);
  out_dput:
        dput(dentry);
        mutex_unlock(&path.dentry->d_inode->i_mutex);
-@@ -2580,12 +2724,21 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, int, mode)
+@@ -2579,12 +2710,21 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, int, mode)
        error = mnt_want_write(path.mnt);
        if (error)
                goto out_dput;
        error = mnt_want_write(path.mnt);
        if (error)
                goto out_dput;
@@ -46821,7 +47080,7 @@ index 3d15072..c1ddf9c 100644
  out_dput:
        dput(dentry);
        mutex_unlock(&path.dentry->d_inode->i_mutex);
  out_dput:
        dput(dentry);
        mutex_unlock(&path.dentry->d_inode->i_mutex);
-@@ -2665,6 +2818,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
+@@ -2664,6 +2804,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
        char * name;
        struct dentry *dentry;
        struct nameidata nd;
        char * name;
        struct dentry *dentry;
        struct nameidata nd;
@@ -46830,7 +47089,7 @@ index 3d15072..c1ddf9c 100644
  
        error = user_path_parent(dfd, pathname, &nd, &name);
        if (error)
  
        error = user_path_parent(dfd, pathname, &nd, &name);
        if (error)
-@@ -2693,6 +2848,15 @@ static long do_rmdir(int dfd, const char __user *pathname)
+@@ -2692,6 +2834,15 @@ static long do_rmdir(int dfd, const char __user *pathname)
                error = -ENOENT;
                goto exit3;
        }
                error = -ENOENT;
                goto exit3;
        }
@@ -46846,7 +47105,7 @@ index 3d15072..c1ddf9c 100644
        error = mnt_want_write(nd.path.mnt);
        if (error)
                goto exit3;
        error = mnt_want_write(nd.path.mnt);
        if (error)
                goto exit3;
-@@ -2700,6 +2864,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
+@@ -2699,6 +2850,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
        if (error)
                goto exit4;
        error = vfs_rmdir(nd.path.dentry->d_inode, dentry);
        if (error)
                goto exit4;
        error = vfs_rmdir(nd.path.dentry->d_inode, dentry);
@@ -46855,7 +47114,7 @@ index 3d15072..c1ddf9c 100644
  exit4:
        mnt_drop_write(nd.path.mnt);
  exit3:
  exit4:
        mnt_drop_write(nd.path.mnt);
  exit3:
-@@ -2762,6 +2928,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
+@@ -2761,6 +2914,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
        struct dentry *dentry;
        struct nameidata nd;
        struct inode *inode = NULL;
        struct dentry *dentry;
        struct nameidata nd;
        struct inode *inode = NULL;
@@ -46864,7 +47123,7 @@ index 3d15072..c1ddf9c 100644
  
        error = user_path_parent(dfd, pathname, &nd, &name);
        if (error)
  
        error = user_path_parent(dfd, pathname, &nd, &name);
        if (error)
-@@ -2784,6 +2952,16 @@ static long do_unlinkat(int dfd, const char __user *pathname)
+@@ -2783,6 +2938,16 @@ static long do_unlinkat(int dfd, const char __user *pathname)
                if (!inode)
                        goto slashes;
                ihold(inode);
                if (!inode)
                        goto slashes;
                ihold(inode);
@@ -46881,7 +47140,7 @@ index 3d15072..c1ddf9c 100644
                error = mnt_want_write(nd.path.mnt);
                if (error)
                        goto exit2;
                error = mnt_want_write(nd.path.mnt);
                if (error)
                        goto exit2;
-@@ -2791,6 +2969,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
+@@ -2790,6 +2955,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
                if (error)
                        goto exit3;
                error = vfs_unlink(nd.path.dentry->d_inode, dentry);
                if (error)
                        goto exit3;
                error = vfs_unlink(nd.path.dentry->d_inode, dentry);
@@ -46890,7 +47149,7 @@ index 3d15072..c1ddf9c 100644
  exit3:
                mnt_drop_write(nd.path.mnt);
        exit2:
  exit3:
                mnt_drop_write(nd.path.mnt);
        exit2:
-@@ -2866,10 +3046,18 @@ SYSCALL_DEFINE3(symlinkat, const char __user *, oldname,
+@@ -2865,10 +3032,18 @@ SYSCALL_DEFINE3(symlinkat, const char __user *, oldname,
        error = mnt_want_write(path.mnt);
        if (error)
                goto out_dput;
        error = mnt_want_write(path.mnt);
        if (error)
                goto out_dput;
@@ -46909,7 +47168,7 @@ index 3d15072..c1ddf9c 100644
  out_drop_write:
        mnt_drop_write(path.mnt);
  out_dput:
  out_drop_write:
        mnt_drop_write(path.mnt);
  out_dput:
-@@ -2941,6 +3129,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
+@@ -2940,6 +3115,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
  {
        struct dentry *new_dentry;
        struct path old_path, new_path;
  {
        struct dentry *new_dentry;
        struct path old_path, new_path;
@@ -46917,7 +47176,7 @@ index 3d15072..c1ddf9c 100644
        int how = 0;
        int error;
  
        int how = 0;
        int error;
  
-@@ -2964,7 +3153,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
+@@ -2963,7 +3139,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
        if (error)
                return error;
  
        if (error)
                return error;
  
@@ -46926,7 +47185,7 @@ index 3d15072..c1ddf9c 100644
        error = PTR_ERR(new_dentry);
        if (IS_ERR(new_dentry))
                goto out;
        error = PTR_ERR(new_dentry);
        if (IS_ERR(new_dentry))
                goto out;
-@@ -2975,13 +3164,30 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
+@@ -2974,13 +3150,30 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
        error = mnt_want_write(new_path.mnt);
        if (error)
                goto out_dput;
        error = mnt_want_write(new_path.mnt);
        if (error)
                goto out_dput;
@@ -46957,16 +47216,7 @@ index 3d15072..c1ddf9c 100644
        dput(new_dentry);
        mutex_unlock(&new_path.dentry->d_inode->i_mutex);
        path_put(&new_path);
        dput(new_dentry);
        mutex_unlock(&new_path.dentry->d_inode->i_mutex);
        path_put(&new_path);
-@@ -3153,6 +3359,8 @@ SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
-       char *to;
-       int error;
-+      pax_track_stack();
-+
-       error = user_path_parent(olddfd, oldname, &oldnd, &from);
-       if (error)
-               goto exit;
-@@ -3209,6 +3417,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
+@@ -3208,6 +3401,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
        if (new_dentry == trap)
                goto exit5;
  
        if (new_dentry == trap)
                goto exit5;
  
@@ -46979,7 +47229,7 @@ index 3d15072..c1ddf9c 100644
        error = mnt_want_write(oldnd.path.mnt);
        if (error)
                goto exit5;
        error = mnt_want_write(oldnd.path.mnt);
        if (error)
                goto exit5;
-@@ -3218,6 +3432,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
+@@ -3217,6 +3416,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
                goto exit6;
        error = vfs_rename(old_dir->d_inode, old_dentry,
                                   new_dir->d_inode, new_dentry);
                goto exit6;
        error = vfs_rename(old_dir->d_inode, old_dentry,
                                   new_dir->d_inode, new_dentry);
@@ -46989,7 +47239,7 @@ index 3d15072..c1ddf9c 100644
  exit6:
        mnt_drop_write(oldnd.path.mnt);
  exit5:
  exit6:
        mnt_drop_write(oldnd.path.mnt);
  exit5:
-@@ -3243,6 +3460,8 @@ SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newna
+@@ -3242,6 +3444,8 @@ SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newna
  
  int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link)
  {
  
  int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link)
  {
@@ -46998,7 +47248,7 @@ index 3d15072..c1ddf9c 100644
        int len;
  
        len = PTR_ERR(link);
        int len;
  
        len = PTR_ERR(link);
-@@ -3252,7 +3471,14 @@ int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const c
+@@ -3251,7 +3455,14 @@ int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const c
        len = strlen(link);
        if (len > (unsigned) buflen)
                len = buflen;
        len = strlen(link);
        if (len > (unsigned) buflen)
                len = buflen;
@@ -47015,10 +47265,10 @@ index 3d15072..c1ddf9c 100644
  out:
        return len;
 diff --git a/fs/namespace.c b/fs/namespace.c
  out:
        return len;
 diff --git a/fs/namespace.c b/fs/namespace.c
-index e5e1c7d..019609e 100644
+index cfc6d44..b4632a5 100644
 --- a/fs/namespace.c
 +++ b/fs/namespace.c
 --- a/fs/namespace.c
 +++ b/fs/namespace.c
-@@ -1329,6 +1329,9 @@ static int do_umount(struct vfsmount *mnt, int flags)
+@@ -1326,6 +1326,9 @@ static int do_umount(struct vfsmount *mnt, int flags)
                if (!(sb->s_flags & MS_RDONLY))
                        retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
                up_write(&sb->s_umount);
                if (!(sb->s_flags & MS_RDONLY))
                        retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
                up_write(&sb->s_umount);
@@ -47028,7 +47278,7 @@ index e5e1c7d..019609e 100644
                return retval;
        }
  
                return retval;
        }
  
-@@ -1348,6 +1351,9 @@ static int do_umount(struct vfsmount *mnt, int flags)
+@@ -1345,6 +1348,9 @@ static int do_umount(struct vfsmount *mnt, int flags)
        br_write_unlock(vfsmount_lock);
        up_write(&namespace_sem);
        release_mounts(&umount_list);
        br_write_unlock(vfsmount_lock);
        up_write(&namespace_sem);
        release_mounts(&umount_list);
@@ -47038,7 +47288,7 @@ index e5e1c7d..019609e 100644
        return retval;
  }
  
        return retval;
  }
  
-@@ -2339,6 +2345,16 @@ long do_mount(char *dev_name, char *dir_name, char *type_page,
+@@ -2336,6 +2342,16 @@ long do_mount(char *dev_name, char *dir_name, char *type_page,
                   MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
                   MS_STRICTATIME);
  
                   MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
                   MS_STRICTATIME);
  
@@ -47055,7 +47305,7 @@ index e5e1c7d..019609e 100644
        if (flags & MS_REMOUNT)
                retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
                                    data_page);
        if (flags & MS_REMOUNT)
                retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
                                    data_page);
-@@ -2353,6 +2369,9 @@ long do_mount(char *dev_name, char *dir_name, char *type_page,
+@@ -2350,6 +2366,9 @@ long do_mount(char *dev_name, char *dir_name, char *type_page,
                                      dev_name, data_page);
  dput_out:
        path_put(&path);
                                      dev_name, data_page);
  dput_out:
        path_put(&path);
@@ -47065,7 +47315,7 @@ index e5e1c7d..019609e 100644
        return retval;
  }
  
        return retval;
  }
  
-@@ -2576,6 +2595,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
+@@ -2605,6 +2624,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
        if (error)
                goto out2;
  
        if (error)
                goto out2;
  
@@ -47077,70 +47327,30 @@ index e5e1c7d..019609e 100644
        get_fs_root(current->fs, &root);
        error = lock_mount(&old);
        if (error)
        get_fs_root(current->fs, &root);
        error = lock_mount(&old);
        if (error)
-diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c
-index 9c51f62..503b252 100644
---- a/fs/ncpfs/dir.c
-+++ b/fs/ncpfs/dir.c
-@@ -299,6 +299,8 @@ ncp_lookup_validate(struct dentry *dentry, struct nameidata *nd)
-       int res, val = 0, len;
-       __u8 __name[NCP_MAXPATHLEN + 1];
-+      pax_track_stack();
-+
-       if (dentry == dentry->d_sb->s_root)
-               return 1;
-@@ -844,6 +846,8 @@ static struct dentry *ncp_lookup(struct inode *dir, struct dentry *dentry, struc
-       int error, res, len;
-       __u8 __name[NCP_MAXPATHLEN + 1];
-+      pax_track_stack();
-+
-       error = -EIO;
-       if (!ncp_conn_valid(server))
-               goto finished;
-@@ -931,6 +935,8 @@ int ncp_create_new(struct inode *dir, struct dentry *dentry, int mode,
-       PPRINTK("ncp_create_new: creating %s/%s, mode=%x\n",
-               dentry->d_parent->d_name.name, dentry->d_name.name, mode);
-+      pax_track_stack();
-+
-       ncp_age_dentry(server, dentry);
-       len = sizeof(__name);
-       error = ncp_io2vol(server, __name, &len, dentry->d_name.name,
-@@ -992,6 +998,8 @@ static int ncp_mkdir(struct inode *dir, struct dentry *dentry, int mode)
-       int error, len;
-       __u8 __name[NCP_MAXPATHLEN + 1];
-+      pax_track_stack();
-+
-       DPRINTK("ncp_mkdir: making %s/%s\n",
-               dentry->d_parent->d_name.name, dentry->d_name.name);
-@@ -1140,6 +1148,8 @@ static int ncp_rename(struct inode *old_dir, struct dentry *old_dentry,
-       int old_len, new_len;
-       __u8 __old_name[NCP_MAXPATHLEN + 1], __new_name[NCP_MAXPATHLEN + 1];
-+      pax_track_stack();
-+
-       DPRINTK("ncp_rename: %s/%s to %s/%s\n",
-               old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
-               new_dentry->d_parent->d_name.name, new_dentry->d_name.name);
-diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
-index 202f370..9d4565e 100644
---- a/fs/ncpfs/inode.c
-+++ b/fs/ncpfs/inode.c
-@@ -461,6 +461,8 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
- #endif
-       struct ncp_entry_info finfo;
-+      pax_track_stack();
-+
-       memset(&data, 0, sizeof(data));
-       server = kzalloc(sizeof(struct ncp_server), GFP_KERNEL);
-       if (!server)
+diff --git a/fs/ncpfs/ncplib_kernel.h b/fs/ncpfs/ncplib_kernel.h
+index 09881e6..308ff20 100644
+--- a/fs/ncpfs/ncplib_kernel.h
++++ b/fs/ncpfs/ncplib_kernel.h
+@@ -130,7 +130,7 @@ static inline int ncp_is_nfs_extras(struct ncp_server* server, unsigned int voln
+ int ncp__io2vol(struct ncp_server *, unsigned char *, unsigned int *,
+                               const unsigned char *, unsigned int, int);
+ int ncp__vol2io(struct ncp_server *, unsigned char *, unsigned int *,
+-                              const unsigned char *, unsigned int, int);
++                              const unsigned char *, unsigned int, int) __size_overflow(5);
+ #define NCP_ESC                       ':'
+ #define NCP_IO_TABLE(sb)      (NCP_SBP(sb)->nls_io)
+@@ -146,7 +146,7 @@ int ncp__vol2io(struct ncp_server *, unsigned char *, unsigned int *,
+ int ncp__io2vol(unsigned char *, unsigned int *,
+                               const unsigned char *, unsigned int, int);
+ int ncp__vol2io(unsigned char *, unsigned int *,
+-                              const unsigned char *, unsigned int, int);
++                              const unsigned char *, unsigned int, int) __size_overflow(5);
+ #define NCP_IO_TABLE(sb)      NULL
+ #define ncp_tolower(t, c)     tolower(c)
 diff --git a/fs/nfs/blocklayout/blocklayout.c b/fs/nfs/blocklayout/blocklayout.c
 diff --git a/fs/nfs/blocklayout/blocklayout.c b/fs/nfs/blocklayout/blocklayout.c
-index 281ae95..dd895b9 100644
+index 3db6b82..a57597e 100644
 --- a/fs/nfs/blocklayout/blocklayout.c
 +++ b/fs/nfs/blocklayout/blocklayout.c
 @@ -90,7 +90,7 @@ static int is_writable(struct pnfs_block_extent *be, sector_t isect)
 --- a/fs/nfs/blocklayout/blocklayout.c
 +++ b/fs/nfs/blocklayout/blocklayout.c
 @@ -90,7 +90,7 @@ static int is_writable(struct pnfs_block_extent *be, sector_t isect)
@@ -47153,7 +47363,7 @@ index 281ae95..dd895b9 100644
        void *data;
  };
 diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
        void *data;
  };
 diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
-index 679d2f5..ef1ffec 100644
+index 50a15fa..ca113f9 100644
 --- a/fs/nfs/inode.c
 +++ b/fs/nfs/inode.c
 @@ -150,7 +150,7 @@ static void nfs_zap_caches_locked(struct inode *inode)
 --- a/fs/nfs/inode.c
 +++ b/fs/nfs/inode.c
 @@ -150,7 +150,7 @@ static void nfs_zap_caches_locked(struct inode *inode)
@@ -47185,37 +47395,11 @@ index 679d2f5..ef1ffec 100644
  }
  
  void nfs_fattr_init(struct nfs_fattr *fattr)
  }
  
  void nfs_fattr_init(struct nfs_fattr *fattr)
-diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
-index 6f8bcc7..8f823c5 100644
---- a/fs/nfsd/nfs4state.c
-+++ b/fs/nfsd/nfs4state.c
-@@ -3999,6 +3999,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
-       unsigned int strhashval;
-       int err;
-+      pax_track_stack();
-+
-       dprintk("NFSD: nfsd4_lock: start=%Ld length=%Ld\n",
-               (long long) lock->lk_offset,
-               (long long) lock->lk_length);
-diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
-index f810996..cec8977 100644
---- a/fs/nfsd/nfs4xdr.c
-+++ b/fs/nfsd/nfs4xdr.c
-@@ -1875,6 +1875,8 @@ nfsd4_encode_fattr(struct svc_fh *fhp, struct svc_export *exp,
-               .dentry = dentry,
-       };
-+      pax_track_stack();
-+
-       BUG_ON(bmval1 & NFSD_WRITEONLY_ATTRS_WORD1);
-       BUG_ON(bmval0 & ~nfsd_suppattrs0(minorversion));
-       BUG_ON(bmval1 & ~nfsd_suppattrs1(minorversion));
 diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
 diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
-index acf88ae..4fd6245 100644
+index 7a2e442..8e544cc 100644
 --- a/fs/nfsd/vfs.c
 +++ b/fs/nfsd/vfs.c
 --- a/fs/nfsd/vfs.c
 +++ b/fs/nfsd/vfs.c
-@@ -896,7 +896,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
+@@ -914,7 +914,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
        } else {
                oldfs = get_fs();
                set_fs(KERNEL_DS);
        } else {
                oldfs = get_fs();
                set_fs(KERNEL_DS);
@@ -47224,7 +47408,7 @@ index acf88ae..4fd6245 100644
                set_fs(oldfs);
        }
  
                set_fs(oldfs);
        }
  
-@@ -1000,7 +1000,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
+@@ -1018,7 +1018,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
  
        /* Write the data. */
        oldfs = get_fs(); set_fs(KERNEL_DS);
  
        /* Write the data. */
        oldfs = get_fs(); set_fs(KERNEL_DS);
@@ -47233,7 +47417,7 @@ index acf88ae..4fd6245 100644
        set_fs(oldfs);
        if (host_err < 0)
                goto out_nfserr;
        set_fs(oldfs);
        if (host_err < 0)
                goto out_nfserr;
-@@ -1535,7 +1535,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
+@@ -1553,7 +1553,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
         */
  
        oldfs = get_fs(); set_fs(KERNEL_DS);
         */
  
        oldfs = get_fs(); set_fs(KERNEL_DS);
@@ -47242,6 +47426,31 @@ index acf88ae..4fd6245 100644
        set_fs(oldfs);
  
        if (host_err < 0)
        set_fs(oldfs);
  
        if (host_err < 0)
+diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c
+index d327140..501b7f8 100644
+--- a/fs/nilfs2/the_nilfs.c
++++ b/fs/nilfs2/the_nilfs.c
+@@ -409,6 +409,12 @@ static int nilfs_store_disk_layout(struct the_nilfs *nilfs,
+       nilfs->ns_first_data_block = le64_to_cpu(sbp->s_first_data_block);
+       nilfs->ns_r_segments_percentage =
+               le32_to_cpu(sbp->s_r_segments_percentage);
++      if (nilfs->ns_r_segments_percentage < 1 ||
++          nilfs->ns_r_segments_percentage > 99) {
++              printk(KERN_ERR "NILFS: invalid reserved segments percentage.\n");
++              return -EINVAL;
++      }
++
+       nilfs_set_nsegments(nilfs, le64_to_cpu(sbp->s_nsegments));
+       nilfs->ns_crc_seed = le32_to_cpu(sbp->s_crc_seed);
+       return 0;
+@@ -515,6 +521,7 @@ static int nilfs_load_super_block(struct the_nilfs *nilfs,
+               brelse(sbh[1]);
+               sbh[1] = NULL;
+               sbp[1] = NULL;
++              valid[1] = 0;
+               swp = 0;
+       }
+       if (!valid[swp]) {
 diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
 index 9fde1c0..14e8827 100644
 --- a/fs/notify/fanotify/fanotify_user.c
 diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
 index 9fde1c0..14e8827 100644
 --- a/fs/notify/fanotify/fanotify_user.c
@@ -47317,21 +47526,8 @@ index 210c352..a174f83 100644
  
  bail:
        if (handle)
  
  bail:
        if (handle)
-diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c
-index 53aa41e..d7df9f1 100644
---- a/fs/ocfs2/namei.c
-+++ b/fs/ocfs2/namei.c
-@@ -1063,6 +1063,8 @@ static int ocfs2_rename(struct inode *old_dir,
-       struct ocfs2_dir_lookup_result orphan_insert = { NULL, };
-       struct ocfs2_dir_lookup_result target_insert = { NULL, };
-+      pax_track_stack();
-+
-       /* At some point it might be nice to break this function up a
-        * bit. */
 diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
 diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
-index 4092858..51c70ff 100644
+index d355e6e..578d905 100644
 --- a/fs/ocfs2/ocfs2.h
 +++ b/fs/ocfs2/ocfs2.h
 @@ -235,11 +235,11 @@ enum ocfs2_vol_state
 --- a/fs/ocfs2/ocfs2.h
 +++ b/fs/ocfs2/ocfs2.h
 @@ -235,11 +235,11 @@ enum ocfs2_vol_state
@@ -47410,10 +47606,10 @@ index ba5d97e..c77db25 100644
                }
        }
 diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
                }
        }
 diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
-index 56f6102..1433c29 100644
+index 4994f8b..eaab8eb 100644
 --- a/fs/ocfs2/super.c
 +++ b/fs/ocfs2/super.c
 --- a/fs/ocfs2/super.c
 +++ b/fs/ocfs2/super.c
-@@ -300,11 +300,11 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
+@@ -301,11 +301,11 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
                        "%10s => GlobalAllocs: %d  LocalAllocs: %d  "
                        "SubAllocs: %d  LAWinMoves: %d  SAExtends: %d\n",
                        "Stats",
                        "%10s => GlobalAllocs: %d  LocalAllocs: %d  "
                        "SubAllocs: %d  LAWinMoves: %d  SAExtends: %d\n",
                        "Stats",
@@ -47430,7 +47626,7 @@ index 56f6102..1433c29 100644
  
        out += snprintf(buf + out, len - out,
                        "%10s => State: %u  Descriptor: %llu  Size: %u bits  "
  
        out += snprintf(buf + out, len - out,
                        "%10s => State: %u  Descriptor: %llu  Size: %u bits  "
-@@ -2112,11 +2112,11 @@ static int ocfs2_initialize_super(struct super_block *sb,
+@@ -2119,11 +2119,11 @@ static int ocfs2_initialize_super(struct super_block *sb,
        spin_lock_init(&osb->osb_xattr_lock);
        ocfs2_init_steal_slots(osb);
  
        spin_lock_init(&osb->osb_xattr_lock);
        ocfs2_init_steal_slots(osb);
  
@@ -47461,7 +47657,7 @@ index 5d22872..523db20 100644
                kfree(link);
  }
 diff --git a/fs/open.c b/fs/open.c
                kfree(link);
  }
 diff --git a/fs/open.c b/fs/open.c
-index f711921..28d5958 100644
+index 22c41b5..78894cf 100644
 --- a/fs/open.c
 +++ b/fs/open.c
 @@ -112,6 +112,10 @@ static long do_sys_truncate(const char __user *pathname, loff_t length)
 --- a/fs/open.c
 +++ b/fs/open.c
 @@ -112,6 +112,10 @@ static long do_sys_truncate(const char __user *pathname, loff_t length)
@@ -47527,7 +47723,7 @@ index f711921..28d5958 100644
                return error;
        mutex_lock(&inode->i_mutex);
 +
                return error;
        mutex_lock(&inode->i_mutex);
 +
-+      if (!gr_acl_handle_fchmod(path->dentry, path->mnt, mode)) {
++      if (!gr_acl_handle_chmod(path->dentry, path->mnt, &mode)) {
 +              error = -EACCES;
 +              goto out_unlock;
 +      }
 +              error = -EACCES;
 +              goto out_unlock;
 +      }
@@ -47575,10 +47771,10 @@ index 6296b40..417c00f 100644
                       (u8 *) pte,
                     count) < count) {
 diff --git a/fs/partitions/ldm.c b/fs/partitions/ldm.c
                       (u8 *) pte,
                     count) < count) {
 diff --git a/fs/partitions/ldm.c b/fs/partitions/ldm.c
-index af9fdf0..75b15c3 100644
+index bd8ae78..539d250 100644
 --- a/fs/partitions/ldm.c
 +++ b/fs/partitions/ldm.c
 --- a/fs/partitions/ldm.c
 +++ b/fs/partitions/ldm.c
-@@ -1322,7 +1322,7 @@ static bool ldm_frag_add (const u8 *data, int size, struct list_head *frags)
+@@ -1324,7 +1324,7 @@ static bool ldm_frag_add (const u8 *data, int size, struct list_head *frags)
                        goto found;
        }
  
                        goto found;
        }
  
@@ -47588,7 +47784,7 @@ index af9fdf0..75b15c3 100644
                ldm_crit ("Out of memory.");
                return false;
 diff --git a/fs/pipe.c b/fs/pipe.c
                ldm_crit ("Out of memory.");
                return false;
 diff --git a/fs/pipe.c b/fs/pipe.c
-index 0e0be1d..f62a72d 100644
+index 4065f07..68c0706 100644
 --- a/fs/pipe.c
 +++ b/fs/pipe.c
 @@ -420,9 +420,9 @@ redo:
 --- a/fs/pipe.c
 +++ b/fs/pipe.c
 @@ -420,9 +420,9 @@ redo:
@@ -47746,7 +47942,7 @@ index 15af622..0e9f4467 100644
        help
          Various /proc files exist to monitor process memory utilization:
 diff --git a/fs/proc/array.c b/fs/proc/array.c
        help
          Various /proc files exist to monitor process memory utilization:
 diff --git a/fs/proc/array.c b/fs/proc/array.c
-index 3a1dafd..c7fed72 100644
+index 3a1dafd..bf1bd84 100644
 --- a/fs/proc/array.c
 +++ b/fs/proc/array.c
 @@ -60,6 +60,7 @@
 --- a/fs/proc/array.c
 +++ b/fs/proc/array.c
 @@ -60,6 +60,7 @@
@@ -47804,16 +48000,21 @@ index 3a1dafd..c7fed72 100644
  static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
                        struct pid *pid, struct task_struct *task, int whole)
  {
  static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
                        struct pid *pid, struct task_struct *task, int whole)
  {
-@@ -378,6 +409,8 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
+@@ -378,6 +409,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
        char tcomm[sizeof(task->comm)];
        unsigned long flags;
  
        char tcomm[sizeof(task->comm)];
        unsigned long flags;
  
-+      pax_track_stack();
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      if (current->exec_id != m->exec_id) {
++              gr_log_badprocpid("stat");
++              return 0;
++      }
++#endif
 +
        state = *get_task_state(task);
        vsize = eip = esp = 0;
        permitted = ptrace_may_access(task, PTRACE_MODE_READ);
 +
        state = *get_task_state(task);
        vsize = eip = esp = 0;
        permitted = ptrace_may_access(task, PTRACE_MODE_READ);
-@@ -449,6 +482,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
+@@ -449,6 +487,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
                gtime = task->gtime;
        }
  
                gtime = task->gtime;
        }
  
@@ -47833,7 +48034,7 @@ index 3a1dafd..c7fed72 100644
        /* scale priority and nice values from timeslices to -20..20 */
        /* to make it look like a "normal" Unix priority/nice value  */
        priority = task_prio(task);
        /* scale priority and nice values from timeslices to -20..20 */
        /* to make it look like a "normal" Unix priority/nice value  */
        priority = task_prio(task);
-@@ -489,9 +535,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
+@@ -489,9 +540,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
                vsize,
                mm ? get_mm_rss(mm) : 0,
                rsslim,
                vsize,
                mm ? get_mm_rss(mm) : 0,
                rsslim,
@@ -47849,7 +48050,24 @@ index 3a1dafd..c7fed72 100644
                esp,
                eip,
                /* The signal information here is obsolete.
                esp,
                eip,
                /* The signal information here is obsolete.
-@@ -544,3 +596,18 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
+@@ -533,8 +590,15 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
+                       struct pid *pid, struct task_struct *task)
+ {
+       unsigned long size = 0, resident = 0, shared = 0, text = 0, data = 0;
+-      struct mm_struct *mm = get_task_mm(task);
++      struct mm_struct *mm;
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      if (current->exec_id != m->exec_id) {
++              gr_log_badprocpid("statm");
++              return 0;
++      }
++#endif
++      mm = get_task_mm(task);
+       if (mm) {
+               size = task_statm(mm, &shared, &text, &data, &resident);
+               mmput(mm);
+@@ -544,3 +608,18 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
  
        return 0;
  }
  
        return 0;
  }
@@ -47869,7 +48087,7 @@ index 3a1dafd..c7fed72 100644
 +}
 +#endif
 diff --git a/fs/proc/base.c b/fs/proc/base.c
 +}
 +#endif
 diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 5eb0206..fe01db4 100644
+index 1ace83d..f5e575d 100644
 --- a/fs/proc/base.c
 +++ b/fs/proc/base.c
 @@ -107,6 +107,22 @@ struct pid_entry {
 --- a/fs/proc/base.c
 +++ b/fs/proc/base.c
 @@ -107,6 +107,22 @@ struct pid_entry {
@@ -47895,17 +48113,34 @@ index 5eb0206..fe01db4 100644
  #define NOD(NAME, MODE, IOP, FOP, OP) {                       \
        .name = (NAME),                                 \
        .len  = sizeof(NAME) - 1,                       \
  #define NOD(NAME, MODE, IOP, FOP, OP) {                       \
        .name = (NAME),                                 \
        .len  = sizeof(NAME) - 1,                       \
-@@ -209,6 +225,9 @@ static struct mm_struct *__check_mem_permission(struct task_struct *task)
-       if (task == current)
-               return mm;
+@@ -194,26 +210,6 @@ static int proc_root_link(struct inode *inode, struct path *path)
+       return result;
+ }
  
  
-+      if (gr_handle_proc_ptrace(task) || gr_acl_handle_procpidmem(task))
-+              return ERR_PTR(-EPERM);
-+
-       /*
-        * If current is actively ptrace'ing, and would also be
-        * permitted to freshly attach with ptrace now, permit it.
-@@ -282,6 +301,9 @@ static int proc_pid_cmdline(struct task_struct *task, char * buffer)
+-static struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
+-{
+-      struct mm_struct *mm;
+-      int err;
+-
+-      err =  mutex_lock_killable(&task->signal->cred_guard_mutex);
+-      if (err)
+-              return ERR_PTR(err);
+-
+-      mm = get_task_mm(task);
+-      if (mm && mm != current->mm &&
+-                      !ptrace_may_access(task, mode)) {
+-              mmput(mm);
+-              mm = ERR_PTR(-EACCES);
+-      }
+-      mutex_unlock(&task->signal->cred_guard_mutex);
+-
+-      return mm;
+-}
+-
+ struct mm_struct *mm_for_maps(struct task_struct *task)
+ {
+       return mm_access(task, PTRACE_MODE_READ);
+@@ -229,6 +225,9 @@ static int proc_pid_cmdline(struct task_struct *task, char * buffer)
        if (!mm->arg_end)
                goto out_mm;    /* Shh! No looking before we're done */
  
        if (!mm->arg_end)
                goto out_mm;    /* Shh! No looking before we're done */
  
@@ -47915,7 +48150,7 @@ index 5eb0206..fe01db4 100644
        len = mm->arg_end - mm->arg_start;
   
        if (len > PAGE_SIZE)
        len = mm->arg_end - mm->arg_start;
   
        if (len > PAGE_SIZE)
-@@ -309,12 +331,28 @@ out:
+@@ -256,12 +255,28 @@ out:
        return res;
  }
  
        return res;
  }
  
@@ -47944,7 +48179,7 @@ index 5eb0206..fe01db4 100644
                do {
                        nwords += 2;
                } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */
                do {
                        nwords += 2;
                } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */
-@@ -328,7 +366,7 @@ static int proc_pid_auxv(struct task_struct *task, char *buffer)
+@@ -275,7 +290,7 @@ static int proc_pid_auxv(struct task_struct *task, char *buffer)
  }
  
  
  }
  
  
@@ -47953,7 +48188,7 @@ index 5eb0206..fe01db4 100644
  /*
   * Provides a wchan file via kallsyms in a proper one-value-per-file format.
   * Returns the resolved symbol.  If that fails, simply return the address.
  /*
   * Provides a wchan file via kallsyms in a proper one-value-per-file format.
   * Returns the resolved symbol.  If that fails, simply return the address.
-@@ -367,7 +405,7 @@ static void unlock_trace(struct task_struct *task)
+@@ -314,7 +329,7 @@ static void unlock_trace(struct task_struct *task)
        mutex_unlock(&task->signal->cred_guard_mutex);
  }
  
        mutex_unlock(&task->signal->cred_guard_mutex);
  }
  
@@ -47962,7 +48197,7 @@ index 5eb0206..fe01db4 100644
  
  #define MAX_STACK_TRACE_DEPTH 64
  
  
  #define MAX_STACK_TRACE_DEPTH 64
  
-@@ -558,7 +596,7 @@ static int proc_pid_limits(struct task_struct *task, char *buffer)
+@@ -505,7 +520,7 @@ static int proc_pid_limits(struct task_struct *task, char *buffer)
        return count;
  }
  
        return count;
  }
  
@@ -47971,7 +48206,7 @@ index 5eb0206..fe01db4 100644
  static int proc_pid_syscall(struct task_struct *task, char *buffer)
  {
        long nr;
  static int proc_pid_syscall(struct task_struct *task, char *buffer)
  {
        long nr;
-@@ -587,7 +625,7 @@ static int proc_pid_syscall(struct task_struct *task, char *buffer)
+@@ -534,7 +549,7 @@ static int proc_pid_syscall(struct task_struct *task, char *buffer)
  /************************************************************************/
  
  /* permission checks */
  /************************************************************************/
  
  /* permission checks */
@@ -47980,7 +48215,7 @@ index 5eb0206..fe01db4 100644
  {
        struct task_struct *task;
        int allowed = 0;
  {
        struct task_struct *task;
        int allowed = 0;
-@@ -597,7 +635,10 @@ static int proc_fd_access_allowed(struct inode *inode)
+@@ -544,7 +559,10 @@ static int proc_fd_access_allowed(struct inode *inode)
         */
        task = get_proc_task(inode);
        if (task) {
         */
        task = get_proc_task(inode);
        if (task) {
@@ -47992,7 +48227,36 @@ index 5eb0206..fe01db4 100644
                put_task_struct(task);
        }
        return allowed;
                put_task_struct(task);
        }
        return allowed;
-@@ -978,6 +1019,9 @@ static ssize_t environ_read(struct file *file, char __user *buf,
+@@ -786,6 +804,10 @@ static int mem_open(struct inode* inode, struct file* file)
+       file->f_mode |= FMODE_UNSIGNED_OFFSET;
+       file->private_data = mm;
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      file->f_version = current->exec_id;
++#endif
++
+       return 0;
+ }
+@@ -797,6 +819,17 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
+       ssize_t copied;
+       char *page;
++#ifdef CONFIG_GRKERNSEC
++      if (write)
++              return -EPERM;
++#endif
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      if (file->f_version != current->exec_id) {
++              gr_log_badprocpid("mem");
++              return 0;
++      }
++#endif
++
+       if (!mm)
+               return 0;
+@@ -897,6 +930,9 @@ static ssize_t environ_read(struct file *file, char __user *buf,
        if (!task)
                goto out_no_task;
  
        if (!task)
                goto out_no_task;
  
@@ -48002,7 +48266,7 @@ index 5eb0206..fe01db4 100644
        ret = -ENOMEM;
        page = (char *)__get_free_page(GFP_TEMPORARY);
        if (!page)
        ret = -ENOMEM;
        page = (char *)__get_free_page(GFP_TEMPORARY);
        if (!page)
-@@ -1613,7 +1657,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd)
+@@ -1519,7 +1555,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd)
        path_put(&nd->path);
  
        /* Are we allowed to snoop on the tasks file descriptors? */
        path_put(&nd->path);
  
        /* Are we allowed to snoop on the tasks file descriptors? */
@@ -48011,7 +48275,7 @@ index 5eb0206..fe01db4 100644
                goto out;
  
        error = PROC_I(inode)->op.proc_get_link(inode, &nd->path);
                goto out;
  
        error = PROC_I(inode)->op.proc_get_link(inode, &nd->path);
-@@ -1652,8 +1696,18 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b
+@@ -1558,8 +1594,18 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b
        struct path path;
  
        /* Are we allowed to snoop on the tasks file descriptors? */
        struct path path;
  
        /* Are we allowed to snoop on the tasks file descriptors? */
@@ -48032,7 +48296,7 @@ index 5eb0206..fe01db4 100644
  
        error = PROC_I(inode)->op.proc_get_link(inode, &path);
        if (error)
  
        error = PROC_I(inode)->op.proc_get_link(inode, &path);
        if (error)
-@@ -1718,7 +1772,11 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t
+@@ -1624,7 +1670,11 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t
                rcu_read_lock();
                cred = __task_cred(task);
                inode->i_uid = cred->euid;
                rcu_read_lock();
                cred = __task_cred(task);
                inode->i_uid = cred->euid;
@@ -48044,7 +48308,7 @@ index 5eb0206..fe01db4 100644
                rcu_read_unlock();
        }
        security_task_to_inode(task, inode);
                rcu_read_unlock();
        }
        security_task_to_inode(task, inode);
-@@ -1736,6 +1794,9 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
+@@ -1642,6 +1692,9 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
        struct inode *inode = dentry->d_inode;
        struct task_struct *task;
        const struct cred *cred;
        struct inode *inode = dentry->d_inode;
        struct task_struct *task;
        const struct cred *cred;
@@ -48054,7 +48318,7 @@ index 5eb0206..fe01db4 100644
  
        generic_fillattr(inode, stat);
  
  
        generic_fillattr(inode, stat);
  
-@@ -1743,13 +1804,41 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
+@@ -1649,13 +1702,41 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
        stat->uid = 0;
        stat->gid = 0;
        task = pid_task(proc_pid(inode), PIDTYPE_PID);
        stat->uid = 0;
        stat->gid = 0;
        task = pid_task(proc_pid(inode), PIDTYPE_PID);
@@ -48097,7 +48361,7 @@ index 5eb0206..fe01db4 100644
        }
        rcu_read_unlock();
        return 0;
        }
        rcu_read_unlock();
        return 0;
-@@ -1786,11 +1875,20 @@ int pid_revalidate(struct dentry *dentry, struct nameidata *nd)
+@@ -1692,11 +1773,20 @@ int pid_revalidate(struct dentry *dentry, struct nameidata *nd)
  
        if (task) {
                if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
  
        if (task) {
                if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
@@ -48118,7 +48382,7 @@ index 5eb0206..fe01db4 100644
                        rcu_read_unlock();
                } else {
                        inode->i_uid = 0;
                        rcu_read_unlock();
                } else {
                        inode->i_uid = 0;
-@@ -1908,7 +2006,8 @@ static int proc_fd_info(struct inode *inode, struct path *path, char *info)
+@@ -1814,7 +1904,8 @@ static int proc_fd_info(struct inode *inode, struct path *path, char *info)
        int fd = proc_fd(inode);
  
        if (task) {
        int fd = proc_fd(inode);
  
        if (task) {
@@ -48128,7 +48392,7 @@ index 5eb0206..fe01db4 100644
                put_task_struct(task);
        }
        if (files) {
                put_task_struct(task);
        }
        if (files) {
-@@ -2176,11 +2275,21 @@ static const struct file_operations proc_fd_operations = {
+@@ -2082,11 +2173,21 @@ static const struct file_operations proc_fd_operations = {
   */
  static int proc_fd_permission(struct inode *inode, int mask)
  {
   */
  static int proc_fd_permission(struct inode *inode, int mask)
  {
@@ -48152,7 +48416,7 @@ index 5eb0206..fe01db4 100644
        return rv;
  }
  
        return rv;
  }
  
-@@ -2290,6 +2399,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir,
+@@ -2196,6 +2297,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir,
        if (!task)
                goto out_no_task;
  
        if (!task)
                goto out_no_task;
  
@@ -48162,7 +48426,7 @@ index 5eb0206..fe01db4 100644
        /*
         * Yes, it does not scale. And it should not. Don't add
         * new entries into /proc/<tgid>/ without very good reasons.
        /*
         * Yes, it does not scale. And it should not. Don't add
         * new entries into /proc/<tgid>/ without very good reasons.
-@@ -2334,6 +2446,9 @@ static int proc_pident_readdir(struct file *filp,
+@@ -2240,6 +2344,9 @@ static int proc_pident_readdir(struct file *filp,
        if (!task)
                goto out_no_task;
  
        if (!task)
                goto out_no_task;
  
@@ -48172,7 +48436,7 @@ index 5eb0206..fe01db4 100644
        ret = 0;
        i = filp->f_pos;
        switch (i) {
        ret = 0;
        i = filp->f_pos;
        switch (i) {
-@@ -2604,7 +2719,7 @@ static void *proc_self_follow_link(struct dentry *dentry, struct nameidata *nd)
+@@ -2510,7 +2617,7 @@ static void *proc_self_follow_link(struct dentry *dentry, struct nameidata *nd)
  static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd,
                                void *cookie)
  {
  static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd,
                                void *cookie)
  {
@@ -48181,7 +48445,7 @@ index 5eb0206..fe01db4 100644
        if (!IS_ERR(s))
                __putname(s);
  }
        if (!IS_ERR(s))
                __putname(s);
  }
-@@ -2802,7 +2917,7 @@ static const struct pid_entry tgid_base_stuff[] = {
+@@ -2708,7 +2815,7 @@ static const struct pid_entry tgid_base_stuff[] = {
        REG("autogroup",  S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations),
  #endif
        REG("comm",      S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
        REG("autogroup",  S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations),
  #endif
        REG("comm",      S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
@@ -48190,7 +48454,7 @@ index 5eb0206..fe01db4 100644
        INF("syscall",    S_IRUGO, proc_pid_syscall),
  #endif
        INF("cmdline",    S_IRUGO, proc_pid_cmdline),
        INF("syscall",    S_IRUGO, proc_pid_syscall),
  #endif
        INF("cmdline",    S_IRUGO, proc_pid_cmdline),
-@@ -2827,10 +2942,10 @@ static const struct pid_entry tgid_base_stuff[] = {
+@@ -2733,10 +2840,10 @@ static const struct pid_entry tgid_base_stuff[] = {
  #ifdef CONFIG_SECURITY
        DIR("attr",       S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
  #endif
  #ifdef CONFIG_SECURITY
        DIR("attr",       S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
  #endif
@@ -48203,7 +48467,7 @@ index 5eb0206..fe01db4 100644
        ONE("stack",      S_IRUGO, proc_pid_stack),
  #endif
  #ifdef CONFIG_SCHEDSTATS
        ONE("stack",      S_IRUGO, proc_pid_stack),
  #endif
  #ifdef CONFIG_SCHEDSTATS
-@@ -2864,6 +2979,9 @@ static const struct pid_entry tgid_base_stuff[] = {
+@@ -2770,6 +2877,9 @@ static const struct pid_entry tgid_base_stuff[] = {
  #ifdef CONFIG_HARDWALL
        INF("hardwall",   S_IRUGO, proc_pid_hardwall),
  #endif
  #ifdef CONFIG_HARDWALL
        INF("hardwall",   S_IRUGO, proc_pid_hardwall),
  #endif
@@ -48213,7 +48477,7 @@ index 5eb0206..fe01db4 100644
  };
  
  static int proc_tgid_base_readdir(struct file * filp,
  };
  
  static int proc_tgid_base_readdir(struct file * filp,
-@@ -2989,7 +3107,14 @@ static struct dentry *proc_pid_instantiate(struct inode *dir,
+@@ -2895,7 +3005,14 @@ static struct dentry *proc_pid_instantiate(struct inode *dir,
        if (!inode)
                goto out;
  
        if (!inode)
                goto out;
  
@@ -48228,7 +48492,7 @@ index 5eb0206..fe01db4 100644
        inode->i_op = &proc_tgid_base_inode_operations;
        inode->i_fop = &proc_tgid_base_operations;
        inode->i_flags|=S_IMMUTABLE;
        inode->i_op = &proc_tgid_base_inode_operations;
        inode->i_fop = &proc_tgid_base_operations;
        inode->i_flags|=S_IMMUTABLE;
-@@ -3031,7 +3156,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, struct
+@@ -2937,7 +3054,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, struct
        if (!task)
                goto out;
  
        if (!task)
                goto out;
  
@@ -48240,7 +48504,7 @@ index 5eb0206..fe01db4 100644
        put_task_struct(task);
  out:
        return result;
        put_task_struct(task);
  out:
        return result;
-@@ -3096,6 +3225,11 @@ int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir)
+@@ -3002,6 +3123,11 @@ int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir)
  {
        unsigned int nr;
        struct task_struct *reaper;
  {
        unsigned int nr;
        struct task_struct *reaper;
@@ -48252,7 +48516,7 @@ index 5eb0206..fe01db4 100644
        struct tgid_iter iter;
        struct pid_namespace *ns;
  
        struct tgid_iter iter;
        struct pid_namespace *ns;
  
-@@ -3119,8 +3253,27 @@ int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir)
+@@ -3025,8 +3151,27 @@ int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir)
        for (iter = next_tgid(ns, iter);
             iter.task;
             iter.tgid += 1, iter = next_tgid(ns, iter)) {
        for (iter = next_tgid(ns, iter);
             iter.task;
             iter.tgid += 1, iter = next_tgid(ns, iter)) {
@@ -48281,7 +48545,7 @@ index 5eb0206..fe01db4 100644
                        put_task_struct(iter.task);
                        goto out;
                }
                        put_task_struct(iter.task);
                        goto out;
                }
-@@ -3148,7 +3301,7 @@ static const struct pid_entry tid_base_stuff[] = {
+@@ -3054,7 +3199,7 @@ static const struct pid_entry tid_base_stuff[] = {
        REG("sched",     S_IRUGO|S_IWUSR, proc_pid_sched_operations),
  #endif
        REG("comm",      S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
        REG("sched",     S_IRUGO|S_IWUSR, proc_pid_sched_operations),
  #endif
        REG("comm",      S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
@@ -48290,7 +48554,7 @@ index 5eb0206..fe01db4 100644
        INF("syscall",   S_IRUGO, proc_pid_syscall),
  #endif
        INF("cmdline",   S_IRUGO, proc_pid_cmdline),
        INF("syscall",   S_IRUGO, proc_pid_syscall),
  #endif
        INF("cmdline",   S_IRUGO, proc_pid_cmdline),
-@@ -3172,10 +3325,10 @@ static const struct pid_entry tid_base_stuff[] = {
+@@ -3078,10 +3223,10 @@ static const struct pid_entry tid_base_stuff[] = {
  #ifdef CONFIG_SECURITY
        DIR("attr",      S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
  #endif
  #ifdef CONFIG_SECURITY
        DIR("attr",      S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
  #endif
@@ -48336,7 +48600,7 @@ index b143471..bb105e5 100644
  }
  module_init(proc_devices_init);
 diff --git a/fs/proc/inode.c b/fs/proc/inode.c
  }
  module_init(proc_devices_init);
 diff --git a/fs/proc/inode.c b/fs/proc/inode.c
-index 7ed72d6..d5f061a 100644
+index 7737c54..7172574 100644
 --- a/fs/proc/inode.c
 +++ b/fs/proc/inode.c
 @@ -18,12 +18,18 @@
 --- a/fs/proc/inode.c
 +++ b/fs/proc/inode.c
 @@ -18,12 +18,18 @@
@@ -48399,19 +48663,10 @@ index 7838e5c..ff92cbc 100644
  
  extern const struct file_operations proc_maps_operations;
 diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
  
  extern const struct file_operations proc_maps_operations;
 diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
-index d245cb2..7e645bd 100644
+index d245cb2..f4e8498 100644
 --- a/fs/proc/kcore.c
 +++ b/fs/proc/kcore.c
 --- a/fs/proc/kcore.c
 +++ b/fs/proc/kcore.c
-@@ -321,6 +321,8 @@ static void elf_kcore_store_hdr(char *bufp, int nphdr, int dataoff)
-       off_t offset = 0;
-       struct kcore_list *m;
-+      pax_track_stack();
-+
-       /* setup ELF header */
-       elf = (struct elfhdr *) bufp;
-       bufp += sizeof(struct elfhdr);
-@@ -478,9 +480,10 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
+@@ -478,9 +478,10 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
         * the addresses in the elf_phdr on our list.
         */
        start = kc_offset_to_vaddr(*fpos - elf_buflen);
         * the addresses in the elf_phdr on our list.
         */
        start = kc_offset_to_vaddr(*fpos - elf_buflen);
@@ -48424,7 +48679,7 @@ index d245cb2..7e645bd 100644
        while (buflen) {
                struct kcore_list *m;
  
        while (buflen) {
                struct kcore_list *m;
  
-@@ -509,20 +512,23 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
+@@ -509,20 +510,23 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
                        kfree(elf_buf);
                } else {
                        if (kern_addr_valid(start)) {
                        kfree(elf_buf);
                } else {
                        if (kern_addr_valid(start)) {
@@ -48459,7 +48714,7 @@ index d245cb2..7e645bd 100644
                        } else {
                                if (clear_user(buffer, tsz))
                                        return -EFAULT;
                        } else {
                                if (clear_user(buffer, tsz))
                                        return -EFAULT;
-@@ -542,6 +548,9 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
+@@ -542,6 +546,9 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
  
  static int open_kcore(struct inode *inode, struct file *filp)
  {
  
  static int open_kcore(struct inode *inode, struct file *filp)
  {
@@ -48470,19 +48725,10 @@ index d245cb2..7e645bd 100644
                return -EPERM;
        if (kcore_need_update)
 diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
                return -EPERM;
        if (kcore_need_update)
 diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
-index 5861741..32c53bc 100644
+index 80e4645..53e5fcf 100644
 --- a/fs/proc/meminfo.c
 +++ b/fs/proc/meminfo.c
 --- a/fs/proc/meminfo.c
 +++ b/fs/proc/meminfo.c
-@@ -29,6 +29,8 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
-       unsigned long pages[NR_LRU_LISTS];
-       int lru;
-+      pax_track_stack();
-+
- /*
-  * display in kilobytes.
-  */
-@@ -157,7 +159,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
+@@ -158,7 +158,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
                vmi.used >> 10,
                vmi.largest_chunk >> 10
  #ifdef CONFIG_MEMORY_FAILURE
                vmi.used >> 10,
                vmi.largest_chunk >> 10
  #ifdef CONFIG_MEMORY_FAILURE
@@ -48527,10 +48773,10 @@ index f738024..876984a 100644
        rcu_read_lock();
        task = pid_task(proc_pid(dir), PIDTYPE_PID);
 diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
        rcu_read_lock();
        task = pid_task(proc_pid(dir), PIDTYPE_PID);
 diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
-index 1a77dbe..56ec911 100644
+index a6b6217..1e0579d 100644
 --- a/fs/proc/proc_sysctl.c
 +++ b/fs/proc/proc_sysctl.c
 --- a/fs/proc/proc_sysctl.c
 +++ b/fs/proc/proc_sysctl.c
-@@ -8,11 +8,13 @@
+@@ -9,11 +9,13 @@
  #include <linux/namei.h>
  #include "internal.h"
  
  #include <linux/namei.h>
  #include "internal.h"
  
@@ -48544,9 +48790,9 @@ index 1a77dbe..56ec911 100644
 -static const struct inode_operations proc_sys_dir_operations;
 +const struct inode_operations proc_sys_dir_operations;
  
 -static const struct inode_operations proc_sys_dir_operations;
 +const struct inode_operations proc_sys_dir_operations;
  
- static struct inode *proc_sys_make_inode(struct super_block *sb,
-               struct ctl_table_header *head, struct ctl_table *table)
-@@ -121,8 +123,14 @@ static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry,
+ void proc_sys_poll_notify(struct ctl_table_poll *poll)
+ {
+@@ -131,8 +133,14 @@ static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry,
  
        err = NULL;
        d_set_d_op(dentry, &proc_sys_dentry_operations);
  
        err = NULL;
        d_set_d_op(dentry, &proc_sys_dentry_operations);
@@ -48561,7 +48807,20 @@ index 1a77dbe..56ec911 100644
  out:
        sysctl_head_finish(head);
        return err;
  out:
        sysctl_head_finish(head);
        return err;
-@@ -202,6 +210,9 @@ static int proc_sys_fill_cache(struct file *filp, void *dirent,
+@@ -163,6 +171,12 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf,
+       if (!table->proc_handler)
+               goto out;
++#ifdef CONFIG_GRKERNSEC
++      error = -EPERM;
++      if (write && !capable(CAP_SYS_ADMIN))
++              goto out;
++#endif
++
+       /* careful: calling conventions are nasty here */
+       res = count;
+       error = table->proc_handler(table, write, buf, &res, ppos);
+@@ -245,6 +259,9 @@ static int proc_sys_fill_cache(struct file *filp, void *dirent,
                                return -ENOMEM;
                        } else {
                                d_set_d_op(child, &proc_sys_dentry_operations);
                                return -ENOMEM;
                        } else {
                                d_set_d_op(child, &proc_sys_dentry_operations);
@@ -48571,7 +48830,7 @@ index 1a77dbe..56ec911 100644
                                d_add(child, inode);
                        }
                } else {
                                d_add(child, inode);
                        }
                } else {
-@@ -230,6 +241,9 @@ static int scan(struct ctl_table_header *head, ctl_table *table,
+@@ -273,6 +290,9 @@ static int scan(struct ctl_table_header *head, ctl_table *table,
                if (*pos < file->f_pos)
                        continue;
  
                if (*pos < file->f_pos)
                        continue;
  
@@ -48581,7 +48840,7 @@ index 1a77dbe..56ec911 100644
                res = proc_sys_fill_cache(file, dirent, filldir, head, table);
                if (res)
                        return res;
                res = proc_sys_fill_cache(file, dirent, filldir, head, table);
                if (res)
                        return res;
-@@ -355,6 +369,9 @@ static int proc_sys_getattr(struct vfsmount *mnt, struct dentry *dentry, struct
+@@ -398,6 +418,9 @@ static int proc_sys_getattr(struct vfsmount *mnt, struct dentry *dentry, struct
        if (IS_ERR(head))
                return PTR_ERR(head);
  
        if (IS_ERR(head))
                return PTR_ERR(head);
  
@@ -48591,12 +48850,7 @@ index 1a77dbe..56ec911 100644
        generic_fillattr(inode, stat);
        if (table)
                stat->mode = (stat->mode & S_IFMT) | table->mode;
        generic_fillattr(inode, stat);
        if (table)
                stat->mode = (stat->mode & S_IFMT) | table->mode;
-@@ -370,17 +387,18 @@ static const struct file_operations proc_sys_file_operations = {
- };
- static const struct file_operations proc_sys_dir_file_operations = {
-+      .read           = generic_read_dir,
-       .readdir        = proc_sys_readdir,
+@@ -420,13 +443,13 @@ static const struct file_operations proc_sys_dir_file_operations = {
        .llseek         = generic_file_llseek,
  };
  
        .llseek         = generic_file_llseek,
  };
  
@@ -48613,10 +48867,10 @@ index 1a77dbe..56ec911 100644
        .permission     = proc_sys_permission,
        .setattr        = proc_sys_setattr,
 diff --git a/fs/proc/root.c b/fs/proc/root.c
        .permission     = proc_sys_permission,
        .setattr        = proc_sys_setattr,
 diff --git a/fs/proc/root.c b/fs/proc/root.c
-index 9a8a2b7..3018df6 100644
+index 03102d9..4ae347e 100644
 --- a/fs/proc/root.c
 +++ b/fs/proc/root.c
 --- a/fs/proc/root.c
 +++ b/fs/proc/root.c
-@@ -123,7 +123,15 @@ void __init proc_root_init(void)
+@@ -121,7 +121,15 @@ void __init proc_root_init(void)
  #ifdef CONFIG_PROC_DEVICETREE
        proc_device_tree_init();
  #endif
  #ifdef CONFIG_PROC_DEVICETREE
        proc_device_tree_init();
  #endif
@@ -48633,10 +48887,18 @@ index 9a8a2b7..3018df6 100644
  }
  
 diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
  }
  
 diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index c7d4ee6..41c5564 100644
+index 7dcd2a2..b2f410e 100644
 --- a/fs/proc/task_mmu.c
 +++ b/fs/proc/task_mmu.c
 --- a/fs/proc/task_mmu.c
 +++ b/fs/proc/task_mmu.c
-@@ -51,8 +51,13 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
+@@ -11,6 +11,7 @@
+ #include <linux/rmap.h>
+ #include <linux/swap.h>
+ #include <linux/swapops.h>
++#include <linux/grsecurity.h>
+ #include <asm/elf.h>
+ #include <asm/uaccess.h>
+@@ -52,8 +53,13 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
                "VmExe:\t%8lu kB\n"
                "VmLib:\t%8lu kB\n"
                "VmPTE:\t%8lu kB\n"
                "VmExe:\t%8lu kB\n"
                "VmLib:\t%8lu kB\n"
                "VmPTE:\t%8lu kB\n"
@@ -48651,8 +48913,8 @@ index c7d4ee6..41c5564 100644
 +              ,hiwater_vm << (PAGE_SHIFT-10),
                (total_vm - mm->reserved_vm) << (PAGE_SHIFT-10),
                mm->locked_vm << (PAGE_SHIFT-10),
 +              ,hiwater_vm << (PAGE_SHIFT-10),
                (total_vm - mm->reserved_vm) << (PAGE_SHIFT-10),
                mm->locked_vm << (PAGE_SHIFT-10),
-               hiwater_rss << (PAGE_SHIFT-10),
-@@ -60,7 +65,13 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
+               mm->pinned_vm << (PAGE_SHIFT-10),
+@@ -62,7 +68,13 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
                data << (PAGE_SHIFT-10),
                mm->stack_vm << (PAGE_SHIFT-10), text, lib,
                (PTRS_PER_PTE*sizeof(pte_t)*mm->nr_ptes) >> 10,
                data << (PAGE_SHIFT-10),
                mm->stack_vm << (PAGE_SHIFT-10), text, lib,
                (PTRS_PER_PTE*sizeof(pte_t)*mm->nr_ptes) >> 10,
@@ -48667,7 +48929,7 @@ index c7d4ee6..41c5564 100644
  }
  
  unsigned long task_vsize(struct mm_struct *mm)
  }
  
  unsigned long task_vsize(struct mm_struct *mm)
-@@ -207,6 +218,12 @@ static int do_maps_open(struct inode *inode, struct file *file,
+@@ -209,6 +221,12 @@ static int do_maps_open(struct inode *inode, struct file *file,
        return ret;
  }
  
        return ret;
  }
  
@@ -48680,7 +48942,7 @@ index c7d4ee6..41c5564 100644
  static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
  {
        struct mm_struct *mm = vma->vm_mm;
  static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
  {
        struct mm_struct *mm = vma->vm_mm;
-@@ -225,13 +242,13 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
+@@ -227,13 +245,13 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
                pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
        }
  
                pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
        }
  
@@ -48699,7 +48961,7 @@ index c7d4ee6..41c5564 100644
  
        seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
                        start,
  
        seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
                        start,
-@@ -240,7 +257,11 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
+@@ -242,7 +260,11 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
                        flags & VM_WRITE ? 'w' : '-',
                        flags & VM_EXEC ? 'x' : '-',
                        flags & VM_MAYSHARE ? 's' : 'p',
                        flags & VM_WRITE ? 'w' : '-',
                        flags & VM_EXEC ? 'x' : '-',
                        flags & VM_MAYSHARE ? 's' : 'p',
@@ -48711,7 +48973,7 @@ index c7d4ee6..41c5564 100644
                        MAJOR(dev), MINOR(dev), ino, &len);
  
        /*
                        MAJOR(dev), MINOR(dev), ino, &len);
  
        /*
-@@ -249,7 +270,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
+@@ -251,7 +273,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
         */
        if (file) {
                pad_len_spaces(m, len);
         */
        if (file) {
                pad_len_spaces(m, len);
@@ -48720,7 +48982,7 @@ index c7d4ee6..41c5564 100644
        } else {
                const char *name = arch_vma_name(vma);
                if (!name) {
        } else {
                const char *name = arch_vma_name(vma);
                if (!name) {
-@@ -257,8 +278,9 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
+@@ -259,8 +281,9 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
                                if (vma->vm_start <= mm->brk &&
                                                vma->vm_end >= mm->start_brk) {
                                        name = "[heap]";
                                if (vma->vm_start <= mm->brk &&
                                                vma->vm_end >= mm->start_brk) {
                                        name = "[heap]";
@@ -48732,9 +48994,30 @@ index c7d4ee6..41c5564 100644
                                        name = "[stack]";
                                }
                        } else {
                                        name = "[stack]";
                                }
                        } else {
-@@ -433,11 +455,16 @@ static int show_smap(struct seq_file *m, void *v)
+@@ -281,6 +304,13 @@ static int show_map(struct seq_file *m, void *v)
+       struct proc_maps_private *priv = m->private;
+       struct task_struct *task = priv->task;
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      if (current->exec_id != m->exec_id) {
++              gr_log_badprocpid("maps");
++              return 0;
++      }
++#endif
++
+       show_map_vma(m, vma);
+       if (m->count < m->size)  /* vma is copied successfully */
+@@ -434,12 +464,23 @@ static int show_smap(struct seq_file *m, void *v)
+               .private = &mss,
        };
  
        };
  
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      if (current->exec_id != m->exec_id) {
++              gr_log_badprocpid("smaps");
++              return 0;
++      }
++#endif
        memset(&mss, 0, sizeof mss);
 -      mss.vma = vma;
 -      /* mmap_sem is held in m_start */
        memset(&mss, 0, sizeof mss);
 -      mss.vma = vma;
 -      /* mmap_sem is held in m_start */
@@ -48754,7 +49037,7 @@ index c7d4ee6..41c5564 100644
        show_map_vma(m, vma);
  
        seq_printf(m,
        show_map_vma(m, vma);
  
        seq_printf(m,
-@@ -455,7 +482,11 @@ static int show_smap(struct seq_file *m, void *v)
+@@ -457,7 +498,11 @@ static int show_smap(struct seq_file *m, void *v)
                   "KernelPageSize: %8lu kB\n"
                   "MMUPageSize:    %8lu kB\n"
                   "Locked:         %8lu kB\n",
                   "KernelPageSize: %8lu kB\n"
                   "MMUPageSize:    %8lu kB\n"
                   "Locked:         %8lu kB\n",
@@ -48766,7 +49049,29 @@ index c7d4ee6..41c5564 100644
                   mss.resident >> 10,
                   (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
                   mss.shared_clean  >> 10,
                   mss.resident >> 10,
                   (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
                   mss.shared_clean  >> 10,
-@@ -1031,7 +1062,7 @@ static int show_numa_map(struct seq_file *m, void *v)
+@@ -1015,6 +1060,13 @@ static int show_numa_map(struct seq_file *m, void *v)
+       int n;
+       char buffer[50];
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      if (current->exec_id != m->exec_id) {
++              gr_log_badprocpid("numa_maps");
++              return 0;
++      }
++#endif
++
+       if (!mm)
+               return 0;
+@@ -1032,11 +1084,15 @@ static int show_numa_map(struct seq_file *m, void *v)
+       mpol_to_str(buffer, sizeof(buffer), pol, 0);
+       mpol_cond_put(pol);
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      seq_printf(m, "%08lx %s", PAX_RAND_FLAGS(vma->vm_mm) ? 0UL : vma->vm_start, buffer);
++#else
+       seq_printf(m, "%08lx %s", vma->vm_start, buffer);
++#endif
  
        if (file) {
                seq_printf(m, " file=");
  
        if (file) {
                seq_printf(m, " file=");
@@ -48921,19 +49226,6 @@ index 356f715..c918d38 100644
                if (__put_user(d_off, &lastdirent->d_off))
                        error = -EFAULT;
                else
                if (__put_user(d_off, &lastdirent->d_off))
                        error = -EFAULT;
                else
-diff --git a/fs/reiserfs/dir.c b/fs/reiserfs/dir.c
-index 133e935..349ef18 100644
---- a/fs/reiserfs/dir.c
-+++ b/fs/reiserfs/dir.c
-@@ -75,6 +75,8 @@ int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
-       struct reiserfs_dir_entry de;
-       int ret = 0;
-+      pax_track_stack();
-+
-       reiserfs_write_lock(inode->i_sb);
-       reiserfs_check_lock_depth(inode->i_sb, "readdir");
 diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c
 index 60c0804..d814f98 100644
 --- a/fs/reiserfs/do_balan.c
 diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c
 index 60c0804..d814f98 100644
 --- a/fs/reiserfs/do_balan.c
@@ -48947,34 +49239,8 @@ index 60c0804..d814f98 100644
        do_balance_starts(tb);
  
        /* balance leaf returns 0 except if combining L R and S into
        do_balance_starts(tb);
  
        /* balance leaf returns 0 except if combining L R and S into
-diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c
-index a159ba5..0396a76 100644
---- a/fs/reiserfs/journal.c
-+++ b/fs/reiserfs/journal.c
-@@ -2289,6 +2289,8 @@ static struct buffer_head *reiserfs_breada(struct block_device *dev,
-       struct buffer_head *bh;
-       int i, j;
-+      pax_track_stack();
-+
-       bh = __getblk(dev, block, bufsize);
-       if (buffer_uptodate(bh))
-               return (bh);
-diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c
-index ef39232..0fa91ba 100644
---- a/fs/reiserfs/namei.c
-+++ b/fs/reiserfs/namei.c
-@@ -1225,6 +1225,8 @@ static int reiserfs_rename(struct inode *old_dir, struct dentry *old_dentry,
-       unsigned long savelink = 1;
-       struct timespec ctime;
-+      pax_track_stack();
-+
-       /* three balancings: (1) old name removal, (2) new name insertion
-          and (3) maybe "save" link insertion
-          stat data updates: (1) old directory,
 diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c
 diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c
-index 7a99811..2c9286f 100644
+index 7a99811..a7c96c4 100644
 --- a/fs/reiserfs/procfs.c
 +++ b/fs/reiserfs/procfs.c
 @@ -113,7 +113,7 @@ static int show_super(struct seq_file *m, struct super_block *sb)
 --- a/fs/reiserfs/procfs.c
 +++ b/fs/reiserfs/procfs.c
 @@ -113,7 +113,7 @@ static int show_super(struct seq_file *m, struct super_block *sb)
@@ -48986,79 +49252,8 @@ index 7a99811..2c9286f 100644
                   SF(s_disk_reads), SF(s_disk_writes), SF(s_fix_nodes),
                   SF(s_do_balance), SF(s_unneeded_left_neighbor),
                   SF(s_good_search_by_key_reada), SF(s_bmaps),
                   SF(s_disk_reads), SF(s_disk_writes), SF(s_fix_nodes),
                   SF(s_do_balance), SF(s_unneeded_left_neighbor),
                   SF(s_good_search_by_key_reada), SF(s_bmaps),
-@@ -299,6 +299,8 @@ static int show_journal(struct seq_file *m, struct super_block *sb)
-       struct journal_params *jp = &rs->s_v1.s_journal;
-       char b[BDEVNAME_SIZE];
-+      pax_track_stack();
-+
-       seq_printf(m,           /* on-disk fields */
-                  "jp_journal_1st_block: \t%i\n"
-                  "jp_journal_dev: \t%s[%x]\n"
-diff --git a/fs/reiserfs/stree.c b/fs/reiserfs/stree.c
-index 313d39d..3a5811b 100644
---- a/fs/reiserfs/stree.c
-+++ b/fs/reiserfs/stree.c
-@@ -1196,6 +1196,8 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th,
-       int iter = 0;
- #endif
-+      pax_track_stack();
-+
-       BUG_ON(!th->t_trans_id);
-       init_tb_struct(th, &s_del_balance, sb, path,
-@@ -1333,6 +1335,8 @@ void reiserfs_delete_solid_item(struct reiserfs_transaction_handle *th,
-       int retval;
-       int quota_cut_bytes = 0;
-+      pax_track_stack();
-+
-       BUG_ON(!th->t_trans_id);
-       le_key2cpu_key(&cpu_key, key);
-@@ -1562,6 +1566,8 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th,
-       int quota_cut_bytes;
-       loff_t tail_pos = 0;
-+      pax_track_stack();
-+
-       BUG_ON(!th->t_trans_id);
-       init_tb_struct(th, &s_cut_balance, inode->i_sb, path,
-@@ -1957,6 +1963,8 @@ int reiserfs_paste_into_item(struct reiserfs_transaction_handle *th, struct tree
-       int retval;
-       int fs_gen;
-+      pax_track_stack();
-+
-       BUG_ON(!th->t_trans_id);
-       fs_gen = get_generation(inode->i_sb);
-@@ -2045,6 +2053,8 @@ int reiserfs_insert_item(struct reiserfs_transaction_handle *th,
-       int fs_gen = 0;
-       int quota_bytes = 0;
-+      pax_track_stack();
-+
-       BUG_ON(!th->t_trans_id);
-       if (inode) {            /* Do we count quotas for item? */
-diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
-index 14363b9..dd95a04 100644
---- a/fs/reiserfs/super.c
-+++ b/fs/reiserfs/super.c
-@@ -927,6 +927,8 @@ static int reiserfs_parse_options(struct super_block *s, char *options,    /* strin
-               {.option_name = NULL}
-       };
-+      pax_track_stack();
-+
-       *blocks = 0;
-       if (!options || !*options)
-               /* use default configuration: create tails, journaling on, no
 diff --git a/fs/select.c b/fs/select.c
 diff --git a/fs/select.c b/fs/select.c
-index d33418f..f8e06bc 100644
+index d33418f..2a5345e 100644
 --- a/fs/select.c
 +++ b/fs/select.c
 @@ -20,6 +20,7 @@
 --- a/fs/select.c
 +++ b/fs/select.c
 @@ -20,6 +20,7 @@
@@ -49069,78 +49264,36 @@ index d33418f..f8e06bc 100644
  #include <linux/personality.h> /* for STICKY_TIMEOUTS */
  #include <linux/file.h>
  #include <linux/fdtable.h>
  #include <linux/personality.h> /* for STICKY_TIMEOUTS */
  #include <linux/file.h>
  #include <linux/fdtable.h>
-@@ -403,6 +404,8 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
-       int retval, i, timed_out = 0;
-       unsigned long slack = 0;
-+      pax_track_stack();
-+
-       rcu_read_lock();
-       retval = max_select_fd(n, fds);
-       rcu_read_unlock();
-@@ -528,6 +531,8 @@ int core_sys_select(int n, fd_set __user *inp, fd_set __user *outp,
-       /* Allocate small arguments on the stack to save memory and be faster */
-       long stack_fds[SELECT_STACK_ALLOC/sizeof(long)];
-+      pax_track_stack();
-+
-       ret = -EINVAL;
-       if (n < 0)
-               goto out_nofds;
-@@ -837,6 +842,9 @@ int do_sys_poll(struct pollfd __user *ufds, unsigned int nfds,
+@@ -837,6 +838,7 @@ int do_sys_poll(struct pollfd __user *ufds, unsigned int nfds,
        struct poll_list *walk = head;
        unsigned long todo = nfds;
  
        struct poll_list *walk = head;
        unsigned long todo = nfds;
  
-+      pax_track_stack();
-+
 +      gr_learn_resource(current, RLIMIT_NOFILE, nfds, 1);
        if (nfds > rlimit(RLIMIT_NOFILE))
                return -EINVAL;
  
 diff --git a/fs/seq_file.c b/fs/seq_file.c
 +      gr_learn_resource(current, RLIMIT_NOFILE, nfds, 1);
        if (nfds > rlimit(RLIMIT_NOFILE))
                return -EINVAL;
  
 diff --git a/fs/seq_file.c b/fs/seq_file.c
-index 05d6b0e..ee96362 100644
+index dba43c3..4b3f701 100644
 --- a/fs/seq_file.c
 +++ b/fs/seq_file.c
 --- a/fs/seq_file.c
 +++ b/fs/seq_file.c
-@@ -76,7 +76,8 @@ static int traverse(struct seq_file *m, loff_t offset)
-               return 0;
-       }
-       if (!m->buf) {
--              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
-+              m->size = PAGE_SIZE;
-+              m->buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
-               if (!m->buf)
-                       return -ENOMEM;
-       }
-@@ -116,7 +117,8 @@ static int traverse(struct seq_file *m, loff_t offset)
- Eoverflow:
-       m->op->stop(m, p);
-       kfree(m->buf);
--      m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
-+      m->size <<= 1;
-+      m->buf = kmalloc(m->size, GFP_KERNEL);
-       return !m->buf ? -ENOMEM : -EAGAIN;
- }
-@@ -169,7 +171,8 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
-       m->version = file->f_version;
-       /* grab buffer if we didn't have one */
-       if (!m->buf) {
--              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
-+              m->size = PAGE_SIZE;
-+              m->buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
-               if (!m->buf)
-                       goto Enomem;
-       }
-@@ -210,7 +213,8 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
-                       goto Fill;
-               m->op->stop(m, p);
-               kfree(m->buf);
--              m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
-+              m->size <<= 1;
-+              m->buf = kmalloc(m->size, GFP_KERNEL);
-               if (!m->buf)
-                       goto Enomem;
-               m->count = 0;
+@@ -9,6 +9,7 @@
+ #include <linux/module.h>
+ #include <linux/seq_file.h>
+ #include <linux/slab.h>
++#include <linux/sched.h>
+ #include <asm/uaccess.h>
+ #include <asm/page.h>
+@@ -40,6 +41,9 @@ int seq_open(struct file *file, const struct seq_operations *op)
+       memset(p, 0, sizeof(*p));
+       mutex_init(&p->lock);
+       p->op = op;
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      p->exec_id = current->exec_id;
++#endif
+       /*
+        * Wrappers around seq_open(e.g. swaps_open) need to be
 @@ -549,7 +553,7 @@ static void single_stop(struct seq_file *p, void *v)
  int single_open(struct file *file, int (*show)(struct seq_file *, void *),
                void *data)
 @@ -549,7 +553,7 @@ static void single_stop(struct seq_file *p, void *v)
  int single_open(struct file *file, int (*show)(struct seq_file *, void *),
                void *data)
@@ -49151,7 +49304,7 @@ index 05d6b0e..ee96362 100644
  
        if (op) {
 diff --git a/fs/splice.c b/fs/splice.c
  
        if (op) {
 diff --git a/fs/splice.c b/fs/splice.c
-index fa2defa..9a697a5 100644
+index fa2defa..8601650 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
 @@ -194,7 +194,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
 --- a/fs/splice.c
 +++ b/fs/splice.c
 @@ -194,7 +194,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
@@ -49175,16 +49328,7 @@ index fa2defa..9a697a5 100644
        }
  
        pipe_unlock(pipe);
        }
  
        pipe_unlock(pipe);
-@@ -320,6 +320,8 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
-               .spd_release = spd_release_page,
-       };
-+      pax_track_stack();
-+
-       if (splice_grow_spd(pipe, &spd))
-               return -ENOMEM;
-@@ -560,7 +562,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec,
+@@ -560,7 +560,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec,
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
@@ -49193,7 +49337,7 @@ index fa2defa..9a697a5 100644
        set_fs(old_fs);
  
        return res;
        set_fs(old_fs);
  
        return res;
-@@ -575,7 +577,7 @@ static ssize_t kernel_write(struct file *file, const char *buf, size_t count,
+@@ -575,7 +575,7 @@ static ssize_t kernel_write(struct file *file, const char *buf, size_t count,
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
@@ -49202,16 +49346,7 @@ index fa2defa..9a697a5 100644
        set_fs(old_fs);
  
        return res;
        set_fs(old_fs);
  
        return res;
-@@ -603,6 +605,8 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
-               .spd_release = spd_release_page,
-       };
-+      pax_track_stack();
-+
-       if (splice_grow_spd(pipe, &spd))
-               return -ENOMEM;
-@@ -626,7 +630,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
+@@ -626,7 +626,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
                        goto err;
  
                this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset);
                        goto err;
  
                this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset);
@@ -49220,7 +49355,7 @@ index fa2defa..9a697a5 100644
                vec[i].iov_len = this_len;
                spd.pages[i] = page;
                spd.nr_pages++;
                vec[i].iov_len = this_len;
                spd.pages[i] = page;
                spd.nr_pages++;
-@@ -846,10 +850,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed);
+@@ -846,10 +846,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed);
  int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
  {
        while (!pipe->nrbufs) {
  int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
  {
        while (!pipe->nrbufs) {
@@ -49233,7 +49368,7 @@ index fa2defa..9a697a5 100644
                        return 0;
  
                if (sd->flags & SPLICE_F_NONBLOCK)
                        return 0;
  
                if (sd->flags & SPLICE_F_NONBLOCK)
-@@ -1182,7 +1186,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
+@@ -1182,7 +1182,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
                 * out of the pipe right after the splice_to_pipe(). So set
                 * PIPE_READERS appropriately.
                 */
                 * out of the pipe right after the splice_to_pipe(). So set
                 * PIPE_READERS appropriately.
                 */
@@ -49242,16 +49377,7 @@ index fa2defa..9a697a5 100644
  
                current->splice_pipe = pipe;
        }
  
                current->splice_pipe = pipe;
        }
-@@ -1619,6 +1623,8 @@ static long vmsplice_to_pipe(struct file *file, const struct iovec __user *iov,
-       };
-       long ret;
-+      pax_track_stack();
-+
-       pipe = get_pipe_info(file);
-       if (!pipe)
-               return -EBADF;
-@@ -1734,9 +1740,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1734,9 +1734,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
                        ret = -ERESTARTSYS;
                        break;
                }
                        ret = -ERESTARTSYS;
                        break;
                }
@@ -49263,7 +49389,7 @@ index fa2defa..9a697a5 100644
                        if (flags & SPLICE_F_NONBLOCK) {
                                ret = -EAGAIN;
                                break;
                        if (flags & SPLICE_F_NONBLOCK) {
                                ret = -EAGAIN;
                                break;
-@@ -1768,7 +1774,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1768,7 +1768,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
        pipe_lock(pipe);
  
        while (pipe->nrbufs >= pipe->buffers) {
        pipe_lock(pipe);
  
        while (pipe->nrbufs >= pipe->buffers) {
@@ -49272,7 +49398,7 @@ index fa2defa..9a697a5 100644
                        send_sig(SIGPIPE, current, 0);
                        ret = -EPIPE;
                        break;
                        send_sig(SIGPIPE, current, 0);
                        ret = -EPIPE;
                        break;
-@@ -1781,9 +1787,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1781,9 +1781,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
                        ret = -ERESTARTSYS;
                        break;
                }
                        ret = -ERESTARTSYS;
                        break;
                }
@@ -49284,7 +49410,7 @@ index fa2defa..9a697a5 100644
        }
  
        pipe_unlock(pipe);
        }
  
        pipe_unlock(pipe);
-@@ -1819,14 +1825,14 @@ retry:
+@@ -1819,14 +1819,14 @@ retry:
        pipe_double_lock(ipipe, opipe);
  
        do {
        pipe_double_lock(ipipe, opipe);
  
        do {
@@ -49301,7 +49427,7 @@ index fa2defa..9a697a5 100644
                        break;
  
                /*
                        break;
  
                /*
-@@ -1923,7 +1929,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
+@@ -1923,7 +1923,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
        pipe_double_lock(ipipe, opipe);
  
        do {
        pipe_double_lock(ipipe, opipe);
  
        do {
@@ -49310,7 +49436,7 @@ index fa2defa..9a697a5 100644
                        send_sig(SIGPIPE, current, 0);
                        if (!ret)
                                ret = -EPIPE;
                        send_sig(SIGPIPE, current, 0);
                        if (!ret)
                                ret = -EPIPE;
-@@ -1968,7 +1974,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
+@@ -1968,7 +1968,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
         * return EAGAIN if we have the potential of some data in the
         * future, otherwise just return 0
         */
         * return EAGAIN if we have the potential of some data in the
         * future, otherwise just return 0
         */
@@ -49319,8 +49445,44 @@ index fa2defa..9a697a5 100644
                ret = -EAGAIN;
  
        pipe_unlock(ipipe);
                ret = -EAGAIN;
  
        pipe_unlock(ipipe);
+diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c
+index a475983..9c6a1f0 100644
+--- a/fs/sysfs/bin.c
++++ b/fs/sysfs/bin.c
+@@ -67,6 +67,8 @@ fill_read(struct file *file, char *buffer, loff_t off, size_t count)
+ }
+ static ssize_t
++read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off) __size_overflow(3);
++static ssize_t
+ read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)
+ {
+       struct bin_buffer *bb = file->private_data;
+diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
+index 7fdf6a7..e6cd8ad 100644
+--- a/fs/sysfs/dir.c
++++ b/fs/sysfs/dir.c
+@@ -642,6 +642,18 @@ static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd,
+       struct sysfs_dirent *sd;
+       int rc;
++#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
++      const char *parent_name = parent_sd->s_name;
++
++      mode = S_IFDIR | S_IRWXU;
++
++      if ((!strcmp(parent_name, "") && (!strcmp(name, "devices") || !strcmp(name, "fs"))) ||
++          (!strcmp(parent_name, "devices") && !strcmp(name, "system")) ||
++          (!strcmp(parent_name, "fs") && (!strcmp(name, "selinux") || !strcmp(name, "fuse"))) ||
++          (!strcmp(parent_name, "system") && !strcmp(name, "cpu")))
++              mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO;
++#endif
++
+       /* allocate */
+       sd = sysfs_new_dirent(name, mode, SYSFS_DIR);
+       if (!sd)
 diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
 diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
-index 1ad8c93..6633545 100644
+index 779789a..f58193c 100644
 --- a/fs/sysfs/file.c
 +++ b/fs/sysfs/file.c
 @@ -37,7 +37,7 @@ static DEFINE_SPINLOCK(sysfs_open_dirent_lock);
 --- a/fs/sysfs/file.c
 +++ b/fs/sysfs/file.c
 @@ -37,7 +37,7 @@ static DEFINE_SPINLOCK(sysfs_open_dirent_lock);
@@ -49368,22 +49530,6 @@ index 1ad8c93..6633545 100644
                wake_up_interruptible(&od->poll);
        }
  
                wake_up_interruptible(&od->poll);
        }
  
-diff --git a/fs/sysfs/mount.c b/fs/sysfs/mount.c
-index e34f0d9..740ea7b 100644
---- a/fs/sysfs/mount.c
-+++ b/fs/sysfs/mount.c
-@@ -36,7 +36,11 @@ struct sysfs_dirent sysfs_root = {
-       .s_name         = "",
-       .s_count        = ATOMIC_INIT(1),
-       .s_flags        = SYSFS_DIR | (KOBJ_NS_TYPE_NONE << SYSFS_NS_TYPE_SHIFT),
-+#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
-+      .s_mode         = S_IFDIR | S_IRWXU,
-+#else
-       .s_mode         = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO,
-+#endif
-       .s_ino          = 1,
- };
 diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
 index a7ac78f..02158e1 100644
 --- a/fs/sysfs/symlink.c
 diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
 index a7ac78f..02158e1 100644
 --- a/fs/sysfs/symlink.c
@@ -49397,24 +49543,49 @@ index a7ac78f..02158e1 100644
        if (!IS_ERR(page))
                free_page((unsigned long)page);
  }
        if (!IS_ERR(page))
                free_page((unsigned long)page);
  }
-diff --git a/fs/udf/inode.c b/fs/udf/inode.c
-index 1d1358e..408bedb 100644
---- a/fs/udf/inode.c
-+++ b/fs/udf/inode.c
-@@ -560,6 +560,8 @@ static struct buffer_head *inode_getblk(struct inode *inode, sector_t block,
-       int goal = 0, pgoal = iinfo->i_location.logicalBlockNum;
-       int lastblock = 0;
-+      pax_track_stack();
-+
-       prev_epos.offset = udf_file_entry_alloc_offset(inode);
-       prev_epos.block = iinfo->i_location;
-       prev_epos.bh = NULL;
+diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c
+index b09ba2d..1cad1a8 100644
+--- a/fs/ubifs/debug.c
++++ b/fs/ubifs/debug.c
+@@ -2817,6 +2817,7 @@ static ssize_t dfs_file_read(struct file *file, char __user *u, size_t count,
+  * debugfs file. Returns %0 or %1 in case of success and a negative error code
+  * in case of failure.
+  */
++static int interpret_user_input(const char __user *u, size_t count) __size_overflow(2);
+ static int interpret_user_input(const char __user *u, size_t count)
+ {
+       size_t buf_size;
+@@ -2835,6 +2836,8 @@ static int interpret_user_input(const char __user *u, size_t count)
+ }
+ static ssize_t dfs_file_write(struct file *file, const char __user *u,
++                            size_t count, loff_t *ppos) __size_overflow(3);
++static ssize_t dfs_file_write(struct file *file, const char __user *u,
+                             size_t count, loff_t *ppos)
+ {
+       struct ubifs_info *c = file->private_data;
+diff --git a/fs/udf/file.c b/fs/udf/file.c
+index dca0c38..d567b84 100644
+--- a/fs/udf/file.c
++++ b/fs/udf/file.c
+@@ -201,12 +201,10 @@ out:
+ static int udf_release_file(struct inode *inode, struct file *filp)
+ {
+       if (filp->f_mode & FMODE_WRITE) {
+-              mutex_lock(&inode->i_mutex);
+               down_write(&UDF_I(inode)->i_data_sem);
+               udf_discard_prealloc(inode);
+               udf_truncate_tail_extent(inode);
+               up_write(&UDF_I(inode)->i_data_sem);
+-              mutex_unlock(&inode->i_mutex);
+       }
+       return 0;
+ }
 diff --git a/fs/udf/misc.c b/fs/udf/misc.c
 diff --git a/fs/udf/misc.c b/fs/udf/misc.c
-index 9215700..bf1f68e 100644
+index c175b4d..8f36a16 100644
 --- a/fs/udf/misc.c
 +++ b/fs/udf/misc.c
 --- a/fs/udf/misc.c
 +++ b/fs/udf/misc.c
-@@ -286,7 +286,7 @@ void udf_new_tag(char *data, uint16_t ident, uint16_t version, uint16_t snum,
+@@ -289,7 +289,7 @@ void udf_new_tag(char *data, uint16_t ident, uint16_t version, uint16_t snum,
  
  u8 udf_tag_checksum(const struct tag *t)
  {
  
  u8 udf_tag_checksum(const struct tag *t)
  {
@@ -49449,10 +49620,10 @@ index ba653f3..06ea4b1 100644
        error = notify_change(path->dentry, &newattrs);
        mutex_unlock(&inode->i_mutex);
 diff --git a/fs/xattr.c b/fs/xattr.c
        error = notify_change(path->dentry, &newattrs);
        mutex_unlock(&inode->i_mutex);
 diff --git a/fs/xattr.c b/fs/xattr.c
-index f060663..def7007 100644
+index 67583de..c5aad14 100644
 --- a/fs/xattr.c
 +++ b/fs/xattr.c
 --- a/fs/xattr.c
 +++ b/fs/xattr.c
-@@ -254,7 +254,7 @@ EXPORT_SYMBOL_GPL(vfs_removexattr);
+@@ -315,7 +315,7 @@ EXPORT_SYMBOL_GPL(vfs_removexattr);
   * Extended attribute SET operations
   */
  static long
   * Extended attribute SET operations
   */
  static long
@@ -49461,7 +49632,7 @@ index f060663..def7007 100644
         size_t size, int flags)
  {
        int error;
         size_t size, int flags)
  {
        int error;
-@@ -278,7 +278,13 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
+@@ -339,7 +339,13 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
                        return PTR_ERR(kvalue);
        }
  
                        return PTR_ERR(kvalue);
        }
  
@@ -49476,7 +49647,7 @@ index f060663..def7007 100644
        kfree(kvalue);
        return error;
  }
        kfree(kvalue);
        return error;
  }
-@@ -295,7 +301,7 @@ SYSCALL_DEFINE5(setxattr, const char __user *, pathname,
+@@ -356,7 +362,7 @@ SYSCALL_DEFINE5(setxattr, const char __user *, pathname,
                return error;
        error = mnt_want_write(path.mnt);
        if (!error) {
                return error;
        error = mnt_want_write(path.mnt);
        if (!error) {
@@ -49485,7 +49656,7 @@ index f060663..def7007 100644
                mnt_drop_write(path.mnt);
        }
        path_put(&path);
                mnt_drop_write(path.mnt);
        }
        path_put(&path);
-@@ -314,7 +320,7 @@ SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
+@@ -375,7 +381,7 @@ SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
                return error;
        error = mnt_want_write(path.mnt);
        if (!error) {
                return error;
        error = mnt_want_write(path.mnt);
        if (!error) {
@@ -49494,7 +49665,7 @@ index f060663..def7007 100644
                mnt_drop_write(path.mnt);
        }
        path_put(&path);
                mnt_drop_write(path.mnt);
        }
        path_put(&path);
-@@ -325,17 +331,15 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
+@@ -386,17 +392,15 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
                const void __user *,value, size_t, size, int, flags)
  {
        struct file *f;
                const void __user *,value, size_t, size, int, flags)
  {
        struct file *f;
@@ -49530,10 +49701,10 @@ index 8d5a506..7f62712 100644
        struct posix_acl *acl;
        struct posix_acl_entry *acl_e;
 diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
        struct posix_acl *acl;
        struct posix_acl_entry *acl_e;
 diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
-index 452a291..91a95f3b 100644
+index d0ab788..827999b 100644
 --- a/fs/xfs/xfs_bmap.c
 +++ b/fs/xfs/xfs_bmap.c
 --- a/fs/xfs/xfs_bmap.c
 +++ b/fs/xfs/xfs_bmap.c
-@@ -250,7 +250,7 @@ xfs_bmap_validate_ret(
+@@ -190,7 +190,7 @@ xfs_bmap_validate_ret(
        int                     nmap,
        int                     ret_nmap);
  #else
        int                     nmap,
        int                     ret_nmap);
  #else
@@ -49564,7 +49735,7 @@ index 79d05e8..e3e5861 100644
                        *offset = off & 0x7fffffff;
                        return 0;
 diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
                        *offset = off & 0x7fffffff;
                        return 0;
 diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
-index f7ce7de..e1a5db0 100644
+index d99a905..9f88202 100644
 --- a/fs/xfs/xfs_ioctl.c
 +++ b/fs/xfs/xfs_ioctl.c
 @@ -128,7 +128,7 @@ xfs_find_handle(
 --- a/fs/xfs/xfs_ioctl.c
 +++ b/fs/xfs/xfs_ioctl.c
 @@ -128,7 +128,7 @@ xfs_find_handle(
@@ -49577,10 +49748,10 @@ index f7ce7de..e1a5db0 100644
                goto out_put;
  
 diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
                goto out_put;
  
 diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
-index 474920b..97169a9 100644
+index 23ce927..e274cc1 100644
 --- a/fs/xfs/xfs_iops.c
 +++ b/fs/xfs/xfs_iops.c
 --- a/fs/xfs/xfs_iops.c
 +++ b/fs/xfs/xfs_iops.c
-@@ -446,7 +446,7 @@ xfs_vn_put_link(
+@@ -447,7 +447,7 @@ xfs_vn_put_link(
        struct nameidata *nd,
        void            *p)
  {
        struct nameidata *nd,
        void            *p)
  {
@@ -49591,10 +49762,10 @@ index 474920b..97169a9 100644
                kfree(s);
 diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig
 new file mode 100644
                kfree(s);
 diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig
 new file mode 100644
-index 0000000..9629731
+index 0000000..4089e05
 --- /dev/null
 +++ b/grsecurity/Kconfig
 --- /dev/null
 +++ b/grsecurity/Kconfig
-@@ -0,0 +1,1037 @@
+@@ -0,0 +1,1078 @@
 +#
 +# grecurity configuration
 +#
 +#
 +# grecurity configuration
 +#
@@ -49729,9 +49900,11 @@ index 0000000..9629731
 +      select GRKERNSEC_PROC_ADD
 +      select GRKERNSEC_CHROOT_CHMOD
 +      select GRKERNSEC_CHROOT_NICE
 +      select GRKERNSEC_PROC_ADD
 +      select GRKERNSEC_CHROOT_CHMOD
 +      select GRKERNSEC_CHROOT_NICE
++      select GRKERNSEC_SETXID
 +      select GRKERNSEC_AUDIT_MOUNT
 +      select GRKERNSEC_MODHARDEN if (MODULES)
 +      select GRKERNSEC_HARDEN_PTRACE
 +      select GRKERNSEC_AUDIT_MOUNT
 +      select GRKERNSEC_MODHARDEN if (MODULES)
 +      select GRKERNSEC_HARDEN_PTRACE
++      select GRKERNSEC_PTRACE_READEXEC
 +      select GRKERNSEC_VM86 if (X86_32)
 +      select GRKERNSEC_KERN_LOCKOUT if (X86 || ARM || PPC || SPARC)
 +      select PAX
 +      select GRKERNSEC_VM86 if (X86_32)
 +      select GRKERNSEC_KERN_LOCKOUT if (X86 || ARM || PPC || SPARC)
 +      select PAX
@@ -49799,7 +49972,7 @@ index 0000000..9629731
 +
 +endchoice
 +
 +
 +endchoice
 +
-+menu "Address Space Protection"
++menu "Memory Protections"
 +depends on GRKERNSEC
 +
 +config GRKERNSEC_KMEM
 +depends on GRKERNSEC
 +
 +config GRKERNSEC_KMEM
@@ -49856,16 +50029,24 @@ index 0000000..9629731
 +        protect your kernel against modification, use the RBAC system.
 +
 +config GRKERNSEC_PROC_MEMMAP
 +        protect your kernel against modification, use the RBAC system.
 +
 +config GRKERNSEC_PROC_MEMMAP
-+      bool "Remove addresses from /proc/<pid>/[smaps|maps|stat]"
++      bool "Harden ASLR against information leaks and entropy reduction"
 +      default y if (PAX_NOEXEC || PAX_ASLR)
 +      depends on PAX_NOEXEC || PAX_ASLR
 +      help
 +        If you say Y here, the /proc/<pid>/maps and /proc/<pid>/stat files will
 +        give no information about the addresses of its mappings if
 +        PaX features that rely on random addresses are enabled on the task.
 +      default y if (PAX_NOEXEC || PAX_ASLR)
 +      depends on PAX_NOEXEC || PAX_ASLR
 +      help
 +        If you say Y here, the /proc/<pid>/maps and /proc/<pid>/stat files will
 +        give no information about the addresses of its mappings if
 +        PaX features that rely on random addresses are enabled on the task.
-+        If you use PaX it is greatly recommended that you say Y here as it
-+        closes up a hole that makes the full ASLR useless for suid
-+        binaries.
++        In addition to sanitizing this information and disabling other
++        dangerous sources of information, this option causes reads of sensitive
++        /proc/<pid> entries where the file descriptor was opened in a different
++        task than the one performing the read.  Such attempts are logged.
++        This option also limits argv/env strings for suid/sgid binaries
++        to 512KB to prevent a complete exhaustion of the stack entropy provided
++        by ASLR.  Finally, it places an 8MB stack resource limit on suid/sgid
++        binaries to prevent alternative mmap layouts from being abused.
++
++        If you use PaX it is essential that you say Y here as it closes up
++        several holes that make full ASLR useless locally.
 +
 +config GRKERNSEC_BRUTE
 +      bool "Deter exploit bruteforcing"
 +
 +config GRKERNSEC_BRUTE
 +      bool "Deter exploit bruteforcing"
@@ -50005,8 +50186,9 @@ index 0000000..9629731
 +        Depending upon the option you choose, you can either restrict users to
 +        see only the processes they themselves run, or choose a group that can
 +        view all processes and files normally restricted to root if you choose
 +        Depending upon the option you choose, you can either restrict users to
 +        see only the processes they themselves run, or choose a group that can
 +        view all processes and files normally restricted to root if you choose
-+        the "restrict to user only" option.  NOTE: If you're running identd as
-+        a non-root user, you will have to run it as the group you specify here.
++        the "restrict to user only" option.  NOTE: If you're running identd or
++        ntpd as a non-root user, you will have to run it as the group you
++        specify here.
 +
 +config GRKERNSEC_PROC_USER
 +      bool "Restrict /proc to user only"
 +
 +config GRKERNSEC_PROC_USER
 +      bool "Restrict /proc to user only"
@@ -50063,15 +50245,19 @@ index 0000000..9629731
 +      depends on SYSFS
 +      help
 +        If you say Y here, sysfs (the pseudo-filesystem mounted at /sys) and
 +      depends on SYSFS
 +      help
 +        If you say Y here, sysfs (the pseudo-filesystem mounted at /sys) and
-+        any filesystem normally mounted under it (e.g. debugfs) will only
-+        be accessible by root.  These filesystems generally provide access
++        any filesystem normally mounted under it (e.g. debugfs) will be
++        mostly accessible only by root.  These filesystems generally provide access
 +        to hardware and debug information that isn't appropriate for unprivileged
 +        users of the system.  Sysfs and debugfs have also become a large source
 +        of new vulnerabilities, ranging from infoleaks to local compromise.
 +        There has been very little oversight with an eye toward security involved
 +        in adding new exporters of information to these filesystems, so their
 +        use is discouraged.
 +        to hardware and debug information that isn't appropriate for unprivileged
 +        users of the system.  Sysfs and debugfs have also become a large source
 +        of new vulnerabilities, ranging from infoleaks to local compromise.
 +        There has been very little oversight with an eye toward security involved
 +        in adding new exporters of information to these filesystems, so their
 +        use is discouraged.
-+        This option is equivalent to a chmod 0700 of the mount paths.
++        For reasons of compatibility, a few directories have been whitelisted
++        for access by non-root users:
++        /sys/fs/selinux
++        /sys/fs/fuse
++        /sys/devices/system/cpu
 +
 +config GRKERNSEC_ROFS
 +      bool "Runtime read-only mount protection"
 +
 +config GRKERNSEC_ROFS
 +      bool "Runtime read-only mount protection"
@@ -50394,6 +50580,32 @@ index 0000000..9629731
 +        option is enabled, a sysctl option with name "harden_ptrace" is
 +        created.
 +
 +        option is enabled, a sysctl option with name "harden_ptrace" is
 +        created.
 +
++config GRKERNSEC_PTRACE_READEXEC
++      bool "Require read access to ptrace sensitive binaries"
++      help
++        If you say Y here, unprivileged users will not be able to ptrace unreadable
++        binaries.  This option is useful in environments that
++        remove the read bits (e.g. file mode 4711) from suid binaries to
++        prevent infoleaking of their contents.  This option adds
++        consistency to the use of that file mode, as the binary could normally
++        be read out when run without privileges while ptracing.
++
++        If the sysctl option is enabled, a sysctl option with name "ptrace_readexec"
++        is created.
++
++config GRKERNSEC_SETXID
++      bool "Enforce consistent multithreaded privileges"
++      help
++        If you say Y here, a change from a root uid to a non-root uid
++        in a multithreaded application will cause the resulting uids,
++        gids, supplementary groups, and capabilities in that thread
++        to be propagated to the other threads of the process.  In most
++        cases this is unnecessary, as glibc will emulate this behavior
++        on behalf of the application.  Other libcs do not act in the
++        same way, allowing the other threads of the process to continue
++        running with root privileges.  If the sysctl option is enabled,
++        a sysctl option with name "consistent_setxid" is created.
++
 +config GRKERNSEC_TPE
 +      bool "Trusted Path Execution (TPE)"
 +      help
 +config GRKERNSEC_TPE
 +      bool "Trusted Path Execution (TPE)"
 +      help
@@ -50634,10 +50846,10 @@ index 0000000..9629731
 +endmenu
 diff --git a/grsecurity/Makefile b/grsecurity/Makefile
 new file mode 100644
 +endmenu
 diff --git a/grsecurity/Makefile b/grsecurity/Makefile
 new file mode 100644
-index 0000000..be9ae3a
+index 0000000..1b9afa9
 --- /dev/null
 +++ b/grsecurity/Makefile
 --- /dev/null
 +++ b/grsecurity/Makefile
-@@ -0,0 +1,36 @@
+@@ -0,0 +1,38 @@
 +# grsecurity's ACL system was originally written in 2001 by Michael Dalton
 +# during 2001-2009 it has been completely redesigned by Brad Spengler
 +# into an RBAC system
 +# grsecurity's ACL system was originally written in 2001 by Michael Dalton
 +# during 2001-2009 it has been completely redesigned by Brad Spengler
 +# into an RBAC system
@@ -50646,6 +50858,8 @@ index 0000000..be9ae3a
 +# are copyright Brad Spengler - Open Source Security, Inc., and released 
 +# under the GPL v2 or higher
 +
 +# are copyright Brad Spengler - Open Source Security, Inc., and released 
 +# under the GPL v2 or higher
 +
++KBUILD_CFLAGS += -Werror
++
 +obj-y = grsec_chdir.o grsec_chroot.o grsec_exec.o grsec_fifo.o grsec_fork.o \
 +      grsec_mount.o grsec_sig.o grsec_sysctl.o \
 +      grsec_time.o grsec_tpe.o grsec_link.o grsec_pax.o grsec_ptrace.o
 +obj-y = grsec_chdir.o grsec_chroot.o grsec_exec.o grsec_fifo.o grsec_fork.o \
 +      grsec_mount.o grsec_sig.o grsec_sysctl.o \
 +      grsec_time.o grsec_tpe.o grsec_link.o grsec_pax.o grsec_ptrace.o
@@ -50676,10 +50890,10 @@ index 0000000..be9ae3a
 +endif
 diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c
 new file mode 100644
 +endif
 diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c
 new file mode 100644
-index 0000000..09258e0
+index 0000000..2d9c682
 --- /dev/null
 +++ b/grsecurity/gracl.c
 --- /dev/null
 +++ b/grsecurity/gracl.c
-@@ -0,0 +1,4156 @@
+@@ -0,0 +1,4172 @@
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +#include <linux/sched.h>
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +#include <linux/sched.h>
@@ -50699,7 +50913,7 @@ index 0000000..09258e0
 +#include <linux/ptrace.h>
 +#include <linux/gracl.h>
 +#include <linux/gralloc.h>
 +#include <linux/ptrace.h>
 +#include <linux/gracl.h>
 +#include <linux/gralloc.h>
-+#include <linux/grsecurity.h>
++#include <linux/security.h>
 +#include <linux/grinternal.h>
 +#include <linux/pid_namespace.h>
 +#include <linux/fdtable.h>
 +#include <linux/grinternal.h>
 +#include <linux/pid_namespace.h>
 +#include <linux/fdtable.h>
@@ -51339,22 +51553,60 @@ index 0000000..09258e0
 +      unsigned int index =
 +          rhash(uidgid, role->roletype & (GR_ROLE_USER | GR_ROLE_GROUP), acl_role_set.r_size);
 +      struct acl_role_label **curr;
 +      unsigned int index =
 +          rhash(uidgid, role->roletype & (GR_ROLE_USER | GR_ROLE_GROUP), acl_role_set.r_size);
 +      struct acl_role_label **curr;
-+      struct acl_role_label *tmp;
++      struct acl_role_label *tmp, *tmp2;
 +
 +      curr = &acl_role_set.r_hash[index];
 +
 +
 +      curr = &acl_role_set.r_hash[index];
 +
-+      /* if role was already inserted due to domains and already has
-+         a role in the same bucket as it attached, then we need to
-+         combine these two buckets
-+      */
-+      if (role->next) {
-+              tmp = role->next;
-+              while (tmp->next)
++      /* simple case, slot is empty, just set it to our role */
++      if (*curr == NULL) {
++              *curr = role;
++      } else {
++              /* example:
++                 1 -> 2 -> 3 (adding 2 -> 3 to here)
++                 2 -> 3
++              */
++              /* first check to see if we can already be reached via this slot */
++              tmp = *curr;
++              while (tmp && tmp != role)
 +                      tmp = tmp->next;
 +                      tmp = tmp->next;
-+              tmp->next = *curr;
-+      } else
-+              role->next = *curr;
-+      *curr = role;
++              if (tmp == role) {
++                      /* we don't need to add ourselves to this slot's chain */
++                      return;
++              }
++              /* we need to add ourselves to this chain, two cases */
++              if (role->next == NULL) {
++                      /* simple case, append the current chain to our role */
++                      role->next = *curr;
++                      *curr = role;
++              } else {
++                      /* 1 -> 2 -> 3 -> 4
++                         2 -> 3 -> 4
++                         3 -> 4 (adding 1 -> 2 -> 3 -> 4 to here)
++                      */                         
++                      /* trickier case: walk our role's chain until we find
++                         the role for the start of the current slot's chain */
++                      tmp = role;
++                      tmp2 = *curr;
++                      while (tmp->next && tmp->next != tmp2)
++                              tmp = tmp->next;
++                      if (tmp->next == tmp2) {
++                              /* from example above, we found 3, so just
++                                 replace this slot's chain with ours */
++                              *curr = role;
++                      } else {
++                              /* we didn't find a subset of our role's chain
++                                 in the current slot's chain, so append their
++                                 chain to ours, and set us as the first role in
++                                 the slot's chain
++
++                                 we could fold this case with the case above,
++                                 but making it explicit for clarity
++                              */
++                              tmp->next = tmp2;
++                              *curr = role;
++                      }
++              }
++      }
 +
 +      return;
 +}
 +
 +      return;
 +}
@@ -51612,6 +51864,7 @@ index 0000000..09258e0
 +
 +      /* release the reference to the real root dentry and vfsmount */
 +      path_put(&real_root);
 +
 +      /* release the reference to the real root dentry and vfsmount */
 +      path_put(&real_root);
++      memset(&real_root, 0, sizeof(real_root));
 +
 +      /* free all object hash tables */
 +
 +
 +      /* free all object hash tables */
 +
@@ -51675,6 +51928,7 @@ index 0000000..09258e0
 +      memset(&subj_map_set, 0, sizeof (struct acl_subj_map_db));
 +
 +      default_role = NULL;
 +      memset(&subj_map_set, 0, sizeof (struct acl_subj_map_db));
 +
 +      default_role = NULL;
++      kernel_role = NULL;
 +      role_list = NULL;
 +
 +      return;
 +      role_list = NULL;
 +
 +      return;
@@ -52135,40 +52389,28 @@ index 0000000..09258e0
 +      num_sprole_pws = arg->num_sprole_pws;
 +      acl_special_roles = (struct sprole_pw **) acl_alloc_num(num_sprole_pws, sizeof(struct sprole_pw *));
 +
 +      num_sprole_pws = arg->num_sprole_pws;
 +      acl_special_roles = (struct sprole_pw **) acl_alloc_num(num_sprole_pws, sizeof(struct sprole_pw *));
 +
-+      if (!acl_special_roles) {
-+              err = -ENOMEM;
-+              goto cleanup;
-+      }
++      if (!acl_special_roles && num_sprole_pws)
++              return -ENOMEM;
 +
 +      for (i = 0; i < num_sprole_pws; i++) {
 +              sptmp = (struct sprole_pw *) acl_alloc(sizeof(struct sprole_pw));
 +
 +      for (i = 0; i < num_sprole_pws; i++) {
 +              sptmp = (struct sprole_pw *) acl_alloc(sizeof(struct sprole_pw));
-+              if (!sptmp) {
-+                      err = -ENOMEM;
-+                      goto cleanup;
-+              }
++              if (!sptmp)
++                      return -ENOMEM;
 +              if (copy_from_user(sptmp, arg->sprole_pws + i,
 +              if (copy_from_user(sptmp, arg->sprole_pws + i,
-+                                 sizeof (struct sprole_pw))) {
-+                      err = -EFAULT;
-+                      goto cleanup;
-+              }
++                                 sizeof (struct sprole_pw)))
++                      return -EFAULT;
 +
 +
-+              len =
-+                  strnlen_user(sptmp->rolename, GR_SPROLE_LEN);
++              len = strnlen_user(sptmp->rolename, GR_SPROLE_LEN);
 +
 +
-+              if (!len || len >= GR_SPROLE_LEN) {
-+                      err = -EINVAL;
-+                      goto cleanup;
-+              }
++              if (!len || len >= GR_SPROLE_LEN)
++                      return -EINVAL;
 +
 +
-+              if ((tmp = (char *) acl_alloc(len)) == NULL) {
-+                      err = -ENOMEM;
-+                      goto cleanup;
-+              }
++              if ((tmp = (char *) acl_alloc(len)) == NULL)
++                      return -ENOMEM;
++
++              if (copy_from_user(tmp, sptmp->rolename, len))
++                      return -EFAULT;
 +
 +
-+              if (copy_from_user(tmp, sptmp->rolename, len)) {
-+                      err = -EFAULT;
-+                      goto cleanup;
-+              }
 +              tmp[len-1] = '\0';
 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
 +              printk(KERN_ALERT "Copying special role %s\n", tmp);
 +              tmp[len-1] = '\0';
 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
 +              printk(KERN_ALERT "Copying special role %s\n", tmp);
@@ -52182,38 +52424,28 @@ index 0000000..09258e0
 +      for (r_num = 0; r_num < arg->role_db.num_roles; r_num++) {
 +              r_tmp = acl_alloc(sizeof (struct acl_role_label));
 +
 +      for (r_num = 0; r_num < arg->role_db.num_roles; r_num++) {
 +              r_tmp = acl_alloc(sizeof (struct acl_role_label));
 +
-+              if (!r_tmp) {
-+                      err = -ENOMEM;
-+                      goto cleanup;
-+              }
++              if (!r_tmp)
++                      return -ENOMEM;
 +
 +              if (copy_from_user(&r_utmp2, r_utmp + r_num,
 +
 +              if (copy_from_user(&r_utmp2, r_utmp + r_num,
-+                                 sizeof (struct acl_role_label *))) {
-+                      err = -EFAULT;
-+                      goto cleanup;
-+              }
++                                 sizeof (struct acl_role_label *)))
++                      return -EFAULT;
 +
 +              if (copy_from_user(r_tmp, r_utmp2,
 +
 +              if (copy_from_user(r_tmp, r_utmp2,
-+                                 sizeof (struct acl_role_label))) {
-+                      err = -EFAULT;
-+                      goto cleanup;
-+              }
++                                 sizeof (struct acl_role_label)))
++                      return -EFAULT;
 +
 +              len = strnlen_user(r_tmp->rolename, GR_SPROLE_LEN);
 +
 +
 +              len = strnlen_user(r_tmp->rolename, GR_SPROLE_LEN);
 +
-+              if (!len || len >= PATH_MAX) {
-+                      err = -EINVAL;
-+                      goto cleanup;
-+              }
++              if (!len || len >= PATH_MAX)
++                      return -EINVAL;
++
++              if ((tmp = (char *) acl_alloc(len)) == NULL)
++                      return -ENOMEM;
++
++              if (copy_from_user(tmp, r_tmp->rolename, len))
++                      return -EFAULT;
 +
 +
-+              if ((tmp = (char *) acl_alloc(len)) == NULL) {
-+                      err = -ENOMEM;
-+                      goto cleanup;
-+              }
-+              if (copy_from_user(tmp, r_tmp->rolename, len)) {
-+                      err = -EFAULT;
-+                      goto cleanup;
-+              }
 +              tmp[len-1] = '\0';
 +              r_tmp->rolename = tmp;
 +
 +              tmp[len-1] = '\0';
 +              r_tmp->rolename = tmp;
 +
@@ -52224,14 +52456,11 @@ index 0000000..09258e0
 +                      kernel_role = r_tmp;
 +              }
 +
 +                      kernel_role = r_tmp;
 +              }
 +
-+              if ((ghash = (struct gr_hash_struct *) acl_alloc(sizeof(struct gr_hash_struct))) == NULL) {
-+                      err = -ENOMEM;
-+                      goto cleanup;
-+              }
-+              if (copy_from_user(ghash, r_tmp->hash, sizeof(struct gr_hash_struct))) {
-+                      err = -EFAULT;
-+                      goto cleanup;
-+              }
++              if ((ghash = (struct gr_hash_struct *) acl_alloc(sizeof(struct gr_hash_struct))) == NULL)
++                      return -ENOMEM;
++
++              if (copy_from_user(ghash, r_tmp->hash, sizeof(struct gr_hash_struct)))
++                      return -EFAULT;
 +
 +              r_tmp->hash = ghash;
 +
 +
 +              r_tmp->hash = ghash;
 +
@@ -52242,32 +52471,28 @@ index 0000000..09258e0
 +                  (struct acl_subject_label **)
 +                  create_table(&(r_tmp->subj_hash_size), sizeof(void *));
 +
 +                  (struct acl_subject_label **)
 +                  create_table(&(r_tmp->subj_hash_size), sizeof(void *));
 +
-+              if (!r_tmp->subj_hash) {
-+                      err = -ENOMEM;
-+                      goto cleanup;
-+              }
++              if (!r_tmp->subj_hash)
++                      return -ENOMEM;
 +
 +              err = copy_user_allowedips(r_tmp);
 +              if (err)
 +
 +              err = copy_user_allowedips(r_tmp);
 +              if (err)
-+                      goto cleanup;
++                      return err;
 +
 +              /* copy domain info */
 +              if (r_tmp->domain_children != NULL) {
 +                      domainlist = acl_alloc_num(r_tmp->domain_child_num, sizeof(uid_t));
 +
 +              /* copy domain info */
 +              if (r_tmp->domain_children != NULL) {
 +                      domainlist = acl_alloc_num(r_tmp->domain_child_num, sizeof(uid_t));
-+                      if (domainlist == NULL) {
-+                              err = -ENOMEM;
-+                              goto cleanup;
-+                      }
-+                      if (copy_from_user(domainlist, r_tmp->domain_children, r_tmp->domain_child_num * sizeof(uid_t))) {
-+                              err = -EFAULT;
-+                              goto cleanup;
-+                      }
++                      if (domainlist == NULL)
++                              return -ENOMEM;
++
++                      if (copy_from_user(domainlist, r_tmp->domain_children, r_tmp->domain_child_num * sizeof(uid_t)))
++                              return -EFAULT;
++
 +                      r_tmp->domain_children = domainlist;
 +              }
 +
 +              err = copy_user_transitions(r_tmp);
 +              if (err)
 +                      r_tmp->domain_children = domainlist;
 +              }
 +
 +              err = copy_user_transitions(r_tmp);
 +              if (err)
-+                      goto cleanup;
++                      return err;
 +
 +              memset(r_tmp->subj_hash, 0,
 +                     r_tmp->subj_hash_size *
 +
 +              memset(r_tmp->subj_hash, 0,
 +                     r_tmp->subj_hash_size *
@@ -52276,7 +52501,7 @@ index 0000000..09258e0
 +              err = copy_user_subjs(r_tmp->hash->first, r_tmp);
 +
 +              if (err)
 +              err = copy_user_subjs(r_tmp->hash->first, r_tmp);
 +
 +              if (err)
-+                      goto cleanup;
++                      return err;
 +
 +              /* set nested subject list to null */
 +              r_tmp->hash->first = NULL;
 +
 +              /* set nested subject list to null */
 +              r_tmp->hash->first = NULL;
@@ -52284,12 +52509,10 @@ index 0000000..09258e0
 +              insert_acl_role_label(r_tmp);
 +      }
 +
 +              insert_acl_role_label(r_tmp);
 +      }
 +
-+      goto return_err;
-+      cleanup:
-+      free_variables();
-+      return_err:
-+      return err;
++      if (default_role == NULL || kernel_role == NULL)
++              return -EINVAL;
 +
 +
++      return err;
 +}
 +
 +static int
 +}
 +
 +static int
@@ -52455,7 +52678,7 @@ index 0000000..09258e0
 +
 +static struct acl_object_label *
 +chk_glob_label(struct acl_object_label *globbed,
 +
 +static struct acl_object_label *
 +chk_glob_label(struct acl_object_label *globbed,
-+      struct dentry *dentry, struct vfsmount *mnt, char **path)
++      const struct dentry *dentry, const struct vfsmount *mnt, char **path)
 +{
 +      struct acl_object_label *tmp;
 +
 +{
 +      struct acl_object_label *tmp;
 +
@@ -52488,8 +52711,7 @@ index 0000000..09258e0
 +              retval = lookup_acl_obj_label(curr_ino, curr_dev, tmpsubj);
 +              if (retval) {
 +                      if (checkglob && retval->globbed) {
 +              retval = lookup_acl_obj_label(curr_ino, curr_dev, tmpsubj);
 +              if (retval) {
 +                      if (checkglob && retval->globbed) {
-+                              retval2 = chk_glob_label(retval->globbed, (struct dentry *)orig_dentry,
-+                                              (struct vfsmount *)orig_mnt, path);
++                              retval2 = chk_glob_label(retval->globbed, orig_dentry, orig_mnt, path);
 +                              if (retval2)
 +                                      retval = retval2;
 +                      }
 +                              if (retval2)
 +                                      retval = retval2;
 +                      }
@@ -52951,17 +53173,18 @@ index 0000000..09258e0
 +void
 +gr_copy_label(struct task_struct *tsk)
 +{
 +void
 +gr_copy_label(struct task_struct *tsk)
 +{
++      /* plain copying of fields is already done by dup_task_struct */
 +      tsk->signal->used_accept = 0;
 +      tsk->acl_sp_role = 0;
 +      tsk->signal->used_accept = 0;
 +      tsk->acl_sp_role = 0;
-+      tsk->acl_role_id = current->acl_role_id;
-+      tsk->acl = current->acl;
-+      tsk->role = current->role;
++      //tsk->acl_role_id = current->acl_role_id;
++      //tsk->acl = current->acl;
++      //tsk->role = current->role;
 +      tsk->signal->curr_ip = current->signal->curr_ip;
 +      tsk->signal->saved_ip = current->signal->saved_ip;
 +      if (current->exec_file)
 +              get_file(current->exec_file);
 +      tsk->signal->curr_ip = current->signal->curr_ip;
 +      tsk->signal->saved_ip = current->signal->saved_ip;
 +      if (current->exec_file)
 +              get_file(current->exec_file);
-+      tsk->exec_file = current->exec_file;
-+      tsk->is_writable = current->is_writable;
++      //tsk->exec_file = current->exec_file;
++      //tsk->is_writable = current->is_writable;
 +      if (unlikely(current->signal->used_accept)) {
 +              current->signal->curr_ip = 0;
 +              current->signal->saved_ip = 0;
 +      if (unlikely(current->signal->used_accept)) {
 +              current->signal->curr_ip = 0;
 +              current->signal->saved_ip = 0;
@@ -53148,6 +53371,8 @@ index 0000000..09258e0
 +      }
 +}
 +
 +      }
 +}
 +
++extern int gr_acl_is_capable(const int cap);
++
 +void
 +gr_set_role_label(struct task_struct *task, const uid_t uid, const uid_t gid)
 +{
 +void
 +gr_set_role_label(struct task_struct *task, const uid_t uid, const uid_t gid)
 +{
@@ -53169,6 +53394,12 @@ index 0000000..09258e0
 +      } else if (!task->role || !(task->role->roletype & GR_ROLE_SPECIAL))
 +              role = lookup_acl_role_label(task, uid, gid);
 +
 +      } else if (!task->role || !(task->role->roletype & GR_ROLE_SPECIAL))
 +              role = lookup_acl_role_label(task, uid, gid);
 +
++      /* don't change the role if we're not a privileged process */
++      if (role && task->role != role &&
++          (((role->roletype & GR_ROLE_USER) && !gr_acl_is_capable(CAP_SETUID)) ||
++           ((role->roletype & GR_ROLE_GROUP) && !gr_acl_is_capable(CAP_SETGID))))
++              return;
++
 +      /* perform subject lookup in possibly new role
 +         we can use this result below in the case where role == task->role
 +      */
 +      /* perform subject lookup in possibly new role
 +         we can use this result below in the case where role == task->role
 +      */
@@ -53208,7 +53439,7 @@ index 0000000..09258e0
 +
 +int
 +gr_set_proc_label(const struct dentry *dentry, const struct vfsmount *mnt,
 +
 +int
 +gr_set_proc_label(const struct dentry *dentry, const struct vfsmount *mnt,
-+                const int unsafe_share)
++                const int unsafe_flags)
 +{
 +      struct task_struct *task = current;
 +      struct acl_subject_label *newacl;
 +{
 +      struct task_struct *task = current;
 +      struct acl_subject_label *newacl;
@@ -53221,13 +53452,12 @@ index 0000000..09258e0
 +      newacl = chk_subj_label(dentry, mnt, task->role);
 +
 +      task_lock(task);
 +      newacl = chk_subj_label(dentry, mnt, task->role);
 +
 +      task_lock(task);
-+      if ((((task->ptrace & PT_PTRACED) || unsafe_share) &&
-+           !(task->acl->mode & GR_POVERRIDE) && (task->acl != newacl) &&
++      if (unsafe_flags && !(task->acl->mode & GR_POVERRIDE) && (task->acl != newacl) &&
 +           !(task->role->roletype & GR_ROLE_GOD) &&
 +           !gr_search_file(dentry, GR_PTRACERD, mnt) &&
 +           !(task->role->roletype & GR_ROLE_GOD) &&
 +           !gr_search_file(dentry, GR_PTRACERD, mnt) &&
-+           !(task->acl->mode & (GR_LEARN | GR_INHERITLEARN)))) {
++           !(task->acl->mode & (GR_LEARN | GR_INHERITLEARN))) {
 +                task_unlock(task);
 +                task_unlock(task);
-+              if (unsafe_share)
++              if (unsafe_flags & LSM_UNSAFE_SHARE)
 +                      gr_log_fs_generic(GR_DONT_AUDIT, GR_UNSAFESHARE_EXEC_ACL_MSG, dentry, mnt);
 +              else
 +                      gr_log_fs_generic(GR_DONT_AUDIT, GR_PTRACE_EXEC_ACL_MSG, dentry, mnt);
 +                      gr_log_fs_generic(GR_DONT_AUDIT, GR_UNSAFESHARE_EXEC_ACL_MSG, dentry, mnt);
 +              else
 +                      gr_log_fs_generic(GR_DONT_AUDIT, GR_PTRACE_EXEC_ACL_MSG, dentry, mnt);
@@ -55056,10 +55286,10 @@ index 0000000..955ddfb
 +
 diff --git a/grsecurity/gracl_fs.c b/grsecurity/gracl_fs.c
 new file mode 100644
 +
 diff --git a/grsecurity/gracl_fs.c b/grsecurity/gracl_fs.c
 new file mode 100644
-index 0000000..4eda5c3
+index 0000000..88d0e87
 --- /dev/null
 +++ b/grsecurity/gracl_fs.c
 --- /dev/null
 +++ b/grsecurity/gracl_fs.c
-@@ -0,0 +1,433 @@
+@@ -0,0 +1,435 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/types.h>
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/types.h>
@@ -55070,6 +55300,15 @@ index 0000000..4eda5c3
 +#include <linux/grinternal.h>
 +#include <linux/gracl.h>
 +
 +#include <linux/grinternal.h>
 +#include <linux/gracl.h>
 +
++umode_t
++gr_acl_umask(void)
++{
++      if (unlikely(!gr_acl_is_enabled()))
++              return 0;
++
++      return current->role->umask;
++}
++
 +__u32
 +gr_acl_handle_hidden_file(const struct dentry * dentry,
 +                        const struct vfsmount * mnt)
 +__u32
 +gr_acl_handle_hidden_file(const struct dentry * dentry,
 +                        const struct vfsmount * mnt)
@@ -55258,25 +55497,18 @@ index 0000000..4eda5c3
 +}
 +
 +__u32
 +}
 +
 +__u32
-+gr_acl_handle_fchmod(const struct dentry *dentry, const struct vfsmount *mnt,
-+                   mode_t mode)
++gr_acl_handle_chmod(const struct dentry *dentry, const struct vfsmount *mnt,
++                   umode_t *modeptr)
 +{
 +{
++      umode_t mode;
++
++      *modeptr &= ~gr_acl_umask();
++      mode = *modeptr;
++
 +      if (unlikely(dentry->d_inode && S_ISSOCK(dentry->d_inode->i_mode)))
 +              return 1;
 +
 +      if (unlikely(dentry->d_inode && S_ISSOCK(dentry->d_inode->i_mode)))
 +              return 1;
 +
-+      if (unlikely((mode != (mode_t)-1) && (mode & (S_ISUID | S_ISGID)))) {
-+              return generic_fs_handler(dentry, mnt, GR_WRITE | GR_SETID,
-+                                 GR_FCHMOD_ACL_MSG);
-+      } else {
-+              return generic_fs_handler(dentry, mnt, GR_WRITE, GR_FCHMOD_ACL_MSG);
-+      }
-+}
-+
-+__u32
-+gr_acl_handle_chmod(const struct dentry *dentry, const struct vfsmount *mnt,
-+                  mode_t mode)
-+{
-+      if (unlikely((mode != (mode_t)-1) && (mode & (S_ISUID | S_ISGID)))) {
++      if (unlikely(mode & (S_ISUID | S_ISGID))) {
 +              return generic_fs_handler(dentry, mnt, GR_WRITE | GR_SETID,
 +                                 GR_CHMOD_ACL_MSG);
 +      } else {
 +              return generic_fs_handler(dentry, mnt, GR_WRITE | GR_SETID,
 +                                 GR_CHMOD_ACL_MSG);
 +      } else {
@@ -56902,10 +57134,10 @@ index 0000000..a2dc675
 +}
 diff --git a/grsecurity/grsec_disabled.c b/grsecurity/grsec_disabled.c
 new file mode 100644
 +}
 diff --git a/grsecurity/grsec_disabled.c b/grsecurity/grsec_disabled.c
 new file mode 100644
-index 0000000..d81a586
+index 0000000..213ad8b
 --- /dev/null
 +++ b/grsecurity/grsec_disabled.c
 --- /dev/null
 +++ b/grsecurity/grsec_disabled.c
-@@ -0,0 +1,439 @@
+@@ -0,0 +1,437 @@
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +#include <linux/sched.h>
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +#include <linux/sched.h>
@@ -57145,15 +57377,8 @@ index 0000000..d81a586
 +}
 +
 +__u32
 +}
 +
 +__u32
-+gr_acl_handle_fchmod(const struct dentry * dentry, const struct vfsmount * mnt,
-+                   mode_t mode)
-+{
-+      return 1;
-+}
-+
-+__u32
 +gr_acl_handle_chmod(const struct dentry * dentry, const struct vfsmount * mnt,
 +gr_acl_handle_chmod(const struct dentry * dentry, const struct vfsmount * mnt,
-+                  mode_t mode)
++                  umode_t *mode)
 +{
 +      return 1;
 +}
 +{
 +      return 1;
 +}
@@ -57176,6 +57401,11 @@ index 0000000..d81a586
 +      return;
 +}
 +
 +      return;
 +}
 +
++umode_t gr_acl_umask(void)
++{
++      return 0;
++}
++
 +__u32
 +gr_acl_handle_mknod(const struct dentry * new_dentry,
 +                  const struct dentry * parent_dentry,
 +__u32
 +gr_acl_handle_mknod(const struct dentry * new_dentry,
 +                  const struct dentry * parent_dentry,
@@ -57558,10 +57788,10 @@ index 0000000..8ca18bf
 +}
 diff --git a/grsecurity/grsec_init.c b/grsecurity/grsec_init.c
 new file mode 100644
 +}
 diff --git a/grsecurity/grsec_init.c b/grsecurity/grsec_init.c
 new file mode 100644
-index 0000000..356ef00
+index 0000000..01ddde4
 --- /dev/null
 +++ b/grsecurity/grsec_init.c
 --- /dev/null
 +++ b/grsecurity/grsec_init.c
-@@ -0,0 +1,269 @@
+@@ -0,0 +1,277 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/mm.h>
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/mm.h>
@@ -57571,6 +57801,8 @@ index 0000000..356ef00
 +#include <linux/percpu.h>
 +#include <linux/module.h>
 +
 +#include <linux/percpu.h>
 +#include <linux/module.h>
 +
++int grsec_enable_ptrace_readexec;
++int grsec_enable_setxid;
 +int grsec_enable_brute;
 +int grsec_enable_link;
 +int grsec_enable_dmesg;
 +int grsec_enable_brute;
 +int grsec_enable_link;
 +int grsec_enable_dmesg;
@@ -57723,6 +57955,9 @@ index 0000000..356ef00
 +      grsec_enable_group = 1;
 +      grsec_audit_gid = CONFIG_GRKERNSEC_AUDIT_GID;
 +#endif
 +      grsec_enable_group = 1;
 +      grsec_audit_gid = CONFIG_GRKERNSEC_AUDIT_GID;
 +#endif
++#ifdef CONFIG_GRKERNSEC_PTRACE_READEXEC
++      grsec_enable_ptrace_readexec = 1;
++#endif
 +#ifdef CONFIG_GRKERNSEC_AUDIT_CHDIR
 +      grsec_enable_chdir = 1;
 +#endif
 +#ifdef CONFIG_GRKERNSEC_AUDIT_CHDIR
 +      grsec_enable_chdir = 1;
 +#endif
@@ -57751,6 +57986,9 @@ index 0000000..356ef00
 +#ifdef CONFIG_GRKERNSEC_EXECLOG
 +      grsec_enable_execlog = 1;
 +#endif
 +#ifdef CONFIG_GRKERNSEC_EXECLOG
 +      grsec_enable_execlog = 1;
 +#endif
++#ifdef CONFIG_GRKERNSEC_SETXID
++      grsec_enable_setxid = 1;
++#endif
 +#ifdef CONFIG_GRKERNSEC_SIGNAL
 +      grsec_enable_signal = 1;
 +#endif
 +#ifdef CONFIG_GRKERNSEC_SIGNAL
 +      grsec_enable_signal = 1;
 +#endif
@@ -58210,10 +58448,10 @@ index 0000000..a45d2e9
 +}
 diff --git a/grsecurity/grsec_mem.c b/grsecurity/grsec_mem.c
 new file mode 100644
 +}
 diff --git a/grsecurity/grsec_mem.c b/grsecurity/grsec_mem.c
 new file mode 100644
-index 0000000..6c0416b
+index 0000000..f536303
 --- /dev/null
 +++ b/grsecurity/grsec_mem.c
 --- /dev/null
 +++ b/grsecurity/grsec_mem.c
-@@ -0,0 +1,33 @@
+@@ -0,0 +1,40 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/mm.h>
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/mm.h>
@@ -58247,6 +58485,13 @@ index 0000000..6c0416b
 +      gr_log_noargs(GR_DONT_AUDIT, GR_VM86_MSG);
 +      return;
 +}
 +      gr_log_noargs(GR_DONT_AUDIT, GR_VM86_MSG);
 +      return;
 +}
++
++void
++gr_log_badprocpid(const char *entry)
++{
++      gr_log_str(GR_DONT_AUDIT, GR_BADPROCPID_MSG, entry);
++      return;
++}
 diff --git a/grsecurity/grsec_mount.c b/grsecurity/grsec_mount.c
 new file mode 100644
 index 0000000..2131422
 diff --git a/grsecurity/grsec_mount.c b/grsecurity/grsec_mount.c
 new file mode 100644
 index 0000000..2131422
@@ -58359,14 +58604,14 @@ index 0000000..a3b12a0
 +}
 diff --git a/grsecurity/grsec_ptrace.c b/grsecurity/grsec_ptrace.c
 new file mode 100644
 +}
 diff --git a/grsecurity/grsec_ptrace.c b/grsecurity/grsec_ptrace.c
 new file mode 100644
-index 0000000..472c1d6
+index 0000000..f7f29aa
 --- /dev/null
 +++ b/grsecurity/grsec_ptrace.c
 --- /dev/null
 +++ b/grsecurity/grsec_ptrace.c
-@@ -0,0 +1,14 @@
+@@ -0,0 +1,30 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/grinternal.h>
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/grinternal.h>
-+#include <linux/grsecurity.h>
++#include <linux/security.h>
 +
 +void
 +gr_audit_ptrace(struct task_struct *task)
 +
 +void
 +gr_audit_ptrace(struct task_struct *task)
@@ -58377,12 +58622,28 @@ index 0000000..472c1d6
 +#endif
 +      return;
 +}
 +#endif
 +      return;
 +}
++
++int
++gr_ptrace_readexec(struct file *file, int unsafe_flags)
++{
++#ifdef CONFIG_GRKERNSEC_PTRACE_READEXEC
++      const struct dentry *dentry = file->f_path.dentry;
++      const struct vfsmount *mnt = file->f_path.mnt;
++
++      if (grsec_enable_ptrace_readexec && (unsafe_flags & LSM_UNSAFE_PTRACE) && 
++          (inode_permission(dentry->d_inode, MAY_READ) || !gr_acl_handle_open(dentry, mnt, MAY_READ))) {
++              gr_log_fs_generic(GR_DONT_AUDIT, GR_PTRACE_READEXEC_MSG, dentry, mnt);
++              return -EACCES;
++      }
++#endif
++      return 0;
++}
 diff --git a/grsecurity/grsec_sig.c b/grsecurity/grsec_sig.c
 new file mode 100644
 diff --git a/grsecurity/grsec_sig.c b/grsecurity/grsec_sig.c
 new file mode 100644
-index 0000000..cf090b3
+index 0000000..7a5b2de
 --- /dev/null
 +++ b/grsecurity/grsec_sig.c
 --- /dev/null
 +++ b/grsecurity/grsec_sig.c
-@@ -0,0 +1,206 @@
+@@ -0,0 +1,207 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/delay.h>
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/delay.h>
@@ -58417,7 +58678,8 @@ index 0000000..cf090b3
 +gr_handle_signal(const struct task_struct *p, const int sig)
 +{
 +#ifdef CONFIG_GRKERNSEC
 +gr_handle_signal(const struct task_struct *p, const int sig)
 +{
 +#ifdef CONFIG_GRKERNSEC
-+      if (current->pid > 1 && gr_check_protected_task(p)) {
++      /* ignore the 0 signal for protected task checks */
++      if (current->pid > 1 && sig && gr_check_protected_task(p)) {
 +              gr_log_sig_task(GR_DONT_AUDIT, GR_SIG_ACL_MSG, p, sig);
 +              return -EPERM;
 +      } else if (gr_pid_is_chrooted((struct task_struct *)p)) {
 +              gr_log_sig_task(GR_DONT_AUDIT, GR_SIG_ACL_MSG, p, sig);
 +              return -EPERM;
 +      } else if (gr_pid_is_chrooted((struct task_struct *)p)) {
@@ -58841,10 +59103,10 @@ index 0000000..4030d57
 +}
 diff --git a/grsecurity/grsec_sysctl.c b/grsecurity/grsec_sysctl.c
 new file mode 100644
 +}
 diff --git a/grsecurity/grsec_sysctl.c b/grsecurity/grsec_sysctl.c
 new file mode 100644
-index 0000000..174668f
+index 0000000..a1aedd7
 --- /dev/null
 +++ b/grsecurity/grsec_sysctl.c
 --- /dev/null
 +++ b/grsecurity/grsec_sysctl.c
-@@ -0,0 +1,433 @@
+@@ -0,0 +1,451 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/sysctl.h>
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/sysctl.h>
@@ -58908,6 +59170,24 @@ index 0000000..174668f
 +              .proc_handler   = &proc_dointvec,
 +      },
 +#endif
 +              .proc_handler   = &proc_dointvec,
 +      },
 +#endif
++#ifdef CONFIG_GRKERNSEC_PTRACE_READEXEC
++      {
++              .procname       = "ptrace_readexec",
++              .data           = &grsec_enable_ptrace_readexec,
++              .maxlen         = sizeof(int),
++              .mode           = 0600,
++              .proc_handler   = &proc_dointvec,
++      },
++#endif
++#ifdef CONFIG_GRKERNSEC_SETXID
++      {
++              .procname       = "consistent_setxid",
++              .data           = &grsec_enable_setxid,
++              .maxlen         = sizeof(int),
++              .mode           = 0600,
++              .proc_handler   = &proc_dointvec,
++      },
++#endif
 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
 +      {
 +              .procname       = "ip_blackhole",
 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
 +      {
 +              .procname       = "ip_blackhole",
@@ -59302,10 +59582,10 @@ index 0000000..0dc13c3
 +EXPORT_SYMBOL(gr_log_timechange);
 diff --git a/grsecurity/grsec_tpe.c b/grsecurity/grsec_tpe.c
 new file mode 100644
 +EXPORT_SYMBOL(gr_log_timechange);
 diff --git a/grsecurity/grsec_tpe.c b/grsecurity/grsec_tpe.c
 new file mode 100644
-index 0000000..4a78774
+index 0000000..07e0dc0
 --- /dev/null
 +++ b/grsecurity/grsec_tpe.c
 --- /dev/null
 +++ b/grsecurity/grsec_tpe.c
-@@ -0,0 +1,39 @@
+@@ -0,0 +1,73 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/file.h>
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/file.h>
@@ -59320,25 +59600,59 @@ index 0000000..4a78774
 +#ifdef CONFIG_GRKERNSEC
 +      struct inode *inode = file->f_path.dentry->d_parent->d_inode;
 +      const struct cred *cred = current_cred();
 +#ifdef CONFIG_GRKERNSEC
 +      struct inode *inode = file->f_path.dentry->d_parent->d_inode;
 +      const struct cred *cred = current_cred();
++      char *msg = NULL;
++      char *msg2 = NULL;
++
++      // never restrict root
++      if (!cred->uid)
++              return 1;
 +
 +
-+      if (cred->uid && ((grsec_enable_tpe &&
++      if (grsec_enable_tpe) {
 +#ifdef CONFIG_GRKERNSEC_TPE_INVERT
 +#ifdef CONFIG_GRKERNSEC_TPE_INVERT
-+          ((grsec_enable_tpe_invert && !in_group_p(grsec_tpe_gid)) ||
-+           (!grsec_enable_tpe_invert && in_group_p(grsec_tpe_gid)))
++              if (grsec_enable_tpe_invert && !in_group_p(grsec_tpe_gid))
++                      msg = "not being in trusted group";
++              else if (!grsec_enable_tpe_invert && in_group_p(grsec_tpe_gid))
++                      msg = "being in untrusted group";
 +#else
 +#else
-+          in_group_p(grsec_tpe_gid)
++              if (in_group_p(grsec_tpe_gid))
++                      msg = "being in untrusted group";
 +#endif
 +#endif
-+          ) || gr_acl_tpe_check()) &&
-+          (inode->i_uid || (!inode->i_uid && ((inode->i_mode & S_IWGRP) ||
-+                                              (inode->i_mode & S_IWOTH))))) {
-+              gr_log_fs_generic(GR_DONT_AUDIT, GR_EXEC_TPE_MSG, file->f_path.dentry, file->f_path.mnt);
++      }
++      if (!msg && gr_acl_tpe_check())
++              msg = "being in untrusted role";
++
++      // not in any affected group/role
++      if (!msg)
++              goto next_check;
++
++      if (inode->i_uid)
++              msg2 = "file in non-root-owned directory";
++      else if (inode->i_mode & S_IWOTH)
++              msg2 = "file in world-writable directory";
++      else if (inode->i_mode & S_IWGRP)
++              msg2 = "file in group-writable directory";
++
++      if (msg && msg2) {
++              char fullmsg[70] = {0};
++              snprintf(fullmsg, sizeof(fullmsg)-1, "%s and %s", msg, msg2);
++              gr_log_str_fs(GR_DONT_AUDIT, GR_EXEC_TPE_MSG, fullmsg, file->f_path.dentry, file->f_path.mnt);
 +              return 0;
 +      }
 +              return 0;
 +      }
++      msg = NULL;
++next_check:
 +#ifdef CONFIG_GRKERNSEC_TPE_ALL
 +#ifdef CONFIG_GRKERNSEC_TPE_ALL
-+      if (cred->uid && grsec_enable_tpe && grsec_enable_tpe_all &&
-+          ((inode->i_uid && (inode->i_uid != cred->uid)) ||
-+           (inode->i_mode & S_IWGRP) || (inode->i_mode & S_IWOTH))) {
-+              gr_log_fs_generic(GR_DONT_AUDIT, GR_EXEC_TPE_MSG, file->f_path.dentry, file->f_path.mnt);
++      if (!grsec_enable_tpe || !grsec_enable_tpe_all)
++              return 1;
++
++      if (inode->i_uid && (inode->i_uid != cred->uid))
++              msg = "directory not owned by user";
++      else if (inode->i_mode & S_IWOTH)
++              msg = "file in world-writable directory";
++      else if (inode->i_mode & S_IWGRP)
++              msg = "file in group-writable directory";
++
++      if (msg) {
++              gr_log_str_fs(GR_DONT_AUDIT, GR_EXEC_TPE_MSG, msg, file->f_path.dentry, file->f_path.mnt);
 +              return 0;
 +      }
 +#endif
 +              return 0;
 +      }
 +#endif
@@ -59771,32 +60085,19 @@ index 1bfcfe5..e04c5c9 100644
 +#define L1_CACHE_BYTES                (1UL << L1_CACHE_SHIFT)
  
  #endif /* __ASM_GENERIC_CACHE_H */
 +#define L1_CACHE_BYTES                (1UL << L1_CACHE_SHIFT)
  
  #endif /* __ASM_GENERIC_CACHE_H */
-diff --git a/include/asm-generic/int-l64.h b/include/asm-generic/int-l64.h
-index 1ca3efc..e3dc852 100644
---- a/include/asm-generic/int-l64.h
-+++ b/include/asm-generic/int-l64.h
-@@ -46,6 +46,8 @@ typedef unsigned int u32;
- typedef signed long s64;
- typedef unsigned long u64;
-+typedef unsigned int intoverflow_t __attribute__ ((mode(TI)));
-+
- #define S8_C(x)  x
- #define U8_C(x)  x ## U
- #define S16_C(x) x
-diff --git a/include/asm-generic/int-ll64.h b/include/asm-generic/int-ll64.h
-index f394147..b6152b9 100644
---- a/include/asm-generic/int-ll64.h
-+++ b/include/asm-generic/int-ll64.h
-@@ -51,6 +51,8 @@ typedef unsigned int u32;
- typedef signed long long s64;
- typedef unsigned long long u64;
-+typedef unsigned long long intoverflow_t;
-+
- #define S8_C(x)  x
- #define U8_C(x)  x ## U
- #define S16_C(x) x
+diff --git a/include/asm-generic/emergency-restart.h b/include/asm-generic/emergency-restart.h
+index 0d68a1e..b74a761 100644
+--- a/include/asm-generic/emergency-restart.h
++++ b/include/asm-generic/emergency-restart.h
+@@ -1,7 +1,7 @@
+ #ifndef _ASM_GENERIC_EMERGENCY_RESTART_H
+ #define _ASM_GENERIC_EMERGENCY_RESTART_H
+-static inline void machine_emergency_restart(void)
++static inline __noreturn void machine_emergency_restart(void)
+ {
+       machine_restart(NULL);
+ }
 diff --git a/include/asm-generic/kmap_types.h b/include/asm-generic/kmap_types.h
 index 0232ccb..13d9165 100644
 --- a/include/asm-generic/kmap_types.h
 diff --git a/include/asm-generic/kmap_types.h b/include/asm-generic/kmap_types.h
 index 0232ccb..13d9165 100644
 --- a/include/asm-generic/kmap_types.h
@@ -59814,6 +60115,18 @@ index 0232ccb..13d9165 100644
  };
  
  #undef KMAP_D
  };
  
  #undef KMAP_D
+diff --git a/include/asm-generic/local.h b/include/asm-generic/local.h
+index 9ceb03b..2efbcbd 100644
+--- a/include/asm-generic/local.h
++++ b/include/asm-generic/local.h
+@@ -39,6 +39,7 @@ typedef struct
+ #define local_add_return(i, l) atomic_long_add_return((i), (&(l)->a))
+ #define local_sub_return(i, l) atomic_long_sub_return((i), (&(l)->a))
+ #define local_inc_return(l) atomic_long_inc_return(&(l)->a)
++#define local_dec_return(l) atomic_long_dec_return(&(l)->a)
+ #define local_cmpxchg(l, o, n) atomic_long_cmpxchg((&(l)->a), (o), (n))
+ #define local_xchg(l, n) atomic_long_xchg((&(l)->a), (n))
 diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h
 index 725612b..9cc513a 100644
 --- a/include/asm-generic/pgtable-nopmd.h
 diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h
 index 725612b..9cc513a 100644
 --- a/include/asm-generic/pgtable-nopmd.h
@@ -59907,8 +60220,72 @@ index 76bff2b..c7a14e2 100644
  #endif /* !__ASSEMBLY__ */
  
  #endif /* _ASM_GENERIC_PGTABLE_H */
  #endif /* !__ASSEMBLY__ */
  
  #endif /* _ASM_GENERIC_PGTABLE_H */
+diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h
+index ac68c99..90d3439 100644
+--- a/include/asm-generic/uaccess.h
++++ b/include/asm-generic/uaccess.h
+@@ -76,6 +76,8 @@ extern unsigned long search_exception_table(unsigned long);
+  */
+ #ifndef __copy_from_user
+ static inline __must_check long __copy_from_user(void *to,
++              const void __user * from, unsigned long n) __size_overflow(3);
++static inline __must_check long __copy_from_user(void *to,
+               const void __user * from, unsigned long n)
+ {
+       if (__builtin_constant_p(n)) {
+@@ -106,6 +108,8 @@ static inline __must_check long __copy_from_user(void *to,
+ #ifndef __copy_to_user
+ static inline __must_check long __copy_to_user(void __user *to,
++              const void *from, unsigned long n) __size_overflow(3);
++static inline __must_check long __copy_to_user(void __user *to,
+               const void *from, unsigned long n)
+ {
+       if (__builtin_constant_p(n)) {
+@@ -224,6 +228,7 @@ extern int __put_user_bad(void) __attribute__((noreturn));
+               -EFAULT;                                        \
+ })
++static inline int __get_user_fn(size_t size, const void __user *ptr, void *x) __size_overflow(1);
+ static inline int __get_user_fn(size_t size, const void __user *ptr, void *x)
+ {
+       size = __copy_from_user(x, ptr, size);
+@@ -240,6 +245,7 @@ extern int __get_user_bad(void) __attribute__((noreturn));
+ #define __copy_to_user_inatomic __copy_to_user
+ #endif
++static inline long copy_from_user(void *to, const void __user * from, unsigned long n) __size_overflow(3);
+ static inline long copy_from_user(void *to,
+               const void __user * from, unsigned long n)
+ {
+@@ -250,6 +256,7 @@ static inline long copy_from_user(void *to,
+               return n;
+ }
++static inline long copy_to_user(void __user *to, const void *from, unsigned long n) __size_overflow(3);
+ static inline long copy_to_user(void __user *to,
+               const void *from, unsigned long n)
+ {
+@@ -309,6 +316,8 @@ static inline long strlen_user(const char __user *src)
+  */
+ #ifndef __clear_user
+ static inline __must_check unsigned long
++__clear_user(void __user *to, unsigned long n) __size_overflow(2);
++static inline __must_check unsigned long
+ __clear_user(void __user *to, unsigned long n)
+ {
+       memset((void __force *)to, 0, n);
+@@ -317,6 +326,8 @@ __clear_user(void __user *to, unsigned long n)
+ #endif
+ static inline __must_check unsigned long
++clear_user(void __user *to, unsigned long n) __size_overflow(2);
++static inline __must_check unsigned long
+ clear_user(void __user *to, unsigned long n)
+ {
+       might_sleep();
 diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
 diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
-index db22d13..1f2e3e1 100644
+index b5e2e4c..6a5373e 100644
 --- a/include/asm-generic/vmlinux.lds.h
 +++ b/include/asm-generic/vmlinux.lds.h
 @@ -217,6 +217,7 @@
 --- a/include/asm-generic/vmlinux.lds.h
 +++ b/include/asm-generic/vmlinux.lds.h
 @@ -217,6 +217,7 @@
@@ -59919,7 +60296,7 @@ index db22d13..1f2e3e1 100644
                *(__vermagic)           /* Kernel version magic */      \
                . = ALIGN(8);                                           \
                VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .;         \
                *(__vermagic)           /* Kernel version magic */      \
                . = ALIGN(8);                                           \
                VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .;         \
-@@ -723,17 +724,18 @@
+@@ -722,17 +723,18 @@
   * section in the linker script will go there too.  @phdr should have
   * a leading colon.
   *
   * section in the linker script will go there too.  @phdr should have
   * a leading colon.
   *
@@ -59943,10 +60320,10 @@ index db22d13..1f2e3e1 100644
  /**
   * PERCPU_SECTION - define output section for percpu area, simple version
 diff --git a/include/drm/drmP.h b/include/drm/drmP.h
  /**
   * PERCPU_SECTION - define output section for percpu area, simple version
 diff --git a/include/drm/drmP.h b/include/drm/drmP.h
-index 9b7c2bb..76b7d1e 100644
+index bf4b2dc..2d0762f 100644
 --- a/include/drm/drmP.h
 +++ b/include/drm/drmP.h
 --- a/include/drm/drmP.h
 +++ b/include/drm/drmP.h
-@@ -73,6 +73,7 @@
+@@ -72,6 +72,7 @@
  #include <linux/workqueue.h>
  #include <linux/poll.h>
  #include <asm/pgalloc.h>
  #include <linux/workqueue.h>
  #include <linux/poll.h>
  #include <asm/pgalloc.h>
@@ -59954,7 +60331,7 @@ index 9b7c2bb..76b7d1e 100644
  #include "drm.h"
  
  #include <linux/idr.h>
  #include "drm.h"
  
  #include <linux/idr.h>
-@@ -1035,7 +1036,7 @@ struct drm_device {
+@@ -1038,7 +1039,7 @@ struct drm_device {
  
        /** \name Usage Counters */
        /*@{ */
  
        /** \name Usage Counters */
        /*@{ */
@@ -59963,7 +60340,7 @@ index 9b7c2bb..76b7d1e 100644
        atomic_t ioctl_count;           /**< Outstanding IOCTLs pending */
        atomic_t vma_count;             /**< Outstanding vma areas open */
        int buf_use;                    /**< Buffers in use -- cannot alloc */
        atomic_t ioctl_count;           /**< Outstanding IOCTLs pending */
        atomic_t vma_count;             /**< Outstanding vma areas open */
        int buf_use;                    /**< Buffers in use -- cannot alloc */
-@@ -1046,7 +1047,7 @@ struct drm_device {
+@@ -1049,7 +1050,7 @@ struct drm_device {
        /*@{ */
        unsigned long counters;
        enum drm_stat_type types[15];
        /*@{ */
        unsigned long counters;
        enum drm_stat_type types[15];
@@ -60040,10 +60417,27 @@ index 49a83ca..df96b54 100644
  #undef __HANDLE_ITEM
  };
 diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
  #undef __HANDLE_ITEM
  };
 diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
-index fd88a39..f4d0bad 100644
+index fd88a39..8a801b4 100644
 --- a/include/linux/binfmts.h
 +++ b/include/linux/binfmts.h
 --- a/include/linux/binfmts.h
 +++ b/include/linux/binfmts.h
-@@ -88,6 +88,7 @@ struct linux_binfmt {
+@@ -18,7 +18,7 @@ struct pt_regs;
+ #define BINPRM_BUF_SIZE 128
+ #ifdef __KERNEL__
+-#include <linux/list.h>
++#include <linux/sched.h>
+ #define CORENAME_MAX_SIZE 128
+@@ -58,6 +58,7 @@ struct linux_binprm {
+       unsigned interp_flags;
+       unsigned interp_data;
+       unsigned long loader, exec;
++      char tcomm[TASK_COMM_LEN];
+ };
+ #define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 0
+@@ -88,6 +89,7 @@ struct linux_binfmt {
        int (*load_binary)(struct linux_binprm *, struct  pt_regs * regs);
        int (*load_shlib)(struct file *);
        int (*core_dump)(struct coredump_params *cprm);
        int (*load_binary)(struct linux_binprm *, struct  pt_regs * regs);
        int (*load_shlib)(struct file *);
        int (*core_dump)(struct coredump_params *cprm);
@@ -60052,10 +60446,10 @@ index fd88a39..f4d0bad 100644
  };
  
 diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
  };
  
 diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index 7fbaa91..5e6a460 100644
+index 0ed1eb0..3ab569b 100644
 --- a/include/linux/blkdev.h
 +++ b/include/linux/blkdev.h
 --- a/include/linux/blkdev.h
 +++ b/include/linux/blkdev.h
-@@ -1321,7 +1321,7 @@ struct block_device_operations {
+@@ -1315,7 +1315,7 @@ struct block_device_operations {
        /* this callback is with swap_lock and sometimes page table lock held */
        void (*swap_slot_free_notify) (struct block_device *, unsigned long);
        struct module *owner;
        /* this callback is with swap_lock and sometimes page table lock held */
        void (*swap_slot_free_notify) (struct block_device *, unsigned long);
        struct module *owner;
@@ -60065,7 +60459,7 @@ index 7fbaa91..5e6a460 100644
  extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int,
                                 unsigned long);
 diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h
  extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int,
                                 unsigned long);
 diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h
-index 8e9e4bc..88bd457 100644
+index 4d1a074..88f929a 100644
 --- a/include/linux/blktrace_api.h
 +++ b/include/linux/blktrace_api.h
 @@ -162,7 +162,7 @@ struct blk_trace {
 --- a/include/linux/blktrace_api.h
 +++ b/include/linux/blktrace_api.h
 @@ -162,7 +162,7 @@ struct blk_trace {
@@ -60161,10 +60555,10 @@ index 4c57065..4307975 100644
  #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
  #endif
 diff --git a/include/linux/capability.h b/include/linux/capability.h
  #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
  #endif
 diff --git a/include/linux/capability.h b/include/linux/capability.h
-index c421123..e343179 100644
+index a63d13d..069bfd5 100644
 --- a/include/linux/capability.h
 +++ b/include/linux/capability.h
 --- a/include/linux/capability.h
 +++ b/include/linux/capability.h
-@@ -547,6 +547,9 @@ extern bool capable(int cap);
+@@ -548,6 +548,9 @@ extern bool capable(int cap);
  extern bool ns_capable(struct user_namespace *ns, int cap);
  extern bool task_ns_capable(struct task_struct *t, int cap);
  extern bool nsown_capable(int cap);
  extern bool ns_capable(struct user_namespace *ns, int cap);
  extern bool task_ns_capable(struct task_struct *t, int cap);
  extern bool nsown_capable(int cap);
@@ -60188,10 +60582,10 @@ index 04ffb2e..6799180 100644
  extern struct cleancache_ops
        cleancache_register_ops(struct cleancache_ops *ops);
 diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h
  extern struct cleancache_ops
        cleancache_register_ops(struct cleancache_ops *ops);
 diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h
-index dfadc96..c0e70c1 100644
+index dfadc96..d90deca 100644
 --- a/include/linux/compiler-gcc4.h
 +++ b/include/linux/compiler-gcc4.h
 --- a/include/linux/compiler-gcc4.h
 +++ b/include/linux/compiler-gcc4.h
-@@ -31,6 +31,12 @@
+@@ -31,6 +31,15 @@
  
  
  #if __GNUC_MINOR__ >= 5
  
  
  #if __GNUC_MINOR__ >= 5
@@ -60201,10 +60595,13 @@ index dfadc96..c0e70c1 100644
 +#define __do_const __attribute__((do_const))
 +#endif
 +
 +#define __do_const __attribute__((do_const))
 +#endif
 +
++#ifdef SIZE_OVERFLOW_PLUGIN
++#define __size_overflow(...) __attribute__((size_overflow(__VA_ARGS__)))
++#endif
  /*
   * Mark a position in code as unreachable.  This can be used to
   * suppress control flow warnings after asm blocks that transfer
  /*
   * Mark a position in code as unreachable.  This can be used to
   * suppress control flow warnings after asm blocks that transfer
-@@ -46,6 +52,11 @@
+@@ -46,6 +55,11 @@
  #define __noclone     __attribute__((__noclone__))
  
  #endif
  #define __noclone     __attribute__((__noclone__))
  
  #endif
@@ -60217,7 +60614,7 @@ index dfadc96..c0e70c1 100644
  
  #if __GNUC_MINOR__ > 0
 diff --git a/include/linux/compiler.h b/include/linux/compiler.h
  
  #if __GNUC_MINOR__ > 0
 diff --git a/include/linux/compiler.h b/include/linux/compiler.h
-index 320d6c9..8573a1c 100644
+index 320d6c9..1221a6b 100644
 --- a/include/linux/compiler.h
 +++ b/include/linux/compiler.h
 @@ -5,31 +5,62 @@
 --- a/include/linux/compiler.h
 +++ b/include/linux/compiler.h
 @@ -5,31 +5,62 @@
@@ -60293,7 +60690,7 @@ index 320d6c9..8573a1c 100644
  #endif
  
  #ifdef __KERNEL__
  #endif
  
  #ifdef __KERNEL__
-@@ -264,6 +297,14 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
+@@ -264,6 +297,17 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
  # define __attribute_const__  /* unimplemented */
  #endif
  
  # define __attribute_const__  /* unimplemented */
  #endif
  
@@ -60305,10 +60702,13 @@ index 320d6c9..8573a1c 100644
 +# define __do_const
 +#endif
 +
 +# define __do_const
 +#endif
 +
++#ifndef __size_overflow
++# define __size_overflow(...)
++#endif
  /*
   * Tell gcc if a function is cold. The compiler will assume any path
   * directly leading to the call is unlikely.
  /*
   * Tell gcc if a function is cold. The compiler will assume any path
   * directly leading to the call is unlikely.
-@@ -273,6 +314,22 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
+@@ -273,6 +317,22 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
  #define __cold
  #endif
  
  #define __cold
  #endif
  
@@ -60331,7 +60731,7 @@ index 320d6c9..8573a1c 100644
  /* Simple shorthand for a section definition */
  #ifndef __section
  # define __section(S) __attribute__ ((__section__(#S)))
  /* Simple shorthand for a section definition */
  #ifndef __section
  # define __section(S) __attribute__ ((__section__(#S)))
-@@ -306,6 +363,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
+@@ -306,6 +366,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
   * use is to mediate communication between process-level code and irq/NMI
   * handlers, all running on the same CPU.
   */
   * use is to mediate communication between process-level code and irq/NMI
   * handlers, all running on the same CPU.
   */
@@ -60353,11 +60753,38 @@ index e9eaec5..bfeb9bb 100644
  }
  
  static inline void set_mems_allowed(nodemask_t nodemask)
  }
  
  static inline void set_mems_allowed(nodemask_t nodemask)
+diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
+index b936763..48685ee 100644
+--- a/include/linux/crash_dump.h
++++ b/include/linux/crash_dump.h
+@@ -14,7 +14,7 @@ extern unsigned long long elfcorehdr_addr;
+ extern unsigned long long elfcorehdr_size;
+ extern ssize_t copy_oldmem_page(unsigned long, char *, size_t,
+-                                              unsigned long, int);
++                                              unsigned long, int) __size_overflow(3);
+ /* Architecture code defines this if there are other possible ELF
+  * machine types, e.g. on bi-arch capable hardware. */
+diff --git a/include/linux/cred.h b/include/linux/cred.h
+index 4030896..8d6f342 100644
+--- a/include/linux/cred.h
++++ b/include/linux/cred.h
+@@ -207,6 +207,9 @@ static inline void validate_creds_for_do_exit(struct task_struct *tsk)
+ static inline void validate_process_creds(void)
+ {
+ }
++static inline void validate_task_creds(struct task_struct *task)
++{
++}
+ #endif
+ /**
 diff --git a/include/linux/crypto.h b/include/linux/crypto.h
 diff --git a/include/linux/crypto.h b/include/linux/crypto.h
-index e5e468e..f079672 100644
+index 8a94217..15d49e3 100644
 --- a/include/linux/crypto.h
 +++ b/include/linux/crypto.h
 --- a/include/linux/crypto.h
 +++ b/include/linux/crypto.h
-@@ -361,7 +361,7 @@ struct cipher_tfm {
+@@ -365,7 +365,7 @@ struct cipher_tfm {
                          const u8 *key, unsigned int keylen);
        void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
        void (*cit_decrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
                          const u8 *key, unsigned int keylen);
        void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
        void (*cit_decrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
@@ -60366,7 +60793,7 @@ index e5e468e..f079672 100644
  
  struct hash_tfm {
        int (*init)(struct hash_desc *desc);
  
  struct hash_tfm {
        int (*init)(struct hash_desc *desc);
-@@ -382,13 +382,13 @@ struct compress_tfm {
+@@ -386,13 +386,13 @@ struct compress_tfm {
        int (*cot_decompress)(struct crypto_tfm *tfm,
                              const u8 *src, unsigned int slen,
                              u8 *dst, unsigned int *dlen);
        int (*cot_decompress)(struct crypto_tfm *tfm,
                              const u8 *src, unsigned int slen,
                              u8 *dst, unsigned int *dlen);
@@ -60396,12 +60823,12 @@ index 7925bf0..d5143d2 100644
  
  #define large_malloc(a) vmalloc(a)
 diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
  
  #define large_malloc(a) vmalloc(a)
 diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
-index 347fdc3..cd01657 100644
+index e13117c..e9fc938 100644
 --- a/include/linux/dma-mapping.h
 +++ b/include/linux/dma-mapping.h
 --- a/include/linux/dma-mapping.h
 +++ b/include/linux/dma-mapping.h
-@@ -42,7 +42,7 @@ struct dma_map_ops {
-       int (*dma_supported)(struct device *dev, u64 mask);
-       int (*set_dma_mask)(struct device *dev, u64 mask);
+@@ -46,7 +46,7 @@ struct dma_map_ops {
+       u64 (*get_required_mask)(struct device *dev);
+ #endif
        int is_phys;
 -};
 +} __do_const;
        int is_phys;
 -};
 +} __do_const;
@@ -60422,7 +60849,7 @@ index 2362a0b..cfaf8fcc 100644
  struct efivars {
        /*
 diff --git a/include/linux/elf.h b/include/linux/elf.h
  struct efivars {
        /*
 diff --git a/include/linux/elf.h b/include/linux/elf.h
-index 110821c..cb14c08 100644
+index 31f0508..5421c01 100644
 --- a/include/linux/elf.h
 +++ b/include/linux/elf.h
 @@ -49,6 +49,17 @@ typedef __s64       Elf64_Sxword;
 --- a/include/linux/elf.h
 +++ b/include/linux/elf.h
 @@ -49,6 +49,17 @@ typedef __s64       Elf64_Sxword;
@@ -60481,7 +60908,7 @@ index 110821c..cb14c08 100644
  #define       ELFMAG0         0x7f            /* EI_MAG */
  #define       ELFMAG1         'E'
  #define       ELFMAG2         'L'
  #define       ELFMAG0         0x7f            /* EI_MAG */
  #define       ELFMAG1         'E'
  #define       ELFMAG2         'L'
-@@ -422,6 +450,7 @@ extern Elf32_Dyn _DYNAMIC [];
+@@ -423,6 +451,7 @@ extern Elf32_Dyn _DYNAMIC [];
  #define elf_note      elf32_note
  #define elf_addr_t    Elf32_Off
  #define Elf_Half      Elf32_Half
  #define elf_note      elf32_note
  #define elf_addr_t    Elf32_Off
  #define Elf_Half      Elf32_Half
@@ -60489,7 +60916,7 @@ index 110821c..cb14c08 100644
  
  #else
  
  
  #else
  
-@@ -432,6 +461,7 @@ extern Elf64_Dyn _DYNAMIC [];
+@@ -433,6 +462,7 @@ extern Elf64_Dyn _DYNAMIC [];
  #define elf_note      elf64_note
  #define elf_addr_t    Elf64_Off
  #define Elf_Half      Elf64_Half
  #define elf_note      elf64_note
  #define elf_addr_t    Elf64_Off
  #define Elf_Half      Elf64_Half
@@ -60498,7 +60925,7 @@ index 110821c..cb14c08 100644
  #endif
  
 diff --git a/include/linux/filter.h b/include/linux/filter.h
  #endif
  
 diff --git a/include/linux/filter.h b/include/linux/filter.h
-index 741956f..f02f482 100644
+index 8eeb205..d59bfa2 100644
 --- a/include/linux/filter.h
 +++ b/include/linux/filter.h
 @@ -134,6 +134,7 @@ struct sock_fprog {        /* Required for SO_ATTACH_FILTER. */
 --- a/include/linux/filter.h
 +++ b/include/linux/filter.h
 @@ -134,6 +134,7 @@ struct sock_fprog {        /* Required for SO_ATTACH_FILTER. */
@@ -60533,10 +60960,10 @@ index 84ccf8e..2e9b14c 100644
  };
  
 diff --git a/include/linux/fs.h b/include/linux/fs.h
  };
  
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 277f497..9be66a4 100644
+index 10b2288..09180e4 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -1588,7 +1588,8 @@ struct file_operations {
+@@ -1609,7 +1609,8 @@ struct file_operations {
        int (*setlease)(struct file *, long, struct file_lock **);
        long (*fallocate)(struct file *file, int mode, loff_t offset,
                          loff_t len);
        int (*setlease)(struct file *, long, struct file_lock **);
        long (*fallocate)(struct file *file, int mode, loff_t offset,
                          loff_t len);
@@ -60560,7 +60987,7 @@ index 003dc0f..3c4ea97 100644
        seqcount_t seq;
        int umask;
 diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h
        seqcount_t seq;
        int umask;
 diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h
-index af095b5..cf1220c 100644
+index ce31408..b1ad003 100644
 --- a/include/linux/fscache-cache.h
 +++ b/include/linux/fscache-cache.h
 @@ -102,7 +102,7 @@ struct fscache_operation {
 --- a/include/linux/fscache-cache.h
 +++ b/include/linux/fscache-cache.h
 @@ -102,7 +102,7 @@ struct fscache_operation {
@@ -60594,8 +61021,20 @@ index 2a53f10..0187fdf 100644
  }
  
  /*
  }
  
  /*
+diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h
+index 91d0e0a3..035666b 100644
+--- a/include/linux/fsnotify_backend.h
++++ b/include/linux/fsnotify_backend.h
+@@ -105,6 +105,7 @@ struct fsnotify_ops {
+       void (*freeing_mark)(struct fsnotify_mark *mark, struct fsnotify_group *group);
+       void (*free_event_priv)(struct fsnotify_event_private_data *priv);
+ };
++typedef struct fsnotify_ops __no_const fsnotify_ops_no_const;
+ /*
+  * A group is a "thing" that wants to receive notification about filesystem
 diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
 diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
-index 96efa67..1261547 100644
+index c3da42d..c70e0df 100644
 --- a/include/linux/ftrace_event.h
 +++ b/include/linux/ftrace_event.h
 @@ -97,7 +97,7 @@ struct trace_event_functions {
 --- a/include/linux/ftrace_event.h
 +++ b/include/linux/ftrace_event.h
 @@ -97,7 +97,7 @@ struct trace_event_functions {
@@ -60607,7 +61046,7 @@ index 96efa67..1261547 100644
  
  struct trace_event {
        struct hlist_node               node;
  
  struct trace_event {
        struct hlist_node               node;
-@@ -252,7 +252,7 @@ extern int trace_define_field(struct ftrace_event_call *call, const char *type,
+@@ -254,7 +254,7 @@ extern int trace_define_field(struct ftrace_event_call *call, const char *type,
  extern int trace_add_event_call(struct ftrace_event_call *call);
  extern void trace_remove_event_call(struct ftrace_event_call *call);
  
  extern int trace_add_event_call(struct ftrace_event_call *call);
  extern void trace_remove_event_call(struct ftrace_event_call *call);
  
@@ -60617,10 +61056,10 @@ index 96efa67..1261547 100644
  int trace_set_clr_event(const char *system, const char *event, int set);
  
 diff --git a/include/linux/genhd.h b/include/linux/genhd.h
  int trace_set_clr_event(const char *system, const char *event, int set);
  
 diff --git a/include/linux/genhd.h b/include/linux/genhd.h
-index 02fa469..a15f279 100644
+index c6f7f6a..aa0f7d3 100644
 --- a/include/linux/genhd.h
 +++ b/include/linux/genhd.h
 --- a/include/linux/genhd.h
 +++ b/include/linux/genhd.h
-@@ -184,7 +184,7 @@ struct gendisk {
+@@ -185,7 +185,7 @@ struct gendisk {
        struct kobject *slave_dir;
  
        struct timer_rand_state *random;
        struct kobject *slave_dir;
  
        struct timer_rand_state *random;
@@ -60631,10 +61070,10 @@ index 02fa469..a15f279 100644
        struct blk_integrity *integrity;
 diff --git a/include/linux/gracl.h b/include/linux/gracl.h
 new file mode 100644
        struct blk_integrity *integrity;
 diff --git a/include/linux/gracl.h b/include/linux/gracl.h
 new file mode 100644
-index 0000000..0dc3943
+index 0000000..8a130b6
 --- /dev/null
 +++ b/include/linux/gracl.h
 --- /dev/null
 +++ b/include/linux/gracl.h
-@@ -0,0 +1,317 @@
+@@ -0,0 +1,319 @@
 +#ifndef GR_ACL_H
 +#define GR_ACL_H
 +
 +#ifndef GR_ACL_H
 +#define GR_ACL_H
 +
@@ -60646,8 +61085,8 @@ index 0000000..0dc3943
 +
 +/* Major status information */
 +
 +
 +/* Major status information */
 +
-+#define GR_VERSION  "grsecurity 2.2.2"
-+#define GRSECURITY_VERSION 0x2202
++#define GR_VERSION  "grsecurity 2.9"
++#define GRSECURITY_VERSION 0x2900
 +
 +enum {
 +      GR_SHUTDOWN = 0,
 +
 +enum {
 +      GR_SHUTDOWN = 0,
@@ -60810,6 +61249,8 @@ index 0000000..0dc3943
 +      uid_t *domain_children;
 +      __u16 domain_child_num;
 +
 +      uid_t *domain_children;
 +      __u16 domain_child_num;
 +
++      umode_t umask;
++
 +      struct acl_subject_label **subj_hash;
 +      __u32 subj_hash_size;
 +};
 +      struct acl_subject_label **subj_hash;
 +      __u32 subj_hash_size;
 +};
@@ -61115,10 +61556,10 @@ index 0000000..b30e9bc
 +#endif
 diff --git a/include/linux/grinternal.h b/include/linux/grinternal.h
 new file mode 100644
 +#endif
 diff --git a/include/linux/grinternal.h b/include/linux/grinternal.h
 new file mode 100644
-index 0000000..60cda84
+index 0000000..da390f1
 --- /dev/null
 +++ b/include/linux/grinternal.h
 --- /dev/null
 +++ b/include/linux/grinternal.h
-@@ -0,0 +1,220 @@
+@@ -0,0 +1,221 @@
 +#ifndef __GRINTERNAL_H
 +#define __GRINTERNAL_H
 +
 +#ifndef __GRINTERNAL_H
 +#define __GRINTERNAL_H
 +
@@ -61155,6 +61596,7 @@ index 0000000..60cda84
 +char *gr_to_filename3(const struct dentry *dentry,
 +                          const struct vfsmount *mnt);
 +
 +char *gr_to_filename3(const struct dentry *dentry,
 +                          const struct vfsmount *mnt);
 +
++extern int grsec_enable_ptrace_readexec;
 +extern int grsec_enable_harden_ptrace;
 +extern int grsec_enable_link;
 +extern int grsec_enable_fifo;
 +extern int grsec_enable_harden_ptrace;
 +extern int grsec_enable_link;
 +extern int grsec_enable_fifo;
@@ -61341,10 +61783,10 @@ index 0000000..60cda84
 +#endif
 diff --git a/include/linux/grmsg.h b/include/linux/grmsg.h
 new file mode 100644
 +#endif
 diff --git a/include/linux/grmsg.h b/include/linux/grmsg.h
 new file mode 100644
-index 0000000..9d5fd4a
+index 0000000..ae576a1
 --- /dev/null
 +++ b/include/linux/grmsg.h
 --- /dev/null
 +++ b/include/linux/grmsg.h
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,109 @@
 +#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u"
 +#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u"
 +#define GR_PTRACE_ACL_MSG "denied ptrace of %.950s(%.16s:%d) by "
 +#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u"
 +#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%pI4 TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u"
 +#define GR_PTRACE_ACL_MSG "denied ptrace of %.950s(%.16s:%d) by "
@@ -61379,7 +61821,7 @@ index 0000000..9d5fd4a
 +#define GR_UNSAFESHARE_EXEC_ACL_MSG "denied exec with cloned fs of %.950s by "
 +#define GR_PTRACE_EXEC_ACL_MSG "denied ptrace of %.950s by "
 +#define GR_EXEC_ACL_MSG "%s execution of %.950s by "
 +#define GR_UNSAFESHARE_EXEC_ACL_MSG "denied exec with cloned fs of %.950s by "
 +#define GR_PTRACE_EXEC_ACL_MSG "denied ptrace of %.950s by "
 +#define GR_EXEC_ACL_MSG "%s execution of %.950s by "
-+#define GR_EXEC_TPE_MSG "denied untrusted exec of %.950s by "
++#define GR_EXEC_TPE_MSG "denied untrusted exec (due to %.70s) of %.950s by "
 +#define GR_SEGVSTART_ACL_MSG "possible exploit bruteforcing on " DEFAULTSECMSG " banning uid %u from login for %lu seconds"
 +#define GR_SEGVNOSUID_ACL_MSG "possible exploit bruteforcing on " DEFAULTSECMSG " banning execution for %lu seconds"
 +#define GR_MOUNT_CHROOT_MSG "denied mount of %.256s as %.930s from chroot by "
 +#define GR_SEGVSTART_ACL_MSG "possible exploit bruteforcing on " DEFAULTSECMSG " banning uid %u from login for %lu seconds"
 +#define GR_SEGVNOSUID_ACL_MSG "possible exploit bruteforcing on " DEFAULTSECMSG " banning execution for %lu seconds"
 +#define GR_MOUNT_CHROOT_MSG "denied mount of %.256s as %.930s from chroot by "
@@ -61388,7 +61830,6 @@ index 0000000..9d5fd4a
 +#define GR_ATIME_ACL_MSG "%s access time change of %.950s by "
 +#define GR_ACCESS_ACL_MSG "%s access of %.950s for%s%s%s by "
 +#define GR_CHROOT_CHROOT_MSG "denied double chroot to %.950s by "
 +#define GR_ATIME_ACL_MSG "%s access time change of %.950s by "
 +#define GR_ACCESS_ACL_MSG "%s access of %.950s for%s%s%s by "
 +#define GR_CHROOT_CHROOT_MSG "denied double chroot to %.950s by "
-+#define GR_FCHMOD_ACL_MSG "%s fchmod of %.950s by "
 +#define GR_CHMOD_CHROOT_MSG "denied chmod +s of %.950s by "
 +#define GR_CHMOD_ACL_MSG "%s chmod of %.950s by "
 +#define GR_CHROOT_FCHDIR_MSG "denied fchdir outside of chroot to %.950s by "
 +#define GR_CHMOD_CHROOT_MSG "denied chmod +s of %.950s by "
 +#define GR_CHMOD_ACL_MSG "%s chmod of %.950s by "
 +#define GR_CHROOT_FCHDIR_MSG "denied fchdir outside of chroot to %.950s by "
@@ -61397,7 +61838,7 @@ index 0000000..9d5fd4a
 +#define GR_WRITLIB_ACL_MSG "denied load of writable library %.950s by "
 +#define GR_INITF_ACL_MSG "init_variables() failed %s by "
 +#define GR_DISABLED_ACL_MSG "Error loading %s, trying to run kernel with acls disabled. To disable acls at startup use <kernel image name> gracl=off from your boot loader"
 +#define GR_WRITLIB_ACL_MSG "denied load of writable library %.950s by "
 +#define GR_INITF_ACL_MSG "init_variables() failed %s by "
 +#define GR_DISABLED_ACL_MSG "Error loading %s, trying to run kernel with acls disabled. To disable acls at startup use <kernel image name> gracl=off from your boot loader"
-+#define GR_DEV_ACL_MSG "/dev/grsec: %d bytes sent %d required, being fed garbaged by "
++#define GR_DEV_ACL_MSG "/dev/grsec: %d bytes sent %d required, being fed garbage by "
 +#define GR_SHUTS_ACL_MSG "shutdown auth success for "
 +#define GR_SHUTF_ACL_MSG "shutdown auth failure for "
 +#define GR_SHUTI_ACL_MSG "ignoring shutdown for disabled RBAC system for "
 +#define GR_SHUTS_ACL_MSG "shutdown auth success for "
 +#define GR_SHUTF_ACL_MSG "shutdown auth failure for "
 +#define GR_SHUTI_ACL_MSG "ignoring shutdown for disabled RBAC system for "
@@ -61452,13 +61893,15 @@ index 0000000..9d5fd4a
 +#define GR_TEXTREL_AUDIT_MSG "text relocation in %s, VMA:0x%08lx 0x%08lx by "
 +#define GR_VM86_MSG "denied use of vm86 by "
 +#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by "
 +#define GR_TEXTREL_AUDIT_MSG "text relocation in %s, VMA:0x%08lx 0x%08lx by "
 +#define GR_VM86_MSG "denied use of vm86 by "
 +#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by "
++#define GR_PTRACE_READEXEC_MSG "denied ptrace of unreadable binary %.950s by "
 +#define GR_INIT_TRANSFER_MSG "persistent special role transferred privilege to init by "
 +#define GR_INIT_TRANSFER_MSG "persistent special role transferred privilege to init by "
++#define GR_BADPROCPID_MSG "denied read of sensitive /proc/pid/%s entry via fd passed across exec by "
 diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h
 new file mode 100644
 diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h
 new file mode 100644
-index 0000000..bd25f72
+index 0000000..2ccf677
 --- /dev/null
 +++ b/include/linux/grsecurity.h
 --- /dev/null
 +++ b/include/linux/grsecurity.h
-@@ -0,0 +1,228 @@
+@@ -0,0 +1,229 @@
 +#ifndef GR_SECURITY_H
 +#define GR_SECURITY_H
 +#include <linux/fs.h>
 +#ifndef GR_SECURITY_H
 +#define GR_SECURITY_H
 +#include <linux/fs.h>
@@ -61473,12 +61916,6 @@ index 0000000..bd25f72
 +#if defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_PAGEEXEC) && !defined(CONFIG_PAX_SEGMEXEC) && !defined(CONFIG_PAX_KERNEXEC)
 +#error "CONFIG_PAX_NOEXEC enabled, but PAGEEXEC, SEGMEXEC, and KERNEXEC are disabled."
 +#endif
 +#if defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_PAGEEXEC) && !defined(CONFIG_PAX_SEGMEXEC) && !defined(CONFIG_PAX_KERNEXEC)
 +#error "CONFIG_PAX_NOEXEC enabled, but PAGEEXEC, SEGMEXEC, and KERNEXEC are disabled."
 +#endif
-+#if defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_EI_PAX) && !defined(CONFIG_PAX_PT_PAX_FLAGS)
-+#error "CONFIG_PAX_NOEXEC enabled, but neither CONFIG_PAX_EI_PAX nor CONFIG_PAX_PT_PAX_FLAGS are enabled."
-+#endif
-+#if defined(CONFIG_PAX_ASLR) && (defined(CONFIG_PAX_RANDMMAP) || defined(CONFIG_PAX_RANDUSTACK)) && !defined(CONFIG_PAX_EI_PAX) && !defined(CONFIG_PAX_PT_PAX_FLAGS)
-+#error "CONFIG_PAX_ASLR enabled, but neither CONFIG_PAX_EI_PAX nor CONFIG_PAX_PT_PAX_FLAGS are enabled."
-+#endif
 +#if defined(CONFIG_PAX_ASLR) && !defined(CONFIG_PAX_RANDKSTACK) && !defined(CONFIG_PAX_RANDUSTACK) && !defined(CONFIG_PAX_RANDMMAP)
 +#error "CONFIG_PAX_ASLR enabled, but RANDKSTACK, RANDUSTACK, and RANDMMAP are disabled."
 +#endif
 +#if defined(CONFIG_PAX_ASLR) && !defined(CONFIG_PAX_RANDKSTACK) && !defined(CONFIG_PAX_RANDUSTACK) && !defined(CONFIG_PAX_RANDMMAP)
 +#error "CONFIG_PAX_ASLR enabled, but RANDKSTACK, RANDUSTACK, and RANDMMAP are disabled."
 +#endif
@@ -61539,6 +61976,8 @@ index 0000000..bd25f72
 +void gr_handle_ioperm(void);
 +void gr_handle_iopl(void);
 +
 +void gr_handle_ioperm(void);
 +void gr_handle_iopl(void);
 +
++umode_t gr_acl_umask(void);
++
 +int gr_tpe_allow(const struct file *file);
 +
 +void gr_set_chroot_entries(struct task_struct *task, struct path *path);
 +int gr_tpe_allow(const struct file *file);
 +
 +void gr_set_chroot_entries(struct task_struct *task, struct path *path);
@@ -61593,10 +62032,8 @@ index 0000000..bd25f72
 +                               const struct vfsmount *mnt);
 +__u32 gr_acl_handle_access(const struct dentry *dentry,
 +                                const struct vfsmount *mnt, const int fmode);
 +                               const struct vfsmount *mnt);
 +__u32 gr_acl_handle_access(const struct dentry *dentry,
 +                                const struct vfsmount *mnt, const int fmode);
-+__u32 gr_acl_handle_fchmod(const struct dentry *dentry,
-+                                const struct vfsmount *mnt, mode_t mode);
 +__u32 gr_acl_handle_chmod(const struct dentry *dentry,
 +__u32 gr_acl_handle_chmod(const struct dentry *dentry,
-+                               const struct vfsmount *mnt, mode_t mode);
++                               const struct vfsmount *mnt, umode_t *mode);
 +__u32 gr_acl_handle_chown(const struct dentry *dentry,
 +                               const struct vfsmount *mnt);
 +__u32 gr_acl_handle_setxattr(const struct dentry *dentry,
 +__u32 gr_acl_handle_chown(const struct dentry *dentry,
 +                               const struct vfsmount *mnt);
 +__u32 gr_acl_handle_setxattr(const struct dentry *dentry,
@@ -61612,7 +62049,7 @@ index 0000000..bd25f72
 +                            const gid_t gid);
 +int gr_set_proc_label(const struct dentry *dentry,
 +                      const struct vfsmount *mnt,
 +                            const gid_t gid);
 +int gr_set_proc_label(const struct dentry *dentry,
 +                      const struct vfsmount *mnt,
-+                      const int unsafe_share);
++                      const int unsafe_flags);
 +__u32 gr_acl_handle_hidden_file(const struct dentry *dentry,
 +                              const struct vfsmount *mnt);
 +__u32 gr_acl_handle_open(const struct dentry *dentry,
 +__u32 gr_acl_handle_hidden_file(const struct dentry *dentry,
 +                              const struct vfsmount *mnt);
 +__u32 gr_acl_handle_open(const struct dentry *dentry,
@@ -61674,16 +62111,23 @@ index 0000000..bd25f72
 +void gr_audit_ptrace(struct task_struct *task);
 +dev_t gr_get_dev_from_dentry(struct dentry *dentry);
 +
 +void gr_audit_ptrace(struct task_struct *task);
 +dev_t gr_get_dev_from_dentry(struct dentry *dentry);
 +
++int gr_ptrace_readexec(struct file *file, int unsafe_flags);
++
 +#ifdef CONFIG_GRKERNSEC
 +void task_grsec_rbac(struct seq_file *m, struct task_struct *p);
 +void gr_handle_vm86(void);
 +void gr_handle_mem_readwrite(u64 from, u64 to);
 +
 +#ifdef CONFIG_GRKERNSEC
 +void task_grsec_rbac(struct seq_file *m, struct task_struct *p);
 +void gr_handle_vm86(void);
 +void gr_handle_mem_readwrite(u64 from, u64 to);
 +
++void gr_log_badprocpid(const char *entry);
++
 +extern int grsec_enable_dmesg;
 +extern int grsec_disable_privio;
 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
 +extern int grsec_enable_chroot_findtask;
 +#endif
 +extern int grsec_enable_dmesg;
 +extern int grsec_disable_privio;
 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
 +extern int grsec_enable_chroot_findtask;
 +#endif
++#ifdef CONFIG_GRKERNSEC_SETXID
++extern int grsec_enable_setxid;
++#endif
 +#endif
 +
 +#endif
 +#endif
 +
 +#endif
@@ -61713,10 +62157,10 @@ index 0000000..e7ffaaf
 +
 +#endif
 diff --git a/include/linux/hid.h b/include/linux/hid.h
 +
 +#endif
 diff --git a/include/linux/hid.h b/include/linux/hid.h
-index 9cf8e7a..5ec94d0 100644
+index c235e4e..f0cf7a0 100644
 --- a/include/linux/hid.h
 +++ b/include/linux/hid.h
 --- a/include/linux/hid.h
 +++ b/include/linux/hid.h
-@@ -676,7 +676,7 @@ struct hid_ll_driver {
+@@ -679,7 +679,7 @@ struct hid_ll_driver {
                        unsigned int code, int value);
  
        int (*parse)(struct hid_device *hdev);
                        unsigned int code, int value);
  
        int (*parse)(struct hid_device *hdev);
@@ -61749,10 +62193,10 @@ index 3a93f73..b19d0b3 100644
        unsigned start1, unsigned end1,
        unsigned start2, unsigned end2)
 diff --git a/include/linux/i2c.h b/include/linux/i2c.h
        unsigned start1, unsigned end1,
        unsigned start2, unsigned end2)
 diff --git a/include/linux/i2c.h b/include/linux/i2c.h
-index a6c652e..1f5878f 100644
+index 07d103a..04ec65b 100644
 --- a/include/linux/i2c.h
 +++ b/include/linux/i2c.h
 --- a/include/linux/i2c.h
 +++ b/include/linux/i2c.h
-@@ -346,6 +346,7 @@ struct i2c_algorithm {
+@@ -364,6 +364,7 @@ struct i2c_algorithm {
        /* To determine what the adapter supports */
        u32 (*functionality) (struct i2c_adapter *);
  };
        /* To determine what the adapter supports */
        u32 (*functionality) (struct i2c_adapter *);
  };
@@ -61794,12 +62238,12 @@ index 9146f39..885354d 100644
        void cleanup_module(void) __attribute__((alias(#exitfn)));
  
 diff --git a/include/linux/init_task.h b/include/linux/init_task.h
        void cleanup_module(void) __attribute__((alias(#exitfn)));
  
 diff --git a/include/linux/init_task.h b/include/linux/init_task.h
-index d14e058..4162929 100644
+index 32574ee..00d4ef1 100644
 --- a/include/linux/init_task.h
 +++ b/include/linux/init_task.h
 --- a/include/linux/init_task.h
 +++ b/include/linux/init_task.h
-@@ -126,6 +126,12 @@ extern struct cred init_cred;
- # define INIT_PERF_EVENTS(tsk)
- #endif
+@@ -128,6 +128,12 @@ extern struct cred init_cred;
+ #define INIT_TASK_COMM "swapper"
  
 +#ifdef CONFIG_X86
 +#define INIT_TASK_THREAD_INFO .tinfo = INIT_THREAD_INFO,
  
 +#ifdef CONFIG_X86
 +#define INIT_TASK_THREAD_INFO .tinfo = INIT_THREAD_INFO,
@@ -61810,16 +62254,16 @@ index d14e058..4162929 100644
  /*
   *  INIT_TASK is used to set up the first task table, touch at
   * your own risk!. Base=0, limit=0x1fffff (=2MB)
  /*
   *  INIT_TASK is used to set up the first task table, touch at
   * your own risk!. Base=0, limit=0x1fffff (=2MB)
-@@ -164,6 +170,7 @@ extern struct cred init_cred;
+@@ -166,6 +172,7 @@ extern struct cred init_cred;
        RCU_INIT_POINTER(.cred, &init_cred),                            \
        RCU_INIT_POINTER(.cred, &init_cred),                            \
-       .comm           = "swapper",                                    \
+       .comm           = INIT_TASK_COMM,                               \
        .thread         = INIT_THREAD,                                  \
 +      INIT_TASK_THREAD_INFO                                           \
        .fs             = &init_fs,                                     \
        .files          = &init_files,                                  \
        .signal         = &init_signals,                                \
 diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
        .thread         = INIT_THREAD,                                  \
 +      INIT_TASK_THREAD_INFO                                           \
        .fs             = &init_fs,                                     \
        .files          = &init_files,                                  \
        .signal         = &init_signals,                                \
 diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
-index 9310c69..6ebb244 100644
+index e6ca56d..8583707 100644
 --- a/include/linux/intel-iommu.h
 +++ b/include/linux/intel-iommu.h
 @@ -296,7 +296,7 @@ struct iommu_flush {
 --- a/include/linux/intel-iommu.h
 +++ b/include/linux/intel-iommu.h
 @@ -296,7 +296,7 @@ struct iommu_flush {
@@ -61832,10 +62276,10 @@ index 9310c69..6ebb244 100644
  enum {
        SR_DMAR_FECTL_REG,
 diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
  enum {
        SR_DMAR_FECTL_REG,
 diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
-index f51a81b..adfcb44 100644
+index a64b00e..464d8bc 100644
 --- a/include/linux/interrupt.h
 +++ b/include/linux/interrupt.h
 --- a/include/linux/interrupt.h
 +++ b/include/linux/interrupt.h
-@@ -425,7 +425,7 @@ enum
+@@ -441,7 +441,7 @@ enum
  /* map softirq index to softirq name. update 'softirq_to_name' in
   * kernel/softirq.c when adding a new softirq.
   */
  /* map softirq index to softirq name. update 'softirq_to_name' in
   * kernel/softirq.c when adding a new softirq.
   */
@@ -61844,7 +62288,7 @@ index f51a81b..adfcb44 100644
  
  /* softirq mask and active fields moved to irq_cpustat_t in
   * asm/hardirq.h to get better cache usage.  KAO
  
  /* softirq mask and active fields moved to irq_cpustat_t in
   * asm/hardirq.h to get better cache usage.  KAO
-@@ -433,12 +433,12 @@ extern char *softirq_to_name[NR_SOFTIRQS];
+@@ -449,12 +449,12 @@ extern char *softirq_to_name[NR_SOFTIRQS];
  
  struct softirq_action
  {
  
  struct softirq_action
  {
@@ -61860,7 +62304,7 @@ index f51a81b..adfcb44 100644
  static inline void __raise_softirq_irqoff(unsigned int nr)
  {
 diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h
  static inline void __raise_softirq_irqoff(unsigned int nr)
  {
 diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h
-index 0df513b..fe901a2 100644
+index 3875719..4cd454c 100644
 --- a/include/linux/kallsyms.h
 +++ b/include/linux/kallsyms.h
 @@ -15,7 +15,8 @@
 --- a/include/linux/kallsyms.h
 +++ b/include/linux/kallsyms.h
 @@ -15,7 +15,8 @@
@@ -61878,7 +62322,7 @@ index 0df513b..fe901a2 100644
  #define __print_symbol(fmt, addr)
  #endif /*CONFIG_KALLSYMS*/
 +#else /* when included by kallsyms.c, vsnprintf.c, or
  #define __print_symbol(fmt, addr)
  #endif /*CONFIG_KALLSYMS*/
 +#else /* when included by kallsyms.c, vsnprintf.c, or
-+       arch/x86/kernel/dumpstack.c, with HIDESYM enabled */
++      arch/x86/kernel/dumpstack.c, with HIDESYM enabled */
 +extern void __print_symbol(const char *fmt, unsigned long address);
 +extern int sprint_backtrace(char *buffer, unsigned long address);
 +extern int sprint_symbol(char *buffer, unsigned long address);
 +extern void __print_symbol(const char *fmt, unsigned long address);
 +extern int sprint_backtrace(char *buffer, unsigned long address);
 +extern int sprint_symbol(char *buffer, unsigned long address);
@@ -61889,7 +62333,7 @@ index 0df513b..fe901a2 100644
 +#endif
  
  /* This macro allows us to keep printk typechecking */
 +#endif
  
  /* This macro allows us to keep printk typechecking */
- static void __check_printsym_format(const char *fmt, ...)
+ static __printf(1, 2)
 diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
 index fa39183..40160be 100644
 --- a/include/linux/kgdb.h
 diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
 index fa39183..40160be 100644
 --- a/include/linux/kgdb.h
@@ -61922,20 +62366,20 @@ index fa39183..40160be 100644
  extern struct kgdb_arch               arch_kgdb_ops;
  
 diff --git a/include/linux/kmod.h b/include/linux/kmod.h
  extern struct kgdb_arch               arch_kgdb_ops;
  
 diff --git a/include/linux/kmod.h b/include/linux/kmod.h
-index 0da38cf..d23f05f 100644
+index b16f653..eb908f4 100644
 --- a/include/linux/kmod.h
 +++ b/include/linux/kmod.h
 @@ -34,6 +34,8 @@ extern char modprobe_path[]; /* for sysctl */
   * usually useless though. */
 --- a/include/linux/kmod.h
 +++ b/include/linux/kmod.h
 @@ -34,6 +34,8 @@ extern char modprobe_path[]; /* for sysctl */
   * usually useless though. */
- extern int __request_module(bool wait, const char *name, ...) \
      __attribute__((format(printf, 2, 3)));
-+extern int ___request_module(bool wait, char *param_name, const char *name, ...) \
-+      __attribute__((format(printf, 3, 4)));
+ extern __printf(2, 3)
int __request_module(bool wait, const char *name, ...);
++extern __printf(3, 4)
++int ___request_module(bool wait, char *param_name, const char *name, ...);
  #define request_module(mod...) __request_module(true, mod)
  #define request_module_nowait(mod...) __request_module(false, mod)
  #define try_then_request_module(x, mod...) \
 diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
  #define request_module(mod...) __request_module(true, mod)
  #define request_module_nowait(mod...) __request_module(false, mod)
  #define try_then_request_module(x, mod...) \
 diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
-index eabb21a..3f030f4 100644
+index d526231..c9599fc 100644
 --- a/include/linux/kvm_host.h
 +++ b/include/linux/kvm_host.h
 @@ -308,7 +308,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu);
 --- a/include/linux/kvm_host.h
 +++ b/include/linux/kvm_host.h
 @@ -308,7 +308,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu);
@@ -61947,6 +62391,33 @@ index eabb21a..3f030f4 100644
                  struct module *module);
  void kvm_exit(void);
  
                  struct module *module);
  void kvm_exit(void);
  
+@@ -385,20 +385,20 @@ void kvm_get_pfn(pfn_t pfn);
+ int kvm_read_guest_page(struct kvm *kvm, gfn_t gfn, void *data, int offset,
+                       int len);
+ int kvm_read_guest_atomic(struct kvm *kvm, gpa_t gpa, void *data,
+-                        unsigned long len);
+-int kvm_read_guest(struct kvm *kvm, gpa_t gpa, void *data, unsigned long len);
++                        unsigned long len) __size_overflow(4);
++int kvm_read_guest(struct kvm *kvm, gpa_t gpa, void *data, unsigned long len) __size_overflow(2,4);
+ int kvm_read_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc,
+-                         void *data, unsigned long len);
++                         void *data, unsigned long len) __size_overflow(4);
+ int kvm_write_guest_page(struct kvm *kvm, gfn_t gfn, const void *data,
+                        int offset, int len);
+ int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data,
+-                  unsigned long len);
++                  unsigned long len) __size_overflow(2,4);
+ int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc,
+-                         void *data, unsigned long len);
++                         void *data, unsigned long len) __size_overflow(4);
+ int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc,
+                             gpa_t gpa);
+ int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len);
+-int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len);
++int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len) __size_overflow(2,3);
+ struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn);
+ int kvm_is_visible_gfn(struct kvm *kvm, gfn_t gfn);
+ unsigned long kvm_host_page_size(struct kvm *kvm, gfn_t gfn);
 @@ -454,7 +454,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
                                        struct kvm_guest_debug *dbg);
  int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
 @@ -454,7 +454,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
                                        struct kvm_guest_debug *dbg);
  int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
@@ -61956,8 +62427,17 @@ index eabb21a..3f030f4 100644
  void kvm_arch_exit(void);
  
  int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
  void kvm_arch_exit(void);
  
  int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
+@@ -690,7 +690,7 @@ int kvm_setup_default_irq_routing(struct kvm *kvm);
+ int kvm_set_irq_routing(struct kvm *kvm,
+                       const struct kvm_irq_routing_entry *entries,
+                       unsigned nr,
+-                      unsigned flags);
++                      unsigned flags) __size_overflow(3);
+ void kvm_free_irq_routing(struct kvm *kvm);
+ #else
 diff --git a/include/linux/libata.h b/include/linux/libata.h
 diff --git a/include/linux/libata.h b/include/linux/libata.h
-index efd6f98..5f5fd37 100644
+index cafc09a..d7e7829 100644
 --- a/include/linux/libata.h
 +++ b/include/linux/libata.h
 @@ -909,7 +909,7 @@ struct ata_port_operations {
 --- a/include/linux/libata.h
 +++ b/include/linux/libata.h
 @@ -909,7 +909,7 @@ struct ata_port_operations {
@@ -61996,10 +62476,10 @@ index 935699b..11042cc 100644
  /*
   * Kernel text modification mutex, used for code patching. Users of this lock
 diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h
  /*
   * Kernel text modification mutex, used for code patching. Users of this lock
 diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h
-index 896b5e4..1159ad0 100644
+index 9970337..9444122 100644
 --- a/include/linux/mfd/abx500.h
 +++ b/include/linux/mfd/abx500.h
 --- a/include/linux/mfd/abx500.h
 +++ b/include/linux/mfd/abx500.h
-@@ -234,6 +234,7 @@ struct abx500_ops {
+@@ -188,6 +188,7 @@ struct abx500_ops {
        int (*event_registers_startup_state_get) (struct device *, u8 *);
        int (*startup_irq_enabled) (struct device *, unsigned int);
  };
        int (*event_registers_startup_state_get) (struct device *, u8 *);
        int (*startup_irq_enabled) (struct device *, unsigned int);
  };
@@ -62008,10 +62488,10 @@ index 896b5e4..1159ad0 100644
  int abx500_register_ops(struct device *core_dev, struct abx500_ops *ops);
  void abx500_remove_ops(struct device *dev);
 diff --git a/include/linux/mm.h b/include/linux/mm.h
  int abx500_register_ops(struct device *core_dev, struct abx500_ops *ops);
  void abx500_remove_ops(struct device *dev);
 diff --git a/include/linux/mm.h b/include/linux/mm.h
-index fedc5f0..7cedb6d 100644
+index 4baadd1..2e0b45e 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -114,7 +114,14 @@ extern unsigned int kobjsize(const void *objp);
+@@ -115,7 +115,14 @@ extern unsigned int kobjsize(const void *objp);
  
  #define VM_CAN_NONLINEAR 0x08000000   /* Has ->fault & does nonlinear pages */
  #define VM_MIXEDMAP   0x10000000      /* Can contain "struct page" and pure PFN pages */
  
  #define VM_CAN_NONLINEAR 0x08000000   /* Has ->fault & does nonlinear pages */
  #define VM_MIXEDMAP   0x10000000      /* Can contain "struct page" and pure PFN pages */
@@ -62026,7 +62506,7 @@ index fedc5f0..7cedb6d 100644
  #define VM_PFN_AT_MMAP        0x40000000      /* PFNMAP vma that is fully mapped at mmap time */
  #define VM_MERGEABLE  0x80000000      /* KSM may merge identical pages */
  
  #define VM_PFN_AT_MMAP        0x40000000      /* PFNMAP vma that is fully mapped at mmap time */
  #define VM_MERGEABLE  0x80000000      /* KSM may merge identical pages */
  
-@@ -1011,34 +1018,6 @@ int set_page_dirty(struct page *page);
+@@ -1012,34 +1019,6 @@ int set_page_dirty(struct page *page);
  int set_page_dirty_lock(struct page *page);
  int clear_page_dirty_for_io(struct page *page);
  
  int set_page_dirty_lock(struct page *page);
  int clear_page_dirty_for_io(struct page *page);
  
@@ -62061,7 +62541,7 @@ index fedc5f0..7cedb6d 100644
  extern unsigned long move_page_tables(struct vm_area_struct *vma,
                unsigned long old_addr, struct vm_area_struct *new_vma,
                unsigned long new_addr, unsigned long len);
  extern unsigned long move_page_tables(struct vm_area_struct *vma,
                unsigned long old_addr, struct vm_area_struct *new_vma,
                unsigned long new_addr, unsigned long len);
-@@ -1133,6 +1112,15 @@ static inline void sync_mm_rss(struct task_struct *task, struct mm_struct *mm)
+@@ -1134,6 +1113,15 @@ static inline void sync_mm_rss(struct task_struct *task, struct mm_struct *mm)
  }
  #endif
  
  }
  #endif
  
@@ -62077,7 +62557,7 @@ index fedc5f0..7cedb6d 100644
  int vma_wants_writenotify(struct vm_area_struct *vma);
  
  extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,
  int vma_wants_writenotify(struct vm_area_struct *vma);
  
  extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,
-@@ -1417,6 +1405,7 @@ out:
+@@ -1419,6 +1407,7 @@ out:
  }
  
  extern int do_munmap(struct mm_struct *, unsigned long, size_t);
  }
  
  extern int do_munmap(struct mm_struct *, unsigned long, size_t);
@@ -62085,7 +62565,7 @@ index fedc5f0..7cedb6d 100644
  
  extern unsigned long do_brk(unsigned long, unsigned long);
  
  
  extern unsigned long do_brk(unsigned long, unsigned long);
  
-@@ -1474,6 +1463,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add
+@@ -1476,6 +1465,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add
  extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
                                             struct vm_area_struct **pprev);
  
  extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
                                             struct vm_area_struct **pprev);
  
@@ -62096,7 +62576,7 @@ index fedc5f0..7cedb6d 100644
  /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
     NULL if none.  Assume start_addr < end_addr. */
  static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
  /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
     NULL if none.  Assume start_addr < end_addr. */
  static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
-@@ -1490,15 +1483,6 @@ static inline unsigned long vma_pages(struct vm_area_struct *vma)
+@@ -1492,15 +1485,6 @@ static inline unsigned long vma_pages(struct vm_area_struct *vma)
        return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
  }
  
        return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
  }
  
@@ -62112,7 +62592,7 @@ index fedc5f0..7cedb6d 100644
  struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr);
  int remap_pfn_range(struct vm_area_struct *, unsigned long addr,
                        unsigned long pfn, unsigned long size, pgprot_t);
  struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr);
  int remap_pfn_range(struct vm_area_struct *, unsigned long addr,
                        unsigned long pfn, unsigned long size, pgprot_t);
-@@ -1612,7 +1596,7 @@ extern int unpoison_memory(unsigned long pfn);
+@@ -1614,7 +1598,7 @@ extern int unpoison_memory(unsigned long pfn);
  extern int sysctl_memory_failure_early_kill;
  extern int sysctl_memory_failure_recovery;
  extern void shake_page(struct page *p, int access);
  extern int sysctl_memory_failure_early_kill;
  extern int sysctl_memory_failure_recovery;
  extern void shake_page(struct page *p, int access);
@@ -62121,7 +62601,7 @@ index fedc5f0..7cedb6d 100644
  extern int soft_offline_page(struct page *page, int flags);
  
  extern void dump_page(struct page *page);
  extern int soft_offline_page(struct page *page, int flags);
  
  extern void dump_page(struct page *page);
-@@ -1626,5 +1610,11 @@ extern void copy_user_huge_page(struct page *dst, struct page *src,
+@@ -1628,5 +1612,11 @@ extern void copy_user_huge_page(struct page *dst, struct page *src,
                                unsigned int pages_per_huge_page);
  #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */
  
                                unsigned int pages_per_huge_page);
  #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */
  
@@ -62134,10 +62614,10 @@ index fedc5f0..7cedb6d 100644
  #endif /* __KERNEL__ */
  #endif /* _LINUX_MM_H */
 diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
  #endif /* __KERNEL__ */
  #endif /* _LINUX_MM_H */
 diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
-index 10a2f62..c8fa287 100644
+index 5b42f1b..759e4b4 100644
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
-@@ -230,6 +230,8 @@ struct vm_area_struct {
+@@ -253,6 +253,8 @@ struct vm_area_struct {
  #ifdef CONFIG_NUMA
        struct mempolicy *vm_policy;    /* NUMA policy for the VMA */
  #endif
  #ifdef CONFIG_NUMA
        struct mempolicy *vm_policy;    /* NUMA policy for the VMA */
  #endif
@@ -62146,12 +62626,12 @@ index 10a2f62..c8fa287 100644
  };
  
  struct core_thread {
  };
  
  struct core_thread {
-@@ -362,6 +364,24 @@ struct mm_struct {
+@@ -389,6 +391,24 @@ struct mm_struct {
  #ifdef CONFIG_CPUMASK_OFFSTACK
        struct cpumask cpumask_allocation;
  #endif
 +
  #ifdef CONFIG_CPUMASK_OFFSTACK
        struct cpumask cpumask_allocation;
  #endif
 +
-+#if defined(CONFIG_PAX_EI_PAX) || defined(CONFIG_PAX_PT_PAX_FLAGS) || defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
++#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
 +      unsigned long pax_flags;
 +#endif
 +
 +      unsigned long pax_flags;
 +#endif
 +
@@ -62192,10 +62672,10 @@ index 1d1b1e1..2a13c78 100644
  
  #define pmdp_clear_flush_notify(__vma, __address, __pmdp)             \
 diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
  
  #define pmdp_clear_flush_notify(__vma, __address, __pmdp)             \
 diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
-index be1ac8d..26868ce 100644
+index 188cb2f..d78409b 100644
 --- a/include/linux/mmzone.h
 +++ b/include/linux/mmzone.h
 --- a/include/linux/mmzone.h
 +++ b/include/linux/mmzone.h
-@@ -356,7 +356,7 @@ struct zone {
+@@ -369,7 +369,7 @@ struct zone {
        unsigned long           flags;             /* zone flags, see below */
  
        /* Zone statistics */
        unsigned long           flags;             /* zone flags, see below */
  
        /* Zone statistics */
@@ -62205,7 +62685,7 @@ index be1ac8d..26868ce 100644
        /*
         * The target ratio of ACTIVE_ANON to INACTIVE_ANON pages on
 diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
        /*
         * The target ratio of ACTIVE_ANON to INACTIVE_ANON pages on
 diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
-index ae28e93..1ac2233 100644
+index 468819c..17b9db3 100644
 --- a/include/linux/mod_devicetable.h
 +++ b/include/linux/mod_devicetable.h
 @@ -12,7 +12,7 @@
 --- a/include/linux/mod_devicetable.h
 +++ b/include/linux/mod_devicetable.h
 @@ -12,7 +12,7 @@
@@ -62227,18 +62707,18 @@ index ae28e93..1ac2233 100644
  struct hid_device_id {
        __u16 bus;
 diff --git a/include/linux/module.h b/include/linux/module.h
  struct hid_device_id {
        __u16 bus;
 diff --git a/include/linux/module.h b/include/linux/module.h
-index 1c30087..fc2a442 100644
+index 3cb7839..511cb87 100644
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
-@@ -16,6 +16,7 @@
- #include <linux/kobject.h>
+@@ -17,6 +17,7 @@
  #include <linux/moduleparam.h>
  #include <linux/tracepoint.h>
  #include <linux/moduleparam.h>
  #include <linux/tracepoint.h>
+ #include <linux/export.h>
 +#include <linux/fs.h>
  
  #include <linux/percpu.h>
  #include <asm/module.h>
 +#include <linux/fs.h>
  
  #include <linux/percpu.h>
  #include <asm/module.h>
-@@ -327,19 +328,16 @@ struct module
+@@ -261,19 +262,16 @@ struct module
        int (*init)(void);
  
        /* If this is non-NULL, vfree after init() returns */
        int (*init)(void);
  
        /* If this is non-NULL, vfree after init() returns */
@@ -62262,7 +62742,7 @@ index 1c30087..fc2a442 100644
  
        /* Arch-specific module values */
        struct mod_arch_specific arch;
  
        /* Arch-specific module values */
        struct mod_arch_specific arch;
-@@ -395,6 +393,10 @@ struct module
+@@ -329,6 +327,10 @@ struct module
  #ifdef CONFIG_EVENT_TRACING
        struct ftrace_event_call **trace_events;
        unsigned int num_trace_events;
  #ifdef CONFIG_EVENT_TRACING
        struct ftrace_event_call **trace_events;
        unsigned int num_trace_events;
@@ -62273,7 +62753,7 @@ index 1c30087..fc2a442 100644
  #endif
  #ifdef CONFIG_FTRACE_MCOUNT_RECORD
        unsigned int num_ftrace_callsites;
  #endif
  #ifdef CONFIG_FTRACE_MCOUNT_RECORD
        unsigned int num_ftrace_callsites;
-@@ -445,16 +447,46 @@ bool is_module_address(unsigned long addr);
+@@ -379,16 +381,46 @@ bool is_module_address(unsigned long addr);
  bool is_module_percpu_address(unsigned long addr);
  bool is_module_text_address(unsigned long addr);
  
  bool is_module_percpu_address(unsigned long addr);
  bool is_module_text_address(unsigned long addr);
  
@@ -62325,19 +62805,22 @@ index 1c30087..fc2a442 100644
  
  /* Search for module by name: must hold module_mutex. */
 diff --git a/include/linux/moduleloader.h b/include/linux/moduleloader.h
  
  /* Search for module by name: must hold module_mutex. */
 diff --git a/include/linux/moduleloader.h b/include/linux/moduleloader.h
-index b2be02e..6a9fdb1 100644
+index b2be02e..edb10c9 100644
 --- a/include/linux/moduleloader.h
 +++ b/include/linux/moduleloader.h
 --- a/include/linux/moduleloader.h
 +++ b/include/linux/moduleloader.h
-@@ -25,9 +25,21 @@ unsigned int arch_mod_section_prepend(struct module *mod, unsigned int section);
-    sections.  Returns NULL on failure. */
- void *module_alloc(unsigned long size);
+@@ -23,11 +23,23 @@ unsigned int arch_mod_section_prepend(struct module *mod, unsigned int section);
  
  
+ /* Allocator used for allocating struct module, core sections and init
+    sections.  Returns NULL on failure. */
+-void *module_alloc(unsigned long size);
++void *module_alloc(unsigned long size) __size_overflow(1);
++
 +#ifdef CONFIG_PAX_KERNEXEC
 +void *module_alloc_exec(unsigned long size);
 +#else
 +#define module_alloc_exec(x) module_alloc(x)
 +#endif
 +#ifdef CONFIG_PAX_KERNEXEC
 +void *module_alloc_exec(unsigned long size);
 +#else
 +#define module_alloc_exec(x) module_alloc(x)
 +#endif
-+
  /* Free memory returned from module_alloc. */
  void module_free(struct module *mod, void *module_region);
  
  /* Free memory returned from module_alloc. */
  void module_free(struct module *mod, void *module_region);
  
@@ -62351,10 +62834,10 @@ index b2be02e..6a9fdb1 100644
     or 0. */
  int apply_relocate(Elf_Shdr *sechdrs,
 diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
     or 0. */
  int apply_relocate(Elf_Shdr *sechdrs,
 diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
-index ddaae98..3c70938 100644
+index 7939f63..ec6df57 100644
 --- a/include/linux/moduleparam.h
 +++ b/include/linux/moduleparam.h
 --- a/include/linux/moduleparam.h
 +++ b/include/linux/moduleparam.h
-@@ -255,7 +255,7 @@ static inline void __kernel_param_unlock(void)
+@@ -260,7 +260,7 @@ static inline void __kernel_param_unlock(void)
   * @len is usually just sizeof(string).
   */
  #define module_param_string(name, string, len, perm)                  \
   * @len is usually just sizeof(string).
   */
  #define module_param_string(name, string, len, perm)                  \
@@ -62363,7 +62846,7 @@ index ddaae98..3c70938 100644
                = { len, string };                                      \
        __module_param_call(MODULE_PARAM_PREFIX, name,                  \
                            &param_ops_string,                          \
                = { len, string };                                      \
        __module_param_call(MODULE_PARAM_PREFIX, name,                  \
                            &param_ops_string,                          \
-@@ -370,7 +370,7 @@ extern int param_get_invbool(char *buffer, const struct kernel_param *kp);
+@@ -395,7 +395,7 @@ extern int param_get_invbool(char *buffer, const struct kernel_param *kp);
   * module_param_named() for why this might be necessary.
   */
  #define module_param_array_named(name, array, type, nump, perm)               \
   * module_param_named() for why this might be necessary.
   */
  #define module_param_array_named(name, array, type, nump, perm)               \
@@ -62372,6 +62855,18 @@ index ddaae98..3c70938 100644
        = { .max = ARRAY_SIZE(array), .num = nump,                      \
            .ops = &param_ops_##type,                                   \
            .elemsize = sizeof(array[0]), .elem = array };              \
        = { .max = ARRAY_SIZE(array), .num = nump,                      \
            .ops = &param_ops_##type,                                   \
            .elemsize = sizeof(array[0]), .elem = array };              \
+diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h
+index a9e6ba4..0f9e29b 100644
+--- a/include/linux/mtd/map.h
++++ b/include/linux/mtd/map.h
+@@ -25,6 +25,7 @@
+ #include <linux/types.h>
+ #include <linux/list.h>
+ #include <linux/string.h>
++#include <linux/kernel.h>
+ #include <linux/bug.h>
 diff --git a/include/linux/namei.h b/include/linux/namei.h
 index ffc0213..2c1f2cb 100644
 --- a/include/linux/namei.h
 diff --git a/include/linux/namei.h b/include/linux/namei.h
 index ffc0213..2c1f2cb 100644
 --- a/include/linux/namei.h
@@ -62401,10 +62896,10 @@ index ffc0213..2c1f2cb 100644
        return nd->saved_names[nd->depth];
  }
 diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
        return nd->saved_names[nd->depth];
  }
 diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
-index ddee79b..67af106 100644
+index a82ad4d..90d15b7 100644
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -944,6 +944,7 @@ struct net_device_ops {
+@@ -949,6 +949,7 @@ struct net_device_ops {
        int                     (*ndo_set_features)(struct net_device *dev,
                                                    u32 features);
  };
        int                     (*ndo_set_features)(struct net_device *dev,
                                                    u32 features);
  };
@@ -62412,6 +62907,15 @@ index ddee79b..67af106 100644
  
  /*
   *    The DEVICE structure.
  
  /*
   *    The DEVICE structure.
+@@ -1088,7 +1089,7 @@ struct net_device {
+       int                     iflink;
+       struct net_device_stats stats;
+-      atomic_long_t           rx_dropped; /* dropped packets by core network
++      atomic_long_unchecked_t rx_dropped; /* dropped packets by core network
+                                            * Do not use this in drivers.
+                                            */
 diff --git a/include/linux/netfilter/xt_gradm.h b/include/linux/netfilter/xt_gradm.h
 new file mode 100644
 index 0000000..33f4af8
 diff --git a/include/linux/netfilter/xt_gradm.h b/include/linux/netfilter/xt_gradm.h
 new file mode 100644
 index 0000000..33f4af8
@@ -62441,7 +62945,7 @@ index c65a18a..0c05f3a 100644
  extern void *prom_early_alloc(unsigned long size);
  
 diff --git a/include/linux/oprofile.h b/include/linux/oprofile.h
  extern void *prom_early_alloc(unsigned long size);
  
 diff --git a/include/linux/oprofile.h b/include/linux/oprofile.h
-index 49c8727..34d2ae1 100644
+index a4c5624..2dabfb7 100644
 --- a/include/linux/oprofile.h
 +++ b/include/linux/oprofile.h
 @@ -139,9 +139,9 @@ int oprofilefs_create_ulong(struct super_block * sb, struct dentry * root,
 --- a/include/linux/oprofile.h
 +++ b/include/linux/oprofile.h
 @@ -139,9 +139,9 @@ int oprofilefs_create_ulong(struct super_block * sb, struct dentry * root,
@@ -62456,6 +62960,15 @@ index 49c8727..34d2ae1 100644
   
  /** create a directory */
  struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root,
   
  /** create a directory */
  struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root,
+@@ -163,7 +163,7 @@ ssize_t oprofilefs_ulong_to_user(unsigned long val, char __user * buf, size_t co
+  * Read an ASCII string for a number from a userspace buffer and fill *val on success.
+  * Returns 0 on success, < 0 on error.
+  */
+-int oprofilefs_ulong_from_user(unsigned long * val, char const __user * buf, size_t count);
++int oprofilefs_ulong_from_user(unsigned long * val, char const __user * buf, size_t count) __size_overflow(3);
+ /** lock for read/write safety */
+ extern raw_spinlock_t oprofilefs_lock;
 diff --git a/include/linux/padata.h b/include/linux/padata.h
 index 4633b2f..988bc08 100644
 --- a/include/linux/padata.h
 diff --git a/include/linux/padata.h b/include/linux/padata.h
 index 4633b2f..988bc08 100644
 --- a/include/linux/padata.h
@@ -62470,10 +62983,10 @@ index 4633b2f..988bc08 100644
        atomic_t                        refcnt;
        unsigned int                    max_seq_nr;
 diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
        atomic_t                        refcnt;
        unsigned int                    max_seq_nr;
 diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
-index c816075..cd28c4d 100644
+index b1f8912..c955bff 100644
 --- a/include/linux/perf_event.h
 +++ b/include/linux/perf_event.h
 --- a/include/linux/perf_event.h
 +++ b/include/linux/perf_event.h
-@@ -745,8 +745,8 @@ struct perf_event {
+@@ -748,8 +748,8 @@ struct perf_event {
  
        enum perf_event_active_state    state;
        unsigned int                    attach_state;
  
        enum perf_event_active_state    state;
        unsigned int                    attach_state;
@@ -62484,7 +62997,7 @@ index c816075..cd28c4d 100644
  
        /*
         * These are the total time in nanoseconds that the event
  
        /*
         * These are the total time in nanoseconds that the event
-@@ -797,8 +797,8 @@ struct perf_event {
+@@ -800,8 +800,8 @@ struct perf_event {
         * These accumulate total time (in nanoseconds) that children
         * events have been enabled and running, respectively.
         */
         * These accumulate total time (in nanoseconds) that children
         * events have been enabled and running, respectively.
         */
@@ -62495,6 +63008,18 @@ index c816075..cd28c4d 100644
  
        /*
         * Protect attach/detach and child_list:
  
        /*
         * Protect attach/detach and child_list:
+diff --git a/include/linux/personality.h b/include/linux/personality.h
+index 8fc7dd1a..c19d89e 100644
+--- a/include/linux/personality.h
++++ b/include/linux/personality.h
+@@ -44,6 +44,7 @@ enum {
+ #define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
+                           ADDR_NO_RANDOMIZE  | \
+                           ADDR_COMPAT_LAYOUT | \
++                          ADDR_LIMIT_3GB     | \
+                           MMAP_PAGE_ZERO)
+ /*
 diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
 index 77257c9..51d473a 100644
 --- a/include/linux/pipe_fs_i.h
 diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
 index 77257c9..51d473a 100644
 --- a/include/linux/pipe_fs_i.h
@@ -62513,10 +63038,10 @@ index 77257c9..51d473a 100644
        unsigned int w_counter;
        struct page *tmp_page;
 diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
        unsigned int w_counter;
        struct page *tmp_page;
 diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
-index daac05d..c6802ce 100644
+index d3085e7..fd01052 100644
 --- a/include/linux/pm_runtime.h
 +++ b/include/linux/pm_runtime.h
 --- a/include/linux/pm_runtime.h
 +++ b/include/linux/pm_runtime.h
-@@ -99,7 +99,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev)
+@@ -95,7 +95,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev)
  
  static inline void pm_runtime_mark_last_busy(struct device *dev)
  {
  
  static inline void pm_runtime_mark_last_busy(struct device *dev)
  {
@@ -62587,10 +63112,10 @@ index 643b96c..ef55a9c 100644
  struct ctl_table_header;
  struct ctl_table;
 diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
  struct ctl_table_header;
  struct ctl_table;
 diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
-index 800f113..af90cc8 100644
+index 800f113..e9ee2e3 100644
 --- a/include/linux/ptrace.h
 +++ b/include/linux/ptrace.h
 --- a/include/linux/ptrace.h
 +++ b/include/linux/ptrace.h
-@@ -129,10 +129,10 @@ extern void __ptrace_unlink(struct task_struct *child);
+@@ -129,10 +129,12 @@ extern void __ptrace_unlink(struct task_struct *child);
  extern void exit_ptrace(struct task_struct *tracer);
  #define PTRACE_MODE_READ   1
  #define PTRACE_MODE_ATTACH 2
  extern void exit_ptrace(struct task_struct *tracer);
  #define PTRACE_MODE_READ   1
  #define PTRACE_MODE_ATTACH 2
@@ -62600,11 +63125,13 @@ index 800f113..af90cc8 100644
  extern bool ptrace_may_access(struct task_struct *task, unsigned int mode);
 +/* Returns true on success, false on denial. */
 +extern bool ptrace_may_access_log(struct task_struct *task, unsigned int mode);
  extern bool ptrace_may_access(struct task_struct *task, unsigned int mode);
 +/* Returns true on success, false on denial. */
 +extern bool ptrace_may_access_log(struct task_struct *task, unsigned int mode);
++/* Returns true on success, false on denial. */
++extern bool ptrace_may_access_nolock(struct task_struct *task, unsigned int mode);
  
  static inline int ptrace_reparented(struct task_struct *child)
  {
 diff --git a/include/linux/random.h b/include/linux/random.h
  
  static inline int ptrace_reparented(struct task_struct *child)
  {
 diff --git a/include/linux/random.h b/include/linux/random.h
-index d13059f..2eaafaa 100644
+index 8f74538..02a1012 100644
 --- a/include/linux/random.h
 +++ b/include/linux/random.h
 @@ -69,12 +69,17 @@ void srandom32(u32 seed);
 --- a/include/linux/random.h
 +++ b/include/linux/random.h
 @@ -69,12 +69,17 @@ void srandom32(u32 seed);
@@ -62716,6 +63243,19 @@ index c6c6084..5bf1212 100644
  
  #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
  /**
  
  #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
  /**
+diff --git a/include/linux/rio.h b/include/linux/rio.h
+index 4d50611..c6858a2 100644
+--- a/include/linux/rio.h
++++ b/include/linux/rio.h
+@@ -315,7 +315,7 @@ struct rio_ops {
+                                int mbox, void *buffer, size_t len);
+       int (*add_inb_buffer)(struct rio_mport *mport, int mbox, void *buf);
+       void *(*get_inb_message)(struct rio_mport *mport, int mbox);
+-};
++} __no_const;
+ #define RIO_RESOURCE_MEM      0x00000100
+ #define RIO_RESOURCE_DOORBELL 0x00000200
 diff --git a/include/linux/rmap.h b/include/linux/rmap.h
 index 2148b12..519b820 100644
 --- a/include/linux/rmap.h
 diff --git a/include/linux/rmap.h b/include/linux/rmap.h
 index 2148b12..519b820 100644
 --- a/include/linux/rmap.h
@@ -62732,10 +63272,10 @@ index 2148b12..519b820 100644
  
  static inline void anon_vma_merge(struct vm_area_struct *vma,
 diff --git a/include/linux/sched.h b/include/linux/sched.h
  
  static inline void anon_vma_merge(struct vm_area_struct *vma,
 diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 41d0237..5a64056 100644
+index 1c4f3e9..342eb1f 100644
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -100,6 +100,7 @@ struct bio_list;
+@@ -101,6 +101,7 @@ struct bio_list;
  struct fs_struct;
  struct perf_event_context;
  struct blk_plug;
  struct fs_struct;
  struct perf_event_context;
  struct blk_plug;
@@ -62787,7 +63327,7 @@ index 41d0237..5a64056 100644
        /* Hash table maintenance information */
        struct hlist_node uidhash_node;
        uid_t uid;
        /* Hash table maintenance information */
        struct hlist_node uidhash_node;
        uid_t uid;
-@@ -1340,8 +1360,8 @@ struct task_struct {
+@@ -1337,8 +1357,8 @@ struct task_struct {
        struct list_head thread_group;
  
        struct completion *vfork_done;          /* for vfork() */
        struct list_head thread_group;
  
        struct completion *vfork_done;          /* for vfork() */
@@ -62798,7 +63338,7 @@ index 41d0237..5a64056 100644
  
        cputime_t utime, stime, utimescaled, stimescaled;
        cputime_t gtime;
  
        cputime_t utime, stime, utimescaled, stimescaled;
        cputime_t gtime;
-@@ -1357,13 +1377,6 @@ struct task_struct {
+@@ -1354,13 +1374,6 @@ struct task_struct {
        struct task_cputime cputime_expires;
        struct list_head cpu_timers[3];
  
        struct task_cputime cputime_expires;
        struct list_head cpu_timers[3];
  
@@ -62812,7 +63352,7 @@ index 41d0237..5a64056 100644
        char comm[TASK_COMM_LEN]; /* executable name excluding path
                                     - access with [gs]et_task_comm (which lock
                                       it with task_lock())
        char comm[TASK_COMM_LEN]; /* executable name excluding path
                                     - access with [gs]et_task_comm (which lock
                                       it with task_lock())
-@@ -1380,8 +1393,16 @@ struct task_struct {
+@@ -1377,8 +1390,16 @@ struct task_struct {
  #endif
  /* CPU-specific state of this task */
        struct thread_struct thread;
  #endif
  /* CPU-specific state of this task */
        struct thread_struct thread;
@@ -62829,7 +63369,7 @@ index 41d0237..5a64056 100644
  /* open file information */
        struct files_struct *files;
  /* namespaces */
  /* open file information */
        struct files_struct *files;
  /* namespaces */
-@@ -1428,6 +1449,11 @@ struct task_struct {
+@@ -1425,6 +1446,11 @@ struct task_struct {
        struct rt_mutex_waiter *pi_blocked_on;
  #endif
  
        struct rt_mutex_waiter *pi_blocked_on;
  #endif
  
@@ -62841,13 +63381,19 @@ index 41d0237..5a64056 100644
  #ifdef CONFIG_DEBUG_MUTEXES
        /* mutex deadlock detection */
        struct mutex_waiter *blocked_on;
  #ifdef CONFIG_DEBUG_MUTEXES
        /* mutex deadlock detection */
        struct mutex_waiter *blocked_on;
-@@ -1537,6 +1563,21 @@ struct task_struct {
+@@ -1540,6 +1566,27 @@ struct task_struct {
        unsigned long default_timer_slack_ns;
  
        struct list_head        *scm_work_list;
 +
 +#ifdef CONFIG_GRKERNSEC
 +      /* grsecurity */
        unsigned long default_timer_slack_ns;
  
        struct list_head        *scm_work_list;
 +
 +#ifdef CONFIG_GRKERNSEC
 +      /* grsecurity */
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      u64 exec_id;
++#endif
++#ifdef CONFIG_GRKERNSEC_SETXID
++      const struct cred *delayed_cred;
++#endif
 +      struct dentry *gr_chroot_dentry;
 +      struct acl_subject_label *acl;
 +      struct acl_role_label *role;
 +      struct dentry *gr_chroot_dentry;
 +      struct acl_subject_label *acl;
 +      struct acl_role_label *role;
@@ -62863,7 +63409,7 @@ index 41d0237..5a64056 100644
  #ifdef CONFIG_FUNCTION_GRAPH_TRACER
        /* Index of current stored address in ret_stack */
        int curr_ret_stack;
  #ifdef CONFIG_FUNCTION_GRAPH_TRACER
        /* Index of current stored address in ret_stack */
        int curr_ret_stack;
-@@ -1571,6 +1612,57 @@ struct task_struct {
+@@ -1574,6 +1621,51 @@ struct task_struct {
  #endif
  };
  
  #endif
  };
  
@@ -62910,18 +63456,12 @@ index 41d0237..5a64056 100644
 +extern void pax_report_fault(struct pt_regs *regs, void *pc, void *sp);
 +extern void pax_report_insns(struct pt_regs *regs, void *pc, void *sp);
 +extern void pax_report_refcount_overflow(struct pt_regs *regs);
 +extern void pax_report_fault(struct pt_regs *regs, void *pc, void *sp);
 +extern void pax_report_insns(struct pt_regs *regs, void *pc, void *sp);
 +extern void pax_report_refcount_overflow(struct pt_regs *regs);
-+extern NORET_TYPE void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type) ATTRIB_NORET;
-+
-+#ifdef CONFIG_PAX_MEMORY_STACKLEAK
-+extern void pax_track_stack(void);
-+#else
-+static inline void pax_track_stack(void) {}
-+#endif
++extern __noreturn void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type);
 +
  /* Future-safe accessor for struct task_struct's cpus_allowed. */
  #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
  
 +
  /* Future-safe accessor for struct task_struct's cpus_allowed. */
  #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
  
-@@ -2074,7 +2166,9 @@ void yield(void);
+@@ -2081,7 +2173,9 @@ void yield(void);
  extern struct exec_domain     default_exec_domain;
  
  union thread_union {
  extern struct exec_domain     default_exec_domain;
  
  union thread_union {
@@ -62931,7 +63471,7 @@ index 41d0237..5a64056 100644
        unsigned long stack[THREAD_SIZE/sizeof(long)];
  };
  
        unsigned long stack[THREAD_SIZE/sizeof(long)];
  };
  
-@@ -2107,6 +2201,7 @@ extern struct pid_namespace init_pid_ns;
+@@ -2114,6 +2208,7 @@ extern struct pid_namespace init_pid_ns;
   */
  
  extern struct task_struct *find_task_by_vpid(pid_t nr);
   */
  
  extern struct task_struct *find_task_by_vpid(pid_t nr);
@@ -62939,16 +63479,29 @@ index 41d0237..5a64056 100644
  extern struct task_struct *find_task_by_pid_ns(pid_t nr,
                struct pid_namespace *ns);
  
  extern struct task_struct *find_task_by_pid_ns(pid_t nr,
                struct pid_namespace *ns);
  
-@@ -2243,7 +2338,7 @@ extern void __cleanup_sighand(struct sighand_struct *);
+@@ -2235,6 +2330,12 @@ static inline void mmdrop(struct mm_struct * mm)
+ extern void mmput(struct mm_struct *);
+ /* Grab a reference to a task's mm, if it is not already going away */
+ extern struct mm_struct *get_task_mm(struct task_struct *task);
++/*
++ * Grab a reference to a task's mm, if it is not already going away
++ * and ptrace_may_access with the mode parameter passed to it
++ * succeeds.
++ */
++extern struct mm_struct *mm_access(struct task_struct *task, unsigned int mode);
+ /* Remove the current tasks stale references to the old mm_struct */
+ extern void mm_release(struct task_struct *, struct mm_struct *);
+ /* Allocate a new mm structure and copy contents from tsk->mm */
+@@ -2251,7 +2352,7 @@ extern void __cleanup_sighand(struct sighand_struct *);
  extern void exit_itimers(struct signal_struct *);
  extern void flush_itimer_signals(void);
  
 -extern NORET_TYPE void do_group_exit(int);
  extern void exit_itimers(struct signal_struct *);
  extern void flush_itimer_signals(void);
  
 -extern NORET_TYPE void do_group_exit(int);
-+extern NORET_TYPE void do_group_exit(int) ATTRIB_NORET;
++extern __noreturn void do_group_exit(int);
  
  extern void daemonize(const char *, ...);
  extern int allow_signal(int);
  
  extern void daemonize(const char *, ...);
  extern int allow_signal(int);
-@@ -2408,13 +2503,17 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
+@@ -2416,13 +2517,17 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
  
  #endif
  
  
  #endif
  
@@ -62983,22 +63536,32 @@ index 899fbb4..1cb4138 100644
  
  #define VIDEO_TYPE_MDA                0x10    /* Monochrome Text Display      */
 diff --git a/include/linux/security.h b/include/linux/security.h
  
  #define VIDEO_TYPE_MDA                0x10    /* Monochrome Text Display      */
 diff --git a/include/linux/security.h b/include/linux/security.h
-index ebd2a53..2d949ae 100644
+index e8c619d..e0cbd1c 100644
 --- a/include/linux/security.h
 +++ b/include/linux/security.h
 --- a/include/linux/security.h
 +++ b/include/linux/security.h
-@@ -36,6 +36,7 @@
- #include <linux/key.h>
+@@ -37,6 +37,7 @@
  #include <linux/xfrm.h>
  #include <linux/slab.h>
  #include <linux/xfrm.h>
  #include <linux/slab.h>
+ #include <linux/xattr.h>
 +#include <linux/grsecurity.h>
  #include <net/flow.h>
  
  /* Maximum number of letters for an LSM name string */
 diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h
 +#include <linux/grsecurity.h>
  #include <net/flow.h>
  
  /* Maximum number of letters for an LSM name string */
 diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h
-index be720cd..a0e1b94 100644
+index 0b69a46..b2ffa4c 100644
 --- a/include/linux/seq_file.h
 +++ b/include/linux/seq_file.h
 --- a/include/linux/seq_file.h
 +++ b/include/linux/seq_file.h
-@@ -33,6 +33,7 @@ struct seq_operations {
+@@ -24,6 +24,9 @@ struct seq_file {
+       struct mutex lock;
+       const struct seq_operations *op;
+       int poll_event;
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      u64 exec_id;
++#endif
+       void *private;
+ };
+@@ -33,6 +36,7 @@ struct seq_operations {
        void * (*next) (struct seq_file *m, void *v, loff_t *pos);
        int (*show) (struct seq_file *m, void *v);
  };
        void * (*next) (struct seq_file *m, void *v, loff_t *pos);
        int (*show) (struct seq_file *m, void *v);
  };
@@ -63022,10 +63585,10 @@ index 92808b8..c28cac4 100644
  
  /* shm_mode upper byte flags */
 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
  
  /* shm_mode upper byte flags */
 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index 0f96646..cfb757a 100644
+index 6cf8b53..bcce844 100644
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -610,7 +610,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb)
+@@ -642,7 +642,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb)
   */
  static inline int skb_queue_empty(const struct sk_buff_head *list)
  {
   */
  static inline int skb_queue_empty(const struct sk_buff_head *list)
  {
@@ -63034,7 +63597,7 @@ index 0f96646..cfb757a 100644
  }
  
  /**
  }
  
  /**
-@@ -623,7 +623,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list)
+@@ -655,7 +655,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list)
  static inline bool skb_queue_is_last(const struct sk_buff_head *list,
                                     const struct sk_buff *skb)
  {
  static inline bool skb_queue_is_last(const struct sk_buff_head *list,
                                     const struct sk_buff *skb)
  {
@@ -63043,7 +63606,7 @@ index 0f96646..cfb757a 100644
  }
  
  /**
  }
  
  /**
-@@ -636,7 +636,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list,
+@@ -668,7 +668,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list,
  static inline bool skb_queue_is_first(const struct sk_buff_head *list,
                                      const struct sk_buff *skb)
  {
  static inline bool skb_queue_is_first(const struct sk_buff_head *list,
                                      const struct sk_buff *skb)
  {
@@ -63052,7 +63615,7 @@ index 0f96646..cfb757a 100644
  }
  
  /**
  }
  
  /**
-@@ -1458,7 +1458,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
+@@ -1533,7 +1533,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
   */
  #ifndef NET_SKB_PAD
   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
   */
  #ifndef NET_SKB_PAD
@@ -63062,7 +63625,7 @@ index 0f96646..cfb757a 100644
  
  extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
 diff --git a/include/linux/slab.h b/include/linux/slab.h
  
  extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
 diff --git a/include/linux/slab.h b/include/linux/slab.h
-index 573c809..e84c132 100644
+index 573c809..07e1f43 100644
 --- a/include/linux/slab.h
 +++ b/include/linux/slab.h
 @@ -11,12 +11,20 @@
 --- a/include/linux/slab.h
 +++ b/include/linux/slab.h
 @@ -11,12 +11,20 @@
@@ -63103,7 +63666,14 @@ index 573c809..e84c132 100644
  
  /*
   * struct kmem_cache related prototypes
  
  /*
   * struct kmem_cache related prototypes
-@@ -161,6 +172,7 @@ void * __must_check krealloc(const void *, size_t, gfp_t);
+@@ -156,11 +167,12 @@ unsigned int kmem_cache_size(struct kmem_cache *);
+ /*
+  * Common kmalloc functions provided by all allocators
+  */
+-void * __must_check __krealloc(const void *, size_t, gfp_t);
+-void * __must_check krealloc(const void *, size_t, gfp_t);
++void * __must_check __krealloc(const void *, size_t, gfp_t) __size_overflow(2);
++void * __must_check krealloc(const void *, size_t, gfp_t) __size_overflow(2);
  void kfree(const void *);
  void kzfree(const void *);
  size_t ksize(const void *);
  void kfree(const void *);
  void kzfree(const void *);
  size_t ksize(const void *);
@@ -63111,68 +63681,26 @@ index 573c809..e84c132 100644
  
  /*
   * Allocator specific definitions. These are mainly used to establish optimized
  
  /*
   * Allocator specific definitions. These are mainly used to establish optimized
-@@ -353,4 +365,59 @@ static inline void *kzalloc_node(size_t size, gfp_t flags, int node)
- void __init kmem_cache_init_late(void);
-+#define kmalloc(x, y)                                         \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "kmalloc size overflow\n"))  \
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = kmalloc((size_t)___x, (y));         \
-+      ___retval;                                              \
-+})
-+
-+#define kmalloc_node(x, y, z)                                 \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "kmalloc_node size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = kmalloc_node((size_t)___x, (y), (z));\
-+      ___retval;                                              \
-+})
-+
-+#define kzalloc(x, y)                                         \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "kzalloc size overflow\n"))  \
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = kzalloc((size_t)___x, (y));         \
-+      ___retval;                                              \
-+})
-+
-+#define __krealloc(x, y, z)                                   \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___y = (intoverflow_t)y;                  \
-+      if (WARN(___y > ULONG_MAX, "__krealloc size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = __krealloc((x), (size_t)___y, (z)); \
-+      ___retval;                                              \
-+})
-+
-+#define krealloc(x, y, z)                                     \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___y = (intoverflow_t)y;                  \
-+      if (WARN(___y > ULONG_MAX, "krealloc size overflow\n")) \
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = krealloc((x), (size_t)___y, (z));   \
-+      ___retval;                                              \
-+})
-+
- #endif        /* _LINUX_SLAB_H */
+@@ -287,7 +299,7 @@ static inline void *kmem_cache_alloc_node(struct kmem_cache *cachep,
+  */
+ #if defined(CONFIG_DEBUG_SLAB) || defined(CONFIG_SLUB) || \
+       (defined(CONFIG_SLAB) && defined(CONFIG_TRACING))
+-extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long);
++extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long) __size_overflow(1);
+ #define kmalloc_track_caller(size, flags) \
+       __kmalloc_track_caller(size, flags, _RET_IP_)
+ #else
+@@ -306,7 +318,7 @@ extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long);
+  */
+ #if defined(CONFIG_DEBUG_SLAB) || defined(CONFIG_SLUB) || \
+       (defined(CONFIG_SLAB) && defined(CONFIG_TRACING))
+-extern void *__kmalloc_node_track_caller(size_t, gfp_t, int, unsigned long);
++extern void *__kmalloc_node_track_caller(size_t, gfp_t, int, unsigned long) __size_overflow(1);
+ #define kmalloc_node_track_caller(size, flags, node) \
+       __kmalloc_node_track_caller(size, flags, node, \
+                       _RET_IP_)
 diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
 diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
-index d00e0ba..1b3bf7b 100644
+index d00e0ba..d61fb1f 100644
 --- a/include/linux/slab_def.h
 +++ b/include/linux/slab_def.h
 @@ -68,10 +68,10 @@ struct kmem_cache {
 --- a/include/linux/slab_def.h
 +++ b/include/linux/slab_def.h
 @@ -68,10 +68,10 @@ struct kmem_cache {
@@ -63190,11 +63718,74 @@ index d00e0ba..1b3bf7b 100644
  
        /*
         * If debugging is enabled, then the allocator can add additional
  
        /*
         * If debugging is enabled, then the allocator can add additional
+@@ -109,7 +109,7 @@ struct cache_sizes {
+ extern struct cache_sizes malloc_sizes[];
+ void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
+-void *__kmalloc(size_t size, gfp_t flags);
++void *__kmalloc(size_t size, gfp_t flags) __size_overflow(1);
+ #ifdef CONFIG_TRACING
+ extern void *kmem_cache_alloc_trace(size_t size,
+@@ -127,6 +127,7 @@ static inline size_t slab_buffer_size(struct kmem_cache *cachep)
+ }
+ #endif
++static __always_inline void *kmalloc(size_t size, gfp_t flags) __size_overflow(1);
+ static __always_inline void *kmalloc(size_t size, gfp_t flags)
+ {
+       struct kmem_cache *cachep;
+@@ -162,7 +163,7 @@ found:
+ }
+ #ifdef CONFIG_NUMA
+-extern void *__kmalloc_node(size_t size, gfp_t flags, int node);
++extern void *__kmalloc_node(size_t size, gfp_t flags, int node) __size_overflow(1);
+ extern void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node);
+ #ifdef CONFIG_TRACING
+@@ -181,6 +182,7 @@ kmem_cache_alloc_node_trace(size_t size,
+ }
+ #endif
++static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) __size_overflow(1);
+ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
+ {
+       struct kmem_cache *cachep;
+diff --git a/include/linux/slob_def.h b/include/linux/slob_def.h
+index 0ec00b3..65e7e0e 100644
+--- a/include/linux/slob_def.h
++++ b/include/linux/slob_def.h
+@@ -9,8 +9,9 @@ static __always_inline void *kmem_cache_alloc(struct kmem_cache *cachep,
+       return kmem_cache_alloc_node(cachep, flags, -1);
+ }
+-void *__kmalloc_node(size_t size, gfp_t flags, int node);
++void *__kmalloc_node(size_t size, gfp_t flags, int node) __size_overflow(1);
++static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) __size_overflow(1);
+ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
+ {
+       return __kmalloc_node(size, flags, node);
+@@ -24,11 +25,13 @@ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
+  * kmalloc is the normal method of allocating memory
+  * in the kernel.
+  */
++static __always_inline void *kmalloc(size_t size, gfp_t flags) __size_overflow(1);
+ static __always_inline void *kmalloc(size_t size, gfp_t flags)
+ {
+       return __kmalloc_node(size, flags, -1);
+ }
++static __always_inline void *__kmalloc(size_t size, gfp_t flags) __size_overflow(1);
+ static __always_inline void *__kmalloc(size_t size, gfp_t flags)
+ {
+       return kmalloc(size, flags);
 diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
 diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
-index f58d641..c56bf9c 100644
+index a32bcfd..d26bd6e 100644
 --- a/include/linux/slub_def.h
 +++ b/include/linux/slub_def.h
 --- a/include/linux/slub_def.h
 +++ b/include/linux/slub_def.h
-@@ -85,7 +85,7 @@ struct kmem_cache {
+@@ -89,7 +89,7 @@ struct kmem_cache {
        struct kmem_cache_order_objects max;
        struct kmem_cache_order_objects min;
        gfp_t allocflags;       /* gfp flags to use on each alloc */
        struct kmem_cache_order_objects max;
        struct kmem_cache_order_objects min;
        gfp_t allocflags;       /* gfp flags to use on each alloc */
@@ -63203,15 +63794,59 @@ index f58d641..c56bf9c 100644
        void (*ctor)(void *);
        int inuse;              /* Offset to metadata */
        int align;              /* Alignment */
        void (*ctor)(void *);
        int inuse;              /* Offset to metadata */
        int align;              /* Alignment */
-@@ -211,7 +211,7 @@ static __always_inline struct kmem_cache *kmalloc_slab(size_t size)
+@@ -204,6 +204,7 @@ static __always_inline int kmalloc_index(size_t size)
+  * This ought to end up with a global pointer to the right cache
+  * in kmalloc_caches.
+  */
++static __always_inline struct kmem_cache *kmalloc_slab(size_t size) __size_overflow(1);
+ static __always_inline struct kmem_cache *kmalloc_slab(size_t size)
+ {
+       int index = kmalloc_index(size);
+@@ -215,9 +216,11 @@ static __always_inline struct kmem_cache *kmalloc_slab(size_t size)
  }
  
  void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
 -void *__kmalloc(size_t size, gfp_t flags);
  }
  
  void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
 -void *__kmalloc(size_t size, gfp_t flags);
-+void *__kmalloc(size_t size, gfp_t flags) __alloc_size(1);
++void *__kmalloc(size_t size, gfp_t flags) __alloc_size(1) __size_overflow(1);
  
  static __always_inline void *
  
  static __always_inline void *
++kmalloc_order(size_t size, gfp_t flags, unsigned int order) __size_overflow(1);
++static __always_inline void *
  kmalloc_order(size_t size, gfp_t flags, unsigned int order)
  kmalloc_order(size_t size, gfp_t flags, unsigned int order)
+ {
+       void *ret = (void *) __get_free_pages(flags | __GFP_COMP, order);
+@@ -256,12 +259,14 @@ kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order)
+ }
+ #endif
++static __always_inline void *kmalloc_large(size_t size, gfp_t flags) __size_overflow(1);
+ static __always_inline void *kmalloc_large(size_t size, gfp_t flags)
+ {
+       unsigned int order = get_order(size);
+       return kmalloc_order_trace(size, flags, order);
+ }
++static __always_inline void *kmalloc(size_t size, gfp_t flags) __size_overflow(1);
+ static __always_inline void *kmalloc(size_t size, gfp_t flags)
+ {
+       if (__builtin_constant_p(size)) {
+@@ -281,7 +286,7 @@ static __always_inline void *kmalloc(size_t size, gfp_t flags)
+ }
+ #ifdef CONFIG_NUMA
+-void *__kmalloc_node(size_t size, gfp_t flags, int node);
++void *__kmalloc_node(size_t size, gfp_t flags, int node) __size_overflow(1);
+ void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node);
+ #ifdef CONFIG_TRACING
+@@ -298,6 +303,7 @@ kmem_cache_alloc_node_trace(struct kmem_cache *s,
+ }
+ #endif
++static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) __size_overflow(1);
+ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
+ {
+       if (__builtin_constant_p(size) &&
 diff --git a/include/linux/sonet.h b/include/linux/sonet.h
 index de8832d..0147b46 100644
 --- a/include/linux/sonet.h
 diff --git a/include/linux/sonet.h b/include/linux/sonet.h
 index de8832d..0147b46 100644
 --- a/include/linux/sonet.h
@@ -63226,10 +63861,10 @@ index de8832d..0147b46 100644
  #undef __HANDLE_ITEM
  };
 diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
  #undef __HANDLE_ITEM
  };
 diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
-index db7bcaf..1aca77e 100644
+index 3d8f9c4..69f1c0a 100644
 --- a/include/linux/sunrpc/clnt.h
 +++ b/include/linux/sunrpc/clnt.h
 --- a/include/linux/sunrpc/clnt.h
 +++ b/include/linux/sunrpc/clnt.h
-@@ -169,9 +169,9 @@ static inline unsigned short rpc_get_port(const struct sockaddr *sap)
+@@ -172,9 +172,9 @@ static inline unsigned short rpc_get_port(const struct sockaddr *sap)
  {
        switch (sap->sa_family) {
        case AF_INET:
  {
        switch (sap->sa_family) {
        case AF_INET:
@@ -63241,7 +63876,7 @@ index db7bcaf..1aca77e 100644
        }
        return 0;
  }
        }
        return 0;
  }
-@@ -204,7 +204,7 @@ static inline bool __rpc_cmp_addr4(const struct sockaddr *sap1,
+@@ -207,7 +207,7 @@ static inline bool __rpc_cmp_addr4(const struct sockaddr *sap1,
  static inline bool __rpc_copy_addr4(struct sockaddr *dst,
                                    const struct sockaddr *src)
  {
  static inline bool __rpc_copy_addr4(struct sockaddr *dst,
                                    const struct sockaddr *src)
  {
@@ -63250,7 +63885,7 @@ index db7bcaf..1aca77e 100644
        struct sockaddr_in *dsin = (struct sockaddr_in *) dst;
  
        dsin->sin_family = ssin->sin_family;
        struct sockaddr_in *dsin = (struct sockaddr_in *) dst;
  
        dsin->sin_family = ssin->sin_family;
-@@ -301,7 +301,7 @@ static inline u32 rpc_get_scope_id(const struct sockaddr *sa)
+@@ -310,7 +310,7 @@ static inline u32 rpc_get_scope_id(const struct sockaddr *sa)
        if (sa->sa_family != AF_INET6)
                return 0;
  
        if (sa->sa_family != AF_INET6)
                return 0;
  
@@ -63301,7 +63936,7 @@ index c14fe86..393245e 100644
  #define RPCRDMA_VERSION 1
  
 diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
  #define RPCRDMA_VERSION 1
  
 diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
-index 11684d9..0d245eb 100644
+index 703cfa33..0b8ca72ac 100644
 --- a/include/linux/sysctl.h
 +++ b/include/linux/sysctl.h
 @@ -155,7 +155,11 @@ enum
 --- a/include/linux/sysctl.h
 +++ b/include/linux/sysctl.h
 @@ -155,7 +155,11 @@ enum
@@ -63317,7 +63952,7 @@ index 11684d9..0d245eb 100644
  
  /* CTL_VM names: */
  enum
  
  /* CTL_VM names: */
  enum
-@@ -967,6 +971,8 @@ typedef int proc_handler (struct ctl_table *ctl, int write,
+@@ -968,6 +972,8 @@ typedef int proc_handler (struct ctl_table *ctl, int write,
  
  extern int proc_dostring(struct ctl_table *, int,
                         void __user *, size_t *, loff_t *);
  
  extern int proc_dostring(struct ctl_table *, int,
                         void __user *, size_t *, loff_t *);
@@ -63326,6 +63961,44 @@ index 11684d9..0d245eb 100644
  extern int proc_dointvec(struct ctl_table *, int,
                         void __user *, size_t *, loff_t *);
  extern int proc_dointvec_minmax(struct ctl_table *, int,
  extern int proc_dointvec(struct ctl_table *, int,
                         void __user *, size_t *, loff_t *);
  extern int proc_dointvec_minmax(struct ctl_table *, int,
+diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
+index a71a292..51bd91d 100644
+--- a/include/linux/tracehook.h
++++ b/include/linux/tracehook.h
+@@ -54,12 +54,12 @@ struct linux_binprm;
+ /*
+  * ptrace report for syscall entry and exit looks identical.
+  */
+-static inline void ptrace_report_syscall(struct pt_regs *regs)
++static inline int ptrace_report_syscall(struct pt_regs *regs)
+ {
+       int ptrace = current->ptrace;
+       if (!(ptrace & PT_PTRACED))
+-              return;
++              return 0;
+       ptrace_notify(SIGTRAP | ((ptrace & PT_TRACESYSGOOD) ? 0x80 : 0));
+@@ -72,6 +72,8 @@ static inline void ptrace_report_syscall(struct pt_regs *regs)
+               send_sig(current->exit_code, current, 1);
+               current->exit_code = 0;
+       }
++
++      return fatal_signal_pending(current);
+ }
+ /**
+@@ -96,8 +98,7 @@ static inline void ptrace_report_syscall(struct pt_regs *regs)
+ static inline __must_check int tracehook_report_syscall_entry(
+       struct pt_regs *regs)
+ {
+-      ptrace_report_syscall(regs);
+-      return 0;
++      return ptrace_report_syscall(regs);
+ }
+ /**
 diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
 index ff7dc08..893e1bd 100644
 --- a/include/linux/tty_ldisc.h
 diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
 index ff7dc08..893e1bd 100644
 --- a/include/linux/tty_ldisc.h
@@ -63340,7 +64013,7 @@ index ff7dc08..893e1bd 100644
  
  struct tty_ldisc {
 diff --git a/include/linux/types.h b/include/linux/types.h
  
  struct tty_ldisc {
 diff --git a/include/linux/types.h b/include/linux/types.h
-index 176da8c..e45e473 100644
+index 57a9723..dbe234a 100644
 --- a/include/linux/types.h
 +++ b/include/linux/types.h
 @@ -213,10 +213,26 @@ typedef struct {
 --- a/include/linux/types.h
 +++ b/include/linux/types.h
 @@ -213,10 +213,26 @@ typedef struct {
@@ -63371,7 +64044,7 @@ index 176da8c..e45e473 100644
  
  struct list_head {
 diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
  
  struct list_head {
 diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
-index 5ca0951..ab496a5 100644
+index 5ca0951..53a2fff 100644
 --- a/include/linux/uaccess.h
 +++ b/include/linux/uaccess.h
 @@ -76,11 +76,11 @@ static inline unsigned long __copy_from_user_nocache(void *to,
 --- a/include/linux/uaccess.h
 +++ b/include/linux/uaccess.h
 @@ -76,11 +76,11 @@ static inline unsigned long __copy_from_user_nocache(void *to,
@@ -63389,6 +64062,15 @@ index 5ca0951..ab496a5 100644
                ret;                                    \
        })
  
                ret;                                    \
        })
  
+@@ -105,7 +105,7 @@ extern long __probe_kernel_read(void *dst, const void *src, size_t size);
+  * Safely write to address @dst from the buffer at @src.  If a kernel fault
+  * happens, handle that and return -EFAULT.
+  */
+-extern long notrace probe_kernel_write(void *dst, const void *src, size_t size);
++extern long notrace probe_kernel_write(void *dst, const void *src, size_t size) __size_overflow(3);
+ extern long notrace __probe_kernel_write(void *dst, const void *src, size_t size);
+ #endif                /* __LINUX_UACCESS_H__ */
 diff --git a/include/linux/unaligned/access_ok.h b/include/linux/unaligned/access_ok.h
 index 99c1b4d..bb94261 100644
 --- a/include/linux/unaligned/access_ok.h
 diff --git a/include/linux/unaligned/access_ok.h b/include/linux/unaligned/access_ok.h
 index 99c1b4d..bb94261 100644
 --- a/include/linux/unaligned/access_ok.h
@@ -63432,11 +64114,33 @@ index 99c1b4d..bb94261 100644
  }
  
  static inline void put_unaligned_le16(u16 val, void *p)
  }
  
  static inline void put_unaligned_le16(u16 val, void *p)
+diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
+index e5a40c3..20ab0f6 100644
+--- a/include/linux/usb/renesas_usbhs.h
++++ b/include/linux/usb/renesas_usbhs.h
+@@ -39,7 +39,7 @@ enum {
+  */
+ struct renesas_usbhs_driver_callback {
+       int (*notify_hotplug)(struct platform_device *pdev);
+-};
++} __no_const;
+ /*
+  * callback functions for platform
+@@ -89,7 +89,7 @@ struct renesas_usbhs_platform_callback {
+        * VBUS control is needed for Host
+        */
+       int (*set_vbus)(struct platform_device *pdev, int enable);
+-};
++} __no_const;
+ /*
+  * parameters for renesas usbhs
 diff --git a/include/linux/vermagic.h b/include/linux/vermagic.h
 diff --git a/include/linux/vermagic.h b/include/linux/vermagic.h
-index cf97b5b..40ebc87 100644
+index 6f8fbcf..8259001 100644
 --- a/include/linux/vermagic.h
 +++ b/include/linux/vermagic.h
 --- a/include/linux/vermagic.h
 +++ b/include/linux/vermagic.h
-@@ -26,9 +26,35 @@
+@@ -25,9 +25,35 @@
  #define MODULE_ARCH_VERMAGIC ""
  #endif
  
  #define MODULE_ARCH_VERMAGIC ""
  #endif
  
@@ -63474,7 +64178,7 @@ index cf97b5b..40ebc87 100644
 +      MODULE_GRSEC
  
 diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
 +      MODULE_GRSEC
  
 diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
-index 687fb11..b342358 100644
+index 4bde182..c42a656 100644
 --- a/include/linux/vmalloc.h
 +++ b/include/linux/vmalloc.h
 @@ -14,6 +14,11 @@ struct vm_area_struct;              /* vma defining user mapping in mm_types.h */
 --- a/include/linux/vmalloc.h
 +++ b/include/linux/vmalloc.h
 @@ -14,6 +14,11 @@ struct vm_area_struct;              /* vma defining user mapping in mm_types.h */
@@ -63489,110 +64193,46 @@ index 687fb11..b342358 100644
  /* bits [20..32] reserved for arch specific ioremap internals */
  
  /*
  /* bits [20..32] reserved for arch specific ioremap internals */
  
  /*
-@@ -156,4 +161,103 @@ pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms)
- # endif
+@@ -51,18 +56,18 @@ static inline void vmalloc_init(void)
+ }
  #endif
  
  #endif
  
-+#define vmalloc(x)                                            \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "vmalloc size overflow\n"))  \
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = vmalloc((unsigned long)___x);       \
-+      ___retval;                                              \
-+})
-+
-+#define vzalloc(x)                                            \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "vzalloc size overflow\n"))  \
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = vzalloc((unsigned long)___x);       \
-+      ___retval;                                              \
-+})
-+
-+#define __vmalloc(x, y, z)                                    \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "__vmalloc size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = __vmalloc((unsigned long)___x, (y), (z));\
-+      ___retval;                                              \
-+})
-+
-+#define vmalloc_user(x)                                               \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "vmalloc_user size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = vmalloc_user((unsigned long)___x);  \
-+      ___retval;                                              \
-+})
-+
-+#define vmalloc_exec(x)                                               \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "vmalloc_exec size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = vmalloc_exec((unsigned long)___x);  \
-+      ___retval;                                              \
-+})
-+
-+#define vmalloc_node(x, y)                                    \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "vmalloc_node size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = vmalloc_node((unsigned long)___x, (y));\
-+      ___retval;                                              \
-+})
-+
-+#define vzalloc_node(x, y)                                    \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "vzalloc_node size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = vzalloc_node((unsigned long)___x, (y));\
-+      ___retval;                                              \
-+})
-+
-+#define vmalloc_32(x)                                         \
-+({                                                            \
-+      void *___retval;                                        \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "vmalloc_32 size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = vmalloc_32((unsigned long)___x);    \
-+      ___retval;                                              \
-+})
-+
-+#define vmalloc_32_user(x)                                    \
-+({                                                            \
-+void *___retval;                                      \
-+      intoverflow_t ___x = (intoverflow_t)x;                  \
-+      if (WARN(___x > ULONG_MAX, "vmalloc_32_user size overflow\n"))\
-+              ___retval = NULL;                               \
-+      else                                                    \
-+              ___retval = vmalloc_32_user((unsigned long)___x);\
-+      ___retval;                                              \
-+})
-+
- #endif /* _LINUX_VMALLOC_H */
+-extern void *vmalloc(unsigned long size);
+-extern void *vzalloc(unsigned long size);
+-extern void *vmalloc_user(unsigned long size);
+-extern void *vmalloc_node(unsigned long size, int node);
+-extern void *vzalloc_node(unsigned long size, int node);
+-extern void *vmalloc_exec(unsigned long size);
+-extern void *vmalloc_32(unsigned long size);
+-extern void *vmalloc_32_user(unsigned long size);
+-extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot);
++extern void *vmalloc(unsigned long size) __size_overflow(1);
++extern void *vzalloc(unsigned long size) __size_overflow(1);
++extern void *vmalloc_user(unsigned long size) __size_overflow(1);
++extern void *vmalloc_node(unsigned long size, int node) __size_overflow(1);
++extern void *vzalloc_node(unsigned long size, int node) __size_overflow(1);
++extern void *vmalloc_exec(unsigned long size) __size_overflow(1);
++extern void *vmalloc_32(unsigned long size) __size_overflow(1);
++extern void *vmalloc_32_user(unsigned long size) __size_overflow(1);
++extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot) __size_overflow(1);
+ extern void *__vmalloc_node_range(unsigned long size, unsigned long align,
+                       unsigned long start, unsigned long end, gfp_t gfp_mask,
+-                      pgprot_t prot, int node, void *caller);
++                      pgprot_t prot, int node, void *caller) __size_overflow(1);
+ extern void vfree(const void *addr);
+ extern void *vmap(struct page **pages, unsigned int count,
+@@ -123,8 +128,8 @@ extern struct vm_struct *alloc_vm_area(size_t size, pte_t **ptes);
+ extern void free_vm_area(struct vm_struct *area);
+ /* for /dev/kmem */
+-extern long vread(char *buf, char *addr, unsigned long count);
+-extern long vwrite(char *buf, char *addr, unsigned long count);
++extern long vread(char *buf, char *addr, unsigned long count) __size_overflow(3);
++extern long vwrite(char *buf, char *addr, unsigned long count) __size_overflow(3);
+ /*
+  *    Internals.  Dont't use..
 diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
 index 65efb92..137adbb 100644
 --- a/include/linux/vmstat.h
 diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
 index 65efb92..137adbb 100644
 --- a/include/linux/vmstat.h
@@ -63660,6 +64300,22 @@ index 65efb92..137adbb 100644
  }
  
  static inline void __dec_zone_page_state(struct page *page,
  }
  
  static inline void __dec_zone_page_state(struct page *page,
+diff --git a/include/linux/xattr.h b/include/linux/xattr.h
+index e5d1220..ef6e406 100644
+--- a/include/linux/xattr.h
++++ b/include/linux/xattr.h
+@@ -57,6 +57,11 @@
+ #define XATTR_POSIX_ACL_DEFAULT  "posix_acl_default"
+ #define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT
++/* User namespace */
++#define XATTR_PAX_PREFIX XATTR_USER_PREFIX "pax."
++#define XATTR_PAX_FLAGS_SUFFIX "flags"
++#define XATTR_NAME_PAX_FLAGS XATTR_PAX_PREFIX XATTR_PAX_FLAGS_SUFFIX
++
+ #ifdef  __KERNEL__
+ #include <linux/types.h>
 diff --git a/include/media/saa7146_vv.h b/include/media/saa7146_vv.h
 index 4aeff96..b378cdc 100644
 --- a/include/media/saa7146_vv.h
 diff --git a/include/media/saa7146_vv.h b/include/media/saa7146_vv.h
 index 4aeff96..b378cdc 100644
 --- a/include/media/saa7146_vv.h
@@ -63695,10 +64351,10 @@ index c7c40f1..4f01585 100644
  /*
   * Newer version of video_device, handled by videodev2.c
 diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
  /*
   * Newer version of video_device, handled by videodev2.c
 diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
-index dd9f1e7..8c4dd86 100644
+index 4d1c74a..65e1221 100644
 --- a/include/media/v4l2-ioctl.h
 +++ b/include/media/v4l2-ioctl.h
 --- a/include/media/v4l2-ioctl.h
 +++ b/include/media/v4l2-ioctl.h
-@@ -272,7 +272,7 @@ struct v4l2_ioctl_ops {
+@@ -274,7 +274,7 @@ struct v4l2_ioctl_ops {
        long (*vidioc_default)         (struct file *file, void *fh,
                                        bool valid_prio, int cmd, void *arg);
  };
        long (*vidioc_default)         (struct file *file, void *fh,
                                        bool valid_prio, int cmd, void *arg);
  };
@@ -63708,10 +64364,10 @@ index dd9f1e7..8c4dd86 100644
  /* v4l debugging and diagnostics */
  
 diff --git a/include/net/caif/caif_hsi.h b/include/net/caif/caif_hsi.h
  /* v4l debugging and diagnostics */
  
 diff --git a/include/net/caif/caif_hsi.h b/include/net/caif/caif_hsi.h
-index c5dedd8..a93b07b 100644
+index 8d55251..dfe5b0a 100644
 --- a/include/net/caif/caif_hsi.h
 +++ b/include/net/caif/caif_hsi.h
 --- a/include/net/caif/caif_hsi.h
 +++ b/include/net/caif/caif_hsi.h
-@@ -94,7 +94,7 @@ struct cfhsi_drv {
+@@ -98,7 +98,7 @@ struct cfhsi_drv {
        void (*rx_done_cb) (struct cfhsi_drv *drv);
        void (*wake_up_cb) (struct cfhsi_drv *drv);
        void (*wake_down_cb) (struct cfhsi_drv *drv);
        void (*rx_done_cb) (struct cfhsi_drv *drv);
        void (*wake_up_cb) (struct cfhsi_drv *drv);
        void (*wake_down_cb) (struct cfhsi_drv *drv);
@@ -63745,13 +64401,13 @@ index 9e5425b..8136ffc 100644
        /* Protects from simultaneous access to first_req list */
        spinlock_t info_list_lock;
 diff --git a/include/net/flow.h b/include/net/flow.h
        /* Protects from simultaneous access to first_req list */
        spinlock_t info_list_lock;
 diff --git a/include/net/flow.h b/include/net/flow.h
-index a094477..bc91db1 100644
+index 2a7eefd..3250f3b 100644
 --- a/include/net/flow.h
 +++ b/include/net/flow.h
 --- a/include/net/flow.h
 +++ b/include/net/flow.h
-@@ -207,6 +207,6 @@ extern struct flow_cache_object *flow_cache_lookup(
-               u8 dir, flow_resolve_t resolver, void *ctx);
+@@ -218,6 +218,6 @@ extern struct flow_cache_object *flow_cache_lookup(
  
  extern void flow_cache_flush(void);
  
  extern void flow_cache_flush(void);
+ extern void flow_cache_flush_deferred(void);
 -extern atomic_t flow_cache_genid;
 +extern atomic_unchecked_t flow_cache_genid;
  
 -extern atomic_t flow_cache_genid;
 +extern atomic_unchecked_t flow_cache_genid;
  
@@ -63799,7 +64455,7 @@ index 10422ef..662570f 100644
         fib_info_update_nh_saddr((net), &FIB_RES_NH(res)))
  #define FIB_RES_GW(res)                       (FIB_RES_NH(res).nh_gw)
 diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
         fib_info_update_nh_saddr((net), &FIB_RES_NH(res)))
  #define FIB_RES_GW(res)                       (FIB_RES_NH(res).nh_gw)
 diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
-index 8fa4430..05dd772 100644
+index e5a7b9a..f4fc44b 100644
 --- a/include/net/ip_vs.h
 +++ b/include/net/ip_vs.h
 @@ -509,7 +509,7 @@ struct ip_vs_conn {
 --- a/include/net/ip_vs.h
 +++ b/include/net/ip_vs.h
 @@ -509,7 +509,7 @@ struct ip_vs_conn {
@@ -63857,10 +64513,10 @@ index 59ba38bc..d515662 100644
        /* Protect concurent access to :
         *      o self->open_count
 diff --git a/include/net/iucv/af_iucv.h b/include/net/iucv/af_iucv.h
        /* Protect concurent access to :
         *      o self->open_count
 diff --git a/include/net/iucv/af_iucv.h b/include/net/iucv/af_iucv.h
-index f82a1e8..82d81e8 100644
+index f2419cf..473679f 100644
 --- a/include/net/iucv/af_iucv.h
 +++ b/include/net/iucv/af_iucv.h
 --- a/include/net/iucv/af_iucv.h
 +++ b/include/net/iucv/af_iucv.h
-@@ -87,7 +87,7 @@ struct iucv_sock {
+@@ -139,7 +139,7 @@ struct iucv_sock {
  struct iucv_sock_list {
        struct hlist_head head;
        rwlock_t          lock;
  struct iucv_sock_list {
        struct hlist_head head;
        rwlock_t          lock;
@@ -63869,19 +64525,6 @@ index f82a1e8..82d81e8 100644
  };
  
  unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
  };
  
  unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
-diff --git a/include/net/lapb.h b/include/net/lapb.h
-index 96cb5dd..25e8d4f 100644
---- a/include/net/lapb.h
-+++ b/include/net/lapb.h
-@@ -95,7 +95,7 @@ struct lapb_cb {
-       struct sk_buff_head     write_queue;
-       struct sk_buff_head     ack_queue;
-       unsigned char           window;
--      struct lapb_register_struct callbacks;
-+      struct lapb_register_struct *callbacks;
-       /* FRMR control information */
-       struct lapb_frame       frmr_data;
 diff --git a/include/net/neighbour.h b/include/net/neighbour.h
 index 2720884..3aa5c25 100644
 --- a/include/net/neighbour.h
 diff --git a/include/net/neighbour.h b/include/net/neighbour.h
 index 2720884..3aa5c25 100644
 --- a/include/net/neighbour.h
@@ -63896,10 +64539,10 @@ index 2720884..3aa5c25 100644
  struct pneigh_entry {
        struct pneigh_entry     *next;
 diff --git a/include/net/netlink.h b/include/net/netlink.h
  struct pneigh_entry {
        struct pneigh_entry     *next;
 diff --git a/include/net/netlink.h b/include/net/netlink.h
-index 98c1854..d4add7b 100644
+index cb1f350..3279d2c 100644
 --- a/include/net/netlink.h
 +++ b/include/net/netlink.h
 --- a/include/net/netlink.h
 +++ b/include/net/netlink.h
-@@ -562,7 +562,7 @@ static inline void *nlmsg_get_pos(struct sk_buff *skb)
+@@ -569,7 +569,7 @@ static inline void *nlmsg_get_pos(struct sk_buff *skb)
  static inline void nlmsg_trim(struct sk_buff *skb, const void *mark)
  {
        if (mark)
  static inline void nlmsg_trim(struct sk_buff *skb, const void *mark)
  {
        if (mark)
@@ -63941,10 +64584,10 @@ index 6a72a58..e6a127d 100644
  #define SCTP_DISABLE_DEBUG
  #define SCTP_ASSERT(expr, str, func)
 diff --git a/include/net/sock.h b/include/net/sock.h
  #define SCTP_DISABLE_DEBUG
  #define SCTP_ASSERT(expr, str, func)
 diff --git a/include/net/sock.h b/include/net/sock.h
-index 8e4062f..77b041e 100644
+index 32e3937..87a1dbc 100644
 --- a/include/net/sock.h
 +++ b/include/net/sock.h
 --- a/include/net/sock.h
 +++ b/include/net/sock.h
-@@ -278,7 +278,7 @@ struct sock {
+@@ -277,7 +277,7 @@ struct sock {
  #ifdef CONFIG_RPS
        __u32                   sk_rxhash;
  #endif
  #ifdef CONFIG_RPS
        __u32                   sk_rxhash;
  #endif
@@ -63953,7 +64596,7 @@ index 8e4062f..77b041e 100644
        int                     sk_rcvbuf;
  
        struct sk_filter __rcu  *sk_filter;
        int                     sk_rcvbuf;
  
        struct sk_filter __rcu  *sk_filter;
-@@ -1391,7 +1391,7 @@ static inline void sk_nocaps_add(struct sock *sk, int flags)
+@@ -1402,7 +1402,7 @@ static inline void sk_nocaps_add(struct sock *sk, int flags)
  }
  
  static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
  }
  
  static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
@@ -63963,32 +64606,28 @@ index 8e4062f..77b041e 100644
  {
        if (skb->ip_summed == CHECKSUM_NONE) {
 diff --git a/include/net/tcp.h b/include/net/tcp.h
  {
        if (skb->ip_summed == CHECKSUM_NONE) {
 diff --git a/include/net/tcp.h b/include/net/tcp.h
-index acc620a..f4d99c6 100644
+index bb18c4d..bb87972 100644
 --- a/include/net/tcp.h
 +++ b/include/net/tcp.h
 --- a/include/net/tcp.h
 +++ b/include/net/tcp.h
-@@ -1401,8 +1401,8 @@ enum tcp_seq_states {
- struct tcp_seq_afinfo {
-       char                    *name;
-       sa_family_t             family;
--      struct file_operations  seq_fops;
--      struct seq_operations   seq_ops;
-+      file_operations_no_const        seq_fops;
-+      seq_operations_no_const seq_ops;
+@@ -1409,7 +1409,7 @@ struct tcp_seq_afinfo {
+       char                            *name;
+       sa_family_t                     family;
+       const struct file_operations    *seq_fops;
+-      struct seq_operations           seq_ops;
++      seq_operations_no_const         seq_ops;
  };
  
  struct tcp_iter_state {
 diff --git a/include/net/udp.h b/include/net/udp.h
  };
  
  struct tcp_iter_state {
 diff --git a/include/net/udp.h b/include/net/udp.h
-index 67ea6fc..e42aee8 100644
+index 3b285f4..0219639 100644
 --- a/include/net/udp.h
 +++ b/include/net/udp.h
 --- a/include/net/udp.h
 +++ b/include/net/udp.h
-@@ -234,8 +234,8 @@ struct udp_seq_afinfo {
-       char                    *name;
-       sa_family_t             family;
-       struct udp_table        *udp_table;
--      struct file_operations  seq_fops;
--      struct seq_operations   seq_ops;
-+      file_operations_no_const        seq_fops;
-+      seq_operations_no_const seq_ops;
+@@ -237,7 +237,7 @@ struct udp_seq_afinfo {
+       sa_family_t                     family;
+       struct udp_table                *udp_table;
+       const struct file_operations    *seq_fops;
+-      struct seq_operations           seq_ops;
++      seq_operations_no_const         seq_ops;
  };
  
  struct udp_iter_state {
  };
  
  struct udp_iter_state {
@@ -64006,10 +64645,10 @@ index b203e14..1df3991 100644
        u32                     index;
        struct xfrm_mark        mark;
 diff --git a/include/rdma/iw_cm.h b/include/rdma/iw_cm.h
        u32                     index;
        struct xfrm_mark        mark;
 diff --git a/include/rdma/iw_cm.h b/include/rdma/iw_cm.h
-index 2d0191c..a55797d 100644
+index 1a046b1..ee0bef0 100644
 --- a/include/rdma/iw_cm.h
 +++ b/include/rdma/iw_cm.h
 --- a/include/rdma/iw_cm.h
 +++ b/include/rdma/iw_cm.h
-@@ -120,7 +120,7 @@ struct iw_cm_verbs {
+@@ -122,7 +122,7 @@ struct iw_cm_verbs {
                                         int backlog);
  
        int             (*destroy_listen)(struct iw_cm_id *cm_id);
                                         int backlog);
  
        int             (*destroy_listen)(struct iw_cm_id *cm_id);
@@ -64019,10 +64658,10 @@ index 2d0191c..a55797d 100644
  /**
   * iw_create_cm_id - Create an IW CM identifier.
 diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
  /**
   * iw_create_cm_id - Create an IW CM identifier.
 diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
-index 7d96829..4ba78d3 100644
+index 5d1a758..1dbf795 100644
 --- a/include/scsi/libfc.h
 +++ b/include/scsi/libfc.h
 --- a/include/scsi/libfc.h
 +++ b/include/scsi/libfc.h
-@@ -758,6 +758,7 @@ struct libfc_function_template {
+@@ -748,6 +748,7 @@ struct libfc_function_template {
         */
        void (*disc_stop_final) (struct fc_lport *);
  };
         */
        void (*disc_stop_final) (struct fc_lport *);
  };
@@ -64030,7 +64669,7 @@ index 7d96829..4ba78d3 100644
  
  /**
   * struct fc_disc - Discovery context
  
  /**
   * struct fc_disc - Discovery context
-@@ -861,7 +862,7 @@ struct fc_lport {
+@@ -851,7 +852,7 @@ struct fc_lport {
        struct fc_vport                *vport;
  
        /* Operational Information */
        struct fc_vport                *vport;
  
        /* Operational Information */
@@ -64040,7 +64679,7 @@ index 7d96829..4ba78d3 100644
        u8                             qfull;
        enum fc_lport_state            state;
 diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
        u8                             qfull;
        enum fc_lport_state            state;
 diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
-index d371c3c..e228a8c 100644
+index 5591ed5..13eb457 100644
 --- a/include/scsi/scsi_device.h
 +++ b/include/scsi/scsi_device.h
 @@ -161,9 +161,9 @@ struct scsi_device {
 --- a/include/scsi/scsi_device.h
 +++ b/include/scsi/scsi_device.h
 @@ -161,9 +161,9 @@ struct scsi_device {
@@ -64096,7 +64735,7 @@ index 8c05e47..2b5df97 100644
  struct snd_hwdep {
        struct snd_card *card;
 diff --git a/include/sound/info.h b/include/sound/info.h
  struct snd_hwdep {
        struct snd_card *card;
 diff --git a/include/sound/info.h b/include/sound/info.h
-index 4e94cf1..76748b1 100644
+index 5492cc4..1a65278 100644
 --- a/include/sound/info.h
 +++ b/include/sound/info.h
 @@ -44,7 +44,7 @@ struct snd_info_entry_text {
 --- a/include/sound/info.h
 +++ b/include/sound/info.h
 @@ -44,7 +44,7 @@ struct snd_info_entry_text {
@@ -64109,7 +64748,7 @@ index 4e94cf1..76748b1 100644
  struct snd_info_entry_ops {
        int (*open)(struct snd_info_entry *entry,
 diff --git a/include/sound/pcm.h b/include/sound/pcm.h
  struct snd_info_entry_ops {
        int (*open)(struct snd_info_entry *entry,
 diff --git a/include/sound/pcm.h b/include/sound/pcm.h
-index 57e71fa..a2c7534 100644
+index 0cf91b2..b70cae4 100644
 --- a/include/sound/pcm.h
 +++ b/include/sound/pcm.h
 @@ -81,6 +81,7 @@ struct snd_pcm_ops {
 --- a/include/sound/pcm.h
 +++ b/include/sound/pcm.h
 @@ -81,6 +81,7 @@ struct snd_pcm_ops {
@@ -64134,10 +64773,10 @@ index af1b49e..a5d55a5 100644
  /*
   * CSP private data
 diff --git a/include/sound/soc.h b/include/sound/soc.h
  /*
   * CSP private data
 diff --git a/include/sound/soc.h b/include/sound/soc.h
-index aa19f5a..a5b8208 100644
+index 11cfb59..e3f93f4 100644
 --- a/include/sound/soc.h
 +++ b/include/sound/soc.h
 --- a/include/sound/soc.h
 +++ b/include/sound/soc.h
-@@ -676,7 +676,7 @@ struct snd_soc_platform_driver {
+@@ -683,7 +683,7 @@ struct snd_soc_platform_driver {
        /* platform IO - used for platform DAPM */
        unsigned int (*read)(struct snd_soc_platform *, unsigned int);
        int (*write)(struct snd_soc_platform *, unsigned int, unsigned int);
        /* platform IO - used for platform DAPM */
        unsigned int (*read)(struct snd_soc_platform *, unsigned int);
        int (*write)(struct snd_soc_platform *, unsigned int, unsigned int);
@@ -64160,10 +64799,10 @@ index 444cd6b..3327cc5 100644
        const struct firmware *dsp_microcode;
        const struct firmware *controller_microcode;
 diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
        const struct firmware *dsp_microcode;
        const struct firmware *controller_microcode;
 diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
-index 2704065..e10f3ef 100644
+index 94bbec3..3a8c6b0 100644
 --- a/include/target/target_core_base.h
 +++ b/include/target/target_core_base.h
 --- a/include/target/target_core_base.h
 +++ b/include/target/target_core_base.h
-@@ -356,7 +356,7 @@ struct t10_reservation_ops {
+@@ -346,7 +346,7 @@ struct t10_reservation_ops {
        int (*t10_seq_non_holder)(struct se_cmd *, unsigned char *, u32);
        int (*t10_pr_register)(struct se_cmd *);
        int (*t10_pr_clear)(struct se_cmd *);
        int (*t10_seq_non_holder)(struct se_cmd *, unsigned char *, u32);
        int (*t10_pr_register)(struct se_cmd *);
        int (*t10_pr_clear)(struct se_cmd *);
@@ -64172,10 +64811,10 @@ index 2704065..e10f3ef 100644
  
  struct t10_reservation {
        /* Reservation effects all target ports */
  
  struct t10_reservation {
        /* Reservation effects all target ports */
-@@ -496,8 +496,8 @@ struct se_cmd {
+@@ -465,8 +465,8 @@ struct se_cmd {
+       atomic_t                t_se_count;
        atomic_t                t_task_cdbs_left;
        atomic_t                t_task_cdbs_ex_left;
        atomic_t                t_task_cdbs_left;
        atomic_t                t_task_cdbs_ex_left;
-       atomic_t                t_task_cdbs_timeout_left;
 -      atomic_t                t_task_cdbs_sent;
 -      atomic_t                t_transport_aborted;
 +      atomic_unchecked_t      t_task_cdbs_sent;
 -      atomic_t                t_task_cdbs_sent;
 -      atomic_t                t_transport_aborted;
 +      atomic_unchecked_t      t_task_cdbs_sent;
@@ -64183,15 +64822,15 @@ index 2704065..e10f3ef 100644
        atomic_t                t_transport_active;
        atomic_t                t_transport_complete;
        atomic_t                t_transport_queue_active;
        atomic_t                t_transport_active;
        atomic_t                t_transport_complete;
        atomic_t                t_transport_queue_active;
-@@ -744,7 +744,7 @@ struct se_device {
-       atomic_t                active_cmds;
+@@ -705,7 +705,7 @@ struct se_device {
+       /* Active commands on this virtual SE device */
        atomic_t                simple_cmds;
        atomic_t                depth_left;
 -      atomic_t                dev_ordered_id;
 +      atomic_unchecked_t      dev_ordered_id;
        atomic_t                simple_cmds;
        atomic_t                depth_left;
 -      atomic_t                dev_ordered_id;
 +      atomic_unchecked_t      dev_ordered_id;
-       atomic_t                dev_tur_active;
        atomic_t                execute_tasks;
        atomic_t                execute_tasks;
-       atomic_t                dev_status_thr_count;
+       atomic_t                dev_ordered_sync;
+       atomic_t                dev_qf_count;
 diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
 index 1c09820..7f5ec79 100644
 --- a/include/trace/events/irq.h
 diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
 index 1c09820..7f5ec79 100644
 --- a/include/trace/events/irq.h
@@ -64215,12 +64854,12 @@ index 1c09820..7f5ec79 100644
        TP_ARGS(irq, action, ret),
  
 diff --git a/include/video/udlfb.h b/include/video/udlfb.h
        TP_ARGS(irq, action, ret),
  
 diff --git a/include/video/udlfb.h b/include/video/udlfb.h
-index 69d485a..dd0bee7 100644
+index c41f308..6918de3 100644
 --- a/include/video/udlfb.h
 +++ b/include/video/udlfb.h
 --- a/include/video/udlfb.h
 +++ b/include/video/udlfb.h
-@@ -51,10 +51,10 @@ struct dlfb_data {
-       int base8;
+@@ -52,10 +52,10 @@ struct dlfb_data {
        u32 pseudo_palette[256];
        u32 pseudo_palette[256];
+       int blank_mode; /*one of FB_BLANK_ */
        /* blit-only rendering path metrics, exposed through sysfs */
 -      atomic_t bytes_rendered; /* raw pixel-bytes driver asked to render */
 -      atomic_t bytes_identical; /* saved effort with backbuffer comparison */
        /* blit-only rendering path metrics, exposed through sysfs */
 -      atomic_t bytes_rendered; /* raw pixel-bytes driver asked to render */
 -      atomic_t bytes_identical; /* saved effort with backbuffer comparison */
@@ -64246,10 +64885,10 @@ index 0993a22..32ba2fe 100644
        void *pmi_pal;
        u8 *vbe_state_orig;             /*
 diff --git a/init/Kconfig b/init/Kconfig
        void *pmi_pal;
        u8 *vbe_state_orig;             /*
 diff --git a/init/Kconfig b/init/Kconfig
-index d627783..693a9f3 100644
+index 43298f9..2f56c12 100644
 --- a/init/Kconfig
 +++ b/init/Kconfig
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1202,7 +1202,7 @@ config SLUB_DEBUG
+@@ -1214,7 +1214,7 @@ config SLUB_DEBUG
  
  config COMPAT_BRK
        bool "Disable heap randomization"
  
  config COMPAT_BRK
        bool "Disable heap randomization"
@@ -64259,10 +64898,10 @@ index d627783..693a9f3 100644
          Randomizing heap placement makes heap exploits harder, but it
          also breaks ancient binaries (including anything libc5 based).
 diff --git a/init/do_mounts.c b/init/do_mounts.c
          Randomizing heap placement makes heap exploits harder, but it
          also breaks ancient binaries (including anything libc5 based).
 diff --git a/init/do_mounts.c b/init/do_mounts.c
-index c0851a8..4f8977d 100644
+index db6e5ee..7677ff7 100644
 --- a/init/do_mounts.c
 +++ b/init/do_mounts.c
 --- a/init/do_mounts.c
 +++ b/init/do_mounts.c
-@@ -287,11 +287,11 @@ static void __init get_fs_names(char *page)
+@@ -325,11 +325,11 @@ static void __init get_fs_names(char *page)
  
  static int __init do_mount_root(char *name, char *fs, int flags, void *data)
  {
  
  static int __init do_mount_root(char *name, char *fs, int flags, void *data)
  {
@@ -64276,7 +64915,7 @@ index c0851a8..4f8977d 100644
        ROOT_DEV = current->fs->pwd.mnt->mnt_sb->s_dev;
        printk(KERN_INFO
               "VFS: Mounted root (%s filesystem)%s on device %u:%u.\n",
        ROOT_DEV = current->fs->pwd.mnt->mnt_sb->s_dev;
        printk(KERN_INFO
               "VFS: Mounted root (%s filesystem)%s on device %u:%u.\n",
-@@ -383,18 +383,18 @@ void __init change_floppy(char *fmt, ...)
+@@ -448,18 +448,18 @@ void __init change_floppy(char *fmt, ...)
        va_start(args, fmt);
        vsprintf(buf, fmt, args);
        va_end(args);
        va_start(args, fmt);
        vsprintf(buf, fmt, args);
        va_end(args);
@@ -64298,7 +64937,7 @@ index c0851a8..4f8977d 100644
                termios.c_lflag |= ICANON;
                sys_ioctl(fd, TCSETSF, (long)&termios);
                sys_close(fd);
                termios.c_lflag |= ICANON;
                sys_ioctl(fd, TCSETSF, (long)&termios);
                sys_close(fd);
-@@ -488,6 +488,6 @@ void __init prepare_namespace(void)
+@@ -553,6 +553,6 @@ void __init prepare_namespace(void)
        mount_root();
  out:
        devtmpfs_mount("dev");
        mount_root();
  out:
        devtmpfs_mount("dev");
@@ -64561,7 +65200,7 @@ index 2531811..040d4d4 100644
        next_state = Reset;
        return 0;
 diff --git a/init/main.c b/init/main.c
        next_state = Reset;
        return 0;
 diff --git a/init/main.c b/init/main.c
-index 03b408d..5777f59 100644
+index 217ed23..ec5406f 100644
 --- a/init/main.c
 +++ b/init/main.c
 @@ -96,6 +96,8 @@ static inline void mark_rodata_ro(void) { }
 --- a/init/main.c
 +++ b/init/main.c
 @@ -96,6 +96,8 @@ static inline void mark_rodata_ro(void) { }
@@ -64590,7 +65229,7 @@ index 03b408d..5777f59 100644
 +      unsigned int cpu;
 +      struct desc_struct *gdt;
 +
 +      unsigned int cpu;
 +      struct desc_struct *gdt;
 +
-+      for (cpu = 0; cpu < NR_CPUS; cpu++) {
++      for (cpu = 0; cpu < nr_cpu_ids; cpu++) {
 +              gdt = get_cpu_gdt_table(cpu);
 +              gdt[GDT_ENTRY_KERNEL_DS].type = 3;
 +              gdt[GDT_ENTRY_KERNEL_DS].limit = 0xf;
 +              gdt = get_cpu_gdt_table(cpu);
 +              gdt[GDT_ENTRY_KERNEL_DS].type = 3;
 +              gdt[GDT_ENTRY_KERNEL_DS].limit = 0xf;
@@ -64623,7 +65262,7 @@ index 03b408d..5777f59 100644
  static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
  const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
  static const char *panic_later, *panic_param;
  static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
  const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
  static const char *panic_later, *panic_param;
-@@ -678,6 +723,7 @@ int __init_or_module do_one_initcall(initcall_t fn)
+@@ -681,6 +726,7 @@ int __init_or_module do_one_initcall(initcall_t fn)
  {
        int count = preempt_count();
        int ret;
  {
        int count = preempt_count();
        int ret;
@@ -64631,7 +65270,7 @@ index 03b408d..5777f59 100644
  
        if (initcall_debug)
                ret = do_one_initcall_debug(fn);
  
        if (initcall_debug)
                ret = do_one_initcall_debug(fn);
-@@ -690,15 +736,15 @@ int __init_or_module do_one_initcall(initcall_t fn)
+@@ -693,15 +739,15 @@ int __init_or_module do_one_initcall(initcall_t fn)
                sprintf(msgbuf, "error code %d ", ret);
  
        if (preempt_count() != count) {
                sprintf(msgbuf, "error code %d ", ret);
  
        if (preempt_count() != count) {
@@ -64651,7 +65290,7 @@ index 03b408d..5777f59 100644
        }
  
        return ret;
        }
  
        return ret;
-@@ -817,7 +863,7 @@ static int __init kernel_init(void * unused)
+@@ -820,7 +866,7 @@ static int __init kernel_init(void * unused)
        do_basic_setup();
  
        /* Open the /dev/console on the rootfs, this should never fail */
        do_basic_setup();
  
        /* Open the /dev/console on the rootfs, this should never fail */
@@ -64660,7 +65299,7 @@ index 03b408d..5777f59 100644
                printk(KERN_WARNING "Warning: unable to open an initial console.\n");
  
        (void) sys_dup(0);
                printk(KERN_WARNING "Warning: unable to open an initial console.\n");
  
        (void) sys_dup(0);
-@@ -830,11 +876,13 @@ static int __init kernel_init(void * unused)
+@@ -833,11 +879,13 @@ static int __init kernel_init(void * unused)
        if (!ramdisk_execute_command)
                ramdisk_execute_command = "/init";
  
        if (!ramdisk_execute_command)
                ramdisk_execute_command = "/init";
  
@@ -64676,7 +65315,7 @@ index 03b408d..5777f59 100644
         * Ok, we have completed the initial bootup, and
         * we're essentially up and running. Get rid of the
 diff --git a/ipc/mqueue.c b/ipc/mqueue.c
         * Ok, we have completed the initial bootup, and
         * we're essentially up and running. Get rid of the
 diff --git a/ipc/mqueue.c b/ipc/mqueue.c
-index ed049ea..6442f7f 100644
+index 5b4293d..f179875 100644
 --- a/ipc/mqueue.c
 +++ b/ipc/mqueue.c
 @@ -156,6 +156,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb,
 --- a/ipc/mqueue.c
 +++ b/ipc/mqueue.c
 @@ -156,6 +156,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb,
@@ -64688,7 +65327,7 @@ index ed049ea..6442f7f 100644
                if (u->mq_bytes + mq_bytes < u->mq_bytes ||
                    u->mq_bytes + mq_bytes > task_rlimit(p, RLIMIT_MSGQUEUE)) {
 diff --git a/ipc/msg.c b/ipc/msg.c
                if (u->mq_bytes + mq_bytes < u->mq_bytes ||
                    u->mq_bytes + mq_bytes > task_rlimit(p, RLIMIT_MSGQUEUE)) {
 diff --git a/ipc/msg.c b/ipc/msg.c
-index 7385de2..a8180e0 100644
+index 7385de2..a8180e08 100644
 --- a/ipc/msg.c
 +++ b/ipc/msg.c
 @@ -309,18 +309,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
 --- a/ipc/msg.c
 +++ b/ipc/msg.c
 @@ -309,18 +309,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
@@ -64717,10 +65356,10 @@ index 7385de2..a8180e0 100644
        msg_params.flg = msgflg;
  
 diff --git a/ipc/sem.c b/ipc/sem.c
        msg_params.flg = msgflg;
  
 diff --git a/ipc/sem.c b/ipc/sem.c
-index c8e00f8..1135c4e 100644
+index 5215a81..cfc0cac 100644
 --- a/ipc/sem.c
 +++ b/ipc/sem.c
 --- a/ipc/sem.c
 +++ b/ipc/sem.c
-@@ -318,10 +318,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
+@@ -364,10 +364,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
        return 0;
  }
  
        return 0;
  }
  
@@ -64737,7 +65376,7 @@ index c8e00f8..1135c4e 100644
        struct ipc_params sem_params;
  
        ns = current->nsproxy->ipc_ns;
        struct ipc_params sem_params;
  
        ns = current->nsproxy->ipc_ns;
-@@ -329,10 +334,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
+@@ -375,10 +380,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
        if (nsems < 0 || nsems > ns->sc_semmsl)
                return -EINVAL;
  
        if (nsems < 0 || nsems > ns->sc_semmsl)
                return -EINVAL;
  
@@ -64748,26 +65387,8 @@ index c8e00f8..1135c4e 100644
        sem_params.key = key;
        sem_params.flg = semflg;
        sem_params.u.nsems = nsems;
        sem_params.key = key;
        sem_params.flg = semflg;
        sem_params.u.nsems = nsems;
-@@ -848,6 +849,8 @@ static int semctl_main(struct ipc_namespace *ns, int semid, int semnum,
-       int nsems;
-       struct list_head tasks;
-+      pax_track_stack();
-+
-       sma = sem_lock_check(ns, semid);
-       if (IS_ERR(sma))
-               return PTR_ERR(sma);
-@@ -1295,6 +1298,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops,
-       struct ipc_namespace *ns;
-       struct list_head tasks;
-+      pax_track_stack();
-+
-       ns = current->nsproxy->ipc_ns;
-       if (nsops < 1 || semid < 0)
 diff --git a/ipc/shm.c b/ipc/shm.c
 diff --git a/ipc/shm.c b/ipc/shm.c
-index 02ecf2c..c8f5627 100644
+index b76be5b..859e750 100644
 --- a/ipc/shm.c
 +++ b/ipc/shm.c
 @@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp);
 --- a/ipc/shm.c
 +++ b/ipc/shm.c
 @@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp);
@@ -64825,16 +65446,20 @@ index 02ecf2c..c8f5627 100644
        shm_params.key = key;
        shm_params.flg = shmflg;
        shm_params.u.size = size;
        shm_params.key = key;
        shm_params.flg = shmflg;
        shm_params.u.size = size;
-@@ -870,8 +887,6 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
-       case SHM_LOCK:
-       case SHM_UNLOCK:
-       {
--              struct file *uninitialized_var(shm_file);
--
-               lru_add_drain_all();  /* drain pagevecs to lru lists */
-               shp = shm_lock_check(ns, shmid);
-@@ -1004,9 +1019,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
+@@ -988,6 +1005,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
+               f_mode = FMODE_READ | FMODE_WRITE;
+       }
+       if (shmflg & SHM_EXEC) {
++
++#ifdef CONFIG_PAX_MPROTECT
++              if (current->mm->pax_flags & MF_PAX_MPROTECT)
++                      goto out;
++#endif
++
+               prot |= PROT_EXEC;
+               acc_mode |= S_IXUGO;
+       }
+@@ -1011,9 +1034,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
        if (err)
                goto out_unlock;
  
        if (err)
                goto out_unlock;
  
@@ -64870,7 +65495,7 @@ index fa7eb3d..7faf116 100644
        current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
        set_fs(fs);
 diff --git a/kernel/audit.c b/kernel/audit.c
        current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
        set_fs(fs);
 diff --git a/kernel/audit.c b/kernel/audit.c
-index 0a1355c..dca420f 100644
+index 09fae26..ed71d5b 100644
 --- a/kernel/audit.c
 +++ b/kernel/audit.c
 @@ -115,7 +115,7 @@ u32                audit_sig_sid = 0;
 --- a/kernel/audit.c
 +++ b/kernel/audit.c
 @@ -115,7 +115,7 @@ u32                audit_sig_sid = 0;
@@ -64909,10 +65534,37 @@ index 0a1355c..dca420f 100644
                status_set.backlog       = skb_queue_len(&audit_skb_queue);
                audit_send_reply(NETLINK_CB(skb).pid, seq, AUDIT_GET, 0, 0,
                                 &status_set, sizeof(status_set));
                status_set.backlog       = skb_queue_len(&audit_skb_queue);
                audit_send_reply(NETLINK_CB(skb).pid, seq, AUDIT_GET, 0, 0,
                                 &status_set, sizeof(status_set));
+@@ -1260,12 +1260,13 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
+               avail = audit_expand(ab,
+                       max_t(unsigned, AUDIT_BUFSIZ, 1+len-avail));
+               if (!avail)
+-                      goto out;
++                      goto out_va_end;
+               len = vsnprintf(skb_tail_pointer(skb), avail, fmt, args2);
+       }
+-      va_end(args2);
+       if (len > 0)
+               skb_put(skb, len);
++out_va_end:
++      va_end(args2);
+ out:
+       return;
+ }
 diff --git a/kernel/auditsc.c b/kernel/auditsc.c
 diff --git a/kernel/auditsc.c b/kernel/auditsc.c
-index ce4b054..8139ed7 100644
+index 47b7fc1..c003c33 100644
 --- a/kernel/auditsc.c
 +++ b/kernel/auditsc.c
 --- a/kernel/auditsc.c
 +++ b/kernel/auditsc.c
+@@ -1166,8 +1166,8 @@ static void audit_log_execve_info(struct audit_context *context,
+                                 struct audit_buffer **ab,
+                                 struct audit_aux_data_execve *axi)
+ {
+-      int i;
+-      size_t len, len_sent = 0;
++      int i, len;
++      size_t len_sent = 0;
+       const char __user *p;
+       char *buf;
 @@ -2118,7 +2118,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
  }
  
 @@ -2118,7 +2118,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
  }
  
@@ -64932,7 +65584,7 @@ index ce4b054..8139ed7 100644
  
        if (context && context->in_syscall) {
 diff --git a/kernel/capability.c b/kernel/capability.c
  
        if (context && context->in_syscall) {
 diff --git a/kernel/capability.c b/kernel/capability.c
-index 283c529..36ac81e 100644
+index b463871..fa3ea1f 100644
 --- a/kernel/capability.c
 +++ b/kernel/capability.c
 @@ -202,6 +202,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
 --- a/kernel/capability.c
 +++ b/kernel/capability.c
 @@ -202,6 +202,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
@@ -64995,21 +65647,8 @@ index 283c529..36ac81e 100644
  /**
   * nsown_capable - Check superior capability to one's own user_ns
   * @cap: The capability in question
  /**
   * nsown_capable - Check superior capability to one's own user_ns
   * @cap: The capability in question
-diff --git a/kernel/cgroup.c b/kernel/cgroup.c
-index 1d2b6ce..87bf267 100644
---- a/kernel/cgroup.c
-+++ b/kernel/cgroup.c
-@@ -595,6 +595,8 @@ static struct css_set *find_css_set(
-       struct hlist_head *hhead;
-       struct cg_cgroup_link *link;
-+      pax_track_stack();
-+
-       /* First see if we already have a cgroup group that matches
-        * the desired set */
-       read_lock(&css_set_lock);
 diff --git a/kernel/compat.c b/kernel/compat.c
 diff --git a/kernel/compat.c b/kernel/compat.c
-index e2435ee..8e82199 100644
+index f346ced..aa2b1f4 100644
 --- a/kernel/compat.c
 +++ b/kernel/compat.c
 @@ -13,6 +13,7 @@
 --- a/kernel/compat.c
 +++ b/kernel/compat.c
 @@ -13,6 +13,7 @@
@@ -65020,7 +65659,7 @@ index e2435ee..8e82199 100644
  #include <linux/errno.h>
  #include <linux/time.h>
  #include <linux/signal.h>
  #include <linux/errno.h>
  #include <linux/time.h>
  #include <linux/signal.h>
-@@ -167,7 +168,7 @@ static long compat_nanosleep_restart(struct restart_block *restart)
+@@ -168,7 +169,7 @@ static long compat_nanosleep_restart(struct restart_block *restart)
        mm_segment_t oldfs;
        long ret;
  
        mm_segment_t oldfs;
        long ret;
  
@@ -65029,7 +65668,7 @@ index e2435ee..8e82199 100644
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        ret = hrtimer_nanosleep_restart(restart);
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        ret = hrtimer_nanosleep_restart(restart);
-@@ -199,7 +200,7 @@ asmlinkage long compat_sys_nanosleep(struct compat_timespec __user *rqtp,
+@@ -200,7 +201,7 @@ asmlinkage long compat_sys_nanosleep(struct compat_timespec __user *rqtp,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        ret = hrtimer_nanosleep(&tu,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        ret = hrtimer_nanosleep(&tu,
@@ -65038,7 +65677,7 @@ index e2435ee..8e82199 100644
                                HRTIMER_MODE_REL, CLOCK_MONOTONIC);
        set_fs(oldfs);
  
                                HRTIMER_MODE_REL, CLOCK_MONOTONIC);
        set_fs(oldfs);
  
-@@ -308,7 +309,7 @@ asmlinkage long compat_sys_sigpending(compat_old_sigset_t __user *set)
+@@ -309,7 +310,7 @@ asmlinkage long compat_sys_sigpending(compat_old_sigset_t __user *set)
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
@@ -65047,7 +65686,7 @@ index e2435ee..8e82199 100644
        set_fs(old_fs);
        if (ret == 0)
                ret = put_user(s, set);
        set_fs(old_fs);
        if (ret == 0)
                ret = put_user(s, set);
-@@ -331,8 +332,8 @@ asmlinkage long compat_sys_sigprocmask(int how, compat_old_sigset_t __user *set,
+@@ -332,8 +333,8 @@ asmlinkage long compat_sys_sigprocmask(int how, compat_old_sigset_t __user *set,
        old_fs = get_fs();
        set_fs(KERNEL_DS);
        ret = sys_sigprocmask(how,
        old_fs = get_fs();
        set_fs(KERNEL_DS);
        ret = sys_sigprocmask(how,
@@ -65058,7 +65697,7 @@ index e2435ee..8e82199 100644
        set_fs(old_fs);
        if (ret == 0)
                if (oset)
        set_fs(old_fs);
        if (ret == 0)
                if (oset)
-@@ -369,7 +370,7 @@ asmlinkage long compat_sys_old_getrlimit(unsigned int resource,
+@@ -370,7 +371,7 @@ asmlinkage long compat_sys_old_getrlimit(unsigned int resource,
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
@@ -65067,7 +65706,7 @@ index e2435ee..8e82199 100644
        set_fs(old_fs);
  
        if (!ret) {
        set_fs(old_fs);
  
        if (!ret) {
-@@ -441,7 +442,7 @@ asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru)
+@@ -442,7 +443,7 @@ asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru)
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
@@ -65076,7 +65715,7 @@ index e2435ee..8e82199 100644
        set_fs(old_fs);
  
        if (ret)
        set_fs(old_fs);
  
        if (ret)
-@@ -468,8 +469,8 @@ compat_sys_wait4(compat_pid_t pid, compat_uint_t __user *stat_addr, int options,
+@@ -469,8 +470,8 @@ compat_sys_wait4(compat_pid_t pid, compat_uint_t __user *stat_addr, int options,
                set_fs (KERNEL_DS);
                ret = sys_wait4(pid,
                                (stat_addr ?
                set_fs (KERNEL_DS);
                ret = sys_wait4(pid,
                                (stat_addr ?
@@ -65087,7 +65726,7 @@ index e2435ee..8e82199 100644
                set_fs (old_fs);
  
                if (ret > 0) {
                set_fs (old_fs);
  
                if (ret > 0) {
-@@ -494,8 +495,8 @@ asmlinkage long compat_sys_waitid(int which, compat_pid_t pid,
+@@ -495,8 +496,8 @@ asmlinkage long compat_sys_waitid(int which, compat_pid_t pid,
        memset(&info, 0, sizeof(info));
  
        set_fs(KERNEL_DS);
        memset(&info, 0, sizeof(info));
  
        set_fs(KERNEL_DS);
@@ -65098,7 +65737,7 @@ index e2435ee..8e82199 100644
        set_fs(old_fs);
  
        if ((ret < 0) || (info.si_signo == 0))
        set_fs(old_fs);
  
        if ((ret < 0) || (info.si_signo == 0))
-@@ -625,8 +626,8 @@ long compat_sys_timer_settime(timer_t timer_id, int flags,
+@@ -626,8 +627,8 @@ long compat_sys_timer_settime(timer_t timer_id, int flags,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_timer_settime(timer_id, flags,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_timer_settime(timer_id, flags,
@@ -65109,7 +65748,7 @@ index e2435ee..8e82199 100644
        set_fs(oldfs);
        if (!err && old && put_compat_itimerspec(old, &oldts))
                return -EFAULT;
        set_fs(oldfs);
        if (!err && old && put_compat_itimerspec(old, &oldts))
                return -EFAULT;
-@@ -643,7 +644,7 @@ long compat_sys_timer_gettime(timer_t timer_id,
+@@ -644,7 +645,7 @@ long compat_sys_timer_gettime(timer_t timer_id,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_timer_gettime(timer_id,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_timer_gettime(timer_id,
@@ -65118,7 +65757,7 @@ index e2435ee..8e82199 100644
        set_fs(oldfs);
        if (!err && put_compat_itimerspec(setting, &ts))
                return -EFAULT;
        set_fs(oldfs);
        if (!err && put_compat_itimerspec(setting, &ts))
                return -EFAULT;
-@@ -662,7 +663,7 @@ long compat_sys_clock_settime(clockid_t which_clock,
+@@ -663,7 +664,7 @@ long compat_sys_clock_settime(clockid_t which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_settime(which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_settime(which_clock,
@@ -65127,7 +65766,7 @@ index e2435ee..8e82199 100644
        set_fs(oldfs);
        return err;
  }
        set_fs(oldfs);
        return err;
  }
-@@ -677,7 +678,7 @@ long compat_sys_clock_gettime(clockid_t which_clock,
+@@ -678,7 +679,7 @@ long compat_sys_clock_gettime(clockid_t which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_gettime(which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_gettime(which_clock,
@@ -65136,7 +65775,7 @@ index e2435ee..8e82199 100644
        set_fs(oldfs);
        if (!err && put_compat_timespec(&ts, tp))
                return -EFAULT;
        set_fs(oldfs);
        if (!err && put_compat_timespec(&ts, tp))
                return -EFAULT;
-@@ -697,7 +698,7 @@ long compat_sys_clock_adjtime(clockid_t which_clock,
+@@ -698,7 +699,7 @@ long compat_sys_clock_adjtime(clockid_t which_clock,
  
        oldfs = get_fs();
        set_fs(KERNEL_DS);
  
        oldfs = get_fs();
        set_fs(KERNEL_DS);
@@ -65145,7 +65784,7 @@ index e2435ee..8e82199 100644
        set_fs(oldfs);
  
        err = compat_put_timex(utp, &txc);
        set_fs(oldfs);
  
        err = compat_put_timex(utp, &txc);
-@@ -717,7 +718,7 @@ long compat_sys_clock_getres(clockid_t which_clock,
+@@ -718,7 +719,7 @@ long compat_sys_clock_getres(clockid_t which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_getres(which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_getres(which_clock,
@@ -65154,7 +65793,7 @@ index e2435ee..8e82199 100644
        set_fs(oldfs);
        if (!err && tp && put_compat_timespec(&ts, tp))
                return -EFAULT;
        set_fs(oldfs);
        if (!err && tp && put_compat_timespec(&ts, tp))
                return -EFAULT;
-@@ -729,9 +730,9 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
+@@ -730,9 +731,9 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
        long err;
        mm_segment_t oldfs;
        struct timespec tu;
        long err;
        mm_segment_t oldfs;
        struct timespec tu;
@@ -65166,7 +65805,7 @@ index e2435ee..8e82199 100644
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = clock_nanosleep_restart(restart);
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = clock_nanosleep_restart(restart);
-@@ -763,8 +764,8 @@ long compat_sys_clock_nanosleep(clockid_t which_clock, int flags,
+@@ -764,8 +765,8 @@ long compat_sys_clock_nanosleep(clockid_t which_clock, int flags,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_nanosleep(which_clock, flags,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_nanosleep(which_clock, flags,
@@ -65202,82 +65841,35 @@ index 42e8fa0..9e7406b 100644
                return -ENOMEM;
  
 diff --git a/kernel/cred.c b/kernel/cred.c
                return -ENOMEM;
  
 diff --git a/kernel/cred.c b/kernel/cred.c
-index 8ef31f5..f63d997 100644
+index 5791612..a3c04dc 100644
 --- a/kernel/cred.c
 +++ b/kernel/cred.c
 --- a/kernel/cred.c
 +++ b/kernel/cred.c
-@@ -158,6 +158,8 @@ static void put_cred_rcu(struct rcu_head *rcu)
-  */
- void __put_cred(struct cred *cred)
- {
-+      pax_track_stack();
-+
-       kdebug("__put_cred(%p{%d,%d})", cred,
-              atomic_read(&cred->usage),
-              read_cred_subscribers(cred));
-@@ -182,6 +184,8 @@ void exit_creds(struct task_struct *tsk)
- {
-       struct cred *cred;
-+      pax_track_stack();
-+
-       kdebug("exit_creds(%u,%p,%p,{%d,%d})", tsk->pid, tsk->real_cred, tsk->cred,
-              atomic_read(&tsk->cred->usage),
-              read_cred_subscribers(tsk->cred));
-@@ -220,6 +224,8 @@ const struct cred *get_task_cred(struct task_struct *task)
- {
-       const struct cred *cred;
-+      pax_track_stack();
+@@ -204,6 +204,15 @@ void exit_creds(struct task_struct *tsk)
+               validate_creds(cred);
+               put_cred(cred);
+       }
 +
 +
-       rcu_read_lock();
++#ifdef CONFIG_GRKERNSEC_SETXID
++      cred = (struct cred *) tsk->delayed_cred;
++      if (cred) {
++              tsk->delayed_cred = NULL;
++              validate_creds(cred);
++              put_cred(cred);
++      }
++#endif
+ }
  
  
-       do {
-@@ -239,6 +245,8 @@ struct cred *cred_alloc_blank(void)
+ /**
+@@ -470,7 +479,7 @@ error_put:
+  * Always returns 0 thus allowing this function to be tail-called at the end
+  * of, say, sys_setgid().
+  */
+-int commit_creds(struct cred *new)
++static int __commit_creds(struct cred *new)
  {
  {
-       struct cred *new;
-+      pax_track_stack();
-+
-       new = kmem_cache_zalloc(cred_jar, GFP_KERNEL);
-       if (!new)
-               return NULL;
-@@ -287,6 +295,8 @@ struct cred *prepare_creds(void)
-       const struct cred *old;
-       struct cred *new;
-+      pax_track_stack();
-+
-       validate_process_creds();
-       new = kmem_cache_alloc(cred_jar, GFP_KERNEL);
-@@ -333,6 +343,8 @@ struct cred *prepare_exec_creds(void)
-       struct thread_group_cred *tgcred = NULL;
-       struct cred *new;
-+      pax_track_stack();
-+
- #ifdef CONFIG_KEYS
-       tgcred = kmalloc(sizeof(*tgcred), GFP_KERNEL);
-       if (!tgcred)
-@@ -385,6 +397,8 @@ int copy_creds(struct task_struct *p, unsigned long clone_flags)
-       struct cred *new;
-       int ret;
-+      pax_track_stack();
-+
-       if (
- #ifdef CONFIG_KEYS
-               !p->cred->thread_keyring &&
-@@ -475,6 +489,8 @@ int commit_creds(struct cred *new)
        struct task_struct *task = current;
        const struct cred *old = task->real_cred;
        struct task_struct *task = current;
        const struct cred *old = task->real_cred;
-+      pax_track_stack();
-+
-       kdebug("commit_creds(%p{%d,%d})", new,
-              atomic_read(&new->usage),
-              read_cred_subscribers(new));
-@@ -489,6 +505,8 @@ int commit_creds(struct cred *new)
+@@ -489,6 +498,8 @@ int commit_creds(struct cred *new)
  
        get_cred(new); /* we will require a ref for the subj creds too */
  
  
        get_cred(new); /* we will require a ref for the subj creds too */
  
@@ -65286,60 +65878,99 @@ index 8ef31f5..f63d997 100644
        /* dumpability changes */
        if (old->euid != new->euid ||
            old->egid != new->egid ||
        /* dumpability changes */
        if (old->euid != new->euid ||
            old->egid != new->egid ||
-@@ -549,6 +567,8 @@ EXPORT_SYMBOL(commit_creds);
-  */
- void abort_creds(struct cred *new)
- {
-+      pax_track_stack();
+@@ -538,6 +549,92 @@ int commit_creds(struct cred *new)
+       put_cred(old);
+       return 0;
+ }
++#ifdef CONFIG_GRKERNSEC_SETXID
++extern int set_user(struct cred *new);
 +
 +
-       kdebug("abort_creds(%p{%d,%d})", new,
-              atomic_read(&new->usage),
-              read_cred_subscribers(new));
-@@ -572,6 +592,8 @@ const struct cred *override_creds(const struct cred *new)
- {
-       const struct cred *old = current->cred;
-+      pax_track_stack();
++void gr_delayed_cred_worker(void)
++{
++      const struct cred *new = current->delayed_cred;
++      struct cred *ncred;
 +
 +
-       kdebug("override_creds(%p{%d,%d})", new,
-              atomic_read(&new->usage),
-              read_cred_subscribers(new));
-@@ -601,6 +623,8 @@ void revert_creds(const struct cred *old)
- {
-       const struct cred *override = current->cred;
-+      pax_track_stack();
++      current->delayed_cred = NULL;
 +
 +
-       kdebug("revert_creds(%p{%d,%d})", old,
-              atomic_read(&old->usage),
-              read_cred_subscribers(old));
-@@ -647,6 +671,8 @@ struct cred *prepare_kernel_cred(struct task_struct *daemon)
-       const struct cred *old;
-       struct cred *new;
-+      pax_track_stack();
++      if (current_uid() && new != NULL) {
++              // from doing get_cred on it when queueing this
++              put_cred(new);
++              return;
++      } else if (new == NULL)
++              return;
 +
 +
-       new = kmem_cache_alloc(cred_jar, GFP_KERNEL);
-       if (!new)
-               return NULL;
-@@ -701,6 +727,8 @@ EXPORT_SYMBOL(prepare_kernel_cred);
-  */
- int set_security_override(struct cred *new, u32 secid)
- {
-+      pax_track_stack();
++      ncred = prepare_creds();
++      if (!ncred)
++              goto die;
++      // uids
++      ncred->uid = new->uid;
++      ncred->euid = new->euid;
++      ncred->suid = new->suid;
++      ncred->fsuid = new->fsuid;
++      // gids
++      ncred->gid = new->gid;
++      ncred->egid = new->egid;
++      ncred->sgid = new->sgid;
++      ncred->fsgid = new->fsgid;
++      // groups
++      if (set_groups(ncred, new->group_info) < 0) {
++              abort_creds(ncred);
++              goto die;
++      }
++      // caps
++      ncred->securebits = new->securebits;
++      ncred->cap_inheritable = new->cap_inheritable;
++      ncred->cap_permitted = new->cap_permitted;
++      ncred->cap_effective = new->cap_effective;
++      ncred->cap_bset = new->cap_bset;
++
++      if (set_user(ncred)) {
++              abort_creds(ncred);
++              goto die;
++      }
 +
 +
-       return security_kernel_act_as(new, secid);
- }
- EXPORT_SYMBOL(set_security_override);
-@@ -720,6 +748,8 @@ int set_security_override_from_ctx(struct cred *new, const char *secctx)
-       u32 secid;
-       int ret;
-+      pax_track_stack();
++      // from doing get_cred on it when queueing this
++      put_cred(new);
 +
 +
-       ret = security_secctx_to_secid(secctx, strlen(secctx), &secid);
-       if (ret < 0)
-               return ret;
++      __commit_creds(ncred);
++      return;
++die:
++      // from doing get_cred on it when queueing this
++      put_cred(new);
++      do_group_exit(SIGKILL);
++}
++#endif
++
++int commit_creds(struct cred *new)
++{
++#ifdef CONFIG_GRKERNSEC_SETXID
++      struct task_struct *t;
++
++      /* we won't get called with tasklist_lock held for writing
++         and interrupts disabled as the cred struct in that case is
++         init_cred
++      */
++      if (grsec_enable_setxid && !current_is_single_threaded() &&
++          !current_uid() && new->uid) {
++              rcu_read_lock();
++              read_lock(&tasklist_lock);
++              for (t = next_thread(current); t != current;
++                   t = next_thread(t)) {
++                      if (t->delayed_cred == NULL) {
++                              t->delayed_cred = get_cred(new);
++                              set_tsk_need_resched(t);
++                      }
++              }
++              read_unlock(&tasklist_lock);
++              rcu_read_unlock();
++      }
++#endif
++      return __commit_creds(new);
++}
++
+ EXPORT_SYMBOL(commit_creds);
+ /**
 diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
 index 0d7c087..01b8cef 100644
 --- a/kernel/debug/debug_core.c
 diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
 index 0d7c087..01b8cef 100644
 --- a/kernel/debug/debug_core.c
@@ -65427,10 +66058,10 @@ index 63786e7..0780cac 100644
  #ifdef CONFIG_MODULE_UNLOAD
                {
 diff --git a/kernel/events/core.c b/kernel/events/core.c
  #ifdef CONFIG_MODULE_UNLOAD
                {
 diff --git a/kernel/events/core.c b/kernel/events/core.c
-index 0f85778..0d43716 100644
+index 58690af..d903d75 100644
 --- a/kernel/events/core.c
 +++ b/kernel/events/core.c
 --- a/kernel/events/core.c
 +++ b/kernel/events/core.c
-@@ -172,7 +172,7 @@ int perf_proc_update_handler(struct ctl_table *table, int write,
+@@ -173,7 +173,7 @@ int perf_proc_update_handler(struct ctl_table *table, int write,
        return 0;
  }
  
        return 0;
  }
  
@@ -65439,7 +66070,7 @@ index 0f85778..0d43716 100644
  
  static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
                              enum event_type_t event_type);
  
  static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
                              enum event_type_t event_type);
-@@ -2535,7 +2535,7 @@ static void __perf_event_read(void *info)
+@@ -2540,7 +2540,7 @@ static void __perf_event_read(void *info)
  
  static inline u64 perf_event_count(struct perf_event *event)
  {
  
  static inline u64 perf_event_count(struct perf_event *event)
  {
@@ -65448,7 +66079,7 @@ index 0f85778..0d43716 100644
  }
  
  static u64 perf_event_read(struct perf_event *event)
  }
  
  static u64 perf_event_read(struct perf_event *event)
-@@ -3060,9 +3060,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running)
+@@ -3065,9 +3065,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running)
        mutex_lock(&event->child_mutex);
        total += perf_event_read(event);
        *enabled += event->total_time_enabled +
        mutex_lock(&event->child_mutex);
        total += perf_event_read(event);
        *enabled += event->total_time_enabled +
@@ -65460,7 +66091,7 @@ index 0f85778..0d43716 100644
  
        list_for_each_entry(child, &event->child_list, child_list) {
                total += perf_event_read(child);
  
        list_for_each_entry(child, &event->child_list, child_list) {
                total += perf_event_read(child);
-@@ -3448,10 +3448,10 @@ void perf_event_update_userpage(struct perf_event *event)
+@@ -3474,10 +3474,10 @@ void perf_event_update_userpage(struct perf_event *event)
                userpg->offset -= local64_read(&event->hw.prev_count);
  
        userpg->time_enabled = enabled +
                userpg->offset -= local64_read(&event->hw.prev_count);
  
        userpg->time_enabled = enabled +
@@ -65473,7 +66104,7 @@ index 0f85778..0d43716 100644
  
        barrier();
        ++userpg->lock;
  
        barrier();
        ++userpg->lock;
-@@ -3822,11 +3822,11 @@ static void perf_output_read_one(struct perf_output_handle *handle,
+@@ -3906,11 +3906,11 @@ static void perf_output_read_one(struct perf_output_handle *handle,
        values[n++] = perf_event_count(event);
        if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
                values[n++] = enabled +
        values[n++] = perf_event_count(event);
        if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
                values[n++] = enabled +
@@ -65487,7 +66118,7 @@ index 0f85778..0d43716 100644
        }
        if (read_format & PERF_FORMAT_ID)
                values[n++] = primary_event_id(event);
        }
        if (read_format & PERF_FORMAT_ID)
                values[n++] = primary_event_id(event);
-@@ -4477,12 +4477,12 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event)
+@@ -4561,12 +4561,12 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event)
                 * need to add enough zero bytes after the string to handle
                 * the 64bit alignment we do later.
                 */
                 * need to add enough zero bytes after the string to handle
                 * the 64bit alignment we do later.
                 */
@@ -65502,7 +66133,7 @@ index 0f85778..0d43716 100644
                if (IS_ERR(name)) {
                        name = strncpy(tmp, "//toolong", sizeof(tmp));
                        goto got_name;
                if (IS_ERR(name)) {
                        name = strncpy(tmp, "//toolong", sizeof(tmp));
                        goto got_name;
-@@ -5833,7 +5833,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
+@@ -5921,7 +5921,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
        event->parent           = parent_event;
  
        event->ns               = get_pid_ns(current->nsproxy->pid_ns);
        event->parent           = parent_event;
  
        event->ns               = get_pid_ns(current->nsproxy->pid_ns);
@@ -65511,7 +66142,7 @@ index 0f85778..0d43716 100644
  
        event->state            = PERF_EVENT_STATE_INACTIVE;
  
  
        event->state            = PERF_EVENT_STATE_INACTIVE;
  
-@@ -6355,10 +6355,10 @@ static void sync_child_event(struct perf_event *child_event,
+@@ -6443,10 +6443,10 @@ static void sync_child_event(struct perf_event *child_event,
        /*
         * Add back the child's count to the parent's count:
         */
        /*
         * Add back the child's count to the parent's count:
         */
@@ -65526,7 +66157,7 @@ index 0f85778..0d43716 100644
  
        /*
 diff --git a/kernel/exit.c b/kernel/exit.c
  
        /*
 diff --git a/kernel/exit.c b/kernel/exit.c
-index 2913b35..4465c81 100644
+index e6e01b9..0a21b0a 100644
 --- a/kernel/exit.c
 +++ b/kernel/exit.c
 @@ -57,6 +57,10 @@
 --- a/kernel/exit.c
 +++ b/kernel/exit.c
 @@ -57,6 +57,10 @@
@@ -65578,7 +66209,7 @@ index 2913b35..4465c81 100644
        /*
         * If we were started as result of loading a module, close all of the
         * user space pages.  We don't need them, and if we didn't close them
        /*
         * If we were started as result of loading a module, close all of the
         * user space pages.  We don't need them, and if we didn't close them
-@@ -895,6 +914,8 @@ NORET_TYPE void do_exit(long code)
+@@ -893,6 +912,8 @@ NORET_TYPE void do_exit(long code)
        struct task_struct *tsk = current;
        int group_dead;
  
        struct task_struct *tsk = current;
        int group_dead;
  
@@ -65587,7 +66218,7 @@ index 2913b35..4465c81 100644
        profile_task_exit(tsk);
  
        WARN_ON(blk_needs_flush_plug(tsk));
        profile_task_exit(tsk);
  
        WARN_ON(blk_needs_flush_plug(tsk));
-@@ -911,7 +932,6 @@ NORET_TYPE void do_exit(long code)
+@@ -909,7 +930,6 @@ NORET_TYPE void do_exit(long code)
         * mm_release()->clear_child_tid() from writing to a user-controlled
         * kernel address.
         */
         * mm_release()->clear_child_tid() from writing to a user-controlled
         * kernel address.
         */
@@ -65595,7 +66226,7 @@ index 2913b35..4465c81 100644
  
        ptrace_event(PTRACE_EVENT_EXIT, code);
  
  
        ptrace_event(PTRACE_EVENT_EXIT, code);
  
-@@ -973,6 +993,9 @@ NORET_TYPE void do_exit(long code)
+@@ -971,6 +991,9 @@ NORET_TYPE void do_exit(long code)
        tsk->exit_code = code;
        taskstats_exit(tsk, group_dead);
  
        tsk->exit_code = code;
        taskstats_exit(tsk, group_dead);
  
@@ -65605,11 +66236,20 @@ index 2913b35..4465c81 100644
        exit_mm(tsk);
  
        if (group_dead)
        exit_mm(tsk);
  
        if (group_dead)
+@@ -1068,7 +1091,7 @@ SYSCALL_DEFINE1(exit, int, error_code)
+  * Take down every thread in the group.  This is called by fatal signals
+  * as well as by sys_exit_group (below).
+  */
+-NORET_TYPE void
++__noreturn void
+ do_group_exit(int exit_code)
+ {
+       struct signal_struct *sig = current->signal;
 diff --git a/kernel/fork.c b/kernel/fork.c
 diff --git a/kernel/fork.c b/kernel/fork.c
-index 8e6b6f4..9dccf00 100644
+index 0acf42c0..9e40e2e 100644
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
-@@ -285,7 +285,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
+@@ -281,7 +281,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
        *stackend = STACK_END_MAGIC;    /* for overflow detection */
  
  #ifdef CONFIG_CC_STACKPROTECTOR
        *stackend = STACK_END_MAGIC;    /* for overflow detection */
  
  #ifdef CONFIG_CC_STACKPROTECTOR
@@ -65618,7 +66258,7 @@ index 8e6b6f4..9dccf00 100644
  #endif
  
        /*
  #endif
  
        /*
-@@ -309,13 +309,77 @@ out:
+@@ -305,13 +305,77 @@ out:
  }
  
  #ifdef CONFIG_MMU
  }
  
  #ifdef CONFIG_MMU
@@ -65698,7 +66338,7 @@ index 8e6b6f4..9dccf00 100644
  
        down_write(&oldmm->mmap_sem);
        flush_cache_dup_mm(oldmm);
  
        down_write(&oldmm->mmap_sem);
        flush_cache_dup_mm(oldmm);
-@@ -327,8 +391,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
+@@ -323,8 +387,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
        mm->locked_vm = 0;
        mm->mmap = NULL;
        mm->mmap_cache = NULL;
        mm->locked_vm = 0;
        mm->mmap = NULL;
        mm->mmap_cache = NULL;
@@ -65709,7 +66349,7 @@ index 8e6b6f4..9dccf00 100644
        mm->map_count = 0;
        cpumask_clear(mm_cpumask(mm));
        mm->mm_rb = RB_ROOT;
        mm->map_count = 0;
        cpumask_clear(mm_cpumask(mm));
        mm->mm_rb = RB_ROOT;
-@@ -344,8 +408,6 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
+@@ -340,8 +404,6 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
  
        prev = NULL;
        for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) {
  
        prev = NULL;
        for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) {
@@ -65718,7 +66358,7 @@ index 8e6b6f4..9dccf00 100644
                if (mpnt->vm_flags & VM_DONTCOPY) {
                        long pages = vma_pages(mpnt);
                        mm->total_vm -= pages;
                if (mpnt->vm_flags & VM_DONTCOPY) {
                        long pages = vma_pages(mpnt);
                        mm->total_vm -= pages;
-@@ -353,53 +415,11 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
+@@ -349,53 +411,11 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
                                                                -pages);
                        continue;
                }
                                                                -pages);
                        continue;
                }
@@ -65776,7 +66416,7 @@ index 8e6b6f4..9dccf00 100644
  
                /*
                 * Link in the new vma and copy the page table entries.
  
                /*
                 * Link in the new vma and copy the page table entries.
-@@ -422,6 +442,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
+@@ -418,6 +438,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
                if (retval)
                        goto out;
        }
                if (retval)
                        goto out;
        }
@@ -65808,7 +66448,7 @@ index 8e6b6f4..9dccf00 100644
        /* a new mm has just been created */
        arch_dup_mmap(oldmm, mm);
        retval = 0;
        /* a new mm has just been created */
        arch_dup_mmap(oldmm, mm);
        retval = 0;
-@@ -430,14 +475,6 @@ out:
+@@ -426,14 +471,6 @@ out:
        flush_tlb_mm(oldmm);
        up_write(&oldmm->mmap_sem);
        return retval;
        flush_tlb_mm(oldmm);
        up_write(&oldmm->mmap_sem);
        return retval;
@@ -65823,7 +66463,34 @@ index 8e6b6f4..9dccf00 100644
  }
  
  static inline int mm_alloc_pgd(struct mm_struct *mm)
  }
  
  static inline int mm_alloc_pgd(struct mm_struct *mm)
-@@ -837,13 +874,14 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
+@@ -645,6 +682,26 @@ struct mm_struct *get_task_mm(struct task_struct *task)
+ }
+ EXPORT_SYMBOL_GPL(get_task_mm);
++struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
++{
++      struct mm_struct *mm;
++      int err;
++
++      err =  mutex_lock_killable(&task->signal->cred_guard_mutex);
++      if (err)
++              return ERR_PTR(err);
++
++      mm = get_task_mm(task);
++      if (mm && ((mm != current->mm && !ptrace_may_access(task, mode)) ||
++                      (mode == PTRACE_MODE_ATTACH && (gr_handle_proc_ptrace(task) || gr_acl_handle_procpidmem(task))))) {
++              mmput(mm);
++              mm = ERR_PTR(-EACCES);
++      }
++      mutex_unlock(&task->signal->cred_guard_mutex);
++
++      return mm;
++}
++
+ /* Please note the differences between mmput and mm_release.
+  * mmput is called whenever we stop holding onto a mm_struct,
+  * error success whatever.
+@@ -830,13 +887,14 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
                        spin_unlock(&fs->lock);
                        return -EAGAIN;
                }
                        spin_unlock(&fs->lock);
                        return -EAGAIN;
                }
@@ -65839,7 +66506,7 @@ index 8e6b6f4..9dccf00 100644
        return 0;
  }
  
        return 0;
  }
  
-@@ -1105,6 +1143,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
+@@ -1100,6 +1158,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
        DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
  #endif
        retval = -EAGAIN;
        DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
  #endif
        retval = -EAGAIN;
@@ -65849,7 +66516,7 @@ index 8e6b6f4..9dccf00 100644
        if (atomic_read(&p->real_cred->user->processes) >=
                        task_rlimit(p, RLIMIT_NPROC)) {
                if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) &&
        if (atomic_read(&p->real_cred->user->processes) >=
                        task_rlimit(p, RLIMIT_NPROC)) {
                if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) &&
-@@ -1264,6 +1305,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
+@@ -1259,6 +1320,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
        if (clone_flags & CLONE_THREAD)
                p->tgid = current->tgid;
  
        if (clone_flags & CLONE_THREAD)
                p->tgid = current->tgid;
  
@@ -65858,7 +66525,7 @@ index 8e6b6f4..9dccf00 100644
        p->set_child_tid = (clone_flags & CLONE_CHILD_SETTID) ? child_tidptr : NULL;
        /*
         * Clear TID on mm_release()?
        p->set_child_tid = (clone_flags & CLONE_CHILD_SETTID) ? child_tidptr : NULL;
        /*
         * Clear TID on mm_release()?
-@@ -1428,6 +1471,8 @@ bad_fork_cleanup_count:
+@@ -1421,6 +1484,8 @@ bad_fork_cleanup_count:
  bad_fork_free:
        free_task(p);
  fork_out:
  bad_fork_free:
        free_task(p);
  fork_out:
@@ -65867,7 +66534,7 @@ index 8e6b6f4..9dccf00 100644
        return ERR_PTR(retval);
  }
  
        return ERR_PTR(retval);
  }
  
-@@ -1528,6 +1573,8 @@ long do_fork(unsigned long clone_flags,
+@@ -1521,6 +1586,8 @@ long do_fork(unsigned long clone_flags,
                if (clone_flags & CLONE_PARENT_SETTID)
                        put_user(nr, parent_tidptr);
  
                if (clone_flags & CLONE_PARENT_SETTID)
                        put_user(nr, parent_tidptr);
  
@@ -65876,7 +66543,7 @@ index 8e6b6f4..9dccf00 100644
                if (clone_flags & CLONE_VFORK) {
                        p->vfork_done = &vfork;
                        init_completion(&vfork);
                if (clone_flags & CLONE_VFORK) {
                        p->vfork_done = &vfork;
                        init_completion(&vfork);
-@@ -1637,7 +1684,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp)
+@@ -1630,7 +1697,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp)
                return 0;
  
        /* don't need lock here; in the worst case we'll do useless copy */
                return 0;
  
        /* don't need lock here; in the worst case we'll do useless copy */
@@ -65885,7 +66552,7 @@ index 8e6b6f4..9dccf00 100644
                return 0;
  
        *new_fsp = copy_fs_struct(fs);
                return 0;
  
        *new_fsp = copy_fs_struct(fs);
-@@ -1726,7 +1773,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
+@@ -1719,7 +1786,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
                        fs = current->fs;
                        spin_lock(&fs->lock);
                        current->fs = new_fs;
                        fs = current->fs;
                        spin_lock(&fs->lock);
                        current->fs = new_fs;
@@ -65896,7 +66563,7 @@ index 8e6b6f4..9dccf00 100644
                        else
                                new_fs = fs;
 diff --git a/kernel/futex.c b/kernel/futex.c
                        else
                                new_fs = fs;
 diff --git a/kernel/futex.c b/kernel/futex.c
-index 11cbe05..9ff191b 100644
+index 1614be2..37abc7e 100644
 --- a/kernel/futex.c
 +++ b/kernel/futex.c
 @@ -54,6 +54,7 @@
 --- a/kernel/futex.c
 +++ b/kernel/futex.c
 @@ -54,6 +54,7 @@
@@ -65905,7 +66572,7 @@ index 11cbe05..9ff191b 100644
  #include <linux/syscalls.h>
 +#include <linux/ptrace.h>
  #include <linux/signal.h>
  #include <linux/syscalls.h>
 +#include <linux/ptrace.h>
  #include <linux/signal.h>
- #include <linux/module.h>
+ #include <linux/export.h>
  #include <linux/magic.h>
 @@ -238,6 +239,11 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
        struct page *page, *page_head;
  #include <linux/magic.h>
 @@ -238,6 +239,11 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
        struct page *page, *page_head;
@@ -65919,54 +66586,18 @@ index 11cbe05..9ff191b 100644
        /*
         * The futex address must be "naturally" aligned.
         */
        /*
         * The futex address must be "naturally" aligned.
         */
-@@ -1863,6 +1869,8 @@ static int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val,
-       struct futex_q q = futex_q_init;
-       int ret;
-+      pax_track_stack();
-+
-       if (!bitset)
-               return -EINVAL;
-       q.bitset = bitset;
-@@ -2259,6 +2267,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
-       struct futex_q q = futex_q_init;
-       int res, ret;
-+      pax_track_stack();
-+
-       if (!bitset)
-               return -EINVAL;
-@@ -2431,7 +2441,9 @@ SYSCALL_DEFINE3(get_robust_list, int, pid,
- {
-       struct robust_list_head __user *head;
-       unsigned long ret;
-+#ifndef CONFIG_GRKERNSEC_PROC_MEMMAP
-       const struct cred *cred = current_cred(), *pcred;
-+#endif
-       if (!futex_cmpxchg_enabled)
-               return -ENOSYS;
-@@ -2447,6 +2459,10 @@ SYSCALL_DEFINE3(get_robust_list, int, pid,
+@@ -2459,6 +2465,10 @@ SYSCALL_DEFINE3(get_robust_list, int, pid,
                if (!p)
                        goto err_unlock;
                ret = -EPERM;
 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
 +              if (!ptrace_may_access(p, PTRACE_MODE_READ))
 +                      goto err_unlock;
                if (!p)
                        goto err_unlock;
                ret = -EPERM;
 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
 +              if (!ptrace_may_access(p, PTRACE_MODE_READ))
 +                      goto err_unlock;
-+#else
++#endif
                pcred = __task_cred(p);
                /* If victim is in different user_ns, then uids are not
                   comparable, so we must have CAP_SYS_PTRACE */
                pcred = __task_cred(p);
                /* If victim is in different user_ns, then uids are not
                   comparable, so we must have CAP_SYS_PTRACE */
-@@ -2461,6 +2477,7 @@ SYSCALL_DEFINE3(get_robust_list, int, pid,
-                   !ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
-                       goto err_unlock;
- ok:
-+#endif
-               head = p->robust_list;
-               rcu_read_unlock();
-       }
-@@ -2712,6 +2729,7 @@ static int __init futex_init(void)
+@@ -2724,6 +2734,7 @@ static int __init futex_init(void)
  {
        u32 curval;
        int i;
  {
        u32 curval;
        int i;
@@ -65974,7 +66605,7 @@ index 11cbe05..9ff191b 100644
  
        /*
         * This will fail and we want it. Some arch implementations do
  
        /*
         * This will fail and we want it. Some arch implementations do
-@@ -2723,8 +2741,11 @@ static int __init futex_init(void)
+@@ -2735,8 +2746,11 @@ static int __init futex_init(void)
         * implementation, the non-functional ones will return
         * -ENOSYS.
         */
         * implementation, the non-functional ones will return
         * -ENOSYS.
         */
@@ -65987,7 +66618,7 @@ index 11cbe05..9ff191b 100644
        for (i = 0; i < ARRAY_SIZE(futex_queues); i++) {
                plist_head_init(&futex_queues[i].chain);
 diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
        for (i = 0; i < ARRAY_SIZE(futex_queues); i++) {
                plist_head_init(&futex_queues[i].chain);
 diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
-index 5f9e689..03afa21 100644
+index 5f9e689..582d46d 100644
 --- a/kernel/futex_compat.c
 +++ b/kernel/futex_compat.c
 @@ -10,6 +10,7 @@
 --- a/kernel/futex_compat.c
 +++ b/kernel/futex_compat.c
 @@ -10,6 +10,7 @@
@@ -65998,37 +66629,27 @@ index 5f9e689..03afa21 100644
  
  #include <asm/uaccess.h>
  
  
  #include <asm/uaccess.h>
  
-@@ -136,7 +137,10 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
+@@ -136,7 +137,8 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
  {
        struct compat_robust_list_head __user *head;
        unsigned long ret;
 -      const struct cred *cred = current_cred(), *pcred;
  {
        struct compat_robust_list_head __user *head;
        unsigned long ret;
 -      const struct cred *cred = current_cred(), *pcred;
-+#ifndef CONFIG_GRKERNSEC_PROC_MEMMAP
 +      const struct cred *cred = current_cred();
 +      const struct cred *pcred;
 +      const struct cred *cred = current_cred();
 +      const struct cred *pcred;
-+#endif
  
        if (!futex_cmpxchg_enabled)
                return -ENOSYS;
  
        if (!futex_cmpxchg_enabled)
                return -ENOSYS;
-@@ -152,6 +156,10 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
+@@ -152,6 +154,10 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
                if (!p)
                        goto err_unlock;
                ret = -EPERM;
 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
 +              if (!ptrace_may_access(p, PTRACE_MODE_READ))
 +                      goto err_unlock;
                if (!p)
                        goto err_unlock;
                ret = -EPERM;
 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
 +              if (!ptrace_may_access(p, PTRACE_MODE_READ))
 +                      goto err_unlock;
-+#else
++#endif
                pcred = __task_cred(p);
                /* If victim is in different user_ns, then uids are not
                   comparable, so we must have CAP_SYS_PTRACE */
                pcred = __task_cred(p);
                /* If victim is in different user_ns, then uids are not
                   comparable, so we must have CAP_SYS_PTRACE */
-@@ -166,6 +174,7 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
-                   !ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
-                       goto err_unlock;
- ok:
-+#endif
-               head = p->compat_robust_list;
-               rcu_read_unlock();
-       }
 diff --git a/kernel/gcov/base.c b/kernel/gcov/base.c
 index 9b22d03..6295b62 100644
 --- a/kernel/gcov/base.c
 diff --git a/kernel/gcov/base.c b/kernel/gcov/base.c
 index 9b22d03..6295b62 100644
 --- a/kernel/gcov/base.c
@@ -66055,7 +66676,7 @@ index 9b22d03..6295b62 100644
                                prev->next = info->next;
                        else
 diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
                                prev->next = info->next;
                        else
 diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
-index 2043c08..ec81a69 100644
+index ae34bf5..4e2f3d0 100644
 --- a/kernel/hrtimer.c
 +++ b/kernel/hrtimer.c
 @@ -1393,7 +1393,7 @@ void hrtimer_peek_ahead_timers(void)
 --- a/kernel/hrtimer.c
 +++ b/kernel/hrtimer.c
 @@ -1393,7 +1393,7 @@ void hrtimer_peek_ahead_timers(void)
@@ -66068,7 +66689,7 @@ index 2043c08..ec81a69 100644
        hrtimer_peek_ahead_timers();
  }
 diff --git a/kernel/jump_label.c b/kernel/jump_label.c
        hrtimer_peek_ahead_timers();
  }
 diff --git a/kernel/jump_label.c b/kernel/jump_label.c
-index e6f1f24..6c19597 100644
+index 66ff710..05a5128 100644
 --- a/kernel/jump_label.c
 +++ b/kernel/jump_label.c
 @@ -55,7 +55,9 @@ jump_label_sort_entries(struct jump_entry *start, struct jump_entry *stop)
 --- a/kernel/jump_label.c
 +++ b/kernel/jump_label.c
 @@ -55,7 +55,9 @@ jump_label_sort_entries(struct jump_entry *start, struct jump_entry *stop)
@@ -66081,7 +66702,7 @@ index e6f1f24..6c19597 100644
  }
  
  static void jump_label_update(struct jump_label_key *key, int enable);
  }
  
  static void jump_label_update(struct jump_label_key *key, int enable);
-@@ -298,10 +300,12 @@ static void jump_label_invalidate_module_init(struct module *mod)
+@@ -303,10 +305,12 @@ static void jump_label_invalidate_module_init(struct module *mod)
        struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
        struct jump_entry *iter;
  
        struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
        struct jump_entry *iter;
  
@@ -66201,10 +66822,10 @@ index 079f1d3..a407562 100644
                return -ENOMEM;
        reset_iter(iter, 0);
 diff --git a/kernel/kexec.c b/kernel/kexec.c
                return -ENOMEM;
        reset_iter(iter, 0);
 diff --git a/kernel/kexec.c b/kernel/kexec.c
-index 296fbc8..84cb857 100644
+index dc7bc08..4601964 100644
 --- a/kernel/kexec.c
 +++ b/kernel/kexec.c
 --- a/kernel/kexec.c
 +++ b/kernel/kexec.c
-@@ -1033,7 +1033,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry,
+@@ -1048,7 +1048,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry,
                                unsigned long flags)
  {
        struct compat_kexec_segment in;
                                unsigned long flags)
  {
        struct compat_kexec_segment in;
@@ -66324,7 +66945,7 @@ index a4bea97..7a1ae9a 100644
                /*
                 * If ret is 0, either ____call_usermodehelper failed and the
 diff --git a/kernel/kprobes.c b/kernel/kprobes.c
                /*
                 * If ret is 0, either ____call_usermodehelper failed and the
 diff --git a/kernel/kprobes.c b/kernel/kprobes.c
-index b30fd54..11821ec 100644
+index bc90b87..43c7d8c 100644
 --- a/kernel/kprobes.c
 +++ b/kernel/kprobes.c
 @@ -185,7 +185,7 @@ static kprobe_opcode_t __kprobes *__get_insn_slot(struct kprobe_insn_cache *c)
 --- a/kernel/kprobes.c
 +++ b/kernel/kprobes.c
 @@ -185,7 +185,7 @@ static kprobe_opcode_t __kprobes *__get_insn_slot(struct kprobe_insn_cache *c)
@@ -66345,7 +66966,7 @@ index b30fd54..11821ec 100644
                        kfree(kip);
                }
                return 1;
                        kfree(kip);
                }
                return 1;
-@@ -1949,7 +1949,7 @@ static int __init init_kprobes(void)
+@@ -1955,7 +1955,7 @@ static int __init init_kprobes(void)
  {
        int i, err = 0;
        unsigned long offset = 0, size = 0;
  {
        int i, err = 0;
        unsigned long offset = 0, size = 0;
@@ -66354,7 +66975,7 @@ index b30fd54..11821ec 100644
        const char *symbol_name;
        void *addr;
        struct kprobe_blackpoint *kb;
        const char *symbol_name;
        void *addr;
        struct kprobe_blackpoint *kb;
-@@ -2075,7 +2075,7 @@ static int __kprobes show_kprobe_addr(struct seq_file *pi, void *v)
+@@ -2081,7 +2081,7 @@ static int __kprobes show_kprobe_addr(struct seq_file *pi, void *v)
        const char *sym = NULL;
        unsigned int i = *(loff_t *) v;
        unsigned long offset = 0;
        const char *sym = NULL;
        unsigned int i = *(loff_t *) v;
        unsigned long offset = 0;
@@ -66364,10 +66985,10 @@ index b30fd54..11821ec 100644
        head = &kprobe_table[i];
        preempt_disable();
 diff --git a/kernel/lockdep.c b/kernel/lockdep.c
        head = &kprobe_table[i];
        preempt_disable();
 diff --git a/kernel/lockdep.c b/kernel/lockdep.c
-index 91d67ce..ac259df 100644
+index b2e08c9..01d8049 100644
 --- a/kernel/lockdep.c
 +++ b/kernel/lockdep.c
 --- a/kernel/lockdep.c
 +++ b/kernel/lockdep.c
-@@ -583,6 +583,10 @@ static int static_obj(void *obj)
+@@ -592,6 +592,10 @@ static int static_obj(void *obj)
                      end   = (unsigned long) &_end,
                      addr  = (unsigned long) obj;
  
                      end   = (unsigned long) &_end,
                      addr  = (unsigned long) obj;
  
@@ -66378,7 +66999,7 @@ index 91d67ce..ac259df 100644
        /*
         * static variable?
         */
        /*
         * static variable?
         */
-@@ -718,6 +722,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force)
+@@ -731,6 +735,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force)
        if (!static_obj(lock->key)) {
                debug_locks_off();
                printk("INFO: trying to register non-static key.\n");
        if (!static_obj(lock->key)) {
                debug_locks_off();
                printk("INFO: trying to register non-static key.\n");
@@ -66386,7 +67007,7 @@ index 91d67ce..ac259df 100644
                printk("the code is fine but needs lockdep annotation.\n");
                printk("turning off the locking correctness validator.\n");
                dump_stack();
                printk("the code is fine but needs lockdep annotation.\n");
                printk("turning off the locking correctness validator.\n");
                dump_stack();
-@@ -2948,7 +2953,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
+@@ -3042,7 +3047,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
                if (!class)
                        return 0;
        }
                if (!class)
                        return 0;
        }
@@ -66396,7 +67017,7 @@ index 91d67ce..ac259df 100644
                printk("\nacquire class [%p] %s", class->key, class->name);
                if (class->name_version > 1)
 diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
                printk("\nacquire class [%p] %s", class->key, class->name);
                if (class->name_version > 1)
 diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
-index 71edd2f..e0542a5 100644
+index 91c32a0..b2c71c5 100644
 --- a/kernel/lockdep_proc.c
 +++ b/kernel/lockdep_proc.c
 @@ -39,7 +39,7 @@ static void l_stop(struct seq_file *m, void *v)
 --- a/kernel/lockdep_proc.c
 +++ b/kernel/lockdep_proc.c
 @@ -39,7 +39,7 @@ static void l_stop(struct seq_file *m, void *v)
@@ -66409,7 +67030,7 @@ index 71edd2f..e0542a5 100644
  
        if (!name) {
 diff --git a/kernel/module.c b/kernel/module.c
  
        if (!name) {
 diff --git a/kernel/module.c b/kernel/module.c
-index 04379f92..fba2faf 100644
+index 178333c..04e3408 100644
 --- a/kernel/module.c
 +++ b/kernel/module.c
 @@ -58,6 +58,7 @@
 --- a/kernel/module.c
 +++ b/kernel/module.c
 @@ -58,6 +58,7 @@
@@ -66797,7 +67418,7 @@ index 04379f92..fba2faf 100644
        /* This is allowed: modprobe --force will invalidate it. */
        if (!modmagic) {
                err = try_to_force_load(mod, "bad vermagic");
        /* This is allowed: modprobe --force will invalidate it. */
        if (!modmagic) {
                err = try_to_force_load(mod, "bad vermagic");
-@@ -2495,7 +2538,7 @@ static int check_modinfo(struct module *mod, struct load_info *info)
+@@ -2498,7 +2541,7 @@ static int check_modinfo(struct module *mod, struct load_info *info)
        }
  
        /* Set up license info based on the info section */
        }
  
        /* Set up license info based on the info section */
@@ -66806,7 +67427,7 @@ index 04379f92..fba2faf 100644
  
        return 0;
  }
  
        return 0;
  }
-@@ -2589,7 +2632,7 @@ static int move_module(struct module *mod, struct load_info *info)
+@@ -2592,7 +2635,7 @@ static int move_module(struct module *mod, struct load_info *info)
        void *ptr;
  
        /* Do the allocs. */
        void *ptr;
  
        /* Do the allocs. */
@@ -66815,7 +67436,7 @@ index 04379f92..fba2faf 100644
        /*
         * The pointer to this block is stored in the module structure
         * which is inside the block. Just mark it as not being a
        /*
         * The pointer to this block is stored in the module structure
         * which is inside the block. Just mark it as not being a
-@@ -2599,23 +2642,50 @@ static int move_module(struct module *mod, struct load_info *info)
+@@ -2602,23 +2645,50 @@ static int move_module(struct module *mod, struct load_info *info)
        if (!ptr)
                return -ENOMEM;
  
        if (!ptr)
                return -ENOMEM;
  
@@ -66874,7 +67495,7 @@ index 04379f92..fba2faf 100644
  
        /* Transfer each section which specifies SHF_ALLOC */
        DEBUGP("final section addresses:\n");
  
        /* Transfer each section which specifies SHF_ALLOC */
        DEBUGP("final section addresses:\n");
-@@ -2626,16 +2696,45 @@ static int move_module(struct module *mod, struct load_info *info)
+@@ -2629,16 +2699,45 @@ static int move_module(struct module *mod, struct load_info *info)
                if (!(shdr->sh_flags & SHF_ALLOC))
                        continue;
  
                if (!(shdr->sh_flags & SHF_ALLOC))
                        continue;
  
@@ -66927,7 +67548,7 @@ index 04379f92..fba2faf 100644
                DEBUGP("\t0x%lx %s\n",
                       shdr->sh_addr, info->secstrings + shdr->sh_name);
        }
                DEBUGP("\t0x%lx %s\n",
                       shdr->sh_addr, info->secstrings + shdr->sh_name);
        }
-@@ -2686,12 +2785,12 @@ static void flush_module_icache(const struct module *mod)
+@@ -2689,12 +2788,12 @@ static void flush_module_icache(const struct module *mod)
         * Do it before processing of module parameters, so the module
         * can provide parameter accessor functions of its own.
         */
         * Do it before processing of module parameters, so the module
         * can provide parameter accessor functions of its own.
         */
@@ -66946,7 +67567,7 @@ index 04379f92..fba2faf 100644
  
        set_fs(old_fs);
  }
  
        set_fs(old_fs);
  }
-@@ -2771,8 +2870,10 @@ static void module_deallocate(struct module *mod, struct load_info *info)
+@@ -2774,8 +2873,10 @@ static void module_deallocate(struct module *mod, struct load_info *info)
  {
        kfree(info->strmap);
        percpu_modfree(mod);
  {
        kfree(info->strmap);
        percpu_modfree(mod);
@@ -66959,7 +67580,7 @@ index 04379f92..fba2faf 100644
  }
  
  int __weak module_finalize(const Elf_Ehdr *hdr,
  }
  
  int __weak module_finalize(const Elf_Ehdr *hdr,
-@@ -2836,9 +2937,38 @@ static struct module *load_module(void __user *umod,
+@@ -2839,9 +2940,38 @@ static struct module *load_module(void __user *umod,
        if (err)
                goto free_unload;
  
        if (err)
                goto free_unload;
  
@@ -66998,7 +67619,7 @@ index 04379f92..fba2faf 100644
        /* Fix up syms, so that st_value is a pointer to location. */
        err = simplify_symbols(mod, &info);
        if (err < 0)
        /* Fix up syms, so that st_value is a pointer to location. */
        err = simplify_symbols(mod, &info);
        if (err < 0)
-@@ -2854,13 +2984,6 @@ static struct module *load_module(void __user *umod,
+@@ -2857,13 +2987,6 @@ static struct module *load_module(void __user *umod,
  
        flush_module_icache(mod);
  
  
        flush_module_icache(mod);
  
@@ -67012,7 +67633,7 @@ index 04379f92..fba2faf 100644
        /* Mark state as coming so strong_try_module_get() ignores us. */
        mod->state = MODULE_STATE_COMING;
  
        /* Mark state as coming so strong_try_module_get() ignores us. */
        mod->state = MODULE_STATE_COMING;
  
-@@ -2920,11 +3043,10 @@ static struct module *load_module(void __user *umod,
+@@ -2921,11 +3044,10 @@ static struct module *load_module(void __user *umod,
   unlock:
        mutex_unlock(&module_mutex);
        synchronize_sched();
   unlock:
        mutex_unlock(&module_mutex);
        synchronize_sched();
@@ -67025,7 +67646,7 @@ index 04379f92..fba2faf 100644
   free_unload:
        module_unload_free(mod);
   free_module:
   free_unload:
        module_unload_free(mod);
   free_module:
-@@ -2965,16 +3087,16 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
+@@ -2966,16 +3088,16 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
                        MODULE_STATE_COMING, mod);
  
        /* Set RO and NX regions for core */
                        MODULE_STATE_COMING, mod);
  
        /* Set RO and NX regions for core */
@@ -67050,7 +67671,7 @@ index 04379f92..fba2faf 100644
  
        do_mod_ctors(mod);
        /* Start the module */
  
        do_mod_ctors(mod);
        /* Start the module */
-@@ -3020,11 +3142,12 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
+@@ -3021,11 +3143,12 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
        mod->strtab = mod->core_strtab;
  #endif
        unset_module_init_ro_nx(mod);
        mod->strtab = mod->core_strtab;
  #endif
        unset_module_init_ro_nx(mod);
@@ -67068,7 +67689,7 @@ index 04379f92..fba2faf 100644
        mutex_unlock(&module_mutex);
  
        return 0;
        mutex_unlock(&module_mutex);
  
        return 0;
-@@ -3055,10 +3178,16 @@ static const char *get_ksymbol(struct module *mod,
+@@ -3056,10 +3179,16 @@ static const char *get_ksymbol(struct module *mod,
        unsigned long nextval;
  
        /* At worse, next value is at end of module */
        unsigned long nextval;
  
        /* At worse, next value is at end of module */
@@ -67088,7 +67709,7 @@ index 04379f92..fba2faf 100644
  
        /* Scan for closest preceding symbol, and next symbol. (ELF
           starts real symbols at 1). */
  
        /* Scan for closest preceding symbol, and next symbol. (ELF
           starts real symbols at 1). */
-@@ -3304,7 +3433,7 @@ static int m_show(struct seq_file *m, void *p)
+@@ -3307,7 +3436,7 @@ static int m_show(struct seq_file *m, void *p)
        char buf[8];
  
        seq_printf(m, "%s %u",
        char buf[8];
  
        seq_printf(m, "%s %u",
@@ -67097,7 +67718,7 @@ index 04379f92..fba2faf 100644
        print_unload_info(m, mod);
  
        /* Informative for users. */
        print_unload_info(m, mod);
  
        /* Informative for users. */
-@@ -3313,7 +3442,7 @@ static int m_show(struct seq_file *m, void *p)
+@@ -3316,7 +3445,7 @@ static int m_show(struct seq_file *m, void *p)
                   mod->state == MODULE_STATE_COMING ? "Loading":
                   "Live");
        /* Used by oprofile and other similar tools. */
                   mod->state == MODULE_STATE_COMING ? "Loading":
                   "Live");
        /* Used by oprofile and other similar tools. */
@@ -67106,7 +67727,7 @@ index 04379f92..fba2faf 100644
  
        /* Taints info */
        if (mod->taints)
  
        /* Taints info */
        if (mod->taints)
-@@ -3349,7 +3478,17 @@ static const struct file_operations proc_modules_operations = {
+@@ -3352,7 +3481,17 @@ static const struct file_operations proc_modules_operations = {
  
  static int __init proc_modules_init(void)
  {
  
  static int __init proc_modules_init(void)
  {
@@ -67124,7 +67745,7 @@ index 04379f92..fba2faf 100644
        return 0;
  }
  module_init(proc_modules_init);
        return 0;
  }
  module_init(proc_modules_init);
-@@ -3408,12 +3547,12 @@ struct module *__module_address(unsigned long addr)
+@@ -3411,12 +3550,12 @@ struct module *__module_address(unsigned long addr)
  {
        struct module *mod;
  
  {
        struct module *mod;
  
@@ -67140,7 +67761,7 @@ index 04379f92..fba2faf 100644
                        return mod;
        return NULL;
  }
                        return mod;
        return NULL;
  }
-@@ -3447,11 +3586,20 @@ bool is_module_text_address(unsigned long addr)
+@@ -3450,11 +3589,20 @@ bool is_module_text_address(unsigned long addr)
   */
  struct module *__module_text_address(unsigned long addr)
  {
   */
  struct module *__module_text_address(unsigned long addr)
  {
@@ -67165,7 +67786,7 @@ index 04379f92..fba2faf 100644
        }
        return mod;
 diff --git a/kernel/mutex-debug.c b/kernel/mutex-debug.c
        }
        return mod;
 diff --git a/kernel/mutex-debug.c b/kernel/mutex-debug.c
-index 73da83a..fe46e99 100644
+index 7e3443f..b2a1e6b 100644
 --- a/kernel/mutex-debug.c
 +++ b/kernel/mutex-debug.c
 @@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mutex_waiter *waiter)
 --- a/kernel/mutex-debug.c
 +++ b/kernel/mutex-debug.c
 @@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mutex_waiter *waiter)
@@ -67213,7 +67834,7 @@ index 0799fd3..d06ae3b 100644
  extern void debug_mutex_init(struct mutex *lock, const char *name,
                             struct lock_class_key *key);
 diff --git a/kernel/mutex.c b/kernel/mutex.c
  extern void debug_mutex_init(struct mutex *lock, const char *name,
                             struct lock_class_key *key);
 diff --git a/kernel/mutex.c b/kernel/mutex.c
-index d607ed5..58d0a52 100644
+index 89096dd..f91ebc5 100644
 --- a/kernel/mutex.c
 +++ b/kernel/mutex.c
 @@ -198,7 +198,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
 --- a/kernel/mutex.c
 +++ b/kernel/mutex.c
 @@ -198,7 +198,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
@@ -67245,7 +67866,7 @@ index d607ed5..58d0a52 100644
  
        /* set it to 0 if there are no waiters left: */
 diff --git a/kernel/padata.c b/kernel/padata.c
  
        /* set it to 0 if there are no waiters left: */
 diff --git a/kernel/padata.c b/kernel/padata.c
-index b91941d..0871d60 100644
+index b452599..5d68f4e 100644
 --- a/kernel/padata.c
 +++ b/kernel/padata.c
 @@ -132,10 +132,10 @@ int padata_do_parallel(struct padata_instance *pinst,
 --- a/kernel/padata.c
 +++ b/kernel/padata.c
 @@ -132,10 +132,10 @@ int padata_do_parallel(struct padata_instance *pinst,
@@ -67272,10 +67893,23 @@ index b91941d..0871d60 100644
        atomic_set(&pd->refcnt, 0);
        pd->pinst = pinst;
 diff --git a/kernel/panic.c b/kernel/panic.c
        atomic_set(&pd->refcnt, 0);
        pd->pinst = pinst;
 diff --git a/kernel/panic.c b/kernel/panic.c
-index d7bb697..9ef9f19 100644
+index 3458469..342c500 100644
 --- a/kernel/panic.c
 +++ b/kernel/panic.c
 --- a/kernel/panic.c
 +++ b/kernel/panic.c
-@@ -371,7 +371,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller,
+@@ -78,7 +78,11 @@ NORET_TYPE void panic(const char * fmt, ...)
+       va_end(args);
+       printk(KERN_EMERG "Kernel panic - not syncing: %s\n",buf);
+ #ifdef CONFIG_DEBUG_BUGVERBOSE
+-      dump_stack();
++      /*
++       * Avoid nested stack-dumping if a panic occurs during oops processing
++       */
++      if (!oops_in_progress)
++              dump_stack();
+ #endif
+       /*
+@@ -382,7 +386,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller,
        const char *board;
  
        printk(KERN_WARNING "------------[ cut here ]------------\n");
        const char *board;
  
        printk(KERN_WARNING "------------[ cut here ]------------\n");
@@ -67284,7 +67918,7 @@ index d7bb697..9ef9f19 100644
        board = dmi_get_system_info(DMI_PRODUCT_NAME);
        if (board)
                printk(KERN_WARNING "Hardware name: %s\n", board);
        board = dmi_get_system_info(DMI_PRODUCT_NAME);
        if (board)
                printk(KERN_WARNING "Hardware name: %s\n", board);
-@@ -426,7 +426,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
+@@ -437,7 +441,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
   */
  void __stack_chk_fail(void)
  {
   */
  void __stack_chk_fail(void)
  {
@@ -67295,7 +67929,7 @@ index d7bb697..9ef9f19 100644
  }
  EXPORT_SYMBOL(__stack_chk_fail);
 diff --git a/kernel/pid.c b/kernel/pid.c
  }
  EXPORT_SYMBOL(__stack_chk_fail);
 diff --git a/kernel/pid.c b/kernel/pid.c
-index e432057..a2b2ac5 100644
+index fa5f722..0c93e57 100644
 --- a/kernel/pid.c
 +++ b/kernel/pid.c
 @@ -33,6 +33,7 @@
 --- a/kernel/pid.c
 +++ b/kernel/pid.c
 @@ -33,6 +33,7 @@
@@ -67315,14 +67949,17 @@ index e432057..a2b2ac5 100644
  
  int pid_max_min = RESERVED_PIDS + 1;
  int pid_max_max = PID_MAX_LIMIT;
  
  int pid_max_min = RESERVED_PIDS + 1;
  int pid_max_max = PID_MAX_LIMIT;
-@@ -418,8 +419,15 @@ EXPORT_SYMBOL(pid_task);
+@@ -418,10 +419,18 @@ EXPORT_SYMBOL(pid_task);
   */
  struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns)
  {
 +      struct task_struct *task;
 +
   */
  struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns)
  {
 +      struct task_struct *task;
 +
-       rcu_lockdep_assert(rcu_read_lock_held());
+       rcu_lockdep_assert(rcu_read_lock_held(),
+                          "find_task_by_pid_ns() needs rcu_read_lock()"
+                          " protection");
 -      return pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
 -      return pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
++
 +      task = pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
 +
 +      if (gr_pid_is_chrooted(task))
 +      task = pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
 +
 +      if (gr_pid_is_chrooted(task))
@@ -67332,13 +67969,15 @@ index e432057..a2b2ac5 100644
  }
  
  struct task_struct *find_task_by_vpid(pid_t vnr)
  }
  
  struct task_struct *find_task_by_vpid(pid_t vnr)
-@@ -427,6 +435,12 @@ struct task_struct *find_task_by_vpid(pid_t vnr)
+@@ -429,6 +438,14 @@ struct task_struct *find_task_by_vpid(pid_t vnr)
        return find_task_by_pid_ns(vnr, current->nsproxy->pid_ns);
  }
  
 +struct task_struct *find_task_by_vpid_unrestricted(pid_t vnr)
 +{
        return find_task_by_pid_ns(vnr, current->nsproxy->pid_ns);
  }
  
 +struct task_struct *find_task_by_vpid_unrestricted(pid_t vnr)
 +{
-+      rcu_lockdep_assert(rcu_read_lock_held());       
++      rcu_lockdep_assert(rcu_read_lock_held(),
++                         "find_task_by_pid_ns() needs rcu_read_lock()"
++                         " protection");
 +      return pid_task(find_pid_ns(vnr, current->nsproxy->pid_ns), PIDTYPE_PID);
 +}
 +
 +      return pid_task(find_pid_ns(vnr, current->nsproxy->pid_ns), PIDTYPE_PID);
 +}
 +
@@ -67346,7 +67985,7 @@ index e432057..a2b2ac5 100644
  {
        struct pid *pid;
 diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
  {
        struct pid *pid;
 diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
-index 640ded8..3dafb85 100644
+index e7cb76d..75eceb3 100644
 --- a/kernel/posix-cpu-timers.c
 +++ b/kernel/posix-cpu-timers.c
 @@ -6,6 +6,7 @@
 --- a/kernel/posix-cpu-timers.c
 +++ b/kernel/posix-cpu-timers.c
 @@ -6,6 +6,7 @@
@@ -67375,7 +68014,7 @@ index 640ded8..3dafb85 100644
                .clock_get      = thread_cpu_clock_get,
                .timer_create   = thread_cpu_timer_create,
 diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
                .clock_get      = thread_cpu_clock_get,
                .timer_create   = thread_cpu_timer_create,
 diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
-index 4556182..9335419 100644
+index 69185ae..cc2847a 100644
 --- a/kernel/posix-timers.c
 +++ b/kernel/posix-timers.c
 @@ -43,6 +43,7 @@
 --- a/kernel/posix-timers.c
 +++ b/kernel/posix-timers.c
 @@ -43,6 +43,7 @@
@@ -67437,16 +68076,7 @@ index 4556182..9335419 100644
                .clock_getres   = hrtimer_get_res,
                .clock_get      = posix_get_boottime,
                .nsleep         = common_nsleep,
                .clock_getres   = hrtimer_get_res,
                .clock_get      = posix_get_boottime,
                .nsleep         = common_nsleep,
-@@ -272,6 +273,8 @@ static __init int init_posix_timers(void)
-               .timer_del      = common_timer_del,
-       };
-+      pax_track_stack();
-+
-       posix_timers_register_clock(CLOCK_REALTIME, &clock_realtime);
-       posix_timers_register_clock(CLOCK_MONOTONIC, &clock_monotonic);
-       posix_timers_register_clock(CLOCK_MONOTONIC_RAW, &clock_monotonic_raw);
-@@ -473,7 +476,7 @@ void posix_timers_register_clock(const clockid_t clock_id,
+@@ -473,7 +474,7 @@ void posix_timers_register_clock(const clockid_t clock_id,
                return;
        }
  
                return;
        }
  
@@ -67455,7 +68085,7 @@ index 4556182..9335419 100644
  }
  EXPORT_SYMBOL_GPL(posix_timers_register_clock);
  
  }
  EXPORT_SYMBOL_GPL(posix_timers_register_clock);
  
-@@ -519,9 +522,9 @@ static struct k_clock *clockid_to_kclock(const clockid_t id)
+@@ -519,9 +520,9 @@ static struct k_clock *clockid_to_kclock(const clockid_t id)
                return (id & CLOCKFD_MASK) == CLOCKFD ?
                        &clock_posix_dynamic : &clock_posix_cpu;
  
                return (id & CLOCKFD_MASK) == CLOCKFD ?
                        &clock_posix_dynamic : &clock_posix_cpu;
  
@@ -67467,7 +68097,7 @@ index 4556182..9335419 100644
  }
  
  static int common_timer_create(struct k_itimer *new_timer)
  }
  
  static int common_timer_create(struct k_itimer *new_timer)
-@@ -959,6 +962,13 @@ SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock,
+@@ -959,6 +960,13 @@ SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock,
        if (copy_from_user(&new_tp, tp, sizeof (*tp)))
                return -EFAULT;
  
        if (copy_from_user(&new_tp, tp, sizeof (*tp)))
                return -EFAULT;
  
@@ -67495,7 +68125,7 @@ index d523593..68197a4 100644
        register_sysrq_key('o', &sysrq_poweroff_op);
        return 0;
 diff --git a/kernel/power/process.c b/kernel/power/process.c
        register_sysrq_key('o', &sysrq_poweroff_op);
        return 0;
 diff --git a/kernel/power/process.c b/kernel/power/process.c
-index 0cf3a27..5481be4 100644
+index 3d4b954..11af930 100644
 --- a/kernel/power/process.c
 +++ b/kernel/power/process.c
 @@ -41,6 +41,7 @@ static int try_to_freeze_tasks(bool sig_only)
 --- a/kernel/power/process.c
 +++ b/kernel/power/process.c
 @@ -41,6 +41,7 @@ static int try_to_freeze_tasks(bool sig_only)
@@ -67541,7 +68171,7 @@ index 0cf3a27..5481be4 100644
  
                if (pm_wakeup_pending()) {
 diff --git a/kernel/printk.c b/kernel/printk.c
  
                if (pm_wakeup_pending()) {
 diff --git a/kernel/printk.c b/kernel/printk.c
-index 28a40d8..2411bec 100644
+index 7982a0a..2095fdc 100644
 --- a/kernel/printk.c
 +++ b/kernel/printk.c
 @@ -313,6 +313,11 @@ static int check_syslog_permissions(int type, bool from_file)
 --- a/kernel/printk.c
 +++ b/kernel/printk.c
 @@ -313,6 +313,11 @@ static int check_syslog_permissions(int type, bool from_file)
@@ -67557,7 +68187,7 @@ index 28a40d8..2411bec 100644
                if (capable(CAP_SYSLOG))
                        return 0;
 diff --git a/kernel/profile.c b/kernel/profile.c
                if (capable(CAP_SYSLOG))
                        return 0;
 diff --git a/kernel/profile.c b/kernel/profile.c
-index 961b389..c451353 100644
+index 76b8e77..a2930e8 100644
 --- a/kernel/profile.c
 +++ b/kernel/profile.c
 @@ -39,7 +39,7 @@ struct profile_hit {
 --- a/kernel/profile.c
 +++ b/kernel/profile.c
 @@ -39,7 +39,7 @@ struct profile_hit {
@@ -67618,10 +68248,10 @@ index 961b389..c451353 100644
  }
  
 diff --git a/kernel/ptrace.c b/kernel/ptrace.c
  }
  
 diff --git a/kernel/ptrace.c b/kernel/ptrace.c
-index a70d2a5..cbd4b4f 100644
+index 78ab24a..332c915 100644
 --- a/kernel/ptrace.c
 +++ b/kernel/ptrace.c
 --- a/kernel/ptrace.c
 +++ b/kernel/ptrace.c
-@@ -161,7 +161,8 @@ int ptrace_check_attach(struct task_struct *child, bool ignore_state)
+@@ -172,7 +172,8 @@ int ptrace_check_attach(struct task_struct *child, bool ignore_state)
        return ret;
  }
  
        return ret;
  }
  
@@ -67631,7 +68261,7 @@ index a70d2a5..cbd4b4f 100644
  {
        const struct cred *cred = current_cred(), *tcred;
  
  {
        const struct cred *cred = current_cred(), *tcred;
  
-@@ -187,7 +188,8 @@ int __ptrace_may_access(struct task_struct *task, unsigned int mode)
+@@ -198,7 +199,8 @@ int __ptrace_may_access(struct task_struct *task, unsigned int mode)
             cred->gid == tcred->sgid &&
             cred->gid == tcred->gid))
                goto ok;
             cred->gid == tcred->sgid &&
             cred->gid == tcred->gid))
                goto ok;
@@ -67641,7 +68271,7 @@ index a70d2a5..cbd4b4f 100644
                goto ok;
        rcu_read_unlock();
        return -EPERM;
                goto ok;
        rcu_read_unlock();
        return -EPERM;
-@@ -196,7 +198,9 @@ ok:
+@@ -207,7 +209,9 @@ ok:
        smp_rmb();
        if (task->mm)
                dumpable = get_dumpable(task->mm);
        smp_rmb();
        if (task->mm)
                dumpable = get_dumpable(task->mm);
@@ -67652,7 +68282,7 @@ index a70d2a5..cbd4b4f 100644
                return -EPERM;
  
        return security_ptrace_access_check(task, mode);
                return -EPERM;
  
        return security_ptrace_access_check(task, mode);
-@@ -206,7 +210,16 @@ bool ptrace_may_access(struct task_struct *task, unsigned int mode)
+@@ -217,7 +221,21 @@ bool ptrace_may_access(struct task_struct *task, unsigned int mode)
  {
        int err;
        task_lock(task);
  {
        int err;
        task_lock(task);
@@ -67662,6 +68292,11 @@ index a70d2a5..cbd4b4f 100644
 +      return !err;
 +}
 +
 +      return !err;
 +}
 +
++bool ptrace_may_access_nolock(struct task_struct *task, unsigned int mode)
++{
++      return __ptrace_may_access(task, mode, 0);
++}
++
 +bool ptrace_may_access_log(struct task_struct *task, unsigned int mode)
 +{
 +      int err;
 +bool ptrace_may_access_log(struct task_struct *task, unsigned int mode)
 +{
 +      int err;
@@ -67670,7 +68305,7 @@ index a70d2a5..cbd4b4f 100644
        task_unlock(task);
        return !err;
  }
        task_unlock(task);
        return !err;
  }
-@@ -251,7 +264,7 @@ static int ptrace_attach(struct task_struct *task, long request,
+@@ -262,7 +280,7 @@ static int ptrace_attach(struct task_struct *task, long request,
                goto out;
  
        task_lock(task);
                goto out;
  
        task_lock(task);
@@ -67679,7 +68314,7 @@ index a70d2a5..cbd4b4f 100644
        task_unlock(task);
        if (retval)
                goto unlock_creds;
        task_unlock(task);
        if (retval)
                goto unlock_creds;
-@@ -266,7 +279,7 @@ static int ptrace_attach(struct task_struct *task, long request,
+@@ -277,7 +295,7 @@ static int ptrace_attach(struct task_struct *task, long request,
        task->ptrace = PT_PTRACED;
        if (seize)
                task->ptrace |= PT_SEIZED;
        task->ptrace = PT_PTRACED;
        if (seize)
                task->ptrace |= PT_SEIZED;
@@ -67688,16 +68323,7 @@ index a70d2a5..cbd4b4f 100644
                task->ptrace |= PT_PTRACE_CAP;
  
        __ptrace_link(task, current);
                task->ptrace |= PT_PTRACE_CAP;
  
        __ptrace_link(task, current);
-@@ -461,6 +474,8 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst
- {
-       int copied = 0;
-+      pax_track_stack();
-+
-       while (len > 0) {
-               char buf[128];
-               int this_len, retval;
-@@ -472,7 +487,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst
+@@ -483,7 +501,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst
                                break;
                        return -EIO;
                }
                                break;
                        return -EIO;
                }
@@ -67706,16 +68332,7 @@ index a70d2a5..cbd4b4f 100644
                        return -EFAULT;
                copied += retval;
                src += retval;
                        return -EFAULT;
                copied += retval;
                src += retval;
-@@ -486,6 +501,8 @@ int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long ds
- {
-       int copied = 0;
-+      pax_track_stack();
-+
-       while (len > 0) {
-               char buf[128];
-               int this_len, retval;
-@@ -669,10 +686,12 @@ int ptrace_request(struct task_struct *child, long request,
+@@ -680,7 +698,7 @@ int ptrace_request(struct task_struct *child, long request,
        bool seized = child->ptrace & PT_SEIZED;
        int ret = -EIO;
        siginfo_t siginfo, *si;
        bool seized = child->ptrace & PT_SEIZED;
        int ret = -EIO;
        siginfo_t siginfo, *si;
@@ -67724,12 +68341,7 @@ index a70d2a5..cbd4b4f 100644
        unsigned long __user *datalp = datavp;
        unsigned long flags;
  
        unsigned long __user *datalp = datavp;
        unsigned long flags;
  
-+      pax_track_stack();
-+
-       switch (request) {
-       case PTRACE_PEEKTEXT:
-       case PTRACE_PEEKDATA:
-@@ -871,14 +890,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
+@@ -882,14 +900,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
                goto out;
        }
  
                goto out;
        }
  
@@ -67752,7 +68364,7 @@ index a70d2a5..cbd4b4f 100644
                goto out_put_task_struct;
        }
  
                goto out_put_task_struct;
        }
  
-@@ -904,7 +930,7 @@ int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,
+@@ -915,7 +940,7 @@ int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,
        copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0);
        if (copied != sizeof(tmp))
                return -EIO;
        copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0);
        if (copied != sizeof(tmp))
                return -EIO;
@@ -67761,16 +68373,7 @@ index a70d2a5..cbd4b4f 100644
  }
  
  int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
  }
  
  int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
-@@ -927,6 +953,8 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request,
-       siginfo_t siginfo;
-       int ret;
-+      pax_track_stack();
-+
-       switch (request) {
-       case PTRACE_PEEKTEXT:
-       case PTRACE_PEEKDATA:
-@@ -1014,14 +1042,21 @@ asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid,
+@@ -1025,14 +1050,21 @@ asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid,
                goto out;
        }
  
                goto out;
        }
  
@@ -67793,8 +68396,30 @@ index a70d2a5..cbd4b4f 100644
                goto out_put_task_struct;
        }
  
                goto out_put_task_struct;
        }
  
+diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c
+index 636af6d..8af70ab 100644
+--- a/kernel/rcutiny.c
++++ b/kernel/rcutiny.c
+@@ -46,7 +46,7 @@
+ struct rcu_ctrlblk;
+ static void invoke_rcu_callbacks(void);
+ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp);
+-static void rcu_process_callbacks(struct softirq_action *unused);
++static void rcu_process_callbacks(void);
+ static void __call_rcu(struct rcu_head *head,
+                      void (*func)(struct rcu_head *rcu),
+                      struct rcu_ctrlblk *rcp);
+@@ -186,7 +186,7 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp)
+       RCU_TRACE(trace_rcu_batch_end(rcp->name, cb_count));
+ }
+-static void rcu_process_callbacks(struct softirq_action *unused)
++static void rcu_process_callbacks(void)
+ {
+       __rcu_process_callbacks(&rcu_sched_ctrlblk);
+       __rcu_process_callbacks(&rcu_bh_ctrlblk);
 diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
 diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
-index 98f51b1..30b950c 100644
+index 764825c..3aa6ac4 100644
 --- a/kernel/rcutorture.c
 +++ b/kernel/rcutorture.c
 @@ -138,12 +138,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count) =
 --- a/kernel/rcutorture.c
 +++ b/kernel/rcutorture.c
 @@ -138,12 +138,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count) =
@@ -67857,7 +68482,7 @@ index 98f51b1..30b950c 100644
                if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
                        rp->rtort_mbtest = 0;
                        list_del(&rp->rtort_free);
                if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
                        rp->rtort_mbtest = 0;
                        list_del(&rp->rtort_free);
-@@ -882,7 +882,7 @@ rcu_torture_writer(void *arg)
+@@ -872,7 +872,7 @@ rcu_torture_writer(void *arg)
                        i = old_rp->rtort_pipe_count;
                        if (i > RCU_TORTURE_PIPE_LEN)
                                i = RCU_TORTURE_PIPE_LEN;
                        i = old_rp->rtort_pipe_count;
                        if (i > RCU_TORTURE_PIPE_LEN)
                                i = RCU_TORTURE_PIPE_LEN;
@@ -67866,7 +68491,7 @@ index 98f51b1..30b950c 100644
                        old_rp->rtort_pipe_count++;
                        cur_ops->deferred_free(old_rp);
                }
                        old_rp->rtort_pipe_count++;
                        cur_ops->deferred_free(old_rp);
                }
-@@ -950,7 +950,7 @@ static void rcu_torture_timer(unsigned long unused)
+@@ -940,7 +940,7 @@ static void rcu_torture_timer(unsigned long unused)
                return;
        }
        if (p->rtort_mbtest == 0)
                return;
        }
        if (p->rtort_mbtest == 0)
@@ -67875,7 +68500,7 @@ index 98f51b1..30b950c 100644
        spin_lock(&rand_lock);
        cur_ops->read_delay(&rand);
        n_rcu_torture_timers++;
        spin_lock(&rand_lock);
        cur_ops->read_delay(&rand);
        n_rcu_torture_timers++;
-@@ -1011,7 +1011,7 @@ rcu_torture_reader(void *arg)
+@@ -1001,7 +1001,7 @@ rcu_torture_reader(void *arg)
                        continue;
                }
                if (p->rtort_mbtest == 0)
                        continue;
                }
                if (p->rtort_mbtest == 0)
@@ -67884,7 +68509,7 @@ index 98f51b1..30b950c 100644
                cur_ops->read_delay(&rand);
                preempt_disable();
                pipe_count = p->rtort_pipe_count;
                cur_ops->read_delay(&rand);
                preempt_disable();
                pipe_count = p->rtort_pipe_count;
-@@ -1070,16 +1070,16 @@ rcu_torture_printk(char *page)
+@@ -1060,16 +1060,16 @@ rcu_torture_printk(char *page)
                       rcu_torture_current,
                       rcu_torture_current_version,
                       list_empty(&rcu_torture_freelist),
                       rcu_torture_current,
                       rcu_torture_current_version,
                       list_empty(&rcu_torture_freelist),
@@ -67906,7 +68531,7 @@ index 98f51b1..30b950c 100644
            n_rcu_torture_boost_ktrerror != 0 ||
            n_rcu_torture_boost_rterror != 0 ||
            n_rcu_torture_boost_failure != 0)
            n_rcu_torture_boost_ktrerror != 0 ||
            n_rcu_torture_boost_rterror != 0 ||
            n_rcu_torture_boost_failure != 0)
-@@ -1087,7 +1087,7 @@ rcu_torture_printk(char *page)
+@@ -1077,7 +1077,7 @@ rcu_torture_printk(char *page)
        cnt += sprintf(&page[cnt], "\n%s%s ", torture_type, TORTURE_FLAG);
        if (i > 1) {
                cnt += sprintf(&page[cnt], "!!! ");
        cnt += sprintf(&page[cnt], "\n%s%s ", torture_type, TORTURE_FLAG);
        if (i > 1) {
                cnt += sprintf(&page[cnt], "!!! ");
@@ -67915,7 +68540,7 @@ index 98f51b1..30b950c 100644
                WARN_ON_ONCE(1);
        }
        cnt += sprintf(&page[cnt], "Reader Pipe: ");
                WARN_ON_ONCE(1);
        }
        cnt += sprintf(&page[cnt], "Reader Pipe: ");
-@@ -1101,7 +1101,7 @@ rcu_torture_printk(char *page)
+@@ -1091,7 +1091,7 @@ rcu_torture_printk(char *page)
        cnt += sprintf(&page[cnt], "Free-Block Circulation: ");
        for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
                cnt += sprintf(&page[cnt], " %d",
        cnt += sprintf(&page[cnt], "Free-Block Circulation: ");
        for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
                cnt += sprintf(&page[cnt], " %d",
@@ -67924,7 +68549,7 @@ index 98f51b1..30b950c 100644
        }
        cnt += sprintf(&page[cnt], "\n");
        if (cur_ops->stats)
        }
        cnt += sprintf(&page[cnt], "\n");
        if (cur_ops->stats)
-@@ -1410,7 +1410,7 @@ rcu_torture_cleanup(void)
+@@ -1401,7 +1401,7 @@ rcu_torture_cleanup(void)
  
        if (cur_ops->cleanup)
                cur_ops->cleanup();
  
        if (cur_ops->cleanup)
                cur_ops->cleanup();
@@ -67933,7 +68558,7 @@ index 98f51b1..30b950c 100644
                rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE");
        else
                rcu_torture_print_module_parms(cur_ops, "End of test: SUCCESS");
                rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE");
        else
                rcu_torture_print_module_parms(cur_ops, "End of test: SUCCESS");
-@@ -1474,17 +1474,17 @@ rcu_torture_init(void)
+@@ -1465,17 +1465,17 @@ rcu_torture_init(void)
  
        rcu_torture_current = NULL;
        rcu_torture_current_version = 0;
  
        rcu_torture_current = NULL;
        rcu_torture_current_version = 0;
@@ -67958,11 +68583,11 @@ index 98f51b1..30b950c 100644
                for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
                        per_cpu(rcu_torture_count, cpu)[i] = 0;
 diff --git a/kernel/rcutree.c b/kernel/rcutree.c
                for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
                        per_cpu(rcu_torture_count, cpu)[i] = 0;
 diff --git a/kernel/rcutree.c b/kernel/rcutree.c
-index ba06207..85d8ba8 100644
+index 6b76d81..7afc1b3 100644
 --- a/kernel/rcutree.c
 +++ b/kernel/rcutree.c
 --- a/kernel/rcutree.c
 +++ b/kernel/rcutree.c
-@@ -356,9 +356,9 @@ void rcu_enter_nohz(void)
-       }
+@@ -367,9 +367,9 @@ void rcu_enter_nohz(void)
+       trace_rcu_dyntick("Start");
        /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
        smp_mb__before_atomic_inc();  /* See above. */
 -      atomic_inc(&rdtp->dynticks);
        /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
        smp_mb__before_atomic_inc();  /* See above. */
 -      atomic_inc(&rdtp->dynticks);
@@ -67971,9 +68596,9 @@ index ba06207..85d8ba8 100644
 -      WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
 +      WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
        local_irq_restore(flags);
 -      WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
 +      WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
        local_irq_restore(flags);
+ }
  
  
-       /* If the interrupt queued a callback, get out of dyntick mode. */
-@@ -387,10 +387,10 @@ void rcu_exit_nohz(void)
+@@ -391,10 +391,10 @@ void rcu_exit_nohz(void)
                return;
        }
        smp_mb__before_atomic_inc();  /* Force ordering w/previous sojourn. */
                return;
        }
        smp_mb__before_atomic_inc();  /* Force ordering w/previous sojourn. */
@@ -67983,10 +68608,10 @@ index ba06207..85d8ba8 100644
        smp_mb__after_atomic_inc();  /* See above. */
 -      WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
 +      WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
        smp_mb__after_atomic_inc();  /* See above. */
 -      WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
 +      WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
+       trace_rcu_dyntick("End");
        local_irq_restore(flags);
  }
        local_irq_restore(flags);
  }
-@@ -406,14 +406,14 @@ void rcu_nmi_enter(void)
+@@ -411,14 +411,14 @@ void rcu_nmi_enter(void)
        struct rcu_dynticks *rdtp = &__get_cpu_var(rcu_dynticks);
  
        if (rdtp->dynticks_nmi_nesting == 0 &&
        struct rcu_dynticks *rdtp = &__get_cpu_var(rcu_dynticks);
  
        if (rdtp->dynticks_nmi_nesting == 0 &&
@@ -68004,7 +68629,7 @@ index ba06207..85d8ba8 100644
  }
  
  /**
  }
  
  /**
-@@ -432,9 +432,9 @@ void rcu_nmi_exit(void)
+@@ -437,9 +437,9 @@ void rcu_nmi_exit(void)
                return;
        /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
        smp_mb__before_atomic_inc();  /* See above. */
                return;
        /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
        smp_mb__before_atomic_inc();  /* See above. */
@@ -68016,7 +68641,7 @@ index ba06207..85d8ba8 100644
  }
  
  /**
  }
  
  /**
-@@ -469,7 +469,7 @@ void rcu_irq_exit(void)
+@@ -474,7 +474,7 @@ void rcu_irq_exit(void)
   */
  static int dyntick_save_progress_counter(struct rcu_data *rdp)
  {
   */
  static int dyntick_save_progress_counter(struct rcu_data *rdp)
  {
@@ -68025,26 +68650,26 @@ index ba06207..85d8ba8 100644
        return 0;
  }
  
        return 0;
  }
  
-@@ -484,7 +484,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp)
-       unsigned long curr;
-       unsigned long snap;
+@@ -489,7 +489,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp)
+       unsigned int curr;
+       unsigned int snap;
  
  
--      curr = (unsigned long)atomic_add_return(0, &rdp->dynticks->dynticks);
-+      curr = (unsigned long)atomic_add_return_unchecked(0, &rdp->dynticks->dynticks);
-       snap = (unsigned long)rdp->dynticks_snap;
+-      curr = (unsigned int)atomic_add_return(0, &rdp->dynticks->dynticks);
++      curr = (unsigned int)atomic_add_return_unchecked(0, &rdp->dynticks->dynticks);
+       snap = (unsigned int)rdp->dynticks_snap;
  
        /*
  
        /*
-@@ -1470,7 +1470,7 @@ __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp)
+@@ -1552,7 +1552,7 @@ __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp)
  /*
  /*
-  * Do softirq processing for the current CPU.
+  * Do RCU core processing for the current CPU.
   */
 -static void rcu_process_callbacks(struct softirq_action *unused)
 +static void rcu_process_callbacks(void)
  {
   */
 -static void rcu_process_callbacks(struct softirq_action *unused)
 +static void rcu_process_callbacks(void)
  {
+       trace_rcu_utilization("Start RCU core");
        __rcu_process_callbacks(&rcu_sched_state,
        __rcu_process_callbacks(&rcu_sched_state,
-                               &__get_cpu_var(rcu_sched_data));
 diff --git a/kernel/rcutree.h b/kernel/rcutree.h
 diff --git a/kernel/rcutree.h b/kernel/rcutree.h
-index 01b2ccd..4f5d80a 100644
+index 849ce9e..74bc9de 100644
 --- a/kernel/rcutree.h
 +++ b/kernel/rcutree.h
 @@ -86,7 +86,7 @@
 --- a/kernel/rcutree.h
 +++ b/kernel/rcutree.h
 @@ -86,7 +86,7 @@
@@ -68057,10 +68682,10 @@ index 01b2ccd..4f5d80a 100644
  
  /* RCU's kthread states for tracing. */
 diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
  
  /* RCU's kthread states for tracing. */
 diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
-index 8aafbb8..2fca109 100644
+index 4b9b9f8..2326053 100644
 --- a/kernel/rcutree_plugin.h
 +++ b/kernel/rcutree_plugin.h
 --- a/kernel/rcutree_plugin.h
 +++ b/kernel/rcutree_plugin.h
-@@ -822,7 +822,7 @@ void synchronize_rcu_expedited(void)
+@@ -842,7 +842,7 @@ void synchronize_rcu_expedited(void)
  
        /* Clean up and exit. */
        smp_mb(); /* ensure expedited GP seen before counter increment. */
  
        /* Clean up and exit. */
        smp_mb(); /* ensure expedited GP seen before counter increment. */
@@ -68069,7 +68694,7 @@ index 8aafbb8..2fca109 100644
  unlock_mb_ret:
        mutex_unlock(&sync_rcu_preempt_exp_mutex);
  mb_ret:
  unlock_mb_ret:
        mutex_unlock(&sync_rcu_preempt_exp_mutex);
  mb_ret:
-@@ -1774,8 +1774,8 @@ EXPORT_SYMBOL_GPL(synchronize_sched_expedited);
+@@ -1815,8 +1815,8 @@ EXPORT_SYMBOL_GPL(synchronize_sched_expedited);
  
  #else /* #ifndef CONFIG_SMP */
  
  
  #else /* #ifndef CONFIG_SMP */
  
@@ -68080,7 +68705,7 @@ index 8aafbb8..2fca109 100644
  
  static int synchronize_sched_expedited_cpu_stop(void *data)
  {
  
  static int synchronize_sched_expedited_cpu_stop(void *data)
  {
-@@ -1830,7 +1830,7 @@ void synchronize_sched_expedited(void)
+@@ -1871,7 +1871,7 @@ void synchronize_sched_expedited(void)
        int firstsnap, s, snap, trycount = 0;
  
        /* Note that atomic_inc_return() implies full memory barrier. */
        int firstsnap, s, snap, trycount = 0;
  
        /* Note that atomic_inc_return() implies full memory barrier. */
@@ -68089,7 +68714,7 @@ index 8aafbb8..2fca109 100644
        get_online_cpus();
  
        /*
        get_online_cpus();
  
        /*
-@@ -1851,7 +1851,7 @@ void synchronize_sched_expedited(void)
+@@ -1892,7 +1892,7 @@ void synchronize_sched_expedited(void)
                }
  
                /* Check to see if someone else did our work for us. */
                }
  
                /* Check to see if someone else did our work for us. */
@@ -68098,7 +68723,7 @@ index 8aafbb8..2fca109 100644
                if (UINT_CMP_GE((unsigned)s, (unsigned)firstsnap)) {
                        smp_mb(); /* ensure test happens before caller kfree */
                        return;
                if (UINT_CMP_GE((unsigned)s, (unsigned)firstsnap)) {
                        smp_mb(); /* ensure test happens before caller kfree */
                        return;
-@@ -1866,7 +1866,7 @@ void synchronize_sched_expedited(void)
+@@ -1907,7 +1907,7 @@ void synchronize_sched_expedited(void)
                 * grace period works for us.
                 */
                get_online_cpus();
                 * grace period works for us.
                 */
                get_online_cpus();
@@ -68107,7 +68732,7 @@ index 8aafbb8..2fca109 100644
                smp_mb(); /* ensure read is before try_stop_cpus(). */
        }
  
                smp_mb(); /* ensure read is before try_stop_cpus(). */
        }
  
-@@ -1877,12 +1877,12 @@ void synchronize_sched_expedited(void)
+@@ -1918,12 +1918,12 @@ void synchronize_sched_expedited(void)
         * than we did beat us to the punch.
         */
        do {
         * than we did beat us to the punch.
         */
        do {
@@ -68122,7 +68747,7 @@ index 8aafbb8..2fca109 100644
  
        put_online_cpus();
  }
  
        put_online_cpus();
  }
-@@ -1953,7 +1953,7 @@ int rcu_needs_cpu(int cpu)
+@@ -1985,7 +1985,7 @@ int rcu_needs_cpu(int cpu)
        for_each_online_cpu(thatcpu) {
                if (thatcpu == cpu)
                        continue;
        for_each_online_cpu(thatcpu) {
                if (thatcpu == cpu)
                        continue;
@@ -68132,10 +68757,10 @@ index 8aafbb8..2fca109 100644
                smp_mb(); /* Order sampling of snap with end of grace period. */
                if ((snap & 0x1) != 0) {
 diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c
                smp_mb(); /* Order sampling of snap with end of grace period. */
                if ((snap & 0x1) != 0) {
 diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c
-index 3b0c098..43ba2d8 100644
+index 9feffa4..54058df 100644
 --- a/kernel/rcutree_trace.c
 +++ b/kernel/rcutree_trace.c
 --- a/kernel/rcutree_trace.c
 +++ b/kernel/rcutree_trace.c
-@@ -74,7 +74,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
+@@ -69,7 +69,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
                   rdp->qs_pending);
  #ifdef CONFIG_NO_HZ
        seq_printf(m, " dt=%d/%d/%d df=%lu",
                   rdp->qs_pending);
  #ifdef CONFIG_NO_HZ
        seq_printf(m, " dt=%d/%d/%d df=%lu",
@@ -68144,7 +68769,7 @@ index 3b0c098..43ba2d8 100644
                   rdp->dynticks->dynticks_nesting,
                   rdp->dynticks->dynticks_nmi_nesting,
                   rdp->dynticks_fqs);
                   rdp->dynticks->dynticks_nesting,
                   rdp->dynticks->dynticks_nmi_nesting,
                   rdp->dynticks_fqs);
-@@ -148,7 +148,7 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp)
+@@ -143,7 +143,7 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp)
                   rdp->qs_pending);
  #ifdef CONFIG_NO_HZ
        seq_printf(m, ",%d,%d,%d,%lu",
                   rdp->qs_pending);
  #ifdef CONFIG_NO_HZ
        seq_printf(m, ",%d,%d,%d,%lu",
@@ -68153,21 +68778,8 @@ index 3b0c098..43ba2d8 100644
                   rdp->dynticks->dynticks_nesting,
                   rdp->dynticks->dynticks_nmi_nesting,
                   rdp->dynticks_fqs);
                   rdp->dynticks->dynticks_nesting,
                   rdp->dynticks->dynticks_nmi_nesting,
                   rdp->dynticks_fqs);
-diff --git a/kernel/relay.c b/kernel/relay.c
-index 859ea5a..096e2fe 100644
---- a/kernel/relay.c
-+++ b/kernel/relay.c
-@@ -1236,6 +1236,8 @@ static ssize_t subbuf_splice_actor(struct file *in,
-       };
-       ssize_t ret;
-+      pax_track_stack();
-+
-       if (rbuf->subbufs_produced == rbuf->subbufs_consumed)
-               return 0;
-       if (splice_grow_spd(pipe, &spd))
 diff --git a/kernel/resource.c b/kernel/resource.c
 diff --git a/kernel/resource.c b/kernel/resource.c
-index c8dc249..f1e2359 100644
+index 7640b3a..5879283 100644
 --- a/kernel/resource.c
 +++ b/kernel/resource.c
 @@ -141,8 +141,18 @@ static const struct file_operations proc_iomem_operations = {
 --- a/kernel/resource.c
 +++ b/kernel/resource.c
 @@ -141,8 +141,18 @@ static const struct file_operations proc_iomem_operations = {
@@ -68190,7 +68802,7 @@ index c8dc249..f1e2359 100644
  }
  __initcall(ioresources_init);
 diff --git a/kernel/rtmutex-tester.c b/kernel/rtmutex-tester.c
  }
  __initcall(ioresources_init);
 diff --git a/kernel/rtmutex-tester.c b/kernel/rtmutex-tester.c
-index 5c9ccd3..a35e22b 100644
+index 3d9f31c..7fefc9e 100644
 --- a/kernel/rtmutex-tester.c
 +++ b/kernel/rtmutex-tester.c
 @@ -20,7 +20,7 @@
 --- a/kernel/rtmutex-tester.c
 +++ b/kernel/rtmutex-tester.c
 @@ -20,7 +20,7 @@
@@ -68284,19 +68896,39 @@ index 5c9ccd3..a35e22b 100644
  
        default:
 diff --git a/kernel/sched.c b/kernel/sched.c
  
        default:
 diff --git a/kernel/sched.c b/kernel/sched.c
-index b50b0f0..1c6c591 100644
+index d6b149c..896cbb8 100644
 --- a/kernel/sched.c
 +++ b/kernel/sched.c
 --- a/kernel/sched.c
 +++ b/kernel/sched.c
-@@ -4264,6 +4264,8 @@ static void __sched __schedule(void)
-       struct rq *rq;
-       int cpu;
+@@ -4389,6 +4389,19 @@ pick_next_task(struct rq *rq)
+       BUG(); /* the idle class will always have a runnable task */
+ }
++#ifdef CONFIG_GRKERNSEC_SETXID
++extern void gr_delayed_cred_worker(void);
++static inline void gr_cred_schedule(void)
++{
++      if (unlikely(current->delayed_cred))
++              gr_delayed_cred_worker();
++}
++#else
++static inline void gr_cred_schedule(void)
++{
++}
++#endif
++
+ /*
+  * __schedule() is the main scheduler function.
+  */
+@@ -4408,6 +4421,8 @@ need_resched:
+       schedule_debug(prev);
  
  
-+      pax_track_stack();
++      gr_cred_schedule();
 +
 +
- need_resched:
-       preempt_disable();
-       cpu = smp_processor_id();
-@@ -4950,6 +4952,8 @@ int can_nice(const struct task_struct *p, const int nice)
+       if (sched_feat(HRTICK))
+               hrtick_clear(rq);
+@@ -5098,6 +5113,8 @@ int can_nice(const struct task_struct *p, const int nice)
        /* convert nice value [19,-20] to rlimit style value [1,40] */
        int nice_rlim = 20 - nice;
  
        /* convert nice value [19,-20] to rlimit style value [1,40] */
        int nice_rlim = 20 - nice;
  
@@ -68305,7 +68937,7 @@ index b50b0f0..1c6c591 100644
        return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
                capable(CAP_SYS_NICE));
  }
        return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
                capable(CAP_SYS_NICE));
  }
-@@ -4983,7 +4987,8 @@ SYSCALL_DEFINE1(nice, int, increment)
+@@ -5131,7 +5148,8 @@ SYSCALL_DEFINE1(nice, int, increment)
        if (nice > 19)
                nice = 19;
  
        if (nice > 19)
                nice = 19;
  
@@ -68315,7 +68947,7 @@ index b50b0f0..1c6c591 100644
                return -EPERM;
  
        retval = security_task_setnice(current, nice);
                return -EPERM;
  
        retval = security_task_setnice(current, nice);
-@@ -5127,6 +5132,7 @@ recheck:
+@@ -5288,6 +5306,7 @@ recheck:
                        unsigned long rlim_rtprio =
                                        task_rlimit(p, RLIMIT_RTPRIO);
  
                        unsigned long rlim_rtprio =
                                        task_rlimit(p, RLIMIT_RTPRIO);
  
@@ -68346,10 +68978,10 @@ index 429242f..d7cca82 100644
  #ifdef CONFIG_RT_GROUP_SCHED
        /*
 diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
  #ifdef CONFIG_RT_GROUP_SCHED
        /*
 diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
-index bc8ee99..b6f6492 100644
+index 8a39fa3..34f3dbc 100644
 --- a/kernel/sched_fair.c
 +++ b/kernel/sched_fair.c
 --- a/kernel/sched_fair.c
 +++ b/kernel/sched_fair.c
-@@ -4062,7 +4062,7 @@ static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle) { }
+@@ -4801,7 +4801,7 @@ static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle) { }
   * run_rebalance_domains is triggered when needed from the scheduler tick.
   * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
   */
   * run_rebalance_domains is triggered when needed from the scheduler tick.
   * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
   */
@@ -68359,7 +68991,7 @@ index bc8ee99..b6f6492 100644
        int this_cpu = smp_processor_id();
        struct rq *this_rq = cpu_rq(this_cpu);
 diff --git a/kernel/signal.c b/kernel/signal.c
        int this_cpu = smp_processor_id();
        struct rq *this_rq = cpu_rq(this_cpu);
 diff --git a/kernel/signal.c b/kernel/signal.c
-index 291c970..304bd03 100644
+index 2065515..aed2987 100644
 --- a/kernel/signal.c
 +++ b/kernel/signal.c
 @@ -45,12 +45,12 @@ static struct kmem_cache *sigqueue_cachep;
 --- a/kernel/signal.c
 +++ b/kernel/signal.c
 @@ -45,12 +45,12 @@ static struct kmem_cache *sigqueue_cachep;
@@ -68468,16 +69100,7 @@ index 291c970..304bd03 100644
  
        return ret;
  }
  
        return ret;
  }
-@@ -1909,6 +1932,8 @@ static void ptrace_do_notify(int signr, int exit_code, int why)
- {
-       siginfo_t info;
-+      pax_track_stack();
-+
-       memset(&info, 0, sizeof info);
-       info.si_signo = signr;
-       info.si_code = exit_code;
-@@ -2748,7 +2773,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
+@@ -2754,7 +2777,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
        int error = -ESRCH;
  
        rcu_read_lock();
        int error = -ESRCH;
  
        rcu_read_lock();
@@ -68495,7 +69118,7 @@ index 291c970..304bd03 100644
                error = check_kill_permission(sig, info, p);
                /*
 diff --git a/kernel/smp.c b/kernel/smp.c
                error = check_kill_permission(sig, info, p);
                /*
 diff --git a/kernel/smp.c b/kernel/smp.c
-index fb67dfa..f819e2e 100644
+index db197d6..17aef0b 100644
 --- a/kernel/smp.c
 +++ b/kernel/smp.c
 @@ -580,22 +580,22 @@ int smp_call_function(smp_call_func_t func, void *info, int wait)
 --- a/kernel/smp.c
 +++ b/kernel/smp.c
 @@ -580,22 +580,22 @@ int smp_call_function(smp_call_func_t func, void *info, int wait)
@@ -68526,7 +69149,7 @@ index fb67dfa..f819e2e 100644
        raw_spin_unlock_irq(&call_function.lock);
  }
 diff --git a/kernel/softirq.c b/kernel/softirq.c
        raw_spin_unlock_irq(&call_function.lock);
  }
 diff --git a/kernel/softirq.c b/kernel/softirq.c
-index fca82c3..1db9690 100644
+index 2c71d91..1021f81 100644
 --- a/kernel/softirq.c
 +++ b/kernel/softirq.c
 @@ -56,7 +56,7 @@ static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp
 --- a/kernel/softirq.c
 +++ b/kernel/softirq.c
 @@ -56,7 +56,7 @@ static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp
@@ -68580,10 +69203,10 @@ index fca82c3..1db9690 100644
        struct tasklet_struct *list;
  
 diff --git a/kernel/sys.c b/kernel/sys.c
        struct tasklet_struct *list;
  
 diff --git a/kernel/sys.c b/kernel/sys.c
-index 1dbbe69..e96e1dd 100644
+index 481611f..0754d86 100644
 --- a/kernel/sys.c
 +++ b/kernel/sys.c
 --- a/kernel/sys.c
 +++ b/kernel/sys.c
-@@ -157,6 +157,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error)
+@@ -158,6 +158,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error)
                error = -EACCES;
                goto out;
        }
                error = -EACCES;
                goto out;
        }
@@ -68596,7 +69219,7 @@ index 1dbbe69..e96e1dd 100644
        no_nice = security_task_setnice(p, niceval);
        if (no_nice) {
                error = no_nice;
        no_nice = security_task_setnice(p, niceval);
        if (no_nice) {
                error = no_nice;
-@@ -571,6 +577,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
+@@ -572,6 +578,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
                        goto error;
        }
  
                        goto error;
        }
  
@@ -68606,7 +69229,7 @@ index 1dbbe69..e96e1dd 100644
        if (rgid != (gid_t) -1 ||
            (egid != (gid_t) -1 && egid != old->gid))
                new->sgid = new->egid;
        if (rgid != (gid_t) -1 ||
            (egid != (gid_t) -1 && egid != old->gid))
                new->sgid = new->egid;
-@@ -600,6 +609,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
+@@ -601,6 +610,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
        old = current_cred();
  
        retval = -EPERM;
        old = current_cred();
  
        retval = -EPERM;
@@ -68617,7 +69240,16 @@ index 1dbbe69..e96e1dd 100644
        if (nsown_capable(CAP_SETGID))
                new->gid = new->egid = new->sgid = new->fsgid = gid;
        else if (gid == old->gid || gid == old->sgid)
        if (nsown_capable(CAP_SETGID))
                new->gid = new->egid = new->sgid = new->fsgid = gid;
        else if (gid == old->gid || gid == old->sgid)
-@@ -687,6 +700,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
+@@ -618,7 +631,7 @@ error:
+ /*
+  * change the user struct in a credentials set to match the new UID
+  */
+-static int set_user(struct cred *new)
++int set_user(struct cred *new)
+ {
+       struct user_struct *new_user;
+@@ -688,6 +701,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
                        goto error;
        }
  
                        goto error;
        }
  
@@ -68627,7 +69259,7 @@ index 1dbbe69..e96e1dd 100644
        if (new->uid != old->uid) {
                retval = set_user(new);
                if (retval < 0)
        if (new->uid != old->uid) {
                retval = set_user(new);
                if (retval < 0)
-@@ -731,6 +747,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
+@@ -732,6 +748,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
        old = current_cred();
  
        retval = -EPERM;
        old = current_cred();
  
        retval = -EPERM;
@@ -68640,7 +69272,7 @@ index 1dbbe69..e96e1dd 100644
        if (nsown_capable(CAP_SETUID)) {
                new->suid = new->uid = uid;
                if (uid != old->uid) {
        if (nsown_capable(CAP_SETUID)) {
                new->suid = new->uid = uid;
                if (uid != old->uid) {
-@@ -785,6 +807,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
+@@ -786,6 +808,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
                        goto error;
        }
  
                        goto error;
        }
  
@@ -68650,7 +69282,7 @@ index 1dbbe69..e96e1dd 100644
        if (ruid != (uid_t) -1) {
                new->uid = ruid;
                if (ruid != old->uid) {
        if (ruid != (uid_t) -1) {
                new->uid = ruid;
                if (ruid != old->uid) {
-@@ -849,6 +874,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
+@@ -850,6 +875,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
                        goto error;
        }
  
                        goto error;
        }
  
@@ -68660,7 +69292,7 @@ index 1dbbe69..e96e1dd 100644
        if (rgid != (gid_t) -1)
                new->gid = rgid;
        if (egid != (gid_t) -1)
        if (rgid != (gid_t) -1)
                new->gid = rgid;
        if (egid != (gid_t) -1)
-@@ -895,6 +923,9 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
+@@ -896,6 +924,9 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
        old = current_cred();
        old_fsuid = old->fsuid;
  
        old = current_cred();
        old_fsuid = old->fsuid;
  
@@ -68670,7 +69302,7 @@ index 1dbbe69..e96e1dd 100644
        if (uid == old->uid  || uid == old->euid  ||
            uid == old->suid || uid == old->fsuid ||
            nsown_capable(CAP_SETUID)) {
        if (uid == old->uid  || uid == old->euid  ||
            uid == old->suid || uid == old->fsuid ||
            nsown_capable(CAP_SETUID)) {
-@@ -905,6 +936,7 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
+@@ -906,6 +937,7 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
                }
        }
  
                }
        }
  
@@ -68678,7 +69310,7 @@ index 1dbbe69..e96e1dd 100644
        abort_creds(new);
        return old_fsuid;
  
        abort_creds(new);
        return old_fsuid;
  
-@@ -931,12 +963,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
+@@ -932,12 +964,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
        if (gid == old->gid  || gid == old->egid  ||
            gid == old->sgid || gid == old->fsgid ||
            nsown_capable(CAP_SETGID)) {
        if (gid == old->gid  || gid == old->egid  ||
            gid == old->sgid || gid == old->fsgid ||
            nsown_capable(CAP_SETGID)) {
@@ -68695,7 +69327,7 @@ index 1dbbe69..e96e1dd 100644
        abort_creds(new);
        return old_fsgid;
  
        abort_creds(new);
        return old_fsgid;
  
-@@ -1188,7 +1224,10 @@ static int override_release(char __user *release, int len)
+@@ -1189,7 +1225,10 @@ static int override_release(char __user *release, int len)
                }
                v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40;
                snprintf(buf, len, "2.6.%u%s", v, rest);
                }
                v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40;
                snprintf(buf, len, "2.6.%u%s", v, rest);
@@ -68707,7 +69339,7 @@ index 1dbbe69..e96e1dd 100644
        }
        return ret;
  }
        }
        return ret;
  }
-@@ -1242,19 +1281,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
+@@ -1243,19 +1282,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
                return -EFAULT;
  
        down_read(&uts_sem);
                return -EFAULT;
  
        down_read(&uts_sem);
@@ -68732,7 +69364,7 @@ index 1dbbe69..e96e1dd 100644
                                __OLD_UTS_LEN);
        error |= __put_user(0, name->machine + __OLD_UTS_LEN);
        up_read(&uts_sem);
                                __OLD_UTS_LEN);
        error |= __put_user(0, name->machine + __OLD_UTS_LEN);
        up_read(&uts_sem);
-@@ -1717,7 +1756,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
+@@ -1720,7 +1759,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
                        error = get_dumpable(me->mm);
                        break;
                case PR_SET_DUMPABLE:
                        error = get_dumpable(me->mm);
                        break;
                case PR_SET_DUMPABLE:
@@ -68742,10 +69374,10 @@ index 1dbbe69..e96e1dd 100644
                                break;
                        }
 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
                                break;
                        }
 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index 11d65b5..6957b37 100644
+index ae27196..7506d69 100644
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
-@@ -85,6 +85,13 @@
+@@ -86,6 +86,13 @@
  
  
  #if defined(CONFIG_SYSCTL)
  
  
  #if defined(CONFIG_SYSCTL)
@@ -68759,7 +69391,7 @@ index 11d65b5..6957b37 100644
  
  /* External variables not in a header file. */
  extern int sysctl_overcommit_memory;
  
  /* External variables not in a header file. */
  extern int sysctl_overcommit_memory;
-@@ -197,6 +204,7 @@ static int sysrq_sysctl_handler(ctl_table *table, int write,
+@@ -191,6 +198,7 @@ static int sysrq_sysctl_handler(ctl_table *table, int write,
  }
  
  #endif
  }
  
  #endif
@@ -68767,7 +69399,7 @@ index 11d65b5..6957b37 100644
  
  static struct ctl_table root_table[];
  static struct ctl_table_root sysctl_table_root;
  
  static struct ctl_table root_table[];
  static struct ctl_table_root sysctl_table_root;
-@@ -226,6 +234,20 @@ extern struct ctl_table epoll_table[];
+@@ -220,6 +228,20 @@ extern struct ctl_table epoll_table[];
  int sysctl_legacy_va_layout;
  #endif
  
  int sysctl_legacy_va_layout;
  #endif
  
@@ -68788,7 +69420,7 @@ index 11d65b5..6957b37 100644
  /* The default sysctl tables: */
  
  static struct ctl_table root_table[] = {
  /* The default sysctl tables: */
  
  static struct ctl_table root_table[] = {
-@@ -272,6 +294,22 @@ static int max_extfrag_threshold = 1000;
+@@ -266,6 +288,22 @@ static int max_extfrag_threshold = 1000;
  #endif
  
  static struct ctl_table kern_table[] = {
  #endif
  
  static struct ctl_table kern_table[] = {
@@ -68811,7 +69443,7 @@ index 11d65b5..6957b37 100644
        {
                .procname       = "sched_child_runs_first",
                .data           = &sysctl_sched_child_runs_first,
        {
                .procname       = "sched_child_runs_first",
                .data           = &sysctl_sched_child_runs_first,
-@@ -546,7 +584,7 @@ static struct ctl_table kern_table[] = {
+@@ -550,7 +588,7 @@ static struct ctl_table kern_table[] = {
                .data           = &modprobe_path,
                .maxlen         = KMOD_PATH_LEN,
                .mode           = 0644,
                .data           = &modprobe_path,
                .maxlen         = KMOD_PATH_LEN,
                .mode           = 0644,
@@ -68820,7 +69452,7 @@ index 11d65b5..6957b37 100644
        },
        {
                .procname       = "modules_disabled",
        },
        {
                .procname       = "modules_disabled",
-@@ -713,16 +751,20 @@ static struct ctl_table kern_table[] = {
+@@ -717,16 +755,20 @@ static struct ctl_table kern_table[] = {
                .extra1         = &zero,
                .extra2         = &one,
        },
                .extra1         = &zero,
                .extra2         = &one,
        },
@@ -68842,7 +69474,7 @@ index 11d65b5..6957b37 100644
        {
                .procname       = "ngroups_max",
                .data           = &ngroups_max,
        {
                .procname       = "ngroups_max",
                .data           = &ngroups_max,
-@@ -1205,6 +1247,13 @@ static struct ctl_table vm_table[] = {
+@@ -1216,6 +1258,13 @@ static struct ctl_table vm_table[] = {
                .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
        },
                .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
        },
@@ -68856,7 +69488,7 @@ index 11d65b5..6957b37 100644
  #else
        {
                .procname       = "nr_trim_pages",
  #else
        {
                .procname       = "nr_trim_pages",
-@@ -1709,6 +1758,17 @@ static int test_perm(int mode, int op)
+@@ -1720,6 +1769,17 @@ static int test_perm(int mode, int op)
  int sysctl_perm(struct ctl_table_root *root, struct ctl_table *table, int op)
  {
        int mode;
  int sysctl_perm(struct ctl_table_root *root, struct ctl_table *table, int op)
  {
        int mode;
@@ -68874,7 +69506,7 @@ index 11d65b5..6957b37 100644
  
        if (root->permissions)
                mode = root->permissions(root, current->nsproxy, table);
  
        if (root->permissions)
                mode = root->permissions(root, current->nsproxy, table);
-@@ -2113,6 +2173,16 @@ int proc_dostring(struct ctl_table *table, int write,
+@@ -2124,6 +2184,16 @@ int proc_dostring(struct ctl_table *table, int write,
                               buffer, lenp, ppos);
  }
  
                               buffer, lenp, ppos);
  }
  
@@ -68891,7 +69523,7 @@ index 11d65b5..6957b37 100644
  static size_t proc_skip_spaces(char **buf)
  {
        size_t ret;
  static size_t proc_skip_spaces(char **buf)
  {
        size_t ret;
-@@ -2218,6 +2288,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val,
+@@ -2229,6 +2299,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val,
        len = strlen(tmp);
        if (len > *size)
                len = *size;
        len = strlen(tmp);
        if (len > *size)
                len = *size;
@@ -68900,7 +69532,7 @@ index 11d65b5..6957b37 100644
        if (copy_to_user(*buf, tmp, len))
                return -EFAULT;
        *size -= len;
        if (copy_to_user(*buf, tmp, len))
                return -EFAULT;
        *size -= len;
-@@ -2534,8 +2606,11 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int
+@@ -2545,8 +2617,11 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int
                        *i = val;
                } else {
                        val = convdiv * (*i) / convmul;
                        *i = val;
                } else {
                        val = convdiv * (*i) / convmul;
@@ -68913,7 +69545,7 @@ index 11d65b5..6957b37 100644
                        err = proc_put_long(&buffer, &left, val, false);
                        if (err)
                                break;
                        err = proc_put_long(&buffer, &left, val, false);
                        if (err)
                                break;
-@@ -2930,6 +3005,12 @@ int proc_dostring(struct ctl_table *table, int write,
+@@ -2941,6 +3016,12 @@ int proc_dostring(struct ctl_table *table, int write,
        return -ENOSYS;
  }
  
        return -ENOSYS;
  }
  
@@ -68926,7 +69558,7 @@ index 11d65b5..6957b37 100644
  int proc_dointvec(struct ctl_table *table, int write,
                  void __user *buffer, size_t *lenp, loff_t *ppos)
  {
  int proc_dointvec(struct ctl_table *table, int write,
                  void __user *buffer, size_t *lenp, loff_t *ppos)
  {
-@@ -2986,6 +3067,7 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
+@@ -2997,6 +3078,7 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
  EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
  EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
  EXPORT_SYMBOL(proc_dostring);
  EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
  EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
  EXPORT_SYMBOL(proc_dostring);
@@ -68935,7 +69567,7 @@ index 11d65b5..6957b37 100644
  EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
  EXPORT_SYMBOL(register_sysctl_table);
 diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c
  EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
  EXPORT_SYMBOL(register_sysctl_table);
 diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c
-index e8bffbe..2344401 100644
+index a650694..aaeeb20 100644
 --- a/kernel/sysctl_binary.c
 +++ b/kernel/sysctl_binary.c
 @@ -989,7 +989,7 @@ static ssize_t bin_intvec(struct file *file,
 --- a/kernel/sysctl_binary.c
 +++ b/kernel/sysctl_binary.c
 @@ -989,7 +989,7 @@ static ssize_t bin_intvec(struct file *file,
@@ -69041,7 +69673,7 @@ index e660464..c8b9e67 100644
                return cmd_attr_register_cpumask(info);
        else if (info->attrs[TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK])
 diff --git a/kernel/time.c b/kernel/time.c
                return cmd_attr_register_cpumask(info);
        else if (info->attrs[TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK])
 diff --git a/kernel/time.c b/kernel/time.c
-index d776062..fa8d186 100644
+index 73e416d..cfc6f69 100644
 --- a/kernel/time.c
 +++ b/kernel/time.c
 @@ -163,6 +163,11 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
 --- a/kernel/time.c
 +++ b/kernel/time.c
 @@ -163,6 +163,11 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
@@ -69057,11 +69689,11 @@ index d776062..fa8d186 100644
                sys_tz = *tz;
                update_vsyscall_tz();
 diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
                sys_tz = *tz;
                update_vsyscall_tz();
 diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
-index ea5e1a9..8b8df07 100644
+index 8a46f5d..bbe6f9c 100644
 --- a/kernel/time/alarmtimer.c
 +++ b/kernel/time/alarmtimer.c
 --- a/kernel/time/alarmtimer.c
 +++ b/kernel/time/alarmtimer.c
-@@ -693,7 +693,7 @@ static int __init alarmtimer_init(void)
- {
+@@ -773,7 +773,7 @@ static int __init alarmtimer_init(void)
+       struct platform_device *pdev;
        int error = 0;
        int i;
 -      struct k_clock alarm_clock = {
        int error = 0;
        int i;
 -      struct k_clock alarm_clock = {
@@ -69070,7 +69702,7 @@ index ea5e1a9..8b8df07 100644
                .clock_get      = alarm_clock_get,
                .timer_create   = alarm_timer_create,
 diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
                .clock_get      = alarm_clock_get,
                .timer_create   = alarm_timer_create,
 diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
-index 7a90d02..6d8585a 100644
+index fd4a7b1..fae5c2a 100644
 --- a/kernel/time/tick-broadcast.c
 +++ b/kernel/time/tick-broadcast.c
 @@ -115,7 +115,7 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu)
 --- a/kernel/time/tick-broadcast.c
 +++ b/kernel/time/tick-broadcast.c
 @@ -115,7 +115,7 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu)
@@ -69083,7 +69715,7 @@ index 7a90d02..6d8585a 100644
                        cpumask_clear_cpu(cpu, tick_get_broadcast_mask());
                        tick_broadcast_clear_oneshot(cpu);
 diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
                        cpumask_clear_cpu(cpu, tick_get_broadcast_mask());
                        tick_broadcast_clear_oneshot(cpu);
 diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index 6f9798b..f8c4087 100644
+index 2378413..be455fd 100644
 --- a/kernel/time/timekeeping.c
 +++ b/kernel/time/timekeeping.c
 @@ -14,6 +14,7 @@
 --- a/kernel/time/timekeeping.c
 +++ b/kernel/time/timekeeping.c
 @@ -14,6 +14,7 @@
@@ -69149,7 +69781,7 @@ index 3258455..f35227d 100644
                return -ENOMEM;
        return 0;
 diff --git a/kernel/time/timer_stats.c b/kernel/time/timer_stats.c
                return -ENOMEM;
        return 0;
 diff --git a/kernel/time/timer_stats.c b/kernel/time/timer_stats.c
-index a5d0a3a..60c7948 100644
+index 0b537f2..9e71eca 100644
 --- a/kernel/time/timer_stats.c
 +++ b/kernel/time/timer_stats.c
 @@ -116,7 +116,7 @@ static ktime_t time_start, time_stop;
 --- a/kernel/time/timer_stats.c
 +++ b/kernel/time/timer_stats.c
 @@ -116,7 +116,7 @@ static ktime_t time_start, time_stop;
@@ -69221,7 +69853,7 @@ index a5d0a3a..60c7948 100644
                return -ENOMEM;
        return 0;
 diff --git a/kernel/timer.c b/kernel/timer.c
                return -ENOMEM;
        return 0;
 diff --git a/kernel/timer.c b/kernel/timer.c
-index 8cff361..0fb5cd8 100644
+index 9c3c62b..441690e 100644
 --- a/kernel/timer.c
 +++ b/kernel/timer.c
 @@ -1304,7 +1304,7 @@ void update_process_times(int user_tick)
 --- a/kernel/timer.c
 +++ b/kernel/timer.c
 @@ -1304,7 +1304,7 @@ void update_process_times(int user_tick)
@@ -69234,10 +69866,10 @@ index 8cff361..0fb5cd8 100644
        struct tvec_base *base = __this_cpu_read(tvec_bases);
  
 diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
        struct tvec_base *base = __this_cpu_read(tvec_bases);
  
 diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
-index 7c910a5..8b72104 100644
+index 16fc34a..efd8bb8 100644
 --- a/kernel/trace/blktrace.c
 +++ b/kernel/trace/blktrace.c
 --- a/kernel/trace/blktrace.c
 +++ b/kernel/trace/blktrace.c
-@@ -323,7 +323,7 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer,
+@@ -324,7 +324,7 @@ static ssize_t blk_dropped_read(struct file *filp, char __user *buffer,
        struct blk_trace *bt = filp->private_data;
        char buf[16];
  
        struct blk_trace *bt = filp->private_data;
        char buf[16];
  
@@ -69246,7 +69878,7 @@ index 7c910a5..8b72104 100644
  
        return simple_read_from_buffer(buffer, count, ppos, buf, strlen(buf));
  }
  
        return simple_read_from_buffer(buffer, count, ppos, buf, strlen(buf));
  }
-@@ -388,7 +388,7 @@ static int blk_subbuf_start_callback(struct rchan_buf *buf, void *subbuf,
+@@ -389,7 +389,7 @@ static int blk_subbuf_start_callback(struct rchan_buf *buf, void *subbuf,
                return 1;
  
        bt = buf->chan->private_data;
                return 1;
  
        bt = buf->chan->private_data;
@@ -69255,7 +69887,7 @@ index 7c910a5..8b72104 100644
        return 0;
  }
  
        return 0;
  }
  
-@@ -489,7 +489,7 @@ int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
+@@ -490,7 +490,7 @@ int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
  
        bt->dir = dir;
        bt->dev = dev;
  
        bt->dir = dir;
        bt->dev = dev;
@@ -69265,10 +69897,10 @@ index 7c910a5..8b72104 100644
        ret = -EIO;
        bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt,
 diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
        ret = -EIO;
        bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt,
 diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
-index 48d3762..3b61fce 100644
+index 25b4f4d..6f4772d 100644
 --- a/kernel/trace/ftrace.c
 +++ b/kernel/trace/ftrace.c
 --- a/kernel/trace/ftrace.c
 +++ b/kernel/trace/ftrace.c
-@@ -1584,12 +1584,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
+@@ -1587,12 +1587,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
        if (unlikely(ftrace_disabled))
                return 0;
  
        if (unlikely(ftrace_disabled))
                return 0;
  
@@ -69288,7 +69920,7 @@ index 48d3762..3b61fce 100644
  }
  
  /*
  }
  
  /*
-@@ -2606,7 +2611,7 @@ static void ftrace_free_entry_rcu(struct rcu_head *rhp)
+@@ -2608,7 +2613,7 @@ static void ftrace_free_entry_rcu(struct rcu_head *rhp)
  
  int
  register_ftrace_function_probe(char *glob, struct ftrace_probe_ops *ops,
  
  int
  register_ftrace_function_probe(char *glob, struct ftrace_probe_ops *ops,
@@ -69298,28 +69930,10 @@ index 48d3762..3b61fce 100644
        struct ftrace_func_probe *entry;
        struct ftrace_page *pg;
 diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
        struct ftrace_func_probe *entry;
        struct ftrace_page *pg;
 diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
-index 17a2d44..85907e2 100644
+index f2bd275..adaf3a2 100644
 --- a/kernel/trace/trace.c
 +++ b/kernel/trace/trace.c
 --- a/kernel/trace/trace.c
 +++ b/kernel/trace/trace.c
-@@ -3451,6 +3451,8 @@ static ssize_t tracing_splice_read_pipe(struct file *filp,
-       size_t rem;
-       unsigned int i;
-+      pax_track_stack();
-+
-       if (splice_grow_spd(pipe, &spd))
-               return -ENOMEM;
-@@ -3926,6 +3928,8 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
-       int entries, size, i;
-       size_t ret;
-+      pax_track_stack();
-+
-       if (splice_grow_spd(pipe, &spd))
-               return -ENOMEM;
-@@ -4093,10 +4097,9 @@ static const struct file_operations tracing_dyn_info_fops = {
+@@ -4201,10 +4201,9 @@ static const struct file_operations tracing_dyn_info_fops = {
  };
  #endif
  
  };
  #endif
  
@@ -69331,7 +69945,7 @@ index 17a2d44..85907e2 100644
        static int once;
  
        if (d_tracer)
        static int once;
  
        if (d_tracer)
-@@ -4116,10 +4119,9 @@ struct dentry *tracing_init_dentry(void)
+@@ -4224,10 +4223,9 @@ struct dentry *tracing_init_dentry(void)
        return d_tracer;
  }
  
        return d_tracer;
  }
  
@@ -69531,26 +70145,26 @@ index 209b379..7f76423 100644
                        put_task_struct(tsk);
                }
 diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
                        put_task_struct(tsk);
                }
 diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
-index c0cb9c4..f33aa89 100644
+index 82928f5..92da771 100644
 --- a/lib/Kconfig.debug
 +++ b/lib/Kconfig.debug
 --- a/lib/Kconfig.debug
 +++ b/lib/Kconfig.debug
-@@ -1091,6 +1091,7 @@ config LATENCYTOP
+@@ -1103,6 +1103,7 @@ config LATENCYTOP
        depends on DEBUG_KERNEL
        depends on STACKTRACE_SUPPORT
        depends on PROC_FS
 +      depends on !GRKERNSEC_HIDESYM
        depends on DEBUG_KERNEL
        depends on STACKTRACE_SUPPORT
        depends on PROC_FS
 +      depends on !GRKERNSEC_HIDESYM
-       select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE
+       select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND
        select KALLSYMS
        select KALLSYMS_ALL
 diff --git a/lib/bitmap.c b/lib/bitmap.c
        select KALLSYMS
        select KALLSYMS_ALL
 diff --git a/lib/bitmap.c b/lib/bitmap.c
-index 2f4412e..a557e27 100644
+index 0d4a127..33a06c7 100644
 --- a/lib/bitmap.c
 +++ b/lib/bitmap.c
 @@ -419,7 +419,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen,
  {
        int c, old_c, totaldigits, ndigits, nchunks, nbits;
        u32 chunk;
 --- a/lib/bitmap.c
 +++ b/lib/bitmap.c
 @@ -419,7 +419,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen,
  {
        int c, old_c, totaldigits, ndigits, nchunks, nbits;
        u32 chunk;
--      const char __user *ubuf = buf;
+-      const char __user __force *ubuf = (const char __user __force *)buf;
 +      const char __user *ubuf = (const char __force_user *)buf;
  
        bitmap_zero(maskp, nmaskbits);
 +      const char __user *ubuf = (const char __force_user *)buf;
  
        bitmap_zero(maskp, nmaskbits);
@@ -69559,25 +70173,25 @@ index 2f4412e..a557e27 100644
  {
        if (!access_ok(VERIFY_READ, ubuf, ulen))
                return -EFAULT;
  {
        if (!access_ok(VERIFY_READ, ubuf, ulen))
                return -EFAULT;
--      return __bitmap_parse((const char *)ubuf, ulen, 1, maskp, nmaskbits);
-+      return __bitmap_parse((const char __force_kernel *)ubuf, ulen, 1, maskp, nmaskbits);
- }
- EXPORT_SYMBOL(bitmap_parse_user);
+-      return __bitmap_parse((const char __force *)ubuf,
++      return __bitmap_parse((const char __force_kernel *)ubuf,
+                               ulen, 1, maskp, nmaskbits);
  
  
-@@ -594,7 +594,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen,
+ }
+@@ -596,7 +596,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen,
  {
        unsigned a, b;
        int c, old_c, totaldigits;
  {
        unsigned a, b;
        int c, old_c, totaldigits;
--      const char __user *ubuf = buf;
+-      const char __user __force *ubuf = (const char __user __force *)buf;
 +      const char __user *ubuf = (const char __force_user *)buf;
        int exp_digit, in_range;
  
        totaldigits = c = 0;
 +      const char __user *ubuf = (const char __force_user *)buf;
        int exp_digit, in_range;
  
        totaldigits = c = 0;
-@@ -694,7 +694,7 @@ int bitmap_parselist_user(const char __user *ubuf,
+@@ -696,7 +696,7 @@ int bitmap_parselist_user(const char __user *ubuf,
  {
        if (!access_ok(VERIFY_READ, ubuf, ulen))
                return -EFAULT;
  {
        if (!access_ok(VERIFY_READ, ubuf, ulen))
                return -EFAULT;
--      return __bitmap_parselist((const char *)ubuf,
+-      return __bitmap_parselist((const char __force *)ubuf,
 +      return __bitmap_parselist((const char __force_kernel *)ubuf,
                                        ulen, 1, maskp, nmaskbits);
  }
 +      return __bitmap_parselist((const char __force_kernel *)ubuf,
                                        ulen, 1, maskp, nmaskbits);
  }
@@ -69631,10 +70245,10 @@ index 7c0e953..f642b5c 100644
  EXPORT_SYMBOL(devm_ioport_unmap);
  
 diff --git a/lib/dma-debug.c b/lib/dma-debug.c
  EXPORT_SYMBOL(devm_ioport_unmap);
  
 diff --git a/lib/dma-debug.c b/lib/dma-debug.c
-index db07bfd..719b5ab 100644
+index fea790a..ebb0e82 100644
 --- a/lib/dma-debug.c
 +++ b/lib/dma-debug.c
 --- a/lib/dma-debug.c
 +++ b/lib/dma-debug.c
-@@ -870,7 +870,7 @@ out:
+@@ -925,7 +925,7 @@ out:
  
  static void check_for_stack(struct device *dev, void *addr)
  {
  
  static void check_for_stack(struct device *dev, void *addr)
  {
@@ -69679,6 +70293,20 @@ index 013a761..c28f3fc 100644
  #define free(a) kfree(a)
  #endif
  
  #define free(a) kfree(a)
  #endif
  
+diff --git a/lib/is_single_threaded.c b/lib/is_single_threaded.c
+index bd2bea9..6b3c95e 100644
+--- a/lib/is_single_threaded.c
++++ b/lib/is_single_threaded.c
+@@ -22,6 +22,9 @@ bool current_is_single_threaded(void)
+       struct task_struct *p, *t;
+       bool ret;
++      if (!mm)
++              return true;
++
+       if (atomic_read(&task->signal->live) != 1)
+               return false;
 diff --git a/lib/kref.c b/lib/kref.c
 index 3efb882..8492f4c 100644
 --- a/lib/kref.c
 diff --git a/lib/kref.c b/lib/kref.c
 index 3efb882..8492f4c 100644
 --- a/lib/kref.c
@@ -69693,7 +70321,7 @@ index 3efb882..8492f4c 100644
  
        if (atomic_dec_and_test(&kref->refcount)) {
 diff --git a/lib/radix-tree.c b/lib/radix-tree.c
  
        if (atomic_dec_and_test(&kref->refcount)) {
 diff --git a/lib/radix-tree.c b/lib/radix-tree.c
-index a2f9da5..3bcadb6 100644
+index d9df745..e73c2fe 100644
 --- a/lib/radix-tree.c
 +++ b/lib/radix-tree.c
 @@ -80,7 +80,7 @@ struct radix_tree_preload {
 --- a/lib/radix-tree.c
 +++ b/lib/radix-tree.c
 @@ -80,7 +80,7 @@ struct radix_tree_preload {
@@ -69706,7 +70334,7 @@ index a2f9da5..3bcadb6 100644
  static inline void *ptr_to_indirect(void *ptr)
  {
 diff --git a/lib/vsprintf.c b/lib/vsprintf.c
  static inline void *ptr_to_indirect(void *ptr)
  {
 diff --git a/lib/vsprintf.c b/lib/vsprintf.c
-index d7222a9..2172edc 100644
+index 993599e..f1dbc14 100644
 --- a/lib/vsprintf.c
 +++ b/lib/vsprintf.c
 @@ -16,6 +16,9 @@
 --- a/lib/vsprintf.c
 +++ b/lib/vsprintf.c
 @@ -16,6 +16,9 @@
@@ -69719,7 +70347,7 @@ index d7222a9..2172edc 100644
  #include <stdarg.h>
  #include <linux/module.h>
  #include <linux/types.h>
  #include <stdarg.h>
  #include <linux/module.h>
  #include <linux/types.h>
-@@ -432,7 +435,7 @@ char *symbol_string(char *buf, char *end, void *ptr,
+@@ -413,7 +416,7 @@ char *symbol_string(char *buf, char *end, void *ptr,
        char sym[KSYM_SYMBOL_LEN];
        if (ext == 'B')
                sprint_backtrace(sym, value);
        char sym[KSYM_SYMBOL_LEN];
        if (ext == 'B')
                sprint_backtrace(sym, value);
@@ -69728,7 +70356,7 @@ index d7222a9..2172edc 100644
                sprint_symbol(sym, value);
        else
                kallsyms_lookup(value, NULL, NULL, NULL, sym);
                sprint_symbol(sym, value);
        else
                kallsyms_lookup(value, NULL, NULL, NULL, sym);
-@@ -796,7 +799,11 @@ char *uuid_string(char *buf, char *end, const u8 *addr,
+@@ -777,7 +780,11 @@ char *uuid_string(char *buf, char *end, const u8 *addr,
        return string(buf, end, uuid, spec);
  }
  
        return string(buf, end, uuid, spec);
  }
  
@@ -69740,7 +70368,7 @@ index d7222a9..2172edc 100644
  
  /*
   * Show a '%p' thing.  A kernel extension is that the '%p' is followed
  
  /*
   * Show a '%p' thing.  A kernel extension is that the '%p' is followed
-@@ -810,6 +817,8 @@ int kptr_restrict __read_mostly;
+@@ -791,6 +798,8 @@ int kptr_restrict __read_mostly;
   * - 'S' For symbolic direct pointers with offset
   * - 's' For symbolic direct pointers without offset
   * - 'B' For backtraced symbolic direct pointers with offset
   * - 'S' For symbolic direct pointers with offset
   * - 's' For symbolic direct pointers without offset
   * - 'B' For backtraced symbolic direct pointers with offset
@@ -69749,7 +70377,7 @@ index d7222a9..2172edc 100644
   * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
   * - 'r' For raw struct resource, e.g., [mem 0x0-0x1f flags 0x201]
   * - 'M' For a 6-byte MAC address, it prints the address in the
   * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
   * - 'r' For raw struct resource, e.g., [mem 0x0-0x1f flags 0x201]
   * - 'M' For a 6-byte MAC address, it prints the address in the
-@@ -854,12 +863,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -835,12 +844,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
  {
        if (!ptr && *fmt != 'K') {
                /*
  {
        if (!ptr && *fmt != 'K') {
                /*
@@ -69764,7 +70392,7 @@ index d7222a9..2172edc 100644
        }
  
        switch (*fmt) {
        }
  
        switch (*fmt) {
-@@ -869,6 +878,13 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -850,6 +859,13 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
                /* Fallthrough */
        case 'S':
        case 's':
                /* Fallthrough */
        case 'S':
        case 's':
@@ -69778,7 +70406,26 @@ index d7222a9..2172edc 100644
        case 'B':
                return symbol_string(buf, end, ptr, spec, *fmt);
        case 'R':
        case 'B':
                return symbol_string(buf, end, ptr, spec, *fmt);
        case 'R':
-@@ -1627,11 +1643,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
+@@ -878,9 +894,15 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+       case 'U':
+               return uuid_string(buf, end, ptr, spec, fmt);
+       case 'V':
+-              return buf + vsnprintf(buf, end > buf ? end - buf : 0,
+-                                     ((struct va_format *)ptr)->fmt,
+-                                     *(((struct va_format *)ptr)->va));
++              {
++                      va_list va;
++
++                      va_copy(va, *((struct va_format *)ptr)->va);
++                      buf += vsnprintf(buf, end > buf ? end - buf : 0,
++                                       ((struct va_format *)ptr)->fmt, va);
++                      va_end(va);
++                      return buf;
++              }
+       case 'K':
+               /*
+                * %pK cannot be used in IRQ context because its test
+@@ -1608,11 +1630,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
        typeof(type) value;                                             \
        if (sizeof(type) == 8) {                                        \
                args = PTR_ALIGN(args, sizeof(u32));                    \
        typeof(type) value;                                             \
        if (sizeof(type) == 8) {                                        \
                args = PTR_ALIGN(args, sizeof(u32));                    \
@@ -69793,7 +70440,7 @@ index d7222a9..2172edc 100644
        }                                                               \
        args += sizeof(type);                                           \
        value;                                                          \
        }                                                               \
        args += sizeof(type);                                           \
        value;                                                          \
-@@ -1694,7 +1710,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
+@@ -1675,7 +1697,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
                case FORMAT_TYPE_STR: {
                        const char *str_arg = args;
                        args += strlen(str_arg) + 1;
                case FORMAT_TYPE_STR: {
                        const char *str_arg = args;
                        args += strlen(str_arg) + 1;
@@ -69810,10 +70457,10 @@ index 0000000..7cd6065
 @@ -0,0 +1 @@
 +-grsec
 diff --git a/mm/Kconfig b/mm/Kconfig
 @@ -0,0 +1 @@
 +-grsec
 diff --git a/mm/Kconfig b/mm/Kconfig
-index f2f1ca1..0645f06 100644
+index 011b110..b492af2 100644
 --- a/mm/Kconfig
 +++ b/mm/Kconfig
 --- a/mm/Kconfig
 +++ b/mm/Kconfig
-@@ -238,10 +238,10 @@ config KSM
+@@ -241,10 +241,10 @@ config KSM
          root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
  
  config DEFAULT_MMAP_MIN_ADDR
          root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
  
  config DEFAULT_MMAP_MIN_ADDR
@@ -69828,10 +70475,10 @@ index f2f1ca1..0645f06 100644
          from userspace allocation.  Keeping a user from writing to low pages
          can help reduce the impact of kernel NULL pointer bugs.
 diff --git a/mm/filemap.c b/mm/filemap.c
          from userspace allocation.  Keeping a user from writing to low pages
          can help reduce the impact of kernel NULL pointer bugs.
 diff --git a/mm/filemap.c b/mm/filemap.c
-index 7771871..91bcdb4 100644
+index 03c5b0e..a01e793 100644
 --- a/mm/filemap.c
 +++ b/mm/filemap.c
 --- a/mm/filemap.c
 +++ b/mm/filemap.c
-@@ -1784,7 +1784,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
+@@ -1770,7 +1770,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
        struct address_space *mapping = file->f_mapping;
  
        if (!mapping->a_ops->readpage)
        struct address_space *mapping = file->f_mapping;
  
        if (!mapping->a_ops->readpage)
@@ -69840,7 +70487,7 @@ index 7771871..91bcdb4 100644
        file_accessed(file);
        vma->vm_ops = &generic_file_vm_ops;
        vma->vm_flags |= VM_CAN_NONLINEAR;
        file_accessed(file);
        vma->vm_ops = &generic_file_vm_ops;
        vma->vm_flags |= VM_CAN_NONLINEAR;
-@@ -2190,6 +2190,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
+@@ -2176,6 +2176,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
                          *pos = i_size_read(inode);
  
                if (limit != RLIM_INFINITY) {
                          *pos = i_size_read(inode);
  
                if (limit != RLIM_INFINITY) {
@@ -69849,10 +70496,10 @@ index 7771871..91bcdb4 100644
                                send_sig(SIGXFSZ, current, 0);
                                return -EFBIG;
 diff --git a/mm/fremap.c b/mm/fremap.c
                                send_sig(SIGXFSZ, current, 0);
                                return -EFBIG;
 diff --git a/mm/fremap.c b/mm/fremap.c
-index b8e0e2d..076e171 100644
+index 9ed4fd4..c42648d 100644
 --- a/mm/fremap.c
 +++ b/mm/fremap.c
 --- a/mm/fremap.c
 +++ b/mm/fremap.c
-@@ -156,6 +156,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -155,6 +155,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
   retry:
        vma = find_vma(mm, start);
  
   retry:
        vma = find_vma(mm, start);
  
@@ -69865,7 +70512,7 @@ index b8e0e2d..076e171 100644
         * Make sure the vma is shared, that it supports prefaulting,
         * and that the remapped range is valid and fully within
 diff --git a/mm/highmem.c b/mm/highmem.c
         * Make sure the vma is shared, that it supports prefaulting,
         * and that the remapped range is valid and fully within
 diff --git a/mm/highmem.c b/mm/highmem.c
-index 5ef672c..d7660f4 100644
+index 57d82c6..e9e0552 100644
 --- a/mm/highmem.c
 +++ b/mm/highmem.c
 @@ -125,9 +125,10 @@ static void flush_all_zero_pkmaps(void)
 --- a/mm/highmem.c
 +++ b/mm/highmem.c
 @@ -125,9 +125,10 @@ static void flush_all_zero_pkmaps(void)
@@ -69894,10 +70541,10 @@ index 5ef672c..d7660f4 100644
        set_page_address(page, (void *)vaddr);
  
 diff --git a/mm/huge_memory.c b/mm/huge_memory.c
        set_page_address(page, (void *)vaddr);
  
 diff --git a/mm/huge_memory.c b/mm/huge_memory.c
-index d819d93..468e18f 100644
+index 8f005e9..1cb1036 100644
 --- a/mm/huge_memory.c
 +++ b/mm/huge_memory.c
 --- a/mm/huge_memory.c
 +++ b/mm/huge_memory.c
-@@ -702,7 +702,7 @@ out:
+@@ -704,7 +704,7 @@ out:
         * run pte_offset_map on the pmd, if an huge pmd could
         * materialize from under us from a different thread.
         */
         * run pte_offset_map on the pmd, if an huge pmd could
         * materialize from under us from a different thread.
         */
@@ -69906,28 +70553,11 @@ index d819d93..468e18f 100644
                return VM_FAULT_OOM;
        /* if an huge pmd materialized from under us just retry later */
        if (unlikely(pmd_trans_huge(*pmd)))
                return VM_FAULT_OOM;
        /* if an huge pmd materialized from under us just retry later */
        if (unlikely(pmd_trans_huge(*pmd)))
-@@ -829,7 +829,7 @@ static int do_huge_pmd_wp_page_fallback(struct mm_struct *mm,
-       for (i = 0; i < HPAGE_PMD_NR; i++) {
-               copy_user_highpage(pages[i], page + i,
--                                 haddr + PAGE_SHIFT*i, vma);
-+                                 haddr + PAGE_SIZE*i, vma);
-               __SetPageUptodate(pages[i]);
-               cond_resched();
-       }
 diff --git a/mm/hugetlb.c b/mm/hugetlb.c
 diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index bb28a5f..fef0140 100644
+index 2316840..b418671 100644
 --- a/mm/hugetlb.c
 +++ b/mm/hugetlb.c
 --- a/mm/hugetlb.c
 +++ b/mm/hugetlb.c
-@@ -576,6 +576,7 @@ static void prep_compound_gigantic_page(struct page *page, unsigned long order)
-       __SetPageHead(page);
-       for (i = 1; i < nr_pages; i++, p = mem_map_next(p, page, i)) {
-               __SetPageTail(p);
-+              set_page_count(p, 0);
-               p->first_page = page;
-       }
- }
-@@ -2346,6 +2347,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2347,6 +2347,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
        return 1;
  }
  
        return 1;
  }
  
@@ -69955,7 +70585,7 @@ index bb28a5f..fef0140 100644
  /*
   * Hugetlb_cow() should be called with page lock of the original hugepage held.
   */
  /*
   * Hugetlb_cow() should be called with page lock of the original hugepage held.
   */
-@@ -2449,6 +2471,11 @@ retry_avoidcopy:
+@@ -2450,6 +2471,11 @@ retry_avoidcopy:
                                make_huge_pte(vma, new_page, 1));
                page_remove_rmap(old_page);
                hugepage_add_new_anon_rmap(new_page, vma, address);
                                make_huge_pte(vma, new_page, 1));
                page_remove_rmap(old_page);
                hugepage_add_new_anon_rmap(new_page, vma, address);
@@ -69967,7 +70597,7 @@ index bb28a5f..fef0140 100644
                /* Make the old page be freed below */
                new_page = old_page;
                mmu_notifier_invalidate_range_end(mm,
                /* Make the old page be freed below */
                new_page = old_page;
                mmu_notifier_invalidate_range_end(mm,
-@@ -2600,6 +2627,10 @@ retry:
+@@ -2601,6 +2627,10 @@ retry:
                                && (vma->vm_flags & VM_SHARED)));
        set_huge_pte_at(mm, address, ptep, new_pte);
  
                                && (vma->vm_flags & VM_SHARED)));
        set_huge_pte_at(mm, address, ptep, new_pte);
  
@@ -69978,7 +70608,7 @@ index bb28a5f..fef0140 100644
        if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
                /* Optimization, do the COW without a second fault */
                ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page);
        if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
                /* Optimization, do the COW without a second fault */
                ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page);
-@@ -2629,6 +2660,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2630,6 +2660,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
        static DEFINE_MUTEX(hugetlb_instantiation_mutex);
        struct hstate *h = hstate_vma(vma);
  
        static DEFINE_MUTEX(hugetlb_instantiation_mutex);
        struct hstate *h = hstate_vma(vma);
  
@@ -69989,7 +70619,7 @@ index bb28a5f..fef0140 100644
        ptep = huge_pte_offset(mm, address);
        if (ptep) {
                entry = huge_ptep_get(ptep);
        ptep = huge_pte_offset(mm, address);
        if (ptep) {
                entry = huge_ptep_get(ptep);
-@@ -2640,6 +2675,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2641,6 +2675,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
                               VM_FAULT_SET_HINDEX(h - hstates);
        }
  
                               VM_FAULT_SET_HINDEX(h - hstates);
        }
  
@@ -70029,7 +70659,7 @@ index 2189af4..f2ca332 100644
  #ifdef CONFIG_MEMORY_FAILURE
  extern bool is_free_buddy_page(struct page *page);
 diff --git a/mm/kmemleak.c b/mm/kmemleak.c
  #ifdef CONFIG_MEMORY_FAILURE
  extern bool is_free_buddy_page(struct page *page);
 diff --git a/mm/kmemleak.c b/mm/kmemleak.c
-index d6880f5..ed77913 100644
+index f3b2a00..61da94d 100644
 --- a/mm/kmemleak.c
 +++ b/mm/kmemleak.c
 @@ -357,7 +357,7 @@ static void print_unreferenced(struct seq_file *seq,
 --- a/mm/kmemleak.c
 +++ b/mm/kmemleak.c
 @@ -357,7 +357,7 @@ static void print_unreferenced(struct seq_file *seq,
@@ -70042,7 +70672,7 @@ index d6880f5..ed77913 100644
  }
  
 diff --git a/mm/maccess.c b/mm/maccess.c
  }
  
 diff --git a/mm/maccess.c b/mm/maccess.c
-index 4cee182..e00511d 100644
+index d53adf9..03a24bf 100644
 --- a/mm/maccess.c
 +++ b/mm/maccess.c
 @@ -26,7 +26,7 @@ long __probe_kernel_read(void *dst, const void *src, size_t size)
 --- a/mm/maccess.c
 +++ b/mm/maccess.c
 @@ -26,7 +26,7 @@ long __probe_kernel_read(void *dst, const void *src, size_t size)
@@ -70144,10 +70774,10 @@ index 74bf193..feb6fd3 100644
        if (end == start)
                goto out;
 diff --git a/mm/memory-failure.c b/mm/memory-failure.c
        if (end == start)
                goto out;
 diff --git a/mm/memory-failure.c b/mm/memory-failure.c
-index 2b43ba0..fc09657 100644
+index 06d3479..0778eef 100644
 --- a/mm/memory-failure.c
 +++ b/mm/memory-failure.c
 --- a/mm/memory-failure.c
 +++ b/mm/memory-failure.c
-@@ -60,7 +60,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0;
+@@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0;
  
  int sysctl_memory_failure_recovery __read_mostly = 1;
  
  
  int sysctl_memory_failure_recovery __read_mostly = 1;
  
@@ -70156,7 +70786,7 @@ index 2b43ba0..fc09657 100644
  
  #if defined(CONFIG_HWPOISON_INJECT) || defined(CONFIG_HWPOISON_INJECT_MODULE)
  
  
  #if defined(CONFIG_HWPOISON_INJECT) || defined(CONFIG_HWPOISON_INJECT_MODULE)
  
-@@ -201,7 +201,7 @@ static int kill_proc_ao(struct task_struct *t, unsigned long addr, int trapno,
+@@ -202,7 +202,7 @@ static int kill_proc_ao(struct task_struct *t, unsigned long addr, int trapno,
        si.si_signo = SIGBUS;
        si.si_errno = 0;
        si.si_code = BUS_MCEERR_AO;
        si.si_signo = SIGBUS;
        si.si_errno = 0;
        si.si_code = BUS_MCEERR_AO;
@@ -70165,7 +70795,7 @@ index 2b43ba0..fc09657 100644
  #ifdef __ARCH_SI_TRAPNO
        si.si_trapno = trapno;
  #endif
  #ifdef __ARCH_SI_TRAPNO
        si.si_trapno = trapno;
  #endif
-@@ -1009,7 +1009,7 @@ int __memory_failure(unsigned long pfn, int trapno, int flags)
+@@ -1010,7 +1010,7 @@ int __memory_failure(unsigned long pfn, int trapno, int flags)
        }
  
        nr_pages = 1 << compound_trans_order(hpage);
        }
  
        nr_pages = 1 << compound_trans_order(hpage);
@@ -70174,7 +70804,7 @@ index 2b43ba0..fc09657 100644
  
        /*
         * We need/can do nothing about count=0 pages.
  
        /*
         * We need/can do nothing about count=0 pages.
-@@ -1039,7 +1039,7 @@ int __memory_failure(unsigned long pfn, int trapno, int flags)
+@@ -1040,7 +1040,7 @@ int __memory_failure(unsigned long pfn, int trapno, int flags)
                        if (!PageHWPoison(hpage)
                            || (hwpoison_filter(p) && TestClearPageHWPoison(p))
                            || (p != hpage && TestSetPageHWPoison(hpage))) {
                        if (!PageHWPoison(hpage)
                            || (hwpoison_filter(p) && TestClearPageHWPoison(p))
                            || (p != hpage && TestSetPageHWPoison(hpage))) {
@@ -70183,7 +70813,7 @@ index 2b43ba0..fc09657 100644
                                return 0;
                        }
                        set_page_hwpoison_huge_page(hpage);
                                return 0;
                        }
                        set_page_hwpoison_huge_page(hpage);
-@@ -1097,7 +1097,7 @@ int __memory_failure(unsigned long pfn, int trapno, int flags)
+@@ -1098,7 +1098,7 @@ int __memory_failure(unsigned long pfn, int trapno, int flags)
        }
        if (hwpoison_filter(p)) {
                if (TestClearPageHWPoison(p))
        }
        if (hwpoison_filter(p)) {
                if (TestClearPageHWPoison(p))
@@ -70192,7 +70822,7 @@ index 2b43ba0..fc09657 100644
                unlock_page(hpage);
                put_page(hpage);
                return 0;
                unlock_page(hpage);
                put_page(hpage);
                return 0;
-@@ -1314,7 +1314,7 @@ int unpoison_memory(unsigned long pfn)
+@@ -1315,7 +1315,7 @@ int unpoison_memory(unsigned long pfn)
                        return 0;
                }
                if (TestClearPageHWPoison(p))
                        return 0;
                }
                if (TestClearPageHWPoison(p))
@@ -70201,7 +70831,7 @@ index 2b43ba0..fc09657 100644
                pr_info("MCE: Software-unpoisoned free page %#lx\n", pfn);
                return 0;
        }
                pr_info("MCE: Software-unpoisoned free page %#lx\n", pfn);
                return 0;
        }
-@@ -1328,7 +1328,7 @@ int unpoison_memory(unsigned long pfn)
+@@ -1329,7 +1329,7 @@ int unpoison_memory(unsigned long pfn)
         */
        if (TestClearPageHWPoison(page)) {
                pr_info("MCE: Software-unpoisoned page %#lx\n", pfn);
         */
        if (TestClearPageHWPoison(page)) {
                pr_info("MCE: Software-unpoisoned page %#lx\n", pfn);
@@ -70210,7 +70840,7 @@ index 2b43ba0..fc09657 100644
                freeit = 1;
                if (PageHuge(page))
                        clear_page_hwpoison_huge_page(page);
                freeit = 1;
                if (PageHuge(page))
                        clear_page_hwpoison_huge_page(page);
-@@ -1441,7 +1441,7 @@ static int soft_offline_huge_page(struct page *page, int flags)
+@@ -1442,7 +1442,7 @@ static int soft_offline_huge_page(struct page *page, int flags)
        }
  done:
        if (!PageHWPoison(hpage))
        }
  done:
        if (!PageHWPoison(hpage))
@@ -70219,7 +70849,7 @@ index 2b43ba0..fc09657 100644
        set_page_hwpoison_huge_page(hpage);
        dequeue_hwpoisoned_huge_page(hpage);
        /* keep elevated page count for bad page */
        set_page_hwpoison_huge_page(hpage);
        dequeue_hwpoisoned_huge_page(hpage);
        /* keep elevated page count for bad page */
-@@ -1572,7 +1572,7 @@ int soft_offline_page(struct page *page, int flags)
+@@ -1573,7 +1573,7 @@ int soft_offline_page(struct page *page, int flags)
                return ret;
  
  done:
                return ret;
  
  done:
@@ -70229,7 +70859,7 @@ index 2b43ba0..fc09657 100644
        /* keep elevated page count for bad page */
        return ret;
 diff --git a/mm/memory.c b/mm/memory.c
        /* keep elevated page count for bad page */
        return ret;
 diff --git a/mm/memory.c b/mm/memory.c
-index b2b8731..6080174 100644
+index 829d437..3d3926a 100644
 --- a/mm/memory.c
 +++ b/mm/memory.c
 @@ -457,8 +457,12 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
 --- a/mm/memory.c
 +++ b/mm/memory.c
 @@ -457,8 +457,12 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
@@ -70796,10 +71426,10 @@ index b2b8731..6080174 100644
         * Make sure the vDSO gets into every core dump.
         * Dumping its contents makes post-mortem fully interpretable later
 diff --git a/mm/mempolicy.c b/mm/mempolicy.c
         * Make sure the vDSO gets into every core dump.
         * Dumping its contents makes post-mortem fully interpretable later
 diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index 9c51f9f..a9416cf 100644
+index c3fdbcb..2e8ef90 100644
 --- a/mm/mempolicy.c
 +++ b/mm/mempolicy.c
 --- a/mm/mempolicy.c
 +++ b/mm/mempolicy.c
-@@ -639,6 +639,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
+@@ -640,6 +640,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
        unsigned long vmstart;
        unsigned long vmend;
  
        unsigned long vmstart;
        unsigned long vmend;
  
@@ -70810,7 +71440,7 @@ index 9c51f9f..a9416cf 100644
        vma = find_vma_prev(mm, start, &prev);
        if (!vma || vma->vm_start > start)
                return -EFAULT;
        vma = find_vma_prev(mm, start, &prev);
        if (!vma || vma->vm_start > start)
                return -EFAULT;
-@@ -669,6 +673,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
+@@ -678,6 +682,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
                err = policy_vma(vma, new_pol);
                if (err)
                        goto out;
                err = policy_vma(vma, new_pol);
                if (err)
                        goto out;
@@ -70827,7 +71457,7 @@ index 9c51f9f..a9416cf 100644
        }
  
   out:
        }
  
   out:
-@@ -1102,6 +1116,17 @@ static long do_mbind(unsigned long start, unsigned long len,
+@@ -1111,6 +1125,17 @@ static long do_mbind(unsigned long start, unsigned long len,
  
        if (end < start)
                return -EINVAL;
  
        if (end < start)
                return -EINVAL;
@@ -70845,7 +71475,7 @@ index 9c51f9f..a9416cf 100644
        if (end == start)
                return 0;
  
        if (end == start)
                return 0;
  
-@@ -1320,6 +1345,14 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
+@@ -1329,6 +1354,14 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
        if (!mm)
                goto out;
  
        if (!mm)
                goto out;
  
@@ -70860,7 +71490,7 @@ index 9c51f9f..a9416cf 100644
        /*
         * Check if this process has the right to modify the specified
         * process. The right exists if the process has administrative
        /*
         * Check if this process has the right to modify the specified
         * process. The right exists if the process has administrative
-@@ -1329,8 +1362,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
+@@ -1338,8 +1371,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
        rcu_read_lock();
        tcred = __task_cred(task);
        if (cred->euid != tcred->suid && cred->euid != tcred->uid &&
        rcu_read_lock();
        tcred = __task_cred(task);
        if (cred->euid != tcred->suid && cred->euid != tcred->uid &&
@@ -70871,30 +71501,10 @@ index 9c51f9f..a9416cf 100644
                err = -EPERM;
                goto out;
 diff --git a/mm/migrate.c b/mm/migrate.c
                err = -EPERM;
                goto out;
 diff --git a/mm/migrate.c b/mm/migrate.c
-index 14d0a6a..0360908 100644
+index 177aca4..ab3a744 100644
 --- a/mm/migrate.c
 +++ b/mm/migrate.c
 --- a/mm/migrate.c
 +++ b/mm/migrate.c
-@@ -866,9 +866,9 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
-       if (anon_vma)
-               put_anon_vma(anon_vma);
--out:
-       unlock_page(hpage);
-+out:
-       if (rc != -EAGAIN) {
-               list_del(&hpage->lru);
-               put_page(hpage);
-@@ -1124,6 +1124,8 @@ static int do_pages_move(struct mm_struct *mm, struct task_struct *task,
-       unsigned long chunk_start;
-       int err;
-+      pax_track_stack();
-+
-       task_nodes = cpuset_mems_allowed(task);
-       err = -ENOMEM;
-@@ -1308,6 +1310,14 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
+@@ -1313,6 +1313,14 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
        if (!mm)
                return -EINVAL;
  
        if (!mm)
                return -EINVAL;
  
@@ -70909,7 +71519,7 @@ index 14d0a6a..0360908 100644
        /*
         * Check if this process has the right to modify the specified
         * process. The right exists if the process has administrative
        /*
         * Check if this process has the right to modify the specified
         * process. The right exists if the process has administrative
-@@ -1317,8 +1327,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
+@@ -1322,8 +1330,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
        rcu_read_lock();
        tcred = __task_cred(task);
        if (cred->euid != tcred->suid && cred->euid != tcred->uid &&
        rcu_read_lock();
        tcred = __task_cred(task);
        if (cred->euid != tcred->suid && cred->euid != tcred->uid &&
@@ -70920,7 +71530,7 @@ index 14d0a6a..0360908 100644
                err = -EPERM;
                goto out;
 diff --git a/mm/mlock.c b/mm/mlock.c
                err = -EPERM;
                goto out;
 diff --git a/mm/mlock.c b/mm/mlock.c
-index 048260c..57f4a4e 100644
+index 4f4f53b..9511904 100644
 --- a/mm/mlock.c
 +++ b/mm/mlock.c
 @@ -13,6 +13,7 @@
 --- a/mm/mlock.c
 +++ b/mm/mlock.c
 @@ -13,6 +13,7 @@
@@ -70929,9 +71539,9 @@ index 048260c..57f4a4e 100644
  #include <linux/syscalls.h>
 +#include <linux/security.h>
  #include <linux/sched.h>
  #include <linux/syscalls.h>
 +#include <linux/security.h>
  #include <linux/sched.h>
- #include <linux/module.h>
+ #include <linux/export.h>
  #include <linux/rmap.h>
  #include <linux/rmap.h>
-@@ -377,6 +378,9 @@ static int do_mlock(unsigned long start, size_t len, int on)
+@@ -385,6 +386,9 @@ static int do_mlock(unsigned long start, size_t len, int on)
                return -EINVAL;
        if (end == start)
                return 0;
                return -EINVAL;
        if (end == start)
                return 0;
@@ -70941,7 +71551,7 @@ index 048260c..57f4a4e 100644
        vma = find_vma_prev(current->mm, start, &prev);
        if (!vma || vma->vm_start > start)
                return -ENOMEM;
        vma = find_vma_prev(current->mm, start, &prev);
        if (!vma || vma->vm_start > start)
                return -ENOMEM;
-@@ -387,6 +391,11 @@ static int do_mlock(unsigned long start, size_t len, int on)
+@@ -395,6 +399,11 @@ static int do_mlock(unsigned long start, size_t len, int on)
        for (nstart = start ; ; ) {
                vm_flags_t newflags;
  
        for (nstart = start ; ; ) {
                vm_flags_t newflags;
  
@@ -70953,7 +71563,7 @@ index 048260c..57f4a4e 100644
                /* Here we know that  vma->vm_start <= nstart < vma->vm_end. */
  
                newflags = vma->vm_flags | VM_LOCKED;
                /* Here we know that  vma->vm_start <= nstart < vma->vm_end. */
  
                newflags = vma->vm_flags | VM_LOCKED;
-@@ -492,6 +501,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
+@@ -500,6 +509,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
        lock_limit >>= PAGE_SHIFT;
  
        /* check against resource limits */
        lock_limit >>= PAGE_SHIFT;
  
        /* check against resource limits */
@@ -70961,7 +71571,7 @@ index 048260c..57f4a4e 100644
        if ((locked <= lock_limit) || capable(CAP_IPC_LOCK))
                error = do_mlock(start, len, 1);
        up_write(&current->mm->mmap_sem);
        if ((locked <= lock_limit) || capable(CAP_IPC_LOCK))
                error = do_mlock(start, len, 1);
        up_write(&current->mm->mmap_sem);
-@@ -515,17 +525,23 @@ SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len)
+@@ -523,17 +533,23 @@ SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len)
  static int do_mlockall(int flags)
  {
        struct vm_area_struct * vma, * prev = NULL;
  static int do_mlockall(int flags)
  {
        struct vm_area_struct * vma, * prev = NULL;
@@ -70988,7 +71598,7 @@ index 048260c..57f4a4e 100644
                newflags = vma->vm_flags | VM_LOCKED;
                if (!(flags & MCL_CURRENT))
                        newflags &= ~VM_LOCKED;
                newflags = vma->vm_flags | VM_LOCKED;
                if (!(flags & MCL_CURRENT))
                        newflags &= ~VM_LOCKED;
-@@ -557,6 +573,7 @@ SYSCALL_DEFINE1(mlockall, int, flags)
+@@ -566,6 +582,7 @@ SYSCALL_DEFINE1(mlockall, int, flags)
        lock_limit >>= PAGE_SHIFT;
  
        ret = -ENOMEM;
        lock_limit >>= PAGE_SHIFT;
  
        ret = -ENOMEM;
@@ -70997,7 +71607,7 @@ index 048260c..57f4a4e 100644
            capable(CAP_IPC_LOCK))
                ret = do_mlockall(flags);
 diff --git a/mm/mmap.c b/mm/mmap.c
            capable(CAP_IPC_LOCK))
                ret = do_mlockall(flags);
 diff --git a/mm/mmap.c b/mm/mmap.c
-index a65efd4..17d61ff 100644
+index eae90af..c930262 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
 @@ -46,6 +46,16 @@
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
 @@ -46,6 +46,16 @@
@@ -71331,7 +71941,18 @@ index a65efd4..17d61ff 100644
        vma->vm_mm = mm;
        vma->vm_start = addr;
        vma->vm_end = addr + len;
        vma->vm_mm = mm;
        vma->vm_start = addr;
        vma->vm_end = addr + len;
-@@ -1281,6 +1412,19 @@ munmap_back:
+@@ -1266,8 +1397,9 @@ munmap_back:
+       vma->vm_pgoff = pgoff;
+       INIT_LIST_HEAD(&vma->anon_vma_chain);
++      error = -EINVAL;        /* when rejecting VM_GROWSDOWN|VM_GROWSUP */
++
+       if (file) {
+-              error = -EINVAL;
+               if (vm_flags & (VM_GROWSDOWN|VM_GROWSUP))
+                       goto free_vma;
+               if (vm_flags & VM_DENYWRITE) {
+@@ -1281,6 +1413,19 @@ munmap_back:
                error = file->f_op->mmap(file, vma);
                if (error)
                        goto unmap_and_free_vma;
                error = file->f_op->mmap(file, vma);
                if (error)
                        goto unmap_and_free_vma;
@@ -71351,7 +71972,16 @@ index a65efd4..17d61ff 100644
                if (vm_flags & VM_EXECUTABLE)
                        added_exe_file_vma(mm);
  
                if (vm_flags & VM_EXECUTABLE)
                        added_exe_file_vma(mm);
  
-@@ -1316,6 +1460,11 @@ munmap_back:
+@@ -1293,6 +1438,8 @@ munmap_back:
+               pgoff = vma->vm_pgoff;
+               vm_flags = vma->vm_flags;
+       } else if (vm_flags & VM_SHARED) {
++              if (unlikely(vm_flags & (VM_GROWSDOWN|VM_GROWSUP)))
++                      goto free_vma;
+               error = shmem_zero_setup(vma);
+               if (error)
+                       goto free_vma;
+@@ -1316,6 +1463,11 @@ munmap_back:
        vma_link(mm, vma, prev, rb_link, rb_parent);
        file = vma->vm_file;
  
        vma_link(mm, vma, prev, rb_link, rb_parent);
        file = vma->vm_file;
  
@@ -71363,7 +71993,7 @@ index a65efd4..17d61ff 100644
        /* Once vma denies write, undo our temporary denial count */
        if (correct_wcount)
                atomic_inc(&inode->i_writecount);
        /* Once vma denies write, undo our temporary denial count */
        if (correct_wcount)
                atomic_inc(&inode->i_writecount);
-@@ -1324,6 +1473,7 @@ out:
+@@ -1324,6 +1476,7 @@ out:
  
        mm->total_vm += len >> PAGE_SHIFT;
        vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
  
        mm->total_vm += len >> PAGE_SHIFT;
        vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
@@ -71371,7 +72001,7 @@ index a65efd4..17d61ff 100644
        if (vm_flags & VM_LOCKED) {
                if (!mlock_vma_pages_range(vma, addr, addr + len))
                        mm->locked_vm += (len >> PAGE_SHIFT);
        if (vm_flags & VM_LOCKED) {
                if (!mlock_vma_pages_range(vma, addr, addr + len))
                        mm->locked_vm += (len >> PAGE_SHIFT);
-@@ -1341,6 +1491,12 @@ unmap_and_free_vma:
+@@ -1341,6 +1494,12 @@ unmap_and_free_vma:
        unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
        charged = 0;
  free_vma:
        unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
        charged = 0;
  free_vma:
@@ -71384,7 +72014,7 @@ index a65efd4..17d61ff 100644
        kmem_cache_free(vm_area_cachep, vma);
  unacct_error:
        if (charged)
        kmem_cache_free(vm_area_cachep, vma);
  unacct_error:
        if (charged)
-@@ -1348,6 +1504,44 @@ unacct_error:
+@@ -1348,6 +1507,44 @@ unacct_error:
        return error;
  }
  
        return error;
  }
  
@@ -71429,7 +72059,7 @@ index a65efd4..17d61ff 100644
  /* Get an address range which is currently unmapped.
   * For shmat() with addr=0.
   *
  /* Get an address range which is currently unmapped.
   * For shmat() with addr=0.
   *
-@@ -1374,18 +1568,23 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -1374,18 +1571,23 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
        if (flags & MAP_FIXED)
                return addr;
  
        if (flags & MAP_FIXED)
                return addr;
  
@@ -71460,7 +72090,7 @@ index a65efd4..17d61ff 100644
        }
  
  full_search:
        }
  
  full_search:
-@@ -1396,34 +1595,40 @@ full_search:
+@@ -1396,34 +1598,40 @@ full_search:
                         * Start a new search - just in case we missed
                         * some holes.
                         */
                         * Start a new search - just in case we missed
                         * some holes.
                         */
@@ -71512,7 +72142,7 @@ index a65efd4..17d61ff 100644
                mm->free_area_cache = addr;
                mm->cached_hole_size = ~0UL;
        }
                mm->free_area_cache = addr;
                mm->cached_hole_size = ~0UL;
        }
-@@ -1441,7 +1646,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1441,7 +1649,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
  {
        struct vm_area_struct *vma;
        struct mm_struct *mm = current->mm;
  {
        struct vm_area_struct *vma;
        struct mm_struct *mm = current->mm;
@@ -71521,7 +72151,7 @@ index a65efd4..17d61ff 100644
  
        /* requested length too big for entire address space */
        if (len > TASK_SIZE)
  
        /* requested length too big for entire address space */
        if (len > TASK_SIZE)
-@@ -1450,13 +1655,18 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1450,13 +1658,18 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        if (flags & MAP_FIXED)
                return addr;
  
        if (flags & MAP_FIXED)
                return addr;
  
@@ -71544,7 +72174,7 @@ index a65efd4..17d61ff 100644
        }
  
        /* check if free_area_cache is useful for us */
        }
  
        /* check if free_area_cache is useful for us */
-@@ -1471,7 +1681,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1471,7 +1684,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        /* make sure it can fit in the remaining address space */
        if (addr > len) {
                vma = find_vma(mm, addr-len);
        /* make sure it can fit in the remaining address space */
        if (addr > len) {
                vma = find_vma(mm, addr-len);
@@ -71553,7 +72183,7 @@ index a65efd4..17d61ff 100644
                        /* remember the address as a hint for next time */
                        return (mm->free_area_cache = addr-len);
        }
                        /* remember the address as a hint for next time */
                        return (mm->free_area_cache = addr-len);
        }
-@@ -1488,7 +1698,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1488,7 +1701,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                 * return with success:
                 */
                vma = find_vma(mm, addr);
                 * return with success:
                 */
                vma = find_vma(mm, addr);
@@ -71562,7 +72192,7 @@ index a65efd4..17d61ff 100644
                        /* remember the address as a hint for next time */
                        return (mm->free_area_cache = addr);
  
                        /* remember the address as a hint for next time */
                        return (mm->free_area_cache = addr);
  
-@@ -1497,8 +1707,8 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1497,8 +1710,8 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                        mm->cached_hole_size = vma->vm_start - addr;
  
                /* try just below the current vma->vm_start */
                        mm->cached_hole_size = vma->vm_start - addr;
  
                /* try just below the current vma->vm_start */
@@ -71573,7 +72203,7 @@ index a65efd4..17d61ff 100644
  
  bottomup:
        /*
  
  bottomup:
        /*
-@@ -1507,13 +1717,21 @@ bottomup:
+@@ -1507,13 +1720,21 @@ bottomup:
         * can happen with large stack limits and large mmap()
         * allocations.
         */
         * can happen with large stack limits and large mmap()
         * allocations.
         */
@@ -71597,7 +72227,7 @@ index a65efd4..17d61ff 100644
        mm->cached_hole_size = ~0UL;
  
        return addr;
        mm->cached_hole_size = ~0UL;
  
        return addr;
-@@ -1522,6 +1740,12 @@ bottomup:
+@@ -1522,6 +1743,12 @@ bottomup:
  
  void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
  {
  
  void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
  {
@@ -71610,7 +72240,7 @@ index a65efd4..17d61ff 100644
        /*
         * Is this a new hole at the highest possible address?
         */
        /*
         * Is this a new hole at the highest possible address?
         */
-@@ -1529,8 +1753,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
+@@ -1529,8 +1756,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
                mm->free_area_cache = addr;
  
        /* dont allow allocations above current base */
                mm->free_area_cache = addr;
  
        /* dont allow allocations above current base */
@@ -71622,15 +72252,63 @@ index a65efd4..17d61ff 100644
  }
  
  unsigned long
  }
  
  unsigned long
-@@ -1638,6 +1864,28 @@ out:
-       return prev ? prev->vm_next : vma;
- }
+@@ -1603,40 +1832,50 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
  
  
+ EXPORT_SYMBOL(find_vma);
+-/* Same as find_vma, but also return a pointer to the previous VMA in *pprev. */
++/*
++ * Same as find_vma, but also return a pointer to the previous VMA in *pprev.
++ */
+ struct vm_area_struct *
+ find_vma_prev(struct mm_struct *mm, unsigned long addr,
+                       struct vm_area_struct **pprev)
+ {
+-      struct vm_area_struct *vma = NULL, *prev = NULL;
+-      struct rb_node *rb_node;
+-      if (!mm)
+-              goto out;
+-
+-      /* Guard against addr being lower than the first VMA */
+-      vma = mm->mmap;
+-
+-      /* Go through the RB tree quickly. */
+-      rb_node = mm->mm_rb.rb_node;
+-
+-      while (rb_node) {
+-              struct vm_area_struct *vma_tmp;
+-              vma_tmp = rb_entry(rb_node, struct vm_area_struct, vm_rb);
+-
+-              if (addr < vma_tmp->vm_end) {
+-                      rb_node = rb_node->rb_left;
+-              } else {
+-                      prev = vma_tmp;
+-                      if (!prev->vm_next || (addr < prev->vm_next->vm_end))
+-                              break;
++      struct vm_area_struct *vma;
++
++      vma = find_vma(mm, addr);
++      if (vma) {
++              *pprev = vma->vm_prev;
++      } else {
++              struct rb_node *rb_node = mm->mm_rb.rb_node;
++              *pprev = NULL;
++              while (rb_node) {
++                      *pprev = rb_entry(rb_node, struct vm_area_struct, vm_rb);
+                       rb_node = rb_node->rb_right;
+               }
+       }
++      return vma;
++}
++
 +#ifdef CONFIG_PAX_SEGMEXEC
 +struct vm_area_struct *pax_find_mirror_vma(struct vm_area_struct *vma)
 +{
 +      struct vm_area_struct *vma_m;
 +#ifdef CONFIG_PAX_SEGMEXEC
 +struct vm_area_struct *pax_find_mirror_vma(struct vm_area_struct *vma)
 +{
 +      struct vm_area_struct *vma_m;
-+
+-out:
+-      *pprev = prev;
+-      return prev ? prev->vm_next : vma;
 +      BUG_ON(!vma || vma->vm_start >= vma->vm_end);
 +      if (!(vma->vm_mm->pax_flags & MF_PAX_SEGMEXEC) || !(vma->vm_flags & VM_EXEC)) {
 +              BUG_ON(vma->vm_mirror);
 +      BUG_ON(!vma || vma->vm_start >= vma->vm_end);
 +      if (!(vma->vm_mm->pax_flags & MF_PAX_SEGMEXEC) || !(vma->vm_flags & VM_EXEC)) {
 +              BUG_ON(vma->vm_mirror);
@@ -71645,13 +72323,12 @@ index a65efd4..17d61ff 100644
 +      BUG_ON(vma->anon_vma != vma_m->anon_vma && vma->anon_vma->root != vma_m->anon_vma->root);
 +      BUG_ON((vma->vm_flags ^ vma_m->vm_flags) & ~(VM_WRITE | VM_MAYWRITE | VM_ACCOUNT | VM_LOCKED | VM_RESERVED));
 +      return vma_m;
 +      BUG_ON(vma->anon_vma != vma_m->anon_vma && vma->anon_vma->root != vma_m->anon_vma->root);
 +      BUG_ON((vma->vm_flags ^ vma_m->vm_flags) & ~(VM_WRITE | VM_MAYWRITE | VM_ACCOUNT | VM_LOCKED | VM_RESERVED));
 +      return vma_m;
-+}
+ }
 +#endif
 +#endif
-+
  /*
   * Verify that the stack growth is acceptable and
  /*
   * Verify that the stack growth is acceptable and
-  * update accounting. This is shared with both the
-@@ -1654,6 +1902,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -1654,6 +1893,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
                return -ENOMEM;
  
        /* Stack limit test */
                return -ENOMEM;
  
        /* Stack limit test */
@@ -71659,7 +72336,7 @@ index a65efd4..17d61ff 100644
        if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
                return -ENOMEM;
  
        if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
                return -ENOMEM;
  
-@@ -1664,6 +1913,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -1664,6 +1904,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
                locked = mm->locked_vm + grow;
                limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
                limit >>= PAGE_SHIFT;
                locked = mm->locked_vm + grow;
                limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
                limit >>= PAGE_SHIFT;
@@ -71667,7 +72344,7 @@ index a65efd4..17d61ff 100644
                if (locked > limit && !capable(CAP_IPC_LOCK))
                        return -ENOMEM;
        }
                if (locked > limit && !capable(CAP_IPC_LOCK))
                        return -ENOMEM;
        }
-@@ -1694,37 +1944,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -1694,37 +1935,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
   * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
   * vma is the last one with address > vma->vm_end.  Have to extend vma.
   */
   * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
   * vma is the last one with address > vma->vm_end.  Have to extend vma.
   */
@@ -71725,7 +72402,7 @@ index a65efd4..17d61ff 100644
                unsigned long size, grow;
  
                size = address - vma->vm_start;
                unsigned long size, grow;
  
                size = address - vma->vm_start;
-@@ -1739,6 +2000,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
+@@ -1739,6 +1991,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
                        }
                }
        }
                        }
                }
        }
@@ -71734,7 +72411,7 @@ index a65efd4..17d61ff 100644
        vma_unlock_anon_vma(vma);
        khugepaged_enter_vma_merge(vma);
        return error;
        vma_unlock_anon_vma(vma);
        khugepaged_enter_vma_merge(vma);
        return error;
-@@ -1752,6 +2015,8 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -1752,6 +2006,8 @@ int expand_downwards(struct vm_area_struct *vma,
                                   unsigned long address)
  {
        int error;
                                   unsigned long address)
  {
        int error;
@@ -71743,7 +72420,7 @@ index a65efd4..17d61ff 100644
  
        /*
         * We must make sure the anon_vma is allocated
  
        /*
         * We must make sure the anon_vma is allocated
-@@ -1765,6 +2030,15 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -1765,6 +2021,15 @@ int expand_downwards(struct vm_area_struct *vma,
        if (error)
                return error;
  
        if (error)
                return error;
  
@@ -71759,7 +72436,7 @@ index a65efd4..17d61ff 100644
        vma_lock_anon_vma(vma);
  
        /*
        vma_lock_anon_vma(vma);
  
        /*
-@@ -1774,9 +2048,17 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -1774,9 +2039,17 @@ int expand_downwards(struct vm_area_struct *vma,
         */
  
        /* Somebody else might have raced and expanded it already */
         */
  
        /* Somebody else might have raced and expanded it already */
@@ -71778,7 +72455,7 @@ index a65efd4..17d61ff 100644
                size = vma->vm_end - address;
                grow = (vma->vm_start - address) >> PAGE_SHIFT;
  
                size = vma->vm_end - address;
                grow = (vma->vm_start - address) >> PAGE_SHIFT;
  
-@@ -1786,11 +2068,22 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -1786,11 +2059,22 @@ int expand_downwards(struct vm_area_struct *vma,
                        if (!error) {
                                vma->vm_start = address;
                                vma->vm_pgoff -= grow;
                        if (!error) {
                                vma->vm_start = address;
                                vma->vm_pgoff -= grow;
@@ -71801,7 +72478,7 @@ index a65efd4..17d61ff 100644
        khugepaged_enter_vma_merge(vma);
        return error;
  }
        khugepaged_enter_vma_merge(vma);
        return error;
  }
-@@ -1860,6 +2153,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -1860,6 +2144,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
        do {
                long nrpages = vma_pages(vma);
  
        do {
                long nrpages = vma_pages(vma);
  
@@ -71815,7 +72492,7 @@ index a65efd4..17d61ff 100644
                mm->total_vm -= nrpages;
                vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
                vma = remove_vma(vma);
                mm->total_vm -= nrpages;
                vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
                vma = remove_vma(vma);
-@@ -1905,6 +2205,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -1905,6 +2196,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
        insertion_point = (prev ? &prev->vm_next : &mm->mmap);
        vma->vm_prev = NULL;
        do {
        insertion_point = (prev ? &prev->vm_next : &mm->mmap);
        vma->vm_prev = NULL;
        do {
@@ -71832,7 +72509,7 @@ index a65efd4..17d61ff 100644
                rb_erase(&vma->vm_rb, &mm->mm_rb);
                mm->map_count--;
                tail_vma = vma;
                rb_erase(&vma->vm_rb, &mm->mm_rb);
                mm->map_count--;
                tail_vma = vma;
-@@ -1933,14 +2243,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1933,14 +2234,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
        struct vm_area_struct *new;
        int err = -ENOMEM;
  
        struct vm_area_struct *new;
        int err = -ENOMEM;
  
@@ -71866,7 +72543,7 @@ index a65efd4..17d61ff 100644
        /* most fields are the same, copy all, and then fixup */
        *new = *vma;
  
        /* most fields are the same, copy all, and then fixup */
        *new = *vma;
  
-@@ -1953,6 +2282,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1953,6 +2273,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
                new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
        }
  
                new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
        }
  
@@ -71889,7 +72566,7 @@ index a65efd4..17d61ff 100644
        pol = mpol_dup(vma_policy(vma));
        if (IS_ERR(pol)) {
                err = PTR_ERR(pol);
        pol = mpol_dup(vma_policy(vma));
        if (IS_ERR(pol)) {
                err = PTR_ERR(pol);
-@@ -1978,6 +2323,42 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1978,6 +2314,42 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
        else
                err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
  
        else
                err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
  
@@ -71932,7 +72609,7 @@ index a65efd4..17d61ff 100644
        /* Success. */
        if (!err)
                return 0;
        /* Success. */
        if (!err)
                return 0;
-@@ -1990,10 +2371,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1990,10 +2362,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
                        removed_exe_file_vma(mm);
                fput(new->vm_file);
        }
                        removed_exe_file_vma(mm);
                fput(new->vm_file);
        }
@@ -71952,7 +72629,7 @@ index a65efd4..17d61ff 100644
        kmem_cache_free(vm_area_cachep, new);
   out_err:
        return err;
        kmem_cache_free(vm_area_cachep, new);
   out_err:
        return err;
-@@ -2006,6 +2395,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2006,6 +2386,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
  int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
              unsigned long addr, int new_below)
  {
  int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
              unsigned long addr, int new_below)
  {
@@ -71968,7 +72645,7 @@ index a65efd4..17d61ff 100644
        if (mm->map_count >= sysctl_max_map_count)
                return -ENOMEM;
  
        if (mm->map_count >= sysctl_max_map_count)
                return -ENOMEM;
  
-@@ -2017,11 +2415,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2017,11 +2406,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
   * work.  This now handles partial unmappings.
   * Jeremy Fitzhardinge <jeremy@goop.org>
   */
   * work.  This now handles partial unmappings.
   * Jeremy Fitzhardinge <jeremy@goop.org>
   */
@@ -71999,7 +72676,7 @@ index a65efd4..17d61ff 100644
        if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
                return -EINVAL;
  
        if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
                return -EINVAL;
  
-@@ -2096,6 +2513,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
+@@ -2096,6 +2504,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
        /* Fix up all other VM information */
        remove_vma_list(mm, vma);
  
        /* Fix up all other VM information */
        remove_vma_list(mm, vma);
  
@@ -72008,7 +72685,7 @@ index a65efd4..17d61ff 100644
        return 0;
  }
  
        return 0;
  }
  
-@@ -2108,22 +2527,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
+@@ -2108,22 +2518,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
  
        profile_munmap(addr);
  
  
        profile_munmap(addr);
  
@@ -72037,7 +72714,7 @@ index a65efd4..17d61ff 100644
  /*
   *  this is really a simplified "do_mmap".  it only handles
   *  anonymous maps.  eventually we may be able to do some
  /*
   *  this is really a simplified "do_mmap".  it only handles
   *  anonymous maps.  eventually we may be able to do some
-@@ -2137,6 +2552,7 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2137,6 +2543,7 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
        struct rb_node ** rb_link, * rb_parent;
        pgoff_t pgoff = addr >> PAGE_SHIFT;
        int error;
        struct rb_node ** rb_link, * rb_parent;
        pgoff_t pgoff = addr >> PAGE_SHIFT;
        int error;
@@ -72045,7 +72722,7 @@ index a65efd4..17d61ff 100644
  
        len = PAGE_ALIGN(len);
        if (!len)
  
        len = PAGE_ALIGN(len);
        if (!len)
-@@ -2148,16 +2564,30 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2148,16 +2555,30 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
  
        flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
  
  
        flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
  
@@ -72077,7 +72754,7 @@ index a65efd4..17d61ff 100644
                locked += mm->locked_vm;
                lock_limit = rlimit(RLIMIT_MEMLOCK);
                lock_limit >>= PAGE_SHIFT;
                locked += mm->locked_vm;
                lock_limit = rlimit(RLIMIT_MEMLOCK);
                lock_limit >>= PAGE_SHIFT;
-@@ -2174,22 +2604,22 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2174,22 +2595,22 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
        /*
         * Clear old maps.  this also does some error checking for us
         */
        /*
         * Clear old maps.  this also does some error checking for us
         */
@@ -72104,7 +72781,7 @@ index a65efd4..17d61ff 100644
                return -ENOMEM;
  
        /* Can we just expand an old private anonymous mapping? */
                return -ENOMEM;
  
        /* Can we just expand an old private anonymous mapping? */
-@@ -2203,7 +2633,7 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2203,7 +2624,7 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
         */
        vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
        if (!vma) {
         */
        vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
        if (!vma) {
@@ -72113,7 +72790,7 @@ index a65efd4..17d61ff 100644
                return -ENOMEM;
        }
  
                return -ENOMEM;
        }
  
-@@ -2217,11 +2647,12 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2217,11 +2638,12 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
        vma_link(mm, vma, prev, rb_link, rb_parent);
  out:
        perf_event_mmap(vma);
        vma_link(mm, vma, prev, rb_link, rb_parent);
  out:
        perf_event_mmap(vma);
@@ -72128,7 +72805,7 @@ index a65efd4..17d61ff 100644
        return addr;
  }
  
        return addr;
  }
  
-@@ -2268,8 +2699,10 @@ void exit_mmap(struct mm_struct *mm)
+@@ -2268,8 +2690,10 @@ void exit_mmap(struct mm_struct *mm)
         * Walk the list again, actually closing and freeing it,
         * with preemption enabled, without holding any MM locks.
         */
         * Walk the list again, actually closing and freeing it,
         * with preemption enabled, without holding any MM locks.
         */
@@ -72140,7 +72817,7 @@ index a65efd4..17d61ff 100644
  
        BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT);
  }
  
        BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT);
  }
-@@ -2283,6 +2716,13 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
+@@ -2283,6 +2707,13 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
        struct vm_area_struct * __vma, * prev;
        struct rb_node ** rb_link, * rb_parent;
  
        struct vm_area_struct * __vma, * prev;
        struct rb_node ** rb_link, * rb_parent;
  
@@ -72154,7 +72831,7 @@ index a65efd4..17d61ff 100644
        /*
         * The vm_pgoff of a purely anonymous vma should be irrelevant
         * until its first write fault, when page's anon_vma and index
        /*
         * The vm_pgoff of a purely anonymous vma should be irrelevant
         * until its first write fault, when page's anon_vma and index
-@@ -2305,7 +2745,22 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
+@@ -2305,7 +2736,22 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
        if ((vma->vm_flags & VM_ACCOUNT) &&
             security_vm_enough_memory_mm(mm, vma_pages(vma)))
                return -ENOMEM;
        if ((vma->vm_flags & VM_ACCOUNT) &&
             security_vm_enough_memory_mm(mm, vma_pages(vma)))
                return -ENOMEM;
@@ -72177,7 +72854,7 @@ index a65efd4..17d61ff 100644
        return 0;
  }
  
        return 0;
  }
  
-@@ -2323,6 +2778,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2323,6 +2769,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
        struct rb_node **rb_link, *rb_parent;
        struct mempolicy *pol;
  
        struct rb_node **rb_link, *rb_parent;
        struct mempolicy *pol;
  
@@ -72186,7 +72863,7 @@ index a65efd4..17d61ff 100644
        /*
         * If anonymous vma has not yet been faulted, update new pgoff
         * to match new location, to increase its chance of merging.
        /*
         * If anonymous vma has not yet been faulted, update new pgoff
         * to match new location, to increase its chance of merging.
-@@ -2373,6 +2830,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2373,6 +2821,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
        return NULL;
  }
  
        return NULL;
  }
  
@@ -72226,7 +72903,7 @@ index a65efd4..17d61ff 100644
  /*
   * Return true if the calling process may expand its vm space by the passed
   * number of pages
  /*
   * Return true if the calling process may expand its vm space by the passed
   * number of pages
-@@ -2383,7 +2873,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
+@@ -2383,7 +2864,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
        unsigned long lim;
  
        lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
        unsigned long lim;
  
        lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
@@ -72235,7 +72912,7 @@ index a65efd4..17d61ff 100644
        if (cur + npages > lim)
                return 0;
        return 1;
        if (cur + npages > lim)
                return 0;
        return 1;
-@@ -2454,6 +2944,22 @@ int install_special_mapping(struct mm_struct *mm,
+@@ -2454,6 +2935,22 @@ int install_special_mapping(struct mm_struct *mm,
        vma->vm_start = addr;
        vma->vm_end = addr + len;
  
        vma->vm_start = addr;
        vma->vm_end = addr + len;
  
@@ -72489,12 +73166,12 @@ index 5a688a2..27e031c 100644
  
                if (nstart < prev->vm_end)
 diff --git a/mm/mremap.c b/mm/mremap.c
  
                if (nstart < prev->vm_end)
 diff --git a/mm/mremap.c b/mm/mremap.c
-index 506fa44..ccc0ba9 100644
+index d6959cb..18a402a 100644
 --- a/mm/mremap.c
 +++ b/mm/mremap.c
 --- a/mm/mremap.c
 +++ b/mm/mremap.c
-@@ -113,6 +113,12 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd,
+@@ -106,6 +106,12 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd,
                        continue;
                        continue;
-               pte = ptep_clear_flush(vma, old_addr, old_pte);
+               pte = ptep_get_and_clear(mm, old_addr, old_pte);
                pte = move_pte(pte, new_vma->vm_page_prot, old_addr, new_addr);
 +
 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
                pte = move_pte(pte, new_vma->vm_page_prot, old_addr, new_addr);
 +
 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
@@ -72505,7 +73182,7 @@ index 506fa44..ccc0ba9 100644
                set_pte_at(mm, new_addr, new_pte, pte);
        }
  
                set_pte_at(mm, new_addr, new_pte, pte);
        }
  
-@@ -272,6 +278,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr,
+@@ -290,6 +296,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr,
        if (is_vm_hugetlb_page(vma))
                goto Einval;
  
        if (is_vm_hugetlb_page(vma))
                goto Einval;
  
@@ -72517,7 +73194,7 @@ index 506fa44..ccc0ba9 100644
        /* We can't remap across vm area boundaries */
        if (old_len > vma->vm_end - addr)
                goto Efault;
        /* We can't remap across vm area boundaries */
        if (old_len > vma->vm_end - addr)
                goto Efault;
-@@ -328,20 +339,25 @@ static unsigned long mremap_to(unsigned long addr,
+@@ -346,20 +357,25 @@ static unsigned long mremap_to(unsigned long addr,
        unsigned long ret = -EINVAL;
        unsigned long charged = 0;
        unsigned long map_flags;
        unsigned long ret = -EINVAL;
        unsigned long charged = 0;
        unsigned long map_flags;
@@ -72548,7 +73225,7 @@ index 506fa44..ccc0ba9 100644
                goto out;
  
        ret = security_file_mmap(NULL, 0, 0, 0, new_addr, 1);
                goto out;
  
        ret = security_file_mmap(NULL, 0, 0, 0, new_addr, 1);
-@@ -413,6 +429,7 @@ unsigned long do_mremap(unsigned long addr,
+@@ -431,6 +447,7 @@ unsigned long do_mremap(unsigned long addr,
        struct vm_area_struct *vma;
        unsigned long ret = -EINVAL;
        unsigned long charged = 0;
        struct vm_area_struct *vma;
        unsigned long ret = -EINVAL;
        unsigned long charged = 0;
@@ -72556,7 +73233,7 @@ index 506fa44..ccc0ba9 100644
  
        if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE))
                goto out;
  
        if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE))
                goto out;
-@@ -431,6 +448,17 @@ unsigned long do_mremap(unsigned long addr,
+@@ -449,6 +466,17 @@ unsigned long do_mremap(unsigned long addr,
        if (!new_len)
                goto out;
  
        if (!new_len)
                goto out;
  
@@ -72574,7 +73251,7 @@ index 506fa44..ccc0ba9 100644
        if (flags & MREMAP_FIXED) {
                if (flags & MREMAP_MAYMOVE)
                        ret = mremap_to(addr, old_len, new_addr, new_len);
        if (flags & MREMAP_FIXED) {
                if (flags & MREMAP_MAYMOVE)
                        ret = mremap_to(addr, old_len, new_addr, new_len);
-@@ -480,6 +508,7 @@ unsigned long do_mremap(unsigned long addr,
+@@ -498,6 +526,7 @@ unsigned long do_mremap(unsigned long addr,
                                                   addr + new_len);
                        }
                        ret = addr;
                                                   addr + new_len);
                        }
                        ret = addr;
@@ -72582,7 +73259,7 @@ index 506fa44..ccc0ba9 100644
                        goto out;
                }
        }
                        goto out;
                }
        }
-@@ -506,7 +535,13 @@ unsigned long do_mremap(unsigned long addr,
+@@ -524,7 +553,13 @@ unsigned long do_mremap(unsigned long addr,
                ret = security_file_mmap(NULL, 0, 0, 0, new_addr, 1);
                if (ret)
                        goto out;
                ret = security_file_mmap(NULL, 0, 0, 0, new_addr, 1);
                if (ret)
                        goto out;
@@ -72597,7 +73274,7 @@ index 506fa44..ccc0ba9 100644
  out:
        if (ret & ~PAGE_MASK)
 diff --git a/mm/nobootmem.c b/mm/nobootmem.c
  out:
        if (ret & ~PAGE_MASK)
 diff --git a/mm/nobootmem.c b/mm/nobootmem.c
-index 6e93dc7..c98df0c 100644
+index 7fa41b4..6087460 100644
 --- a/mm/nobootmem.c
 +++ b/mm/nobootmem.c
 @@ -110,19 +110,30 @@ static void __init __free_pages_memory(unsigned long start, unsigned long end)
 --- a/mm/nobootmem.c
 +++ b/mm/nobootmem.c
 @@ -110,19 +110,30 @@ static void __init __free_pages_memory(unsigned long start, unsigned long end)
@@ -72634,7 +73311,7 @@ index 6e93dc7..c98df0c 100644
        return count;
  }
 diff --git a/mm/nommu.c b/mm/nommu.c
        return count;
  }
 diff --git a/mm/nommu.c b/mm/nommu.c
-index 4358032..e79b99f 100644
+index f59e170..34e2a2b 100644
 --- a/mm/nommu.c
 +++ b/mm/nommu.c
 @@ -62,7 +62,6 @@ int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */
 --- a/mm/nommu.c
 +++ b/mm/nommu.c
 @@ -62,7 +62,6 @@ int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */
@@ -72645,7 +73322,7 @@ index 4358032..e79b99f 100644
  
  atomic_long_t mmap_pages_allocated;
  
  
  atomic_long_t mmap_pages_allocated;
  
-@@ -825,15 +824,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
+@@ -827,15 +826,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
  EXPORT_SYMBOL(find_vma);
  
  /*
  EXPORT_SYMBOL(find_vma);
  
  /*
@@ -72661,7 +73338,7 @@ index 4358032..e79b99f 100644
   * expand a stack to a given address
   * - not supported under NOMMU conditions
   */
   * expand a stack to a given address
   * - not supported under NOMMU conditions
   */
-@@ -1553,6 +1543,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -1555,6 +1545,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
  
        /* most fields are the same, copy all, and then fixup */
        *new = *vma;
  
        /* most fields are the same, copy all, and then fixup */
        *new = *vma;
@@ -72669,24 +73346,11 @@ index 4358032..e79b99f 100644
        *region = *vma->vm_region;
        new->vm_region = region;
  
        *region = *vma->vm_region;
        new->vm_region = region;
  
-diff --git a/mm/oom_kill.c b/mm/oom_kill.c
-index 626303b..e9a1785 100644
---- a/mm/oom_kill.c
-+++ b/mm/oom_kill.c
-@@ -162,7 +162,7 @@ static bool oom_unkillable_task(struct task_struct *p,
- unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem,
-                     const nodemask_t *nodemask, unsigned long totalpages)
- {
--      int points;
-+      long points;
-       if (oom_unkillable_task(p, mem, nodemask))
-               return 0;
 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 6e8ecb6..d9e3d7a 100644
+index 485be89..c059ad3 100644
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -340,7 +340,7 @@ out:
+@@ -341,7 +341,7 @@ out:
   * This usage means that zero-order pages may not be compound.
   */
  
   * This usage means that zero-order pages may not be compound.
   */
  
@@ -72695,17 +73359,7 @@ index 6e8ecb6..d9e3d7a 100644
  {
        __free_pages_ok(page, compound_order(page));
  }
  {
        __free_pages_ok(page, compound_order(page));
  }
-@@ -355,8 +355,8 @@ void prep_compound_page(struct page *page, unsigned long order)
-       __SetPageHead(page);
-       for (i = 1; i < nr_pages; i++) {
-               struct page *p = page + i;
--
-               __SetPageTail(p);
-+              set_page_count(p, 0);
-               p->first_page = page;
-       }
- }
-@@ -653,6 +653,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
+@@ -654,6 +654,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
        int i;
        int bad = 0;
  
        int i;
        int bad = 0;
  
@@ -72716,7 +73370,7 @@ index 6e8ecb6..d9e3d7a 100644
        trace_mm_page_free_direct(page, order);
        kmemcheck_free_shadow(page, order);
  
        trace_mm_page_free_direct(page, order);
        kmemcheck_free_shadow(page, order);
  
-@@ -668,6 +672,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
+@@ -669,6 +673,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
                debug_check_no_obj_freed(page_address(page),
                                           PAGE_SIZE << order);
        }
                debug_check_no_obj_freed(page_address(page),
                                           PAGE_SIZE << order);
        }
@@ -72729,7 +73383,7 @@ index 6e8ecb6..d9e3d7a 100644
        arch_free_page(page, order);
        kernel_map_pages(page, 1 << order, 0);
  
        arch_free_page(page, order);
        kernel_map_pages(page, 1 << order, 0);
  
-@@ -783,8 +793,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
+@@ -784,8 +794,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
        arch_alloc_page(page, order);
        kernel_map_pages(page, 1 << order, 1);
  
        arch_alloc_page(page, order);
        kernel_map_pages(page, 1 << order, 1);
  
@@ -72740,16 +73394,7 @@ index 6e8ecb6..d9e3d7a 100644
  
        if (order && (gfp_flags & __GFP_COMP))
                prep_compound_page(page, order);
  
        if (order && (gfp_flags & __GFP_COMP))
                prep_compound_page(page, order);
-@@ -2539,6 +2551,8 @@ void show_free_areas(unsigned int filter)
-       int cpu;
-       struct zone *zone;
-+      pax_track_stack();
-+
-       for_each_populated_zone(zone) {
-               if (skip_free_areas_node(filter, zone_to_nid(zone)))
-                       continue;
-@@ -3350,7 +3364,13 @@ static int pageblock_is_reserved(unsigned long start_pfn, unsigned long end_pfn)
+@@ -3357,7 +3369,13 @@ static int pageblock_is_reserved(unsigned long start_pfn, unsigned long end_pfn)
        unsigned long pfn;
  
        for (pfn = start_pfn; pfn < end_pfn; pfn++) {
        unsigned long pfn;
  
        for (pfn = start_pfn; pfn < end_pfn; pfn++) {
@@ -72763,20 +73408,12 @@ index 6e8ecb6..d9e3d7a 100644
                        return 1;
        }
        return 0;
                        return 1;
        }
        return 0;
-@@ -3373,6 +3393,7 @@ static void setup_zone_migrate_reserve(struct zone *zone)
-       /* Get the start pfn, end pfn and the number of blocks to reserve */
-       start_pfn = zone->zone_start_pfn;
-       end_pfn = start_pfn + zone->spanned_pages;
-+      start_pfn = roundup(start_pfn, pageblock_nr_pages);
-       reserve = roundup(min_wmark_pages(zone), pageblock_nr_pages) >>
-                                                       pageblock_order;
 diff --git a/mm/percpu.c b/mm/percpu.c
 diff --git a/mm/percpu.c b/mm/percpu.c
-index bf80e55..c7c3f9a 100644
+index 716eb4a..8d10419 100644
 --- a/mm/percpu.c
 +++ b/mm/percpu.c
 --- a/mm/percpu.c
 +++ b/mm/percpu.c
-@@ -121,7 +121,7 @@ static unsigned int pcpu_first_unit_cpu __read_mostly;
- static unsigned int pcpu_last_unit_cpu __read_mostly;
+@@ -121,7 +121,7 @@ static unsigned int pcpu_low_unit_cpu __read_mostly;
+ static unsigned int pcpu_high_unit_cpu __read_mostly;
  
  /* the address of the first chunk which starts with the kernel static area */
 -void *pcpu_base_addr __read_mostly;
  
  /* the address of the first chunk which starts with the kernel static area */
 -void *pcpu_base_addr __read_mostly;
@@ -72784,8 +73421,81 @@ index bf80e55..c7c3f9a 100644
  EXPORT_SYMBOL_GPL(pcpu_base_addr);
  
  static const int *pcpu_unit_map __read_mostly;                /* cpu -> unit */
  EXPORT_SYMBOL_GPL(pcpu_base_addr);
  
  static const int *pcpu_unit_map __read_mostly;                /* cpu -> unit */
+diff --git a/mm/process_vm_access.c b/mm/process_vm_access.c
+index e920aa3..137702a 100644
+--- a/mm/process_vm_access.c
++++ b/mm/process_vm_access.c
+@@ -13,6 +13,7 @@
+ #include <linux/uio.h>
+ #include <linux/sched.h>
+ #include <linux/highmem.h>
++#include <linux/security.h>
+ #include <linux/ptrace.h>
+ #include <linux/slab.h>
+ #include <linux/syscalls.h>
+@@ -258,19 +259,19 @@ static ssize_t process_vm_rw_core(pid_t pid, const struct iovec *lvec,
+       size_t iov_l_curr_offset = 0;
+       ssize_t iov_len;
++      return -ENOSYS; // PaX: until properly audited
++
+       /*
+        * Work out how many pages of struct pages we're going to need
+        * when eventually calling get_user_pages
+        */
+       for (i = 0; i < riovcnt; i++) {
+               iov_len = rvec[i].iov_len;
+-              if (iov_len > 0) {
+-                      nr_pages_iov = ((unsigned long)rvec[i].iov_base
+-                                      + iov_len)
+-                              / PAGE_SIZE - (unsigned long)rvec[i].iov_base
+-                              / PAGE_SIZE + 1;
+-                      nr_pages = max(nr_pages, nr_pages_iov);
+-              }
++              if (iov_len <= 0)
++                      continue;
++              nr_pages_iov = ((unsigned long)rvec[i].iov_base + iov_len) / PAGE_SIZE -
++                              (unsigned long)rvec[i].iov_base / PAGE_SIZE + 1;
++              nr_pages = max(nr_pages, nr_pages_iov);
+       }
+       if (nr_pages == 0)
+@@ -298,23 +299,23 @@ static ssize_t process_vm_rw_core(pid_t pid, const struct iovec *lvec,
+               goto free_proc_pages;
+       }
+-      task_lock(task);
+-      if (__ptrace_may_access(task, PTRACE_MODE_ATTACH)) {
+-              task_unlock(task);
++      if (gr_handle_ptrace(task, vm_write ? PTRACE_POKETEXT : PTRACE_ATTACH)) {
+               rc = -EPERM;
+               goto put_task_struct;
+       }
+-      mm = task->mm;
+-      if (!mm || (task->flags & PF_KTHREAD)) {
+-              task_unlock(task);
+-              rc = -EINVAL;
++      mm = mm_access(task, PTRACE_MODE_ATTACH);
++      if (!mm || IS_ERR(mm)) {
++              rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH;
++              /*
++               * Explicitly map EACCES to EPERM as EPERM is a more a
++               * appropriate error code for process_vw_readv/writev
++               */
++              if (rc == -EACCES)
++                      rc = -EPERM;
+               goto put_task_struct;
+       }
+-      atomic_inc(&mm->mm_users);
+-      task_unlock(task);
+-
+       for (i = 0; i < riovcnt && iov_l_curr_idx < liovcnt; i++) {
+               rc = process_vm_rw_single_vec(
+                       (unsigned long)rvec[i].iov_base, rvec[i].iov_len,
 diff --git a/mm/rmap.c b/mm/rmap.c
 diff --git a/mm/rmap.c b/mm/rmap.c
-index 8005080..198c2cd 100644
+index a4fd368..e0ffec7 100644
 --- a/mm/rmap.c
 +++ b/mm/rmap.c
 @@ -152,6 +152,10 @@ int anon_vma_prepare(struct vm_area_struct *vma)
 --- a/mm/rmap.c
 +++ b/mm/rmap.c
 @@ -152,6 +152,10 @@ int anon_vma_prepare(struct vm_area_struct *vma)
@@ -72878,11 +73588,11 @@ index 8005080..198c2cd 100644
        struct anon_vma_chain *avc;
        struct anon_vma *anon_vma;
 diff --git a/mm/shmem.c b/mm/shmem.c
        struct anon_vma_chain *avc;
        struct anon_vma *anon_vma;
 diff --git a/mm/shmem.c b/mm/shmem.c
-index 32f6763..431c405 100644
+index 6c253f7..367e20a 100644
 --- a/mm/shmem.c
 +++ b/mm/shmem.c
 @@ -31,7 +31,7 @@
 --- a/mm/shmem.c
 +++ b/mm/shmem.c
 @@ -31,7 +31,7 @@
- #include <linux/module.h>
+ #include <linux/export.h>
  #include <linux/swap.h>
  
 -static struct vfsmount *shm_mnt;
  #include <linux/swap.h>
  
 -static struct vfsmount *shm_mnt;
@@ -72899,16 +73609,7 @@ index 32f6763..431c405 100644
  
  struct shmem_xattr {
        struct list_head list;  /* anchored by shmem_inode_info->xattr_list */
  
  struct shmem_xattr {
        struct list_head list;  /* anchored by shmem_inode_info->xattr_list */
-@@ -769,6 +769,8 @@ static struct page *shmem_swapin(swp_entry_t swap, gfp_t gfp,
-       struct mempolicy mpol, *spol;
-       struct vm_area_struct pvma;
-+      pax_track_stack();
-+
-       spol = mpol_cond_copy(&mpol,
-                       mpol_shared_policy_lookup(&info->policy, index));
-@@ -2149,8 +2151,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
+@@ -2180,8 +2180,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
        int err = -ENOMEM;
  
        /* Round up to L1_CACHE_BYTES to resist false sharing */
        int err = -ENOMEM;
  
        /* Round up to L1_CACHE_BYTES to resist false sharing */
@@ -72919,7 +73620,7 @@ index 32f6763..431c405 100644
                return -ENOMEM;
  
 diff --git a/mm/slab.c b/mm/slab.c
                return -ENOMEM;
  
 diff --git a/mm/slab.c b/mm/slab.c
-index 893c76d..a742de2 100644
+index 83311c9a..fcf8f86 100644
 --- a/mm/slab.c
 +++ b/mm/slab.c
 @@ -151,7 +151,7 @@
 --- a/mm/slab.c
 +++ b/mm/slab.c
 @@ -151,7 +151,7 @@
@@ -73009,7 +73710,7 @@ index 893c76d..a742de2 100644
                                        NULL);
                }
  #ifdef CONFIG_ZONE_DMA
                                        NULL);
                }
  #ifdef CONFIG_ZONE_DMA
-@@ -4327,10 +4327,10 @@ static int s_show(struct seq_file *m, void *p)
+@@ -4322,10 +4322,10 @@ static int s_show(struct seq_file *m, void *p)
        }
        /* cpu stats */
        {
        }
        /* cpu stats */
        {
@@ -73024,21 +73725,12 @@ index 893c76d..a742de2 100644
  
                seq_printf(m, " : cpustat %6lu %6lu %6lu %6lu",
                           allochit, allocmiss, freehit, freemiss);
  
                seq_printf(m, " : cpustat %6lu %6lu %6lu %6lu",
                           allochit, allocmiss, freehit, freemiss);
-@@ -4587,15 +4587,70 @@ static const struct file_operations proc_slabstats_operations = {
- static int __init slab_proc_init(void)
+@@ -4584,13 +4584,62 @@ static int __init slab_proc_init(void)
  {
  {
--      proc_create("slabinfo",S_IWUSR|S_IRUGO,NULL,&proc_slabinfo_operations);
-+      mode_t gr_mode = S_IRUGO;
-+
-+#ifdef CONFIG_GRKERNSEC_PROC_ADD
-+      gr_mode = S_IRUSR;
-+#endif
-+
-+      proc_create("slabinfo",S_IWUSR|gr_mode,NULL,&proc_slabinfo_operations);
+       proc_create("slabinfo",S_IWUSR|S_IRUSR,NULL,&proc_slabinfo_operations);
  #ifdef CONFIG_DEBUG_SLAB_LEAK
 -      proc_create("slab_allocators", 0, NULL, &proc_slabstats_operations);
  #ifdef CONFIG_DEBUG_SLAB_LEAK
 -      proc_create("slab_allocators", 0, NULL, &proc_slabstats_operations);
-+      proc_create("slab_allocators", gr_mode, NULL, &proc_slabstats_operations);
++      proc_create("slab_allocators", S_IRUSR, NULL, &proc_slabstats_operations);
  #endif
        return 0;
  }
  #endif
        return 0;
  }
@@ -73098,7 +73790,7 @@ index 893c76d..a742de2 100644
   * ksize - get the actual amount of memory allocated for a given object
   * @objp: Pointer to the object
 diff --git a/mm/slob.c b/mm/slob.c
   * ksize - get the actual amount of memory allocated for a given object
   * @objp: Pointer to the object
 diff --git a/mm/slob.c b/mm/slob.c
-index bf39181..727f7a3 100644
+index 8105be4..e045f96 100644
 --- a/mm/slob.c
 +++ b/mm/slob.c
 @@ -29,7 +29,7 @@
 --- a/mm/slob.c
 +++ b/mm/slob.c
 @@ -29,7 +29,7 @@
@@ -73289,7 +73981,7 @@ index bf39181..727f7a3 100644
 +
 +      type = "<process stack>";
 +      sp = slob_page(ptr);
 +
 +      type = "<process stack>";
 +      sp = slob_page(ptr);
-+      if (!PageSlab((struct page*)sp)) {
++      if (!PageSlab((struct page *)sp)) {
 +              if (object_is_on_stack(ptr, n) == -1)
 +                      goto report;
 +              return;
 +              if (object_is_on_stack(ptr, n) == -1)
 +                      goto report;
 +              return;
@@ -73454,7 +74146,7 @@ index bf39181..727f7a3 100644
  EXPORT_SYMBOL(kmem_cache_free);
  
 diff --git a/mm/slub.c b/mm/slub.c
  EXPORT_SYMBOL(kmem_cache_free);
  
 diff --git a/mm/slub.c b/mm/slub.c
-index 7c54fe8..0bb4ac5 100644
+index 1a919f0..1739c9b 100644
 --- a/mm/slub.c
 +++ b/mm/slub.c
 @@ -208,7 +208,7 @@ struct track {
 --- a/mm/slub.c
 +++ b/mm/slub.c
 @@ -208,7 +208,7 @@ struct track {
@@ -73466,7 +74158,7 @@ index 7c54fe8..0bb4ac5 100644
  static int sysfs_slab_add(struct kmem_cache *);
  static int sysfs_slab_alias(struct kmem_cache *, const char *);
  static void sysfs_slab_remove(struct kmem_cache *);
  static int sysfs_slab_add(struct kmem_cache *);
  static int sysfs_slab_alias(struct kmem_cache *, const char *);
  static void sysfs_slab_remove(struct kmem_cache *);
-@@ -556,7 +556,7 @@ static void print_track(const char *s, struct track *t)
+@@ -530,7 +530,7 @@ static void print_track(const char *s, struct track *t)
        if (!t->addr)
                return;
  
        if (!t->addr)
                return;
  
@@ -73475,7 +74167,7 @@ index 7c54fe8..0bb4ac5 100644
                s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
  #ifdef CONFIG_STACKTRACE
        {
                s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
  #ifdef CONFIG_STACKTRACE
        {
-@@ -2456,6 +2456,8 @@ void kmem_cache_free(struct kmem_cache *s, void *x)
+@@ -2559,6 +2559,8 @@ void kmem_cache_free(struct kmem_cache *s, void *x)
  
        page = virt_to_head_page(x);
  
  
        page = virt_to_head_page(x);
  
@@ -73484,7 +74176,7 @@ index 7c54fe8..0bb4ac5 100644
        slab_free(s, page, x, _RET_IP_);
  
        trace_kmem_cache_free(_RET_IP_, x);
        slab_free(s, page, x, _RET_IP_);
  
        trace_kmem_cache_free(_RET_IP_, x);
-@@ -2489,7 +2491,7 @@ static int slub_min_objects;
+@@ -2592,7 +2594,7 @@ static int slub_min_objects;
   * Merge control. If this is set then no merging of slab caches will occur.
   * (Could be removed. This was introduced to pacify the merge skeptics.)
   */
   * Merge control. If this is set then no merging of slab caches will occur.
   * (Could be removed. This was introduced to pacify the merge skeptics.)
   */
@@ -73493,16 +74185,16 @@ index 7c54fe8..0bb4ac5 100644
  
  /*
   * Calculate the order of allocation given an slab object size.
  
  /*
   * Calculate the order of allocation given an slab object size.
-@@ -2912,7 +2914,7 @@ static int kmem_cache_open(struct kmem_cache *s,
-        * list to avoid pounding the page allocator excessively.
-        */
-       set_min_partial(s, ilog2(s->size));
+@@ -3042,7 +3044,7 @@ static int kmem_cache_open(struct kmem_cache *s,
+       else
+               s->cpu_partial = 30;
 -      s->refcount = 1;
 +      atomic_set(&s->refcount, 1);
  #ifdef CONFIG_NUMA
        s->remote_node_defrag_ratio = 1000;
  #endif
 -      s->refcount = 1;
 +      atomic_set(&s->refcount, 1);
  #ifdef CONFIG_NUMA
        s->remote_node_defrag_ratio = 1000;
  #endif
-@@ -3017,8 +3019,7 @@ static inline int kmem_cache_close(struct kmem_cache *s)
+@@ -3146,8 +3148,7 @@ static inline int kmem_cache_close(struct kmem_cache *s)
  void kmem_cache_destroy(struct kmem_cache *s)
  {
        down_write(&slub_lock);
  void kmem_cache_destroy(struct kmem_cache *s)
  {
        down_write(&slub_lock);
@@ -73510,9 +74202,9 @@ index 7c54fe8..0bb4ac5 100644
 -      if (!s->refcount) {
 +      if (atomic_dec_and_test(&s->refcount)) {
                list_del(&s->list);
 -      if (!s->refcount) {
 +      if (atomic_dec_and_test(&s->refcount)) {
                list_del(&s->list);
+               up_write(&slub_lock);
                if (kmem_cache_close(s)) {
                if (kmem_cache_close(s)) {
-                       printk(KERN_ERR "SLUB %s: %s called for cache that "
-@@ -3228,6 +3229,50 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)
+@@ -3358,6 +3359,50 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)
  EXPORT_SYMBOL(__kmalloc_node);
  #endif
  
  EXPORT_SYMBOL(__kmalloc_node);
  #endif
  
@@ -73563,7 +74255,7 @@ index 7c54fe8..0bb4ac5 100644
  size_t ksize(const void *object)
  {
        struct page *page;
  size_t ksize(const void *object)
  {
        struct page *page;
-@@ -3502,7 +3547,7 @@ static void __init kmem_cache_bootstrap_fixup(struct kmem_cache *s)
+@@ -3632,7 +3677,7 @@ static void __init kmem_cache_bootstrap_fixup(struct kmem_cache *s)
        int node;
  
        list_add(&s->list, &slab_caches);
        int node;
  
        list_add(&s->list, &slab_caches);
@@ -73572,7 +74264,7 @@ index 7c54fe8..0bb4ac5 100644
  
        for_each_node_state(node, N_NORMAL_MEMORY) {
                struct kmem_cache_node *n = get_node(s, node);
  
        for_each_node_state(node, N_NORMAL_MEMORY) {
                struct kmem_cache_node *n = get_node(s, node);
-@@ -3619,17 +3664,17 @@ void __init kmem_cache_init(void)
+@@ -3749,17 +3794,17 @@ void __init kmem_cache_init(void)
  
        /* Caches that are not of the two-to-the-power-of size */
        if (KMALLOC_MIN_SIZE <= 32) {
  
        /* Caches that are not of the two-to-the-power-of size */
        if (KMALLOC_MIN_SIZE <= 32) {
@@ -73593,7 +74285,7 @@ index 7c54fe8..0bb4ac5 100644
                caches++;
        }
  
                caches++;
        }
  
-@@ -3697,7 +3742,7 @@ static int slab_unmergeable(struct kmem_cache *s)
+@@ -3827,7 +3872,7 @@ static int slab_unmergeable(struct kmem_cache *s)
        /*
         * We may have set a slab to be unmergeable during bootstrap.
         */
        /*
         * We may have set a slab to be unmergeable during bootstrap.
         */
@@ -73602,7 +74294,7 @@ index 7c54fe8..0bb4ac5 100644
                return 1;
  
        return 0;
                return 1;
  
        return 0;
-@@ -3756,7 +3801,7 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
+@@ -3886,7 +3931,7 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
        down_write(&slub_lock);
        s = find_mergeable(size, align, flags, name, ctor);
        if (s) {
        down_write(&slub_lock);
        s = find_mergeable(size, align, flags, name, ctor);
        if (s) {
@@ -73611,7 +74303,7 @@ index 7c54fe8..0bb4ac5 100644
                /*
                 * Adjust the object sizes so that we clear
                 * the complete object on kzalloc.
                /*
                 * Adjust the object sizes so that we clear
                 * the complete object on kzalloc.
-@@ -3765,7 +3810,7 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
+@@ -3895,7 +3940,7 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
                s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *)));
  
                if (sysfs_slab_alias(s, name)) {
                s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *)));
  
                if (sysfs_slab_alias(s, name)) {
@@ -73620,7 +74312,7 @@ index 7c54fe8..0bb4ac5 100644
                        goto err;
                }
                up_write(&slub_lock);
                        goto err;
                }
                up_write(&slub_lock);
-@@ -3893,7 +3938,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
+@@ -4023,7 +4068,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
  }
  #endif
  
  }
  #endif
  
@@ -73629,7 +74321,7 @@ index 7c54fe8..0bb4ac5 100644
  static int count_inuse(struct page *page)
  {
        return page->inuse;
  static int count_inuse(struct page *page)
  {
        return page->inuse;
-@@ -4280,12 +4325,12 @@ static void resiliency_test(void)
+@@ -4410,12 +4455,12 @@ static void resiliency_test(void)
        validate_slab_cache(kmalloc_caches[9]);
  }
  #else
        validate_slab_cache(kmalloc_caches[9]);
  }
  #else
@@ -73644,7 +74336,7 @@ index 7c54fe8..0bb4ac5 100644
  enum slab_stat_type {
        SL_ALL,                 /* All slabs */
        SL_PARTIAL,             /* Only partially allocated slabs */
  enum slab_stat_type {
        SL_ALL,                 /* All slabs */
        SL_PARTIAL,             /* Only partially allocated slabs */
-@@ -4495,7 +4540,7 @@ SLAB_ATTR_RO(ctor);
+@@ -4656,7 +4701,7 @@ SLAB_ATTR_RO(ctor);
  
  static ssize_t aliases_show(struct kmem_cache *s, char *buf)
  {
  
  static ssize_t aliases_show(struct kmem_cache *s, char *buf)
  {
@@ -73653,7 +74345,7 @@ index 7c54fe8..0bb4ac5 100644
  }
  SLAB_ATTR_RO(aliases);
  
  }
  SLAB_ATTR_RO(aliases);
  
-@@ -5025,6 +5070,7 @@ static char *create_unique_id(struct kmem_cache *s)
+@@ -5223,6 +5268,7 @@ static char *create_unique_id(struct kmem_cache *s)
        return name;
  }
  
        return name;
  }
  
@@ -73661,7 +74353,7 @@ index 7c54fe8..0bb4ac5 100644
  static int sysfs_slab_add(struct kmem_cache *s)
  {
        int err;
  static int sysfs_slab_add(struct kmem_cache *s)
  {
        int err;
-@@ -5087,6 +5133,7 @@ static void sysfs_slab_remove(struct kmem_cache *s)
+@@ -5285,6 +5331,7 @@ static void sysfs_slab_remove(struct kmem_cache *s)
        kobject_del(&s->kobj);
        kobject_put(&s->kobj);
  }
        kobject_del(&s->kobj);
        kobject_put(&s->kobj);
  }
@@ -73669,7 +74361,7 @@ index 7c54fe8..0bb4ac5 100644
  
  /*
   * Need to buffer aliases during bootup until sysfs becomes
  
  /*
   * Need to buffer aliases during bootup until sysfs becomes
-@@ -5100,6 +5147,7 @@ struct saved_alias {
+@@ -5298,6 +5345,7 @@ struct saved_alias {
  
  static struct saved_alias *alias_list;
  
  
  static struct saved_alias *alias_list;
  
@@ -73677,7 +74369,7 @@ index 7c54fe8..0bb4ac5 100644
  static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
  {
        struct saved_alias *al;
  static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
  {
        struct saved_alias *al;
-@@ -5122,6 +5170,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
+@@ -5320,6 +5368,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
        alias_list = al;
        return 0;
  }
        alias_list = al;
        return 0;
  }
@@ -73685,23 +74377,8 @@ index 7c54fe8..0bb4ac5 100644
  
  static int __init slab_sysfs_init(void)
  {
  
  static int __init slab_sysfs_init(void)
  {
-@@ -5257,7 +5306,13 @@ static const struct file_operations proc_slabinfo_operations = {
- static int __init slab_proc_init(void)
- {
--      proc_create("slabinfo", S_IRUGO, NULL, &proc_slabinfo_operations);
-+      mode_t gr_mode = S_IRUGO;
-+
-+#ifdef CONFIG_GRKERNSEC_PROC_ADD
-+      gr_mode = S_IRUSR;
-+#endif
-+
-+      proc_create("slabinfo", gr_mode, NULL, &proc_slabinfo_operations);
-       return 0;
- }
- module_init(slab_proc_init);
 diff --git a/mm/swap.c b/mm/swap.c
 diff --git a/mm/swap.c b/mm/swap.c
-index 87627f1..8a9eb34 100644
+index 55b266d..a532537 100644
 --- a/mm/swap.c
 +++ b/mm/swap.c
 @@ -31,6 +31,7 @@
 --- a/mm/swap.c
 +++ b/mm/swap.c
 @@ -31,6 +31,7 @@
@@ -73722,10 +74399,10 @@ index 87627f1..8a9eb34 100644
  }
  
 diff --git a/mm/swapfile.c b/mm/swapfile.c
  }
  
 diff --git a/mm/swapfile.c b/mm/swapfile.c
-index 17bc224..1677059 100644
+index b1cd120..aaae885 100644
 --- a/mm/swapfile.c
 +++ b/mm/swapfile.c
 --- a/mm/swapfile.c
 +++ b/mm/swapfile.c
-@@ -62,7 +62,7 @@ static DEFINE_MUTEX(swapon_mutex);
+@@ -61,7 +61,7 @@ static DEFINE_MUTEX(swapon_mutex);
  
  static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
  /* Activity counter to indicate that a swapon or swapoff has occurred */
  
  static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
  /* Activity counter to indicate that a swapon or swapoff has occurred */
@@ -73734,7 +74411,7 @@ index 17bc224..1677059 100644
  
  static inline unsigned char swap_count(unsigned char ent)
  {
  
  static inline unsigned char swap_count(unsigned char ent)
  {
-@@ -1671,7 +1671,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
+@@ -1670,7 +1670,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
        }
        filp_close(swap_file, NULL);
        err = 0;
        }
        filp_close(swap_file, NULL);
        err = 0;
@@ -73743,7 +74420,7 @@ index 17bc224..1677059 100644
        wake_up_interruptible(&proc_poll_wait);
  
  out_dput:
        wake_up_interruptible(&proc_poll_wait);
  
  out_dput:
-@@ -1687,8 +1687,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait)
+@@ -1686,8 +1686,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait)
  
        poll_wait(file, &proc_poll_wait, wait);
  
  
        poll_wait(file, &proc_poll_wait, wait);
  
@@ -73754,7 +74431,7 @@ index 17bc224..1677059 100644
                return POLLIN | POLLRDNORM | POLLERR | POLLPRI;
        }
  
                return POLLIN | POLLRDNORM | POLLERR | POLLPRI;
        }
  
-@@ -1786,7 +1786,7 @@ static int swaps_open(struct inode *inode, struct file *file)
+@@ -1785,7 +1785,7 @@ static int swaps_open(struct inode *inode, struct file *file)
                return ret;
  
        seq = file->private_data;
                return ret;
  
        seq = file->private_data;
@@ -73763,7 +74440,7 @@ index 17bc224..1677059 100644
        return 0;
  }
  
        return 0;
  }
  
-@@ -2124,7 +2124,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
+@@ -2123,7 +2123,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
                (p->flags & SWP_DISCARDABLE) ? "D" : "");
  
        mutex_unlock(&swapon_mutex);
                (p->flags & SWP_DISCARDABLE) ? "D" : "");
  
        mutex_unlock(&swapon_mutex);
@@ -73773,26 +74450,10 @@ index 17bc224..1677059 100644
  
        if (S_ISREG(inode->i_mode))
 diff --git a/mm/util.c b/mm/util.c
  
        if (S_ISREG(inode->i_mode))
 diff --git a/mm/util.c b/mm/util.c
-index 88ea1bd..0f1dfdb 100644
+index 136ac4f..f917fa9 100644
 --- a/mm/util.c
 +++ b/mm/util.c
 --- a/mm/util.c
 +++ b/mm/util.c
-@@ -114,6 +114,7 @@ EXPORT_SYMBOL(memdup_user);
-  * allocated buffer. Use this if you don't want to free the buffer immediately
-  * like, for example, with RCU.
-  */
-+#undef __krealloc
- void *__krealloc(const void *p, size_t new_size, gfp_t flags)
- {
-       void *ret;
-@@ -147,6 +148,7 @@ EXPORT_SYMBOL(__krealloc);
-  * behaves exactly like kmalloc().  If @size is 0 and @p is not a
-  * %NULL pointer, the object pointed to is freed.
-  */
-+#undef krealloc
- void *krealloc(const void *p, size_t new_size, gfp_t flags)
- {
-       void *ret;
-@@ -243,6 +245,12 @@ void __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -243,6 +243,12 @@ void __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
  void arch_pick_mmap_layout(struct mm_struct *mm)
  {
        mm->mmap_base = TASK_UNMAPPED_BASE;
  void arch_pick_mmap_layout(struct mm_struct *mm)
  {
        mm->mmap_base = TASK_UNMAPPED_BASE;
@@ -73806,7 +74467,7 @@ index 88ea1bd..0f1dfdb 100644
        mm->unmap_area = arch_unmap_area;
  }
 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
        mm->unmap_area = arch_unmap_area;
  }
 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
-index 56faf31..862c072 100644
+index 27be2f0..633e5cc 100644
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
 @@ -39,8 +39,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end)
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
 @@ -39,8 +39,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end)
@@ -73943,7 +74604,7 @@ index 56faf31..862c072 100644
        if (!area)
 @@ -1627,6 +1682,13 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
        if (!size || (size >> PAGE_SHIFT) > totalram_pages)
        if (!area)
 @@ -1627,6 +1682,13 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
        if (!size || (size >> PAGE_SHIFT) > totalram_pages)
-               return NULL;
+               goto fail;
  
 +#if defined(CONFIG_MODULES) && defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC)
 +      if (!(pgprot_val(prot) & _PAGE_NX))
  
 +#if defined(CONFIG_MODULES) && defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC)
 +      if (!(pgprot_val(prot) & _PAGE_NX))
@@ -73954,70 +74615,12 @@ index 56faf31..862c072 100644
 +
        area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST,
                                  start, end, node, gfp_mask, caller);
 +
        area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST,
                                  start, end, node, gfp_mask, caller);
-@@ -1634,6 +1696,8 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
-               return NULL;
-       addr = __vmalloc_area_node(area, gfp_mask, prot, node, caller);
-+      if (!addr)
-+              return NULL;
-       /*
-        * In this function, newly allocated vm_struct is not added
-@@ -1672,6 +1736,7 @@ static void *__vmalloc_node(unsigned long size, unsigned long align,
-                               gfp_mask, prot, node, caller);
- }
-+#undef __vmalloc
- void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
- {
-       return __vmalloc_node(size, 1, gfp_mask, prot, -1,
-@@ -1695,6 +1760,7 @@ static inline void *__vmalloc_node_flags(unsigned long size,
-  *    For tight control over page level allocator and protection flags
-  *    use __vmalloc() instead.
-  */
-+#undef vmalloc
- void *vmalloc(unsigned long size)
- {
-       return __vmalloc_node_flags(size, -1, GFP_KERNEL | __GFP_HIGHMEM);
-@@ -1711,6 +1777,7 @@ EXPORT_SYMBOL(vmalloc);
-  *    For tight control over page level allocator and protection flags
-  *    use __vmalloc() instead.
-  */
-+#undef vzalloc
- void *vzalloc(unsigned long size)
- {
-       return __vmalloc_node_flags(size, -1,
-@@ -1725,6 +1792,7 @@ EXPORT_SYMBOL(vzalloc);
-  * The resulting memory area is zeroed so it can be mapped to userspace
-  * without leaking data.
-  */
-+#undef vmalloc_user
- void *vmalloc_user(unsigned long size)
- {
-       struct vm_struct *area;
-@@ -1752,6 +1820,7 @@ EXPORT_SYMBOL(vmalloc_user);
-  *    For tight control over page level allocator and protection flags
-  *    use __vmalloc() instead.
-  */
-+#undef vmalloc_node
- void *vmalloc_node(unsigned long size, int node)
- {
-       return __vmalloc_node(size, 1, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL,
-@@ -1771,6 +1840,7 @@ EXPORT_SYMBOL(vmalloc_node);
-  * For tight control over page level allocator and protection flags
-  * use __vmalloc_node() instead.
-  */
-+#undef vzalloc_node
- void *vzalloc_node(unsigned long size, int node)
- {
-       return __vmalloc_node_flags(size, node,
-@@ -1793,10 +1863,10 @@ EXPORT_SYMBOL(vzalloc_node);
+       if (!area)
+@@ -1800,10 +1862,9 @@ EXPORT_SYMBOL(vzalloc_node);
   *    For tight control over page level allocator and protection flags
   *    use __vmalloc() instead.
   */
 -
   *    For tight control over page level allocator and protection flags
   *    use __vmalloc() instead.
   */
 -
-+#undef vmalloc_exec
  void *vmalloc_exec(unsigned long size)
  {
 -      return __vmalloc_node(size, 1, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC,
  void *vmalloc_exec(unsigned long size)
  {
 -      return __vmalloc_node(size, 1, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC,
@@ -74025,23 +74628,7 @@ index 56faf31..862c072 100644
                              -1, __builtin_return_address(0));
  }
  
                              -1, __builtin_return_address(0));
  }
  
-@@ -1815,6 +1885,7 @@ void *vmalloc_exec(unsigned long size)
-  *    Allocate enough 32bit PA addressable pages to cover @size from the
-  *    page level allocator and map them into contiguous kernel virtual space.
-  */
-+#undef vmalloc_32
- void *vmalloc_32(unsigned long size)
- {
-       return __vmalloc_node(size, 1, GFP_VMALLOC32, PAGE_KERNEL,
-@@ -1829,6 +1900,7 @@ EXPORT_SYMBOL(vmalloc_32);
-  * The resulting memory area is 32bit addressable and zeroed so it can be
-  * mapped to userspace without leaking data.
-  */
-+#undef vmalloc_32_user
- void *vmalloc_32_user(unsigned long size)
- {
-       struct vm_struct *area;
-@@ -2091,6 +2163,8 @@ int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
+@@ -2098,6 +2159,8 @@ int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
        unsigned long uaddr = vma->vm_start;
        unsigned long usize = vma->vm_end - vma->vm_start;
  
        unsigned long uaddr = vma->vm_start;
        unsigned long usize = vma->vm_end - vma->vm_start;
  
@@ -74051,15 +74638,15 @@ index 56faf31..862c072 100644
                return -EINVAL;
  
 diff --git a/mm/vmstat.c b/mm/vmstat.c
                return -EINVAL;
  
 diff --git a/mm/vmstat.c b/mm/vmstat.c
-index d52b13d..381d1ac 100644
+index 8fd603b..cf0d930 100644
 --- a/mm/vmstat.c
 +++ b/mm/vmstat.c
 @@ -78,7 +78,7 @@ void vm_events_fold_cpu(int cpu)
   *
   * vm_stat contains the global counters
   */
 --- a/mm/vmstat.c
 +++ b/mm/vmstat.c
 @@ -78,7 +78,7 @@ void vm_events_fold_cpu(int cpu)
   *
   * vm_stat contains the global counters
   */
--atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
-+atomic_long_unchecked_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
+-atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS] __cacheline_aligned_in_smp;
++atomic_long_unchecked_t vm_stat[NR_VM_ZONE_STAT_ITEMS] __cacheline_aligned_in_smp;
  EXPORT_SYMBOL(vm_stat);
  
  #ifdef CONFIG_SMP
  EXPORT_SYMBOL(vm_stat);
  
  #ifdef CONFIG_SMP
@@ -74081,7 +74668,7 @@ index d52b13d..381d1ac 100644
  }
  
  #endif
  }
  
  #endif
-@@ -1207,10 +1207,20 @@ static int __init setup_vmstat(void)
+@@ -1208,10 +1208,20 @@ static int __init setup_vmstat(void)
                start_cpu_timer(cpu);
  #endif
  #ifdef CONFIG_PROC_FS
                start_cpu_timer(cpu);
  #endif
  #ifdef CONFIG_PROC_FS
@@ -74107,7 +74694,7 @@ index d52b13d..381d1ac 100644
        return 0;
  }
 diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
        return 0;
  }
 diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
-index 8970ba1..e3361fe 100644
+index 5471628..cef8398 100644
 --- a/net/8021q/vlan.c
 +++ b/net/8021q/vlan.c
 @@ -588,8 +588,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg)
 --- a/net/8021q/vlan.c
 +++ b/net/8021q/vlan.c
 @@ -588,8 +588,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg)
@@ -74133,28 +74720,6 @@ index fdfdb57..38d368c 100644
        set_fs(oldfs);
  
        if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
        set_fs(oldfs);
  
        if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
-diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
-index e317583..3c8aeaf 100644
---- a/net/9p/trans_virtio.c
-+++ b/net/9p/trans_virtio.c
-@@ -327,7 +327,7 @@ req_retry_pinned:
-               } else {
-                       char *pbuf;
-                       if (req->tc->pubuf)
--                              pbuf = (__force char *) req->tc->pubuf;
-+                              pbuf = (char __force_kernel *) req->tc->pubuf;
-                       else
-                               pbuf = req->tc->pkbuf;
-                       outp = pack_sg_list(chan->sg, out, VIRTQUEUE_NUM, pbuf,
-@@ -357,7 +357,7 @@ req_retry_pinned:
-               } else {
-                       char *pbuf;
-                       if (req->tc->pubuf)
--                              pbuf = (__force char *) req->tc->pubuf;
-+                              pbuf = (char __force_kernel *) req->tc->pubuf;
-                       else
-                               pbuf = req->tc->pkbuf;
 diff --git a/net/atm/atm_misc.c b/net/atm/atm_misc.c
 index f41f026..fe76ea8 100644
 --- a/net/atm/atm_misc.c
 diff --git a/net/atm/atm_misc.c b/net/atm/atm_misc.c
 index f41f026..fe76ea8 100644
 --- a/net/atm/atm_misc.c
@@ -74221,19 +74786,6 @@ index 0919a88..a23d54e 100644
  };
  
  
  };
  
  
-diff --git a/net/atm/mpoa_caches.c b/net/atm/mpoa_caches.c
-index d1b2d9a..7cc2219 100644
---- a/net/atm/mpoa_caches.c
-+++ b/net/atm/mpoa_caches.c
-@@ -255,6 +255,8 @@ static void check_resolving_entries(struct mpoa_client *client)
-       struct timeval now;
-       struct k_message msg;
-+      pax_track_stack();
-+
-       do_gettimeofday(&now);
-       read_lock_bh(&client->ingress_lock);
 diff --git a/net/atm/proc.c b/net/atm/proc.c
 index 0d020de..011c7bb 100644
 --- a/net/atm/proc.c
 diff --git a/net/atm/proc.c b/net/atm/proc.c
 index 0d020de..011c7bb 100644
 --- a/net/atm/proc.c
@@ -74273,11 +74825,42 @@ index 23f45ce..c748f1a 100644
        __AAL_STAT_ITEMS
  #undef __HANDLE_ITEM
  }
        __AAL_STAT_ITEMS
  #undef __HANDLE_ITEM
  }
+diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
+index 3512e25..2b33401 100644
+--- a/net/batman-adv/bat_iv_ogm.c
++++ b/net/batman-adv/bat_iv_ogm.c
+@@ -541,7 +541,7 @@ void bat_ogm_schedule(struct hard_iface *hard_iface, int tt_num_changes)
+       /* change sequence number to network order */
+       batman_ogm_packet->seqno =
+-                      htonl((uint32_t)atomic_read(&hard_iface->seqno));
++                      htonl((uint32_t)atomic_read_unchecked(&hard_iface->seqno));
+       batman_ogm_packet->ttvn = atomic_read(&bat_priv->ttvn);
+       batman_ogm_packet->tt_crc = htons((uint16_t)
+@@ -561,7 +561,7 @@ void bat_ogm_schedule(struct hard_iface *hard_iface, int tt_num_changes)
+       else
+               batman_ogm_packet->gw_flags = NO_FLAGS;
+-      atomic_inc(&hard_iface->seqno);
++      atomic_inc_unchecked(&hard_iface->seqno);
+       slide_own_bcast_window(hard_iface);
+       bat_ogm_queue_add(bat_priv, hard_iface->packet_buff,
+@@ -922,7 +922,7 @@ static void bat_ogm_process(const struct ethhdr *ethhdr,
+               return;
+       /* could be changed by schedule_own_packet() */
+-      if_incoming_seqno = atomic_read(&if_incoming->seqno);
++      if_incoming_seqno = atomic_read_unchecked(&if_incoming->seqno);
+       has_directlink_flag = (batman_ogm_packet->flags & DIRECTLINK ? 1 : 0);
 diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c
 diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c
-index db7aacf..991e539 100644
+index 7704df4..beb4e16 100644
 --- a/net/batman-adv/hard-interface.c
 +++ b/net/batman-adv/hard-interface.c
 --- a/net/batman-adv/hard-interface.c
 +++ b/net/batman-adv/hard-interface.c
-@@ -347,8 +347,8 @@ int hardif_enable_interface(struct hard_iface *hard_iface,
+@@ -326,8 +326,8 @@ int hardif_enable_interface(struct hard_iface *hard_iface,
        hard_iface->batman_adv_ptype.dev = hard_iface->net_dev;
        dev_add_pack(&hard_iface->batman_adv_ptype);
  
        hard_iface->batman_adv_ptype.dev = hard_iface->net_dev;
        dev_add_pack(&hard_iface->batman_adv_ptype);
  
@@ -74288,46 +74871,11 @@ index db7aacf..991e539 100644
        bat_info(hard_iface->soft_iface, "Adding interface: %s\n",
                 hard_iface->net_dev->name);
  
        bat_info(hard_iface->soft_iface, "Adding interface: %s\n",
                 hard_iface->net_dev->name);
  
-diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c
-index 0f32c81..82d1895 100644
---- a/net/batman-adv/routing.c
-+++ b/net/batman-adv/routing.c
-@@ -656,7 +656,7 @@ void receive_bat_packet(const struct ethhdr *ethhdr,
-               return;
-       /* could be changed by schedule_own_packet() */
--      if_incoming_seqno = atomic_read(&if_incoming->seqno);
-+      if_incoming_seqno = atomic_read_unchecked(&if_incoming->seqno);
-       has_directlink_flag = (batman_packet->flags & DIRECTLINK ? 1 : 0);
-diff --git a/net/batman-adv/send.c b/net/batman-adv/send.c
-index 58d1447..2a66c8c 100644
---- a/net/batman-adv/send.c
-+++ b/net/batman-adv/send.c
-@@ -326,7 +326,7 @@ void schedule_own_packet(struct hard_iface *hard_iface)
-       /* change sequence number to network order */
-       batman_packet->seqno =
--              htonl((uint32_t)atomic_read(&hard_iface->seqno));
-+              htonl((uint32_t)atomic_read_unchecked(&hard_iface->seqno));
-       batman_packet->ttvn = atomic_read(&bat_priv->ttvn);
-       batman_packet->tt_crc = htons((uint16_t)atomic_read(&bat_priv->tt_crc));
-@@ -343,7 +343,7 @@ void schedule_own_packet(struct hard_iface *hard_iface)
-       else
-               batman_packet->gw_flags = NO_FLAGS;
--      atomic_inc(&hard_iface->seqno);
-+      atomic_inc_unchecked(&hard_iface->seqno);
-       slide_own_bcast_window(hard_iface);
-       send_time = own_send_time(bat_priv);
 diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
 diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
-index 05dd351..2ecd19b 100644
+index f9cc957..efd9dae 100644
 --- a/net/batman-adv/soft-interface.c
 +++ b/net/batman-adv/soft-interface.c
 --- a/net/batman-adv/soft-interface.c
 +++ b/net/batman-adv/soft-interface.c
-@@ -632,7 +632,7 @@ static int interface_tx(struct sk_buff *skb, struct net_device *soft_iface)
+@@ -634,7 +634,7 @@ static int interface_tx(struct sk_buff *skb, struct net_device *soft_iface)
  
                /* set broadcast sequence number */
                bcast_packet->seqno =
  
                /* set broadcast sequence number */
                bcast_packet->seqno =
@@ -74336,7 +74884,7 @@ index 05dd351..2ecd19b 100644
  
                add_bcast_packet_to_list(bat_priv, skb, 1);
  
  
                add_bcast_packet_to_list(bat_priv, skb, 1);
  
-@@ -824,7 +824,7 @@ struct net_device *softif_create(const char *name)
+@@ -828,7 +828,7 @@ struct net_device *softif_create(const char *name)
        atomic_set(&bat_priv->batman_queue_left, BATMAN_QUEUE_LEN);
  
        atomic_set(&bat_priv->mesh_state, MESH_INACTIVE);
        atomic_set(&bat_priv->batman_queue_left, BATMAN_QUEUE_LEN);
  
        atomic_set(&bat_priv->mesh_state, MESH_INACTIVE);
@@ -74346,7 +74894,7 @@ index 05dd351..2ecd19b 100644
        atomic_set(&bat_priv->tt_local_changes, 0);
        atomic_set(&bat_priv->tt_ogm_append_cnt, 0);
 diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
        atomic_set(&bat_priv->tt_local_changes, 0);
        atomic_set(&bat_priv->tt_ogm_append_cnt, 0);
 diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
-index 51a0db7..b8a62be 100644
+index ab8d0fe..ceba3fd 100644
 --- a/net/batman-adv/types.h
 +++ b/net/batman-adv/types.h
 @@ -38,8 +38,8 @@ struct hard_iface {
 --- a/net/batman-adv/types.h
 +++ b/net/batman-adv/types.h
 @@ -38,8 +38,8 @@ struct hard_iface {
@@ -74360,7 +74908,7 @@ index 51a0db7..b8a62be 100644
        unsigned char *packet_buff;
        int packet_len;
        struct kobject *hardif_obj;
        unsigned char *packet_buff;
        int packet_len;
        struct kobject *hardif_obj;
-@@ -153,7 +153,7 @@ struct bat_priv {
+@@ -154,7 +154,7 @@ struct bat_priv {
        atomic_t orig_interval;         /* uint */
        atomic_t hop_penalty;           /* uint */
        atomic_t log_level;             /* uint */
        atomic_t orig_interval;         /* uint */
        atomic_t hop_penalty;           /* uint */
        atomic_t log_level;             /* uint */
@@ -74368,9 +74916,9 @@ index 51a0db7..b8a62be 100644
 +      atomic_unchecked_t bcast_seqno;
        atomic_t bcast_queue_left;
        atomic_t batman_queue_left;
 +      atomic_unchecked_t bcast_seqno;
        atomic_t bcast_queue_left;
        atomic_t batman_queue_left;
-       atomic_t ttvn; /* tranlation table version number */
+       atomic_t ttvn; /* translation table version number */
 diff --git a/net/batman-adv/unicast.c b/net/batman-adv/unicast.c
 diff --git a/net/batman-adv/unicast.c b/net/batman-adv/unicast.c
-index 32b125f..f1447e0 100644
+index 07d1c1d..7e9bea9 100644
 --- a/net/batman-adv/unicast.c
 +++ b/net/batman-adv/unicast.c
 @@ -264,7 +264,7 @@ int frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
 --- a/net/batman-adv/unicast.c
 +++ b/net/batman-adv/unicast.c
 @@ -264,7 +264,7 @@ int frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
@@ -74383,18 +74931,9 @@ index 32b125f..f1447e0 100644
        frag2->seqno = htons(seqno);
  
 diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
        frag2->seqno = htons(seqno);
  
 diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
-index ea7f031..0615edc 100644
+index c1c597e..05ebb40 100644
 --- a/net/bluetooth/hci_conn.c
 +++ b/net/bluetooth/hci_conn.c
 --- a/net/bluetooth/hci_conn.c
 +++ b/net/bluetooth/hci_conn.c
-@@ -218,7 +218,7 @@ void hci_le_start_enc(struct hci_conn *conn, __le16 ediv, __u8 rand[8],
-       cp.handle = cpu_to_le16(conn->handle);
-       memcpy(cp.ltk, ltk, sizeof(cp.ltk));
-       cp.ediv = ediv;
--      memcpy(cp.rand, rand, sizeof(rand));
-+      memcpy(cp.rand, rand, sizeof(cp.rand));
-       hci_send_cmd(hdev, HCI_OP_LE_START_ENC, sizeof(cp), &cp);
- }
 @@ -234,7 +234,7 @@ void hci_le_ltk_reply(struct hci_conn *conn, u8 ltk[16])
        memset(&cp, 0, sizeof(cp));
  
 @@ -234,7 +234,7 @@ void hci_le_ltk_reply(struct hci_conn *conn, u8 ltk[16])
        memset(&cp, 0, sizeof(cp));
  
@@ -74404,11 +74943,41 @@ index ea7f031..0615edc 100644
  
        hci_send_cmd(hdev, HCI_OP_LE_LTK_REPLY, sizeof(cp), &cp);
  }
  
        hci_send_cmd(hdev, HCI_OP_LE_LTK_REPLY, sizeof(cp), &cp);
  }
+diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
+index 17b5b1c..826d872 100644
+--- a/net/bluetooth/l2cap_core.c
++++ b/net/bluetooth/l2cap_core.c
+@@ -2176,8 +2176,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len, voi
+                       break;
+               case L2CAP_CONF_RFC:
+-                      if (olen == sizeof(rfc))
+-                              memcpy(&rfc, (void *)val, olen);
++                      if (olen != sizeof(rfc))
++                              break;
++
++                      memcpy(&rfc, (void *)val, olen);
+                       if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) &&
+                                                       rfc.mode != chan->mode)
+@@ -2265,8 +2267,10 @@ static void l2cap_conf_rfc_get(struct l2cap_chan *chan, void *rsp, int len)
+               switch (type) {
+               case L2CAP_CONF_RFC:
+-                      if (olen == sizeof(rfc))
+-                              memcpy(&rfc, (void *)val, olen);
++                      if (olen != sizeof(rfc))
++                              break;
++
++                      memcpy(&rfc, (void *)val, olen);
+                       goto done;
+               }
+       }
 diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
 diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
-index e79ff75..215b57d 100644
+index 8eb6b15..e3db7ab 100644
 --- a/net/bridge/br_multicast.c
 +++ b/net/bridge/br_multicast.c
 --- a/net/bridge/br_multicast.c
 +++ b/net/bridge/br_multicast.c
-@@ -1485,7 +1485,7 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
+@@ -1488,7 +1488,7 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
        nexthdr = ip6h->nexthdr;
        offset = ipv6_skip_exthdr(skb, sizeof(*ip6h), &nexthdr);
  
        nexthdr = ip6h->nexthdr;
        offset = ipv6_skip_exthdr(skb, sizeof(*ip6h), &nexthdr);
  
@@ -74418,7 +74987,7 @@ index e79ff75..215b57d 100644
  
        /* Okay, we found ICMPv6 header */
 diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
  
        /* Okay, we found ICMPv6 header */
 diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
-index 5864cc4..94cab18 100644
+index 5864cc4..121f3a30 100644
 --- a/net/bridge/netfilter/ebtables.c
 +++ b/net/bridge/netfilter/ebtables.c
 @@ -1513,7 +1513,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
 --- a/net/bridge/netfilter/ebtables.c
 +++ b/net/bridge/netfilter/ebtables.c
 @@ -1513,7 +1513,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
@@ -74430,15 +74999,6 @@ index 5864cc4..94cab18 100644
                        BUGPRINT("c2u Didn't work\n");
                        ret = -EFAULT;
                        break;
                        BUGPRINT("c2u Didn't work\n");
                        ret = -EFAULT;
                        break;
-@@ -1781,6 +1781,8 @@ static int compat_copy_everything_to_user(struct ebt_table *t,
-       int ret;
-       void __user *pos;
-+      pax_track_stack();
-+
-       memset(&tinfo, 0, sizeof(tinfo));
-       if (cmd == EBT_SO_GET_ENTRIES) {
 diff --git a/net/caif/caif_socket.c b/net/caif/caif_socket.c
 index a986280..13444a1 100644
 --- a/net/caif/caif_socket.c
 diff --git a/net/caif/caif_socket.c b/net/caif/caif_socket.c
 index a986280..13444a1 100644
 --- a/net/caif/caif_socket.c
@@ -74573,7 +75133,7 @@ index a986280..13444a1 100644
        if (!IS_ERR(debugfsdir)) {
  
 diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c
        if (!IS_ERR(debugfsdir)) {
  
 diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c
-index e22671b..6598ea0 100644
+index 5cf5222..6f704ad 100644
 --- a/net/caif/cfctrl.c
 +++ b/net/caif/cfctrl.c
 @@ -9,6 +9,7 @@
 --- a/net/caif/cfctrl.c
 +++ b/net/caif/cfctrl.c
 @@ -9,6 +9,7 @@
@@ -74584,9 +75144,9 @@ index e22671b..6598ea0 100644
  #include <net/caif/caif_layer.h>
  #include <net/caif/cfpkt.h>
  #include <net/caif/cfctrl.h>
  #include <net/caif/caif_layer.h>
  #include <net/caif/cfpkt.h>
  #include <net/caif/cfctrl.h>
-@@ -45,8 +46,8 @@ struct cflayer *cfctrl_create(void)
+@@ -42,8 +43,8 @@ struct cflayer *cfctrl_create(void)
+       memset(&dev_info, 0, sizeof(dev_info));
        dev_info.id = 0xff;
        dev_info.id = 0xff;
-       memset(this, 0, sizeof(*this));
        cfsrvl_init(&this->serv, 0, &dev_info, false);
 -      atomic_set(&this->req_seq_no, 1);
 -      atomic_set(&this->rsp_seq_no, 1);
        cfsrvl_init(&this->serv, 0, &dev_info, false);
 -      atomic_set(&this->req_seq_no, 1);
 -      atomic_set(&this->rsp_seq_no, 1);
@@ -74595,7 +75155,7 @@ index e22671b..6598ea0 100644
        this->serv.layer.receive = cfctrl_recv;
        sprintf(this->serv.layer.name, "ctrl");
        this->serv.layer.ctrlcmd = cfctrl_ctrlcmd;
        this->serv.layer.receive = cfctrl_recv;
        sprintf(this->serv.layer.name, "ctrl");
        this->serv.layer.ctrlcmd = cfctrl_ctrlcmd;
-@@ -132,8 +133,8 @@ static void cfctrl_insert_req(struct cfctrl *ctrl,
+@@ -129,8 +130,8 @@ static void cfctrl_insert_req(struct cfctrl *ctrl,
                              struct cfctrl_request_info *req)
  {
        spin_lock_bh(&ctrl->info_list_lock);
                              struct cfctrl_request_info *req)
  {
        spin_lock_bh(&ctrl->info_list_lock);
@@ -74606,7 +75166,7 @@ index e22671b..6598ea0 100644
        list_add_tail(&req->list, &ctrl->list);
        spin_unlock_bh(&ctrl->info_list_lock);
  }
        list_add_tail(&req->list, &ctrl->list);
        spin_unlock_bh(&ctrl->info_list_lock);
  }
-@@ -151,7 +152,7 @@ static struct cfctrl_request_info *cfctrl_remove_req(struct cfctrl *ctrl,
+@@ -148,7 +149,7 @@ static struct cfctrl_request_info *cfctrl_remove_req(struct cfctrl *ctrl,
                        if (p != first)
                                pr_warn("Requests are not received in order\n");
  
                        if (p != first)
                                pr_warn("Requests are not received in order\n");
  
@@ -74615,19 +75175,24 @@ index e22671b..6598ea0 100644
                                         p->sequence_no);
                        list_del(&p->list);
                        goto out;
                                         p->sequence_no);
                        list_del(&p->list);
                        goto out;
-@@ -364,6 +365,7 @@ static int cfctrl_recv(struct cflayer *layer, struct cfpkt *pkt)
-       struct cfctrl *cfctrl = container_obj(layer);
-       struct cfctrl_request_info rsp, *req;
+diff --git a/net/can/gw.c b/net/can/gw.c
+index 3d79b12..8de85fa 100644
+--- a/net/can/gw.c
++++ b/net/can/gw.c
+@@ -96,7 +96,7 @@ struct cf_mod {
+       struct {
+               void (*xor)(struct can_frame *cf, struct cgw_csum_xor *xor);
+               void (*crc8)(struct can_frame *cf, struct cgw_csum_crc8 *crc8);
+-      } csumfunc;
++      } __no_const csumfunc;
+ };
  
  
-+      pax_track_stack();
  
  
-       cfpkt_extr_head(pkt, &cmdrsp, 1);
-       cmd = cmdrsp & CFCTRL_CMD_MASK;
 diff --git a/net/compat.c b/net/compat.c
 diff --git a/net/compat.c b/net/compat.c
-index c578d93..257fab7 100644
+index 6def90e..c6992fa 100644
 --- a/net/compat.c
 +++ b/net/compat.c
 --- a/net/compat.c
 +++ b/net/compat.c
-@@ -70,9 +70,9 @@ int get_compat_msghdr(struct msghdr *kmsg, struct compat_msghdr __user *umsg)
+@@ -71,9 +71,9 @@ int get_compat_msghdr(struct msghdr *kmsg, struct compat_msghdr __user *umsg)
            __get_user(kmsg->msg_controllen, &umsg->msg_controllen) ||
            __get_user(kmsg->msg_flags, &umsg->msg_flags))
                return -EFAULT;
            __get_user(kmsg->msg_controllen, &umsg->msg_controllen) ||
            __get_user(kmsg->msg_flags, &umsg->msg_flags))
                return -EFAULT;
@@ -74640,7 +75205,7 @@ index c578d93..257fab7 100644
        return 0;
  }
  
        return 0;
  }
  
-@@ -84,7 +84,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
+@@ -85,7 +85,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
  
        if (kern_msg->msg_namelen) {
                if (mode == VERIFY_READ) {
  
        if (kern_msg->msg_namelen) {
                if (mode == VERIFY_READ) {
@@ -74649,7 +75214,7 @@ index c578d93..257fab7 100644
                                                      kern_msg->msg_namelen,
                                                      kern_address);
                        if (err < 0)
                                                      kern_msg->msg_namelen,
                                                      kern_address);
                        if (err < 0)
-@@ -95,7 +95,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
+@@ -96,7 +96,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
                kern_msg->msg_name = NULL;
  
        tot_len = iov_from_user_compat_to_kern(kern_iov,
                kern_msg->msg_name = NULL;
  
        tot_len = iov_from_user_compat_to_kern(kern_iov,
@@ -74658,7 +75223,7 @@ index c578d93..257fab7 100644
                                          kern_msg->msg_iovlen);
        if (tot_len >= 0)
                kern_msg->msg_iov = kern_iov;
                                          kern_msg->msg_iovlen);
        if (tot_len >= 0)
                kern_msg->msg_iov = kern_iov;
-@@ -115,20 +115,20 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
+@@ -116,20 +116,20 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
  
  #define CMSG_COMPAT_FIRSTHDR(msg)                     \
        (((msg)->msg_controllen) >= sizeof(struct compat_cmsghdr) ?     \
  
  #define CMSG_COMPAT_FIRSTHDR(msg)                     \
        (((msg)->msg_controllen) >= sizeof(struct compat_cmsghdr) ?     \
@@ -74682,7 +75247,7 @@ index c578d93..257fab7 100644
                        msg->msg_controllen)
                return NULL;
        return (struct compat_cmsghdr __user *)ptr;
                        msg->msg_controllen)
                return NULL;
        return (struct compat_cmsghdr __user *)ptr;
-@@ -220,7 +220,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
+@@ -221,7 +221,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
  {
        struct compat_timeval ctv;
        struct compat_timespec cts[3];
  {
        struct compat_timeval ctv;
        struct compat_timespec cts[3];
@@ -74691,7 +75256,7 @@ index c578d93..257fab7 100644
        struct compat_cmsghdr cmhdr;
        int cmlen;
  
        struct compat_cmsghdr cmhdr;
        int cmlen;
  
-@@ -272,7 +272,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
+@@ -273,7 +273,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
  
  void scm_detach_fds_compat(struct msghdr *kmsg, struct scm_cookie *scm)
  {
  
  void scm_detach_fds_compat(struct msghdr *kmsg, struct scm_cookie *scm)
  {
@@ -74700,7 +75265,7 @@ index c578d93..257fab7 100644
        int fdmax = (kmsg->msg_controllen - sizeof(struct compat_cmsghdr)) / sizeof(int);
        int fdnum = scm->fp->count;
        struct file **fp = scm->fp->fp;
        int fdmax = (kmsg->msg_controllen - sizeof(struct compat_cmsghdr)) / sizeof(int);
        int fdnum = scm->fp->count;
        struct file **fp = scm->fp->fp;
-@@ -369,7 +369,7 @@ static int do_set_sock_timeout(struct socket *sock, int level,
+@@ -370,7 +370,7 @@ static int do_set_sock_timeout(struct socket *sock, int level,
                return -EFAULT;
        old_fs = get_fs();
        set_fs(KERNEL_DS);
                return -EFAULT;
        old_fs = get_fs();
        set_fs(KERNEL_DS);
@@ -74709,7 +75274,7 @@ index c578d93..257fab7 100644
        set_fs(old_fs);
  
        return err;
        set_fs(old_fs);
  
        return err;
-@@ -430,7 +430,7 @@ static int do_get_sock_timeout(struct socket *sock, int level, int optname,
+@@ -431,7 +431,7 @@ static int do_get_sock_timeout(struct socket *sock, int level, int optname,
        len = sizeof(ktime);
        old_fs = get_fs();
        set_fs(KERNEL_DS);
        len = sizeof(ktime);
        old_fs = get_fs();
        set_fs(KERNEL_DS);
@@ -74718,7 +75283,7 @@ index c578d93..257fab7 100644
        set_fs(old_fs);
  
        if (!err) {
        set_fs(old_fs);
  
        if (!err) {
-@@ -565,7 +565,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
+@@ -566,7 +566,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
        case MCAST_JOIN_GROUP:
        case MCAST_LEAVE_GROUP:
        {
        case MCAST_JOIN_GROUP:
        case MCAST_LEAVE_GROUP:
        {
@@ -74727,7 +75292,7 @@ index c578d93..257fab7 100644
                struct group_req __user *kgr =
                        compat_alloc_user_space(sizeof(struct group_req));
                u32 interface;
                struct group_req __user *kgr =
                        compat_alloc_user_space(sizeof(struct group_req));
                u32 interface;
-@@ -586,7 +586,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
+@@ -587,7 +587,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
        case MCAST_BLOCK_SOURCE:
        case MCAST_UNBLOCK_SOURCE:
        {
        case MCAST_BLOCK_SOURCE:
        case MCAST_UNBLOCK_SOURCE:
        {
@@ -74736,7 +75301,7 @@ index c578d93..257fab7 100644
                struct group_source_req __user *kgsr = compat_alloc_user_space(
                        sizeof(struct group_source_req));
                u32 interface;
                struct group_source_req __user *kgsr = compat_alloc_user_space(
                        sizeof(struct group_source_req));
                u32 interface;
-@@ -607,7 +607,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
+@@ -608,7 +608,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
        }
        case MCAST_MSFILTER:
        {
        }
        case MCAST_MSFILTER:
        {
@@ -74745,7 +75310,7 @@ index c578d93..257fab7 100644
                struct group_filter __user *kgf;
                u32 interface, fmode, numsrc;
  
                struct group_filter __user *kgf;
                u32 interface, fmode, numsrc;
  
-@@ -645,7 +645,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
+@@ -646,7 +646,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
        char __user *optval, int __user *optlen,
        int (*getsockopt)(struct sock *, int, int, char __user *, int __user *))
  {
        char __user *optval, int __user *optlen,
        int (*getsockopt)(struct sock *, int, int, char __user *, int __user *))
  {
@@ -74755,7 +75320,7 @@ index c578d93..257fab7 100644
        int __user      *koptlen;
        u32 interface, fmode, numsrc;
 diff --git a/net/core/datagram.c b/net/core/datagram.c
        int __user      *koptlen;
        u32 interface, fmode, numsrc;
 diff --git a/net/core/datagram.c b/net/core/datagram.c
-index 18ac112..fe95ed9 100644
+index 68bbf9f..5ef0d12 100644
 --- a/net/core/datagram.c
 +++ b/net/core/datagram.c
 @@ -285,7 +285,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)
 --- a/net/core/datagram.c
 +++ b/net/core/datagram.c
 @@ -285,7 +285,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)
@@ -74768,10 +75333,10 @@ index 18ac112..fe95ed9 100644
  
        return err;
 diff --git a/net/core/dev.c b/net/core/dev.c
  
        return err;
 diff --git a/net/core/dev.c b/net/core/dev.c
-index ae5cf2d..2c950a1 100644
+index c56cacf..b28e35f 100644
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -1135,10 +1135,14 @@ void dev_load(struct net *net, const char *name)
+@@ -1139,10 +1139,14 @@ void dev_load(struct net *net, const char *name)
        if (no_module && capable(CAP_NET_ADMIN))
                no_module = request_module("netdev-%s", name);
        if (no_module && capable(CAP_SYS_MODULE)) {
        if (no_module && capable(CAP_NET_ADMIN))
                no_module = request_module("netdev-%s", name);
        if (no_module && capable(CAP_SYS_MODULE)) {
@@ -74786,7 +75351,25 @@ index ae5cf2d..2c950a1 100644
        }
  }
  EXPORT_SYMBOL(dev_load);
        }
  }
  EXPORT_SYMBOL(dev_load);
-@@ -1977,7 +1981,7 @@ static int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
+@@ -1573,7 +1577,7 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
+ {
+       if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) {
+               if (skb_copy_ubufs(skb, GFP_ATOMIC)) {
+-                      atomic_long_inc(&dev->rx_dropped);
++                      atomic_long_inc_unchecked(&dev->rx_dropped);
+                       kfree_skb(skb);
+                       return NET_RX_DROP;
+               }
+@@ -1583,7 +1587,7 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
+       nf_reset(skb);
+       if (unlikely(!is_skb_forwardable(dev, skb))) {
+-              atomic_long_inc(&dev->rx_dropped);
++              atomic_long_inc_unchecked(&dev->rx_dropped);
+               kfree_skb(skb);
+               return NET_RX_DROP;
+       }
+@@ -2036,7 +2040,7 @@ static int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
  
  struct dev_gso_cb {
        void (*destructor)(struct sk_buff *skb);
  
  struct dev_gso_cb {
        void (*destructor)(struct sk_buff *skb);
@@ -74795,7 +75378,16 @@ index ae5cf2d..2c950a1 100644
  
  #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
  
  
  #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
  
-@@ -2930,7 +2934,7 @@ int netif_rx_ni(struct sk_buff *skb)
+@@ -2970,7 +2974,7 @@ enqueue:
+       local_irq_restore(flags);
+-      atomic_long_inc(&skb->dev->rx_dropped);
++      atomic_long_inc_unchecked(&skb->dev->rx_dropped);
+       kfree_skb(skb);
+       return NET_RX_DROP;
+ }
+@@ -3044,7 +3048,7 @@ int netif_rx_ni(struct sk_buff *skb)
  }
  EXPORT_SYMBOL(netif_rx_ni);
  
  }
  EXPORT_SYMBOL(netif_rx_ni);
  
@@ -74804,7 +75396,16 @@ index ae5cf2d..2c950a1 100644
  {
        struct softnet_data *sd = &__get_cpu_var(softnet_data);
  
  {
        struct softnet_data *sd = &__get_cpu_var(softnet_data);
  
-@@ -3779,7 +3783,7 @@ void netif_napi_del(struct napi_struct *napi)
+@@ -3333,7 +3337,7 @@ ncls:
+       if (pt_prev) {
+               ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
+       } else {
+-              atomic_long_inc(&skb->dev->rx_dropped);
++              atomic_long_inc_unchecked(&skb->dev->rx_dropped);
+               kfree_skb(skb);
+               /* Jamal, now you will not able to escape explaining
+                * me how you were going to use this. :-)
+@@ -3897,7 +3901,7 @@ void netif_napi_del(struct napi_struct *napi)
  }
  EXPORT_SYMBOL(netif_napi_del);
  
  }
  EXPORT_SYMBOL(netif_napi_del);
  
@@ -74813,8 +75414,17 @@ index ae5cf2d..2c950a1 100644
  {
        struct softnet_data *sd = &__get_cpu_var(softnet_data);
        unsigned long time_limit = jiffies + 2;
  {
        struct softnet_data *sd = &__get_cpu_var(softnet_data);
        unsigned long time_limit = jiffies + 2;
+@@ -5955,7 +5959,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
+       } else {
+               netdev_stats_to_stats64(storage, &dev->stats);
+       }
+-      storage->rx_dropped += atomic_long_read(&dev->rx_dropped);
++      storage->rx_dropped += atomic_long_read_unchecked(&dev->rx_dropped);
+       return storage;
+ }
+ EXPORT_SYMBOL(dev_get_stats);
 diff --git a/net/core/flow.c b/net/core/flow.c
 diff --git a/net/core/flow.c b/net/core/flow.c
-index 555a456..de48421 100644
+index e318c7e..168b1d0 100644
 --- a/net/core/flow.c
 +++ b/net/core/flow.c
 @@ -61,7 +61,7 @@ struct flow_cache {
 --- a/net/core/flow.c
 +++ b/net/core/flow.c
 @@ -61,7 +61,7 @@ struct flow_cache {
@@ -74876,7 +75486,7 @@ index c40f27e..7f49254 100644
  
        m->msg_iov = iov;
 diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
  
        m->msg_iov = iov;
 diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
-index 99d9e95..209bae2 100644
+index 9083e82..1673203 100644
 --- a/net/core/rtnetlink.c
 +++ b/net/core/rtnetlink.c
 @@ -57,7 +57,7 @@ struct rtnl_link {
 --- a/net/core/rtnetlink.c
 +++ b/net/core/rtnetlink.c
 @@ -57,7 +57,7 @@ struct rtnl_link {
@@ -74889,10 +75499,10 @@ index 99d9e95..209bae2 100644
  static DEFINE_MUTEX(rtnl_mutex);
  static u16 min_ifinfo_dump_size;
 diff --git a/net/core/scm.c b/net/core/scm.c
  static DEFINE_MUTEX(rtnl_mutex);
  static u16 min_ifinfo_dump_size;
 diff --git a/net/core/scm.c b/net/core/scm.c
-index 811b53f..5d6c343 100644
+index ff52ad0..aff1c0f 100644
 --- a/net/core/scm.c
 +++ b/net/core/scm.c
 --- a/net/core/scm.c
 +++ b/net/core/scm.c
-@@ -218,7 +218,7 @@ EXPORT_SYMBOL(__scm_send);
+@@ -220,7 +220,7 @@ EXPORT_SYMBOL(__scm_send);
  int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
  {
        struct cmsghdr __user *cm
  int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
  {
        struct cmsghdr __user *cm
@@ -74901,7 +75511,7 @@ index 811b53f..5d6c343 100644
        struct cmsghdr cmhdr;
        int cmlen = CMSG_LEN(len);
        int err;
        struct cmsghdr cmhdr;
        int cmlen = CMSG_LEN(len);
        int err;
-@@ -241,7 +241,7 @@ int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
+@@ -243,7 +243,7 @@ int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
        err = -EFAULT;
        if (copy_to_user(cm, &cmhdr, sizeof cmhdr))
                goto out;
        err = -EFAULT;
        if (copy_to_user(cm, &cmhdr, sizeof cmhdr))
                goto out;
@@ -74910,7 +75520,7 @@ index 811b53f..5d6c343 100644
                goto out;
        cmlen = CMSG_SPACE(len);
        if (msg->msg_controllen < cmlen)
                goto out;
        cmlen = CMSG_SPACE(len);
        if (msg->msg_controllen < cmlen)
-@@ -257,7 +257,7 @@ EXPORT_SYMBOL(put_cmsg);
+@@ -259,7 +259,7 @@ EXPORT_SYMBOL(put_cmsg);
  void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
  {
        struct cmsghdr __user *cm
  void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
  {
        struct cmsghdr __user *cm
@@ -74919,7 +75529,7 @@ index 811b53f..5d6c343 100644
  
        int fdmax = 0;
        int fdnum = scm->fp->count;
  
        int fdmax = 0;
        int fdnum = scm->fp->count;
-@@ -277,7 +277,7 @@ void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
+@@ -279,7 +279,7 @@ void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
        if (fdnum < fdmax)
                fdmax = fdnum;
  
        if (fdnum < fdmax)
                fdmax = fdnum;
  
@@ -74928,33 +75538,20 @@ index 811b53f..5d6c343 100644
             i++, cmfptr++)
        {
                int new_fd;
             i++, cmfptr++)
        {
                int new_fd;
-diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index 387703f..035abcf 100644
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
-@@ -1650,6 +1650,8 @@ int skb_splice_bits(struct sk_buff *skb, unsigned int offset,
-       struct sock *sk = skb->sk;
-       int ret = 0;
-+      pax_track_stack();
-+
-       if (splice_grow_spd(pipe, &spd))
-               return -ENOMEM;
 diff --git a/net/core/sock.c b/net/core/sock.c
 diff --git a/net/core/sock.c b/net/core/sock.c
-index 11d67b3..df26d4b 100644
+index b23f174..b9a0d26 100644
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -293,7 +293,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
-        */
-       if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
-           (unsigned)sk->sk_rcvbuf) {
+@@ -289,7 +289,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
+       struct sk_buff_head *list = &sk->sk_receive_queue;
+       if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) {
 -              atomic_inc(&sk->sk_drops);
 +              atomic_inc_unchecked(&sk->sk_drops);
                trace_sock_rcvqueue_full(sk, skb);
                return -ENOMEM;
        }
 -              atomic_inc(&sk->sk_drops);
 +              atomic_inc_unchecked(&sk->sk_drops);
                trace_sock_rcvqueue_full(sk, skb);
                return -ENOMEM;
        }
-@@ -303,7 +303,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
+@@ -299,7 +299,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
                return err;
  
        if (!sk_rmem_schedule(sk, skb->truesize)) {
                return err;
  
        if (!sk_rmem_schedule(sk, skb->truesize)) {
@@ -74963,7 +75560,7 @@ index 11d67b3..df26d4b 100644
                return -ENOBUFS;
        }
  
                return -ENOBUFS;
        }
  
-@@ -323,7 +323,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
+@@ -319,7 +319,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
        skb_dst_force(skb);
  
        spin_lock_irqsave(&list->lock, flags);
        skb_dst_force(skb);
  
        spin_lock_irqsave(&list->lock, flags);
@@ -74972,7 +75569,7 @@ index 11d67b3..df26d4b 100644
        __skb_queue_tail(list, skb);
        spin_unlock_irqrestore(&list->lock, flags);
  
        __skb_queue_tail(list, skb);
        spin_unlock_irqrestore(&list->lock, flags);
  
-@@ -343,7 +343,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
+@@ -339,7 +339,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
        skb->dev = NULL;
  
        if (sk_rcvqueues_full(sk, skb)) {
        skb->dev = NULL;
  
        if (sk_rcvqueues_full(sk, skb)) {
@@ -74981,7 +75578,7 @@ index 11d67b3..df26d4b 100644
                goto discard_and_relse;
        }
        if (nested)
                goto discard_and_relse;
        }
        if (nested)
-@@ -361,7 +361,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
+@@ -357,7 +357,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
                mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
        } else if (sk_add_backlog(sk, skb)) {
                bh_unlock_sock(sk);
                mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
        } else if (sk_add_backlog(sk, skb)) {
                bh_unlock_sock(sk);
@@ -74990,7 +75587,7 @@ index 11d67b3..df26d4b 100644
                goto discard_and_relse;
        }
  
                goto discard_and_relse;
        }
  
-@@ -924,7 +924,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
+@@ -917,7 +917,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
                if (len > sizeof(peercred))
                        len = sizeof(peercred);
                cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred);
                if (len > sizeof(peercred))
                        len = sizeof(peercred);
                cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred);
@@ -74999,7 +75596,7 @@ index 11d67b3..df26d4b 100644
                        return -EFAULT;
                goto lenout;
        }
                        return -EFAULT;
                goto lenout;
        }
-@@ -937,7 +937,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
+@@ -930,7 +930,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
                        return -ENOTCONN;
                if (lv < len)
                        return -EINVAL;
                        return -ENOTCONN;
                if (lv < len)
                        return -EINVAL;
@@ -75008,7 +75605,7 @@ index 11d67b3..df26d4b 100644
                        return -EFAULT;
                goto lenout;
        }
                        return -EFAULT;
                goto lenout;
        }
-@@ -970,7 +970,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
+@@ -963,7 +963,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
  
        if (len > lv)
                len = lv;
  
        if (len > lv)
                len = lv;
@@ -75017,7 +75614,7 @@ index 11d67b3..df26d4b 100644
                return -EFAULT;
  lenout:
        if (put_user(len, optlen))
                return -EFAULT;
  lenout:
        if (put_user(len, optlen))
-@@ -2029,7 +2029,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
+@@ -2020,7 +2020,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
         */
        smp_wmb();
        atomic_set(&sk->sk_refcnt, 1);
         */
        smp_wmb();
        atomic_set(&sk->sk_refcnt, 1);
@@ -75061,6 +75658,19 @@ index 39a2d29..f39c0fe 100644
        ---help---
          Econet is a fairly old and slow networking protocol mainly used by
          Acorn computers to access file and print servers. It uses native
        ---help---
          Econet is a fairly old and slow networking protocol mainly used by
          Acorn computers to access file and print servers. It uses native
+diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c
+index 36d1440..44ff28b 100644
+--- a/net/ipv4/ah4.c
++++ b/net/ipv4/ah4.c
+@@ -19,6 +19,8 @@ struct ah_skb_cb {
+ #define AH_SKB_CB(__skb) ((struct ah_skb_cb *)&((__skb)->cb[0]))
+ static void *ah_alloc_tmp(struct crypto_ahash *ahash, int nfrags,
++                        unsigned int size) __size_overflow(3);
++static void *ah_alloc_tmp(struct crypto_ahash *ahash, int nfrags,
+                         unsigned int size)
+ {
+       unsigned int len;
 diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
 index 92fc5f6..b790d91 100644
 --- a/net/ipv4/fib_frontend.c
 diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
 index 92fc5f6..b790d91 100644
 --- a/net/ipv4/fib_frontend.c
@@ -75103,7 +75713,7 @@ index 80106d8..232e898 100644
        return nh->nh_saddr;
  }
 diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
        return nh->nh_saddr;
  }
 diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
-index 389a2e6..ac1c1de 100644
+index ccee270..db23c3c 100644
 --- a/net/ipv4/inet_diag.c
 +++ b/net/ipv4/inet_diag.c
 @@ -114,8 +114,14 @@ static int inet_csk_diag_fill(struct sock *sk,
 --- a/net/ipv4/inet_diag.c
 +++ b/net/ipv4/inet_diag.c
 @@ -114,8 +114,14 @@ static int inet_csk_diag_fill(struct sock *sk,
@@ -75121,7 +75731,7 @@ index 389a2e6..ac1c1de 100644
  
        r->id.idiag_sport = inet->inet_sport;
        r->id.idiag_dport = inet->inet_dport;
  
        r->id.idiag_sport = inet->inet_sport;
        r->id.idiag_dport = inet->inet_dport;
-@@ -201,8 +207,15 @@ static int inet_twsk_diag_fill(struct inet_timewait_sock *tw,
+@@ -210,8 +216,15 @@ static int inet_twsk_diag_fill(struct inet_timewait_sock *tw,
        r->idiag_family       = tw->tw_family;
        r->idiag_retrans      = 0;
        r->id.idiag_if        = tw->tw_bound_dev_if;
        r->idiag_family       = tw->tw_family;
        r->idiag_retrans      = 0;
        r->id.idiag_if        = tw->tw_bound_dev_if;
@@ -75137,7 +75747,7 @@ index 389a2e6..ac1c1de 100644
        r->id.idiag_sport     = tw->tw_sport;
        r->id.idiag_dport     = tw->tw_dport;
        r->id.idiag_src[0]    = tw->tw_rcv_saddr;
        r->id.idiag_sport     = tw->tw_sport;
        r->id.idiag_dport     = tw->tw_dport;
        r->id.idiag_src[0]    = tw->tw_rcv_saddr;
-@@ -285,12 +298,14 @@ static int inet_diag_get_exact(struct sk_buff *in_skb,
+@@ -294,12 +307,14 @@ static int inet_diag_get_exact(struct sk_buff *in_skb,
        if (sk == NULL)
                goto unlock;
  
        if (sk == NULL)
                goto unlock;
  
@@ -75152,7 +75762,7 @@ index 389a2e6..ac1c1de 100644
  
        err = -ENOMEM;
        rep = alloc_skb(NLMSG_SPACE((sizeof(struct inet_diag_msg) +
  
        err = -ENOMEM;
        rep = alloc_skb(NLMSG_SPACE((sizeof(struct inet_diag_msg) +
-@@ -580,8 +595,14 @@ static int inet_diag_fill_req(struct sk_buff *skb, struct sock *sk,
+@@ -589,8 +604,14 @@ static int inet_diag_fill_req(struct sk_buff *skb, struct sock *sk,
        r->idiag_retrans = req->retrans;
  
        r->id.idiag_if = sk->sk_bound_dev_if;
        r->idiag_retrans = req->retrans;
  
        r->id.idiag_if = sk->sk_bound_dev_if;
@@ -75197,19 +75807,10 @@ index 984ec65..97ac518 100644
                        inet_twsk_deschedule(tw, death_row);
                        while (twrefcnt) {
 diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
                        inet_twsk_deschedule(tw, death_row);
                        while (twrefcnt) {
 diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
-index 86f13c67..0bce60f 100644
+index 86f13c67..59a35b5 100644
 --- a/net/ipv4/inetpeer.c
 +++ b/net/ipv4/inetpeer.c
 --- a/net/ipv4/inetpeer.c
 +++ b/net/ipv4/inetpeer.c
-@@ -400,6 +400,8 @@ struct inet_peer *inet_getpeer(const struct inetpeer_addr *daddr, int create)
-       unsigned int sequence;
-       int invalidated, gccnt = 0;
-+      pax_track_stack();
-+
-       /* Attempt a lockless lookup first.
-        * Because of a concurrent writer, we might not find an existing entry.
-        */
-@@ -436,8 +438,8 @@ relookup:
+@@ -436,8 +436,8 @@ relookup:
        if (p) {
                p->daddr = *daddr;
                atomic_set(&p->refcnt, 1);
        if (p) {
                p->daddr = *daddr;
                atomic_set(&p->refcnt, 1);
@@ -75221,7 +75822,7 @@ index 86f13c67..0bce60f 100644
                                        secure_ip_id(daddr->addr.a4) :
                                        secure_ipv6_id(daddr->addr.a6));
 diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
                                        secure_ip_id(daddr->addr.a4) :
                                        secure_ipv6_id(daddr->addr.a6));
 diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
-index 0e0ab98..2ed7dd5 100644
+index fdaabf2..0ec3205 100644
 --- a/net/ipv4/ip_fragment.c
 +++ b/net/ipv4/ip_fragment.c
 @@ -316,7 +316,7 @@ static inline int ip_frag_too_far(struct ipq *qp)
 --- a/net/ipv4/ip_fragment.c
 +++ b/net/ipv4/ip_fragment.c
 @@ -316,7 +316,7 @@ static inline int ip_frag_too_far(struct ipq *qp)
@@ -75234,19 +75835,10 @@ index 0e0ab98..2ed7dd5 100644
  
        rc = qp->q.fragments && (end - start) > max;
 diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
  
        rc = qp->q.fragments && (end - start) > max;
 diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
-index 8905e92..0b179fb 100644
+index 09ff51b..d3968eb 100644
 --- a/net/ipv4/ip_sockglue.c
 +++ b/net/ipv4/ip_sockglue.c
 --- a/net/ipv4/ip_sockglue.c
 +++ b/net/ipv4/ip_sockglue.c
-@@ -1073,6 +1073,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
-       int val;
-       int len;
-+      pax_track_stack();
-+
-       if (level != SOL_IP)
-               return -EOPNOTSUPP;
-@@ -1110,7 +1112,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
+@@ -1111,7 +1111,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
                len = min_t(unsigned int, len, opt->optlen);
                if (put_user(len, optlen))
                        return -EFAULT;
                len = min_t(unsigned int, len, opt->optlen);
                if (put_user(len, optlen))
                        return -EFAULT;
@@ -75256,7 +75848,7 @@ index 8905e92..0b179fb 100644
                        return -EFAULT;
                return 0;
        }
                        return -EFAULT;
                return 0;
        }
-@@ -1238,7 +1241,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
+@@ -1239,7 +1240,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
                if (sk->sk_type != SOCK_STREAM)
                        return -ENOPROTOOPT;
  
                if (sk->sk_type != SOCK_STREAM)
                        return -ENOPROTOOPT;
  
@@ -75266,10 +75858,10 @@ index 8905e92..0b179fb 100644
                msg.msg_flags = flags;
  
 diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
                msg.msg_flags = flags;
  
 diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
-index 472a8c4..6507cd4 100644
+index 99ec116..c5628fe 100644
 --- a/net/ipv4/ipconfig.c
 +++ b/net/ipv4/ipconfig.c
 --- a/net/ipv4/ipconfig.c
 +++ b/net/ipv4/ipconfig.c
-@@ -313,7 +313,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg)
+@@ -318,7 +318,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg)
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
@@ -75278,7 +75870,7 @@ index 472a8c4..6507cd4 100644
        set_fs(oldfs);
        return res;
  }
        set_fs(oldfs);
        return res;
  }
-@@ -324,7 +324,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg)
+@@ -329,7 +329,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg)
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
@@ -75287,7 +75879,7 @@ index 472a8c4..6507cd4 100644
        set_fs(oldfs);
        return res;
  }
        set_fs(oldfs);
        return res;
  }
-@@ -335,7 +335,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg)
+@@ -340,7 +340,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg)
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
@@ -75296,24 +75888,76 @@ index 472a8c4..6507cd4 100644
        set_fs(oldfs);
        return res;
  }
        set_fs(oldfs);
        return res;
  }
+diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
+index fd7a3f6..e5be655 100644
+--- a/net/ipv4/netfilter/arp_tables.c
++++ b/net/ipv4/netfilter/arp_tables.c
+@@ -984,6 +984,11 @@ static int __do_replace(struct net *net, const char *name,
+                       unsigned int valid_hooks,
+                       struct xt_table_info *newinfo,
+                       unsigned int num_counters,
++                      void __user *counters_ptr) __size_overflow(5);
++static int __do_replace(struct net *net, const char *name,
++                      unsigned int valid_hooks,
++                      struct xt_table_info *newinfo,
++                      unsigned int num_counters,
+                       void __user *counters_ptr)
+ {
+       int ret;
+@@ -1104,6 +1109,8 @@ static int do_replace(struct net *net, const void __user *user,
+ }
+ static int do_add_counters(struct net *net, const void __user *user,
++                         unsigned int len, int compat) __size_overflow(3);
++static int do_add_counters(struct net *net, const void __user *user,
+                          unsigned int len, int compat)
+ {
+       unsigned int i, curcpu;
+diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
+index 24e556e..a8daf7a 100644
+--- a/net/ipv4/netfilter/ip_tables.c
++++ b/net/ipv4/netfilter/ip_tables.c
+@@ -1172,6 +1172,10 @@ get_entries(struct net *net, struct ipt_get_entries __user *uptr,
+ static int
+ __do_replace(struct net *net, const char *name, unsigned int valid_hooks,
+            struct xt_table_info *newinfo, unsigned int num_counters,
++           void __user *counters_ptr) __size_overflow(5);
++static int
++__do_replace(struct net *net, const char *name, unsigned int valid_hooks,
++           struct xt_table_info *newinfo, unsigned int num_counters,
+            void __user *counters_ptr)
+ {
+       int ret;
+@@ -1293,6 +1297,9 @@ do_replace(struct net *net, const void __user *user, unsigned int len)
+ static int
+ do_add_counters(struct net *net, const void __user *user,
++                unsigned int len, int compat) __size_overflow(3);
++static int
++do_add_counters(struct net *net, const void __user *user,
+                 unsigned int len, int compat)
+ {
+       unsigned int i, curcpu;
 diff --git a/net/ipv4/netfilter/nf_nat_snmp_basic.c b/net/ipv4/netfilter/nf_nat_snmp_basic.c
 diff --git a/net/ipv4/netfilter/nf_nat_snmp_basic.c b/net/ipv4/netfilter/nf_nat_snmp_basic.c
-index 076b7c8..9c8d038 100644
+index 2133c30..0e8047e 100644
 --- a/net/ipv4/netfilter/nf_nat_snmp_basic.c
 +++ b/net/ipv4/netfilter/nf_nat_snmp_basic.c
 --- a/net/ipv4/netfilter/nf_nat_snmp_basic.c
 +++ b/net/ipv4/netfilter/nf_nat_snmp_basic.c
-@@ -399,7 +399,7 @@ static unsigned char asn1_octets_decode(struct asn1_ctx *ctx,
-       *len = 0;
--      *octets = kmalloc(eoc - ctx->pointer, GFP_ATOMIC);
-+      *octets = kmalloc((eoc - ctx->pointer), GFP_ATOMIC);
-       if (*octets == NULL) {
-               if (net_ratelimit())
-                       pr_notice("OOM in bsalg (%d)\n", __LINE__);
+@@ -435,6 +435,10 @@ static unsigned char asn1_subid_decode(struct asn1_ctx *ctx,
+ static unsigned char asn1_oid_decode(struct asn1_ctx *ctx,
+                                    unsigned char *eoc,
+                                    unsigned long **oid,
++                                   unsigned int *len) __size_overflow(2);
++static unsigned char asn1_oid_decode(struct asn1_ctx *ctx,
++                                   unsigned char *eoc,
++                                   unsigned long **oid,
+                                    unsigned int *len)
+ {
+       unsigned long subid;
 diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
 diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
-index 39b403f..8e6a0a8 100644
+index 43d4c3b..1914409 100644
 --- a/net/ipv4/ping.c
 +++ b/net/ipv4/ping.c
 --- a/net/ipv4/ping.c
 +++ b/net/ipv4/ping.c
-@@ -837,7 +837,7 @@ static void ping_format_sock(struct sock *sp, struct seq_file *f,
+@@ -836,7 +836,7 @@ static void ping_format_sock(struct sock *sp, struct seq_file *f,
                sk_rmem_alloc_get(sp),
                0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
                atomic_read(&sp->sk_refcnt), sp,
                sk_rmem_alloc_get(sp),
                0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
                atomic_read(&sp->sk_refcnt), sp,
@@ -75323,10 +75967,10 @@ index 39b403f..8e6a0a8 100644
  
  static int ping_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
  
  static int ping_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
-index 61714bd..c9cee6d 100644
+index 007e2eb..85a18a0 100644
 --- a/net/ipv4/raw.c
 +++ b/net/ipv4/raw.c
 --- a/net/ipv4/raw.c
 +++ b/net/ipv4/raw.c
-@@ -302,7 +302,7 @@ static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb)
+@@ -303,7 +303,7 @@ static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb)
  int raw_rcv(struct sock *sk, struct sk_buff *skb)
  {
        if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) {
  int raw_rcv(struct sock *sk, struct sk_buff *skb)
  {
        if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) {
@@ -75335,7 +75979,7 @@ index 61714bd..c9cee6d 100644
                kfree_skb(skb);
                return NET_RX_DROP;
        }
                kfree_skb(skb);
                return NET_RX_DROP;
        }
-@@ -737,16 +737,20 @@ static int raw_init(struct sock *sk)
+@@ -738,16 +738,20 @@ static int raw_init(struct sock *sk)
  
  static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen)
  {
  
  static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen)
  {
@@ -75357,7 +76001,7 @@ index 61714bd..c9cee6d 100644
  
        if (get_user(len, optlen))
                goto out;
  
        if (get_user(len, optlen))
                goto out;
-@@ -756,8 +760,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o
+@@ -757,8 +761,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o
        if (len > sizeof(struct icmp_filter))
                len = sizeof(struct icmp_filter);
        ret = -EFAULT;
        if (len > sizeof(struct icmp_filter))
                len = sizeof(struct icmp_filter);
        ret = -EFAULT;
@@ -75368,7 +76012,7 @@ index 61714bd..c9cee6d 100644
                goto out;
        ret = 0;
  out:  return ret;
                goto out;
        ret = 0;
  out:  return ret;
-@@ -985,7 +989,13 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
+@@ -986,7 +990,13 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
                sk_wmem_alloc_get(sp),
                sk_rmem_alloc_get(sp),
                0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
                sk_wmem_alloc_get(sp),
                sk_rmem_alloc_get(sp),
                0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
@@ -75384,10 +76028,10 @@ index 61714bd..c9cee6d 100644
  
  static int raw_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv4/route.c b/net/ipv4/route.c
  
  static int raw_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv4/route.c b/net/ipv4/route.c
-index 05ac666c..82384a7 100644
+index 94cdbc5..0cb0063 100644
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
-@@ -309,7 +309,7 @@ static inline unsigned int rt_hash(__be32 daddr, __be32 saddr, int idx,
+@@ -313,7 +313,7 @@ static inline unsigned int rt_hash(__be32 daddr, __be32 saddr, int idx,
  
  static inline int rt_genid(struct net *net)
  {
  
  static inline int rt_genid(struct net *net)
  {
@@ -75396,7 +76040,7 @@ index 05ac666c..82384a7 100644
  }
  
  #ifdef CONFIG_PROC_FS
  }
  
  #ifdef CONFIG_PROC_FS
-@@ -842,7 +842,7 @@ static void rt_cache_invalidate(struct net *net)
+@@ -937,7 +937,7 @@ static void rt_cache_invalidate(struct net *net)
        unsigned char shuffle;
  
        get_random_bytes(&shuffle, sizeof(shuffle));
        unsigned char shuffle;
  
        get_random_bytes(&shuffle, sizeof(shuffle));
@@ -75405,7 +76049,7 @@ index 05ac666c..82384a7 100644
        redirect_genid++;
  }
  
        redirect_genid++;
  }
  
-@@ -2920,7 +2920,7 @@ static int rt_fill_info(struct net *net,
+@@ -3022,7 +3022,7 @@ static int rt_fill_info(struct net *net,
        error = rt->dst.error;
        if (peer) {
                inet_peer_refcheck(rt->peer);
        error = rt->dst.error;
        if (peer) {
                inet_peer_refcheck(rt->peer);
@@ -75414,30 +76058,62 @@ index 05ac666c..82384a7 100644
                if (peer->tcp_ts_stamp) {
                        ts = peer->tcp_ts;
                        tsage = get_seconds() - peer->tcp_ts_stamp;
                if (peer->tcp_ts_stamp) {
                        ts = peer->tcp_ts;
                        tsage = get_seconds() - peer->tcp_ts_stamp;
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 46febca..98b73a4 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
-@@ -2122,6 +2122,8 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
-       int val;
-       int err = 0;
-+      pax_track_stack();
-+
-       /* These are data/string values, all the others are ints */
-       switch (optname) {
-       case TCP_CONGESTION: {
-@@ -2501,6 +2503,8 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
-       struct tcp_sock *tp = tcp_sk(sk);
-       int val, len;
+diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
+index 90f6544..769c0e9 100644
+--- a/net/ipv4/syncookies.c
++++ b/net/ipv4/syncookies.c
+@@ -278,6 +278,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
+       struct rtable *rt;
+       __u8 rcv_wscale;
+       bool ecn_ok = false;
++      struct flowi4 fl4;
+       if (!sysctl_tcp_syncookies || !th->ack || th->rst)
+               goto out;
+@@ -346,20 +347,16 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
+        * hasn't changed since we received the original syn, but I see
+        * no easy way to do this.
+        */
+-      {
+-              struct flowi4 fl4;
+-
+-              flowi4_init_output(&fl4, 0, sk->sk_mark, RT_CONN_FLAGS(sk),
+-                                 RT_SCOPE_UNIVERSE, IPPROTO_TCP,
+-                                 inet_sk_flowi_flags(sk),
+-                                 (opt && opt->srr) ? opt->faddr : ireq->rmt_addr,
+-                                 ireq->loc_addr, th->source, th->dest);
+-              security_req_classify_flow(req, flowi4_to_flowi(&fl4));
+-              rt = ip_route_output_key(sock_net(sk), &fl4);
+-              if (IS_ERR(rt)) {
+-                      reqsk_free(req);
+-                      goto out;
+-              }
++      flowi4_init_output(&fl4, 0, sk->sk_mark, RT_CONN_FLAGS(sk),
++                         RT_SCOPE_UNIVERSE, IPPROTO_TCP,
++                         inet_sk_flowi_flags(sk),
++                         (opt && opt->srr) ? opt->faddr : ireq->rmt_addr,
++                         ireq->loc_addr, th->source, th->dest);
++      security_req_classify_flow(req, flowi4_to_flowi(&fl4));
++      rt = ip_route_output_key(sock_net(sk), &fl4);
++      if (IS_ERR(rt)) {
++              reqsk_free(req);
++              goto out;
+       }
  
  
-+      pax_track_stack();
-+
-       if (get_user(len, optlen))
-               return -EFAULT;
+       /* Try to redo what tcp_v4_send_synack did. */
+@@ -373,5 +370,10 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
+       ireq->rcv_wscale  = rcv_wscale;
  
  
+       ret = get_cookie_sock(sk, skb, req, &rt->dst);
++      /* ip_queue_xmit() depends on our flow being setup
++       * Normal sockets get it right from inet_csk_route_child_sock()
++       */
++      if (ret)
++              inet_sk(ret)->cork.fl.u.ip4 = fl4;
+ out:  return ret;
+ }
 diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
 diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
-index 7963e03..c44f5d0 100644
+index eb90aa8..74908e1 100644
 --- a/net/ipv4/tcp_ipv4.c
 +++ b/net/ipv4/tcp_ipv4.c
 @@ -87,6 +87,9 @@ int sysctl_tcp_tw_reuse __read_mostly;
 --- a/net/ipv4/tcp_ipv4.c
 +++ b/net/ipv4/tcp_ipv4.c
 @@ -87,6 +87,9 @@ int sysctl_tcp_tw_reuse __read_mostly;
@@ -75450,7 +76126,24 @@ index 7963e03..c44f5d0 100644
  
  #ifdef CONFIG_TCP_MD5SIG
  static struct tcp_md5sig_key *tcp_v4_md5_do_lookup(struct sock *sk,
  
  #ifdef CONFIG_TCP_MD5SIG
  static struct tcp_md5sig_key *tcp_v4_md5_do_lookup(struct sock *sk,
-@@ -1622,6 +1625,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -1465,9 +1468,13 @@ struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
+               inet_csk(newsk)->icsk_ext_hdr_len = inet_opt->opt.optlen;
+       newinet->inet_id = newtp->write_seq ^ jiffies;
+-      if (!dst && (dst = inet_csk_route_child_sock(sk, newsk, req)) == NULL)
+-              goto put_and_exit;
+-
++      if (!dst) {
++              dst = inet_csk_route_child_sock(sk, newsk, req);
++              if (!dst)
++                      goto put_and_exit;
++      } else {
++              /* syncookie case : see end of cookie_v4_check() */
++      }
+       sk_setup_caps(newsk, dst);
+       tcp_mtup_init(newsk);
+@@ -1632,6 +1639,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
        return 0;
  
  reset:
        return 0;
  
  reset:
@@ -75460,7 +76153,7 @@ index 7963e03..c44f5d0 100644
        tcp_v4_send_reset(rsk, skb);
  discard:
        kfree_skb(skb);
        tcp_v4_send_reset(rsk, skb);
  discard:
        kfree_skb(skb);
-@@ -1684,12 +1690,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
+@@ -1694,12 +1704,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
        TCP_SKB_CB(skb)->sacked  = 0;
  
        sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
        TCP_SKB_CB(skb)->sacked  = 0;
  
        sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
@@ -75483,7 +76176,7 @@ index 7963e03..c44f5d0 100644
  
        if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
                NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
  
        if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
                NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
-@@ -1739,6 +1752,10 @@ no_tcp_socket:
+@@ -1749,6 +1766,10 @@ no_tcp_socket:
  bad_packet:
                TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
        } else {
  bad_packet:
                TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
        } else {
@@ -75494,7 +76187,7 @@ index 7963e03..c44f5d0 100644
                tcp_v4_send_reset(NULL, skb);
        }
  
                tcp_v4_send_reset(NULL, skb);
        }
  
-@@ -2403,7 +2420,11 @@ static void get_openreq4(struct sock *sk, struct request_sock *req,
+@@ -2409,7 +2430,11 @@ static void get_openreq4(const struct sock *sk, const struct request_sock *req,
                0,  /* non standard timer */
                0, /* open_requests have no inode */
                atomic_read(&sk->sk_refcnt),
                0,  /* non standard timer */
                0, /* open_requests have no inode */
                atomic_read(&sk->sk_refcnt),
@@ -75506,7 +76199,7 @@ index 7963e03..c44f5d0 100644
                len);
  }
  
                len);
  }
  
-@@ -2453,7 +2474,12 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
+@@ -2459,7 +2484,12 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
                sock_i_uid(sk),
                icsk->icsk_probes_out,
                sock_i_ino(sk),
                sock_i_uid(sk),
                icsk->icsk_probes_out,
                sock_i_ino(sk),
@@ -75520,7 +76213,7 @@ index 7963e03..c44f5d0 100644
                jiffies_to_clock_t(icsk->icsk_rto),
                jiffies_to_clock_t(icsk->icsk_ack.ato),
                (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong,
                jiffies_to_clock_t(icsk->icsk_rto),
                jiffies_to_clock_t(icsk->icsk_ack.ato),
                (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong,
-@@ -2481,7 +2507,13 @@ static void get_timewait4_sock(struct inet_timewait_sock *tw,
+@@ -2487,7 +2517,13 @@ static void get_timewait4_sock(const struct inet_timewait_sock *tw,
                " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n",
                i, src, srcp, dest, destp, tw->tw_substate, 0, 0,
                3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
                " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n",
                i, src, srcp, dest, destp, tw->tw_substate, 0, 0,
                3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
@@ -75536,7 +76229,7 @@ index 7963e03..c44f5d0 100644
  
  #define TMPSZ 150
 diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
  
  #define TMPSZ 150
 diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
-index 0ce3d06..e182e59 100644
+index 66363b6..b0654a3 100644
 --- a/net/ipv4/tcp_minisocks.c
 +++ b/net/ipv4/tcp_minisocks.c
 @@ -27,6 +27,10 @@
 --- a/net/ipv4/tcp_minisocks.c
 +++ b/net/ipv4/tcp_minisocks.c
 @@ -27,6 +27,10 @@
@@ -75550,7 +76243,7 @@ index 0ce3d06..e182e59 100644
  int sysctl_tcp_syncookies __read_mostly = 1;
  EXPORT_SYMBOL(sysctl_tcp_syncookies);
  
  int sysctl_tcp_syncookies __read_mostly = 1;
  EXPORT_SYMBOL(sysctl_tcp_syncookies);
  
-@@ -750,6 +754,10 @@ listen_overflow:
+@@ -751,6 +755,10 @@ listen_overflow:
  
  embryonic_reset:
        NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_EMBRYONICRSTS);
  
  embryonic_reset:
        NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_EMBRYONICRSTS);
@@ -75561,19 +76254,6 @@ index 0ce3d06..e182e59 100644
        if (!(flg & TCP_FLAG_RST))
                req->rsk_ops->send_reset(sk, skb);
  
        if (!(flg & TCP_FLAG_RST))
                req->rsk_ops->send_reset(sk, skb);
  
-diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
-index 882e0b0..2eba47f 100644
---- a/net/ipv4/tcp_output.c
-+++ b/net/ipv4/tcp_output.c
-@@ -2421,6 +2421,8 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
-       int mss;
-       int s_data_desired = 0;
-+      pax_track_stack();
-+
-       if (cvp != NULL && cvp->s_data_constant && cvp->s_data_desired)
-               s_data_desired = cvp->s_data_desired;
-       skb = sock_wmalloc(sk, MAX_TCP_HEADER + 15 + s_data_desired, 1, GFP_ATOMIC);
 diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c
 index 85ee7eb..53277ab 100644
 --- a/net/ipv4/tcp_probe.c
 diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c
 index 85ee7eb..53277ab 100644
 --- a/net/ipv4/tcp_probe.c
@@ -75588,7 +76268,7 @@ index 85ee7eb..53277ab 100644
                cnt += width;
        }
 diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
                cnt += width;
        }
 diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
-index ecd44b0..b32fba6 100644
+index 2e0f0af..e2948bf 100644
 --- a/net/ipv4/tcp_timer.c
 +++ b/net/ipv4/tcp_timer.c
 @@ -22,6 +22,10 @@
 --- a/net/ipv4/tcp_timer.c
 +++ b/net/ipv4/tcp_timer.c
 @@ -22,6 +22,10 @@
@@ -75617,7 +76297,7 @@ index ecd44b0..b32fba6 100644
                                  syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) {
                /* Has it gone just too far? */
 diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
                                  syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) {
                /* Has it gone just too far? */
 diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
-index 1b5a193..bd354b0 100644
+index 5a65eea..bd913a1 100644
 --- a/net/ipv4/udp.c
 +++ b/net/ipv4/udp.c
 @@ -86,6 +86,7 @@
 --- a/net/ipv4/udp.c
 +++ b/net/ipv4/udp.c
 @@ -86,6 +86,7 @@
@@ -75686,9 +76366,9 @@ index 1b5a193..bd354b0 100644
 +              goto out_free;
 +
        ulen = skb->len - sizeof(struct udphdr);
 +              goto out_free;
 +
        ulen = skb->len - sizeof(struct udphdr);
-       if (len > ulen)
-               len = ulen;
-@@ -1485,7 +1506,7 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
+       copied = len;
+       if (copied > ulen)
+@@ -1487,7 +1508,7 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
  
  drop:
        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
  
  drop:
        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
@@ -75697,7 +76377,7 @@ index 1b5a193..bd354b0 100644
        kfree_skb(skb);
        return -1;
  }
        kfree_skb(skb);
        return -1;
  }
-@@ -1504,7 +1525,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
+@@ -1506,7 +1527,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
                        skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
  
                if (!skb1) {
                        skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
  
                if (!skb1) {
@@ -75706,7 +76386,7 @@ index 1b5a193..bd354b0 100644
                        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
                                         IS_UDPLITE(sk));
                        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
                        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
                                         IS_UDPLITE(sk));
                        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
-@@ -1673,6 +1694,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
+@@ -1675,6 +1696,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
                goto csum_error;
  
        UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
                goto csum_error;
  
        UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
@@ -75716,7 +76396,7 @@ index 1b5a193..bd354b0 100644
        icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
  
        /*
        icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
  
        /*
-@@ -2100,8 +2124,13 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
+@@ -2098,8 +2122,13 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
                sk_wmem_alloc_get(sp),
                sk_rmem_alloc_get(sp),
                0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
                sk_wmem_alloc_get(sp),
                sk_rmem_alloc_get(sp),
                0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
@@ -75733,10 +76413,10 @@ index 1b5a193..bd354b0 100644
  
  int udp4_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
  
  int udp4_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index 12368c5..fbf899f 100644
+index a5521c5..984a2f4 100644
 --- a/net/ipv6/addrconf.c
 +++ b/net/ipv6/addrconf.c
 --- a/net/ipv6/addrconf.c
 +++ b/net/ipv6/addrconf.c
-@@ -2083,7 +2083,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
+@@ -2153,7 +2153,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
                p.iph.ihl = 5;
                p.iph.protocol = IPPROTO_IPV6;
                p.iph.ttl = 64;
                p.iph.ihl = 5;
                p.iph.protocol = IPPROTO_IPV6;
                p.iph.ttl = 64;
@@ -75745,8 +76425,21 @@ index 12368c5..fbf899f 100644
  
                if (ops->ndo_do_ioctl) {
                        mm_segment_t oldfs = get_fs();
  
                if (ops->ndo_do_ioctl) {
                        mm_segment_t oldfs = get_fs();
+diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c
+index 4c0f894..fca5d15 100644
+--- a/net/ipv6/ah6.c
++++ b/net/ipv6/ah6.c
+@@ -56,6 +56,8 @@ struct ah_skb_cb {
+ #define AH_SKB_CB(__skb) ((struct ah_skb_cb *)&((__skb)->cb[0]))
+ static void *ah_alloc_tmp(struct crypto_ahash *ahash, int nfrags,
++                        unsigned int size) __size_overflow(3);
++static void *ah_alloc_tmp(struct crypto_ahash *ahash, int nfrags,
+                         unsigned int size)
+ {
+       unsigned int len;
 diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c
 diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c
-index 8a58e8c..8b5e631 100644
+index 1567fb1..29af910 100644
 --- a/net/ipv6/inet6_connection_sock.c
 +++ b/net/ipv6/inet6_connection_sock.c
 @@ -178,7 +178,7 @@ void __inet6_csk_dst_store(struct sock *sk, struct dst_entry *dst,
 --- a/net/ipv6/inet6_connection_sock.c
 +++ b/net/ipv6/inet6_connection_sock.c
 @@ -178,7 +178,7 @@ void __inet6_csk_dst_store(struct sock *sk, struct dst_entry *dst,
@@ -75768,28 +76461,10 @@ index 8a58e8c..8b5e631 100644
                        dst = NULL;
                }
 diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
                        dst = NULL;
                }
 diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
-index 2fbda5f..26ed683 100644
+index 26cb08c..8af9877 100644
 --- a/net/ipv6/ipv6_sockglue.c
 +++ b/net/ipv6/ipv6_sockglue.c
 --- a/net/ipv6/ipv6_sockglue.c
 +++ b/net/ipv6/ipv6_sockglue.c
-@@ -129,6 +129,8 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
-       int val, valbool;
-       int retv = -ENOPROTOOPT;
-+      pax_track_stack();
-+
-       if (optval == NULL)
-               val=0;
-       else {
-@@ -919,6 +921,8 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
-       int len;
-       int val;
-+      pax_track_stack();
-+
-       if (ip6_mroute_opt(optname))
-               return ip6_mroute_getsockopt(sk, optname, optval, optlen);
-@@ -960,7 +964,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
+@@ -960,7 +960,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
                if (sk->sk_type != SOCK_STREAM)
                        return -ENOPROTOOPT;
  
                if (sk->sk_type != SOCK_STREAM)
                        return -ENOPROTOOPT;
  
@@ -75798,20 +76473,45 @@ index 2fbda5f..26ed683 100644
                msg.msg_controllen = len;
                msg.msg_flags = flags;
  
                msg.msg_controllen = len;
                msg.msg_flags = flags;
  
+diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
+index 94874b0..dc413fa 100644
+--- a/net/ipv6/netfilter/ip6_tables.c
++++ b/net/ipv6/netfilter/ip6_tables.c
+@@ -1194,6 +1194,10 @@ get_entries(struct net *net, struct ip6t_get_entries __user *uptr,
+ static int
+ __do_replace(struct net *net, const char *name, unsigned int valid_hooks,
+            struct xt_table_info *newinfo, unsigned int num_counters,
++           void __user *counters_ptr) __size_overflow(5);
++static int
++__do_replace(struct net *net, const char *name, unsigned int valid_hooks,
++           struct xt_table_info *newinfo, unsigned int num_counters,
+            void __user *counters_ptr)
+ {
+       int ret;
+@@ -1315,6 +1319,9 @@ do_replace(struct net *net, const void __user *user, unsigned int len)
+ static int
+ do_add_counters(struct net *net, const void __user *user, unsigned int len,
++              int compat) __size_overflow(3);
++static int
++do_add_counters(struct net *net, const void __user *user, unsigned int len,
+               int compat)
+ {
+       unsigned int i, curcpu;
 diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
 diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
-index 343852e..c92bd15 100644
+index 361ebf3..d5628fb 100644
 --- a/net/ipv6/raw.c
 +++ b/net/ipv6/raw.c
 --- a/net/ipv6/raw.c
 +++ b/net/ipv6/raw.c
-@@ -376,7 +376,7 @@ static inline int rawv6_rcv_skb(struct sock * sk, struct sk_buff * skb)
+@@ -377,7 +377,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb)
  {
  {
-       if ((raw6_sk(sk)->checksum || rcu_dereference_raw(sk->sk_filter)) &&
+       if ((raw6_sk(sk)->checksum || rcu_access_pointer(sk->sk_filter)) &&
            skb_checksum_complete(skb)) {
 -              atomic_inc(&sk->sk_drops);
 +              atomic_inc_unchecked(&sk->sk_drops);
                kfree_skb(skb);
                return NET_RX_DROP;
        }
            skb_checksum_complete(skb)) {
 -              atomic_inc(&sk->sk_drops);
 +              atomic_inc_unchecked(&sk->sk_drops);
                kfree_skb(skb);
                return NET_RX_DROP;
        }
-@@ -403,7 +403,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -404,7 +404,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
        struct raw6_sock *rp = raw6_sk(sk);
  
        if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) {
        struct raw6_sock *rp = raw6_sk(sk);
  
        if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) {
@@ -75820,7 +76520,7 @@ index 343852e..c92bd15 100644
                kfree_skb(skb);
                return NET_RX_DROP;
        }
                kfree_skb(skb);
                return NET_RX_DROP;
        }
-@@ -427,7 +427,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -428,7 +428,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
  
        if (inet->hdrincl) {
                if (skb_checksum_complete(skb)) {
  
        if (inet->hdrincl) {
                if (skb_checksum_complete(skb)) {
@@ -75838,16 +76538,7 @@ index 343852e..c92bd15 100644
                        struct flowi6 *fl6, struct dst_entry **dstp,
                        unsigned int flags)
  {
                        struct flowi6 *fl6, struct dst_entry **dstp,
                        unsigned int flags)
  {
-@@ -742,6 +742,8 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
-       u16 proto;
-       int err;
-+      pax_track_stack();
-+
-       /* Rough check on arithmetic overflow,
-          better check is made in ip6_append_data().
-        */
-@@ -909,12 +911,15 @@ do_confirm:
+@@ -909,12 +909,15 @@ do_confirm:
  static int rawv6_seticmpfilter(struct sock *sk, int level, int optname,
                               char __user *optval, int optlen)
  {
  static int rawv6_seticmpfilter(struct sock *sk, int level, int optname,
                               char __user *optval, int optlen)
  {
@@ -75864,7 +76555,7 @@ index 343852e..c92bd15 100644
                return 0;
        default:
                return -ENOPROTOOPT;
                return 0;
        default:
                return -ENOPROTOOPT;
-@@ -927,6 +932,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
+@@ -927,6 +930,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
                               char __user *optval, int __user *optlen)
  {
        int len;
                               char __user *optval, int __user *optlen)
  {
        int len;
@@ -75872,7 +76563,7 @@ index 343852e..c92bd15 100644
  
        switch (optname) {
        case ICMPV6_FILTER:
  
        switch (optname) {
        case ICMPV6_FILTER:
-@@ -938,7 +944,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
+@@ -938,7 +942,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
                        len = sizeof(struct icmp6_filter);
                if (put_user(len, optlen))
                        return -EFAULT;
                        len = sizeof(struct icmp6_filter);
                if (put_user(len, optlen))
                        return -EFAULT;
@@ -75882,7 +76573,7 @@ index 343852e..c92bd15 100644
                        return -EFAULT;
                return 0;
        default:
                        return -EFAULT;
                return 0;
        default:
-@@ -1245,7 +1252,13 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
+@@ -1245,7 +1250,13 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
                   0, 0L, 0,
                   sock_i_uid(sp), 0,
                   sock_i_ino(sp),
                   0, 0L, 0,
                   sock_i_uid(sp), 0,
                   sock_i_ino(sp),
@@ -75898,7 +76589,7 @@ index 343852e..c92bd15 100644
  
  static int raw6_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
  
  static int raw6_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
-index 7b8fc57..c6185da 100644
+index b859e4a..f9d1589 100644
 --- a/net/ipv6/tcp_ipv6.c
 +++ b/net/ipv6/tcp_ipv6.c
 @@ -93,6 +93,10 @@ static struct tcp_md5sig_key *tcp_v6_md5_do_lookup(struct sock *sk,
 --- a/net/ipv6/tcp_ipv6.c
 +++ b/net/ipv6/tcp_ipv6.c
 @@ -93,6 +93,10 @@ static struct tcp_md5sig_key *tcp_v6_md5_do_lookup(struct sock *sk,
@@ -75912,7 +76603,7 @@ index 7b8fc57..c6185da 100644
  static void tcp_v6_hash(struct sock *sk)
  {
        if (sk->sk_state != TCP_CLOSE) {
  static void tcp_v6_hash(struct sock *sk)
  {
        if (sk->sk_state != TCP_CLOSE) {
-@@ -1647,6 +1651,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -1651,6 +1655,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
        return 0;
  
  reset:
        return 0;
  
  reset:
@@ -75922,7 +76613,7 @@ index 7b8fc57..c6185da 100644
        tcp_v6_send_reset(sk, skb);
  discard:
        if (opt_skb)
        tcp_v6_send_reset(sk, skb);
  discard:
        if (opt_skb)
-@@ -1726,12 +1733,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
+@@ -1730,12 +1737,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
        TCP_SKB_CB(skb)->sacked = 0;
  
        sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
        TCP_SKB_CB(skb)->sacked = 0;
  
        sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
@@ -75945,7 +76636,7 @@ index 7b8fc57..c6185da 100644
  
        if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
                NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
  
        if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
                NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
-@@ -1779,6 +1794,10 @@ no_tcp_socket:
+@@ -1783,6 +1798,10 @@ no_tcp_socket:
  bad_packet:
                TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
        } else {
  bad_packet:
                TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
        } else {
@@ -75956,7 +76647,7 @@ index 7b8fc57..c6185da 100644
                tcp_v6_send_reset(NULL, skb);
        }
  
                tcp_v6_send_reset(NULL, skb);
        }
  
-@@ -2039,7 +2058,13 @@ static void get_openreq6(struct seq_file *seq,
+@@ -2043,7 +2062,13 @@ static void get_openreq6(struct seq_file *seq,
                   uid,
                   0,  /* non standard timer */
                   0, /* open_requests have no inode */
                   uid,
                   0,  /* non standard timer */
                   0, /* open_requests have no inode */
@@ -75971,7 +76662,7 @@ index 7b8fc57..c6185da 100644
  }
  
  static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
  }
  
  static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
-@@ -2089,7 +2114,12 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
+@@ -2093,7 +2118,12 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
                   sock_i_uid(sp),
                   icsk->icsk_probes_out,
                   sock_i_ino(sp),
                   sock_i_uid(sp),
                   icsk->icsk_probes_out,
                   sock_i_ino(sp),
@@ -75985,7 +76676,7 @@ index 7b8fc57..c6185da 100644
                   jiffies_to_clock_t(icsk->icsk_rto),
                   jiffies_to_clock_t(icsk->icsk_ack.ato),
                   (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong,
                   jiffies_to_clock_t(icsk->icsk_rto),
                   jiffies_to_clock_t(icsk->icsk_ack.ato),
                   (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong,
-@@ -2124,7 +2154,13 @@ static void get_timewait6_sock(struct seq_file *seq,
+@@ -2128,7 +2158,13 @@ static void get_timewait6_sock(struct seq_file *seq,
                   dest->s6_addr32[2], dest->s6_addr32[3], destp,
                   tw->tw_substate, 0, 0,
                   3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
                   dest->s6_addr32[2], dest->s6_addr32[3], destp,
                   tw->tw_substate, 0, 0,
                   3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
@@ -76001,7 +76692,7 @@ index 7b8fc57..c6185da 100644
  
  static int tcp6_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
  
  static int tcp6_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
-index bb95e8e..ae0ee80 100644
+index 8c25419..47a51ae 100644
 --- a/net/ipv6/udp.c
 +++ b/net/ipv6/udp.c
 @@ -50,6 +50,10 @@
 --- a/net/ipv6/udp.c
 +++ b/net/ipv6/udp.c
 @@ -50,6 +50,10 @@
@@ -76015,7 +76706,7 @@ index bb95e8e..ae0ee80 100644
  int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
  {
        const struct in6_addr *sk_rcv_saddr6 = &inet6_sk(sk)->rcv_saddr;
  int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
  {
        const struct in6_addr *sk_rcv_saddr6 = &inet6_sk(sk)->rcv_saddr;
-@@ -548,7 +552,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
+@@ -549,7 +553,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
  
        return 0;
  drop:
  
        return 0;
  drop:
@@ -76024,7 +76715,7 @@ index bb95e8e..ae0ee80 100644
  drop_no_sk_drops_inc:
        UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
        kfree_skb(skb);
  drop_no_sk_drops_inc:
        UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
        kfree_skb(skb);
-@@ -624,7 +628,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
+@@ -625,7 +629,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
                        continue;
                }
  drop:
                        continue;
                }
  drop:
@@ -76033,7 +76724,7 @@ index bb95e8e..ae0ee80 100644
                UDP6_INC_STATS_BH(sock_net(sk),
                                UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk));
                UDP6_INC_STATS_BH(sock_net(sk),
                UDP6_INC_STATS_BH(sock_net(sk),
                                UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk));
                UDP6_INC_STATS_BH(sock_net(sk),
-@@ -779,6 +783,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
+@@ -780,6 +784,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
                UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS,
                                proto == IPPROTO_UDPLITE);
  
                UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS,
                                proto == IPPROTO_UDPLITE);
  
@@ -76043,7 +76734,7 @@ index bb95e8e..ae0ee80 100644
                icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0);
  
                kfree_skb(skb);
                icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0);
  
                kfree_skb(skb);
-@@ -795,7 +802,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
+@@ -796,7 +803,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
        if (!sock_owned_by_user(sk))
                udpv6_queue_rcv_skb(sk, skb);
        else if (sk_add_backlog(sk, skb)) {
        if (!sock_owned_by_user(sk))
                udpv6_queue_rcv_skb(sk, skb);
        else if (sk_add_backlog(sk, skb)) {
@@ -76052,7 +76743,7 @@ index bb95e8e..ae0ee80 100644
                bh_unlock_sock(sk);
                sock_put(sk);
                goto discard;
                bh_unlock_sock(sk);
                sock_put(sk);
                goto discard;
-@@ -1406,8 +1413,13 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket
+@@ -1407,8 +1414,13 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket
                   0, 0L, 0,
                   sock_i_uid(sp), 0,
                   sock_i_ino(sp),
                   0, 0L, 0,
                   sock_i_uid(sp), 0,
                   sock_i_ino(sp),
@@ -76069,7 +76760,7 @@ index bb95e8e..ae0ee80 100644
  
  int udp6_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c
  
  int udp6_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c
-index b3cc8b3..baa02d0 100644
+index 253695d..9481ce8 100644
 --- a/net/irda/ircomm/ircomm_tty.c
 +++ b/net/irda/ircomm/ircomm_tty.c
 @@ -282,16 +282,16 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
 --- a/net/irda/ircomm/ircomm_tty.c
 +++ b/net/irda/ircomm/ircomm_tty.c
 @@ -282,16 +282,16 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
@@ -76195,10 +76886,10 @@ index b3cc8b3..baa02d0 100644
        seq_printf(m, "Max header size: %d\n", self->max_header_size);
  
 diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
        seq_printf(m, "Max header size: %d\n", self->max_header_size);
  
 diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
-index e2013e4..edfc1e3 100644
+index 274d150..656a144 100644
 --- a/net/iucv/af_iucv.c
 +++ b/net/iucv/af_iucv.c
 --- a/net/iucv/af_iucv.c
 +++ b/net/iucv/af_iucv.c
-@@ -648,10 +648,10 @@ static int iucv_sock_autobind(struct sock *sk)
+@@ -787,10 +787,10 @@ static int iucv_sock_autobind(struct sock *sk)
  
        write_lock_bh(&iucv_sk_list.lock);
  
  
        write_lock_bh(&iucv_sk_list.lock);
  
@@ -76212,19 +76903,10 @@ index e2013e4..edfc1e3 100644
  
        write_unlock_bh(&iucv_sk_list.lock);
 diff --git a/net/key/af_key.c b/net/key/af_key.c
  
        write_unlock_bh(&iucv_sk_list.lock);
 diff --git a/net/key/af_key.c b/net/key/af_key.c
-index 1e733e9..c84de2f 100644
+index 1e733e9..3d73c9f 100644
 --- a/net/key/af_key.c
 +++ b/net/key/af_key.c
 --- a/net/key/af_key.c
 +++ b/net/key/af_key.c
-@@ -2481,6 +2481,8 @@ static int pfkey_migrate(struct sock *sk, struct sk_buff *skb,
-       struct xfrm_migrate m[XFRM_MAX_DEPTH];
-       struct xfrm_kmaddress k;
-+      pax_track_stack();
-+
-       if (!present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC - 1],
-                                    ext_hdrs[SADB_EXT_ADDRESS_DST - 1]) ||
-           !ext_hdrs[SADB_X_EXT_POLICY - 1]) {
-@@ -3016,10 +3018,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc
+@@ -3016,10 +3016,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc
  static u32 get_acqseq(void)
  {
        u32 res;
  static u32 get_acqseq(void)
  {
        u32 res;
@@ -76237,97 +76919,8 @@ index 1e733e9..c84de2f 100644
        } while (!res);
        return res;
  }
        } while (!res);
        return res;
  }
-diff --git a/net/lapb/lapb_iface.c b/net/lapb/lapb_iface.c
-index 956b7e4..f01d328 100644
---- a/net/lapb/lapb_iface.c
-+++ b/net/lapb/lapb_iface.c
-@@ -158,7 +158,7 @@ int lapb_register(struct net_device *dev, struct lapb_register_struct *callbacks
-               goto out;
-       lapb->dev       = dev;
--      lapb->callbacks = *callbacks;
-+      lapb->callbacks = callbacks;
-       __lapb_insert_cb(lapb);
-@@ -380,32 +380,32 @@ int lapb_data_received(struct net_device *dev, struct sk_buff *skb)
- void lapb_connect_confirmation(struct lapb_cb *lapb, int reason)
- {
--      if (lapb->callbacks.connect_confirmation)
--              lapb->callbacks.connect_confirmation(lapb->dev, reason);
-+      if (lapb->callbacks->connect_confirmation)
-+              lapb->callbacks->connect_confirmation(lapb->dev, reason);
- }
- void lapb_connect_indication(struct lapb_cb *lapb, int reason)
- {
--      if (lapb->callbacks.connect_indication)
--              lapb->callbacks.connect_indication(lapb->dev, reason);
-+      if (lapb->callbacks->connect_indication)
-+              lapb->callbacks->connect_indication(lapb->dev, reason);
- }
- void lapb_disconnect_confirmation(struct lapb_cb *lapb, int reason)
- {
--      if (lapb->callbacks.disconnect_confirmation)
--              lapb->callbacks.disconnect_confirmation(lapb->dev, reason);
-+      if (lapb->callbacks->disconnect_confirmation)
-+              lapb->callbacks->disconnect_confirmation(lapb->dev, reason);
- }
- void lapb_disconnect_indication(struct lapb_cb *lapb, int reason)
- {
--      if (lapb->callbacks.disconnect_indication)
--              lapb->callbacks.disconnect_indication(lapb->dev, reason);
-+      if (lapb->callbacks->disconnect_indication)
-+              lapb->callbacks->disconnect_indication(lapb->dev, reason);
- }
- int lapb_data_indication(struct lapb_cb *lapb, struct sk_buff *skb)
- {
--      if (lapb->callbacks.data_indication)
--              return lapb->callbacks.data_indication(lapb->dev, skb);
-+      if (lapb->callbacks->data_indication)
-+              return lapb->callbacks->data_indication(lapb->dev, skb);
-       kfree_skb(skb);
-       return NET_RX_SUCCESS; /* For now; must be != NET_RX_DROP */
-@@ -415,8 +415,8 @@ int lapb_data_transmit(struct lapb_cb *lapb, struct sk_buff *skb)
- {
-       int used = 0;
--      if (lapb->callbacks.data_transmit) {
--              lapb->callbacks.data_transmit(lapb->dev, skb);
-+      if (lapb->callbacks->data_transmit) {
-+              lapb->callbacks->data_transmit(lapb->dev, skb);
-               used = 1;
-       }
-diff --git a/net/mac80211/debugfs_sta.c b/net/mac80211/debugfs_sta.c
-index a01d213..6a1f1ab 100644
---- a/net/mac80211/debugfs_sta.c
-+++ b/net/mac80211/debugfs_sta.c
-@@ -140,6 +140,8 @@ static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf,
-       struct tid_ampdu_rx *tid_rx;
-       struct tid_ampdu_tx *tid_tx;
-+      pax_track_stack();
-+
-       rcu_read_lock();
-       p += scnprintf(p, sizeof(buf) + buf - p, "next dialog_token: %#02x\n",
-@@ -240,6 +242,8 @@ static ssize_t sta_ht_capa_read(struct file *file, char __user *userbuf,
-       struct sta_info *sta = file->private_data;
-       struct ieee80211_sta_ht_cap *htc = &sta->sta.ht_cap;
-+      pax_track_stack();
-+
-       p += scnprintf(p, sizeof(buf) + buf - p, "ht %ssupported\n",
-                       htc->ht_supported ? "" : "not ");
-       if (htc->ht_supported) {
 diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
 diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
-index 9fab144..7f0fc14 100644
+index 73495f1..ad51356 100644
 --- a/net/mac80211/ieee80211_i.h
 +++ b/net/mac80211/ieee80211_i.h
 @@ -27,6 +27,7 @@
 --- a/net/mac80211/ieee80211_i.h
 +++ b/net/mac80211/ieee80211_i.h
 @@ -27,6 +27,7 @@
@@ -76338,7 +76931,7 @@ index 9fab144..7f0fc14 100644
  #include "key.h"
  #include "sta_info.h"
  
  #include "key.h"
  #include "sta_info.h"
  
-@@ -754,7 +755,7 @@ struct ieee80211_local {
+@@ -764,7 +765,7 @@ struct ieee80211_local {
        /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
        spinlock_t queue_stop_reason_lock;
  
        /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
        spinlock_t queue_stop_reason_lock;
  
@@ -76348,7 +76941,7 @@ index 9fab144..7f0fc14 100644
        /* number of interfaces with corresponding FIF_ flags */
        int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
 diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
        /* number of interfaces with corresponding FIF_ flags */
        int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
 diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
-index 556e7e6..120dcaf 100644
+index 30d7355..e260095 100644
 --- a/net/mac80211/iface.c
 +++ b/net/mac80211/iface.c
 @@ -211,7 +211,7 @@ static int ieee80211_do_open(struct net_device *dev, bool coming_up)
 --- a/net/mac80211/iface.c
 +++ b/net/mac80211/iface.c
 @@ -211,7 +211,7 @@ static int ieee80211_do_open(struct net_device *dev, bool coming_up)
@@ -76387,7 +76980,7 @@ index 556e7e6..120dcaf 100644
                drv_stop(local);
   err_del_bss:
        sdata->bss = NULL;
                drv_stop(local);
   err_del_bss:
        sdata->bss = NULL;
-@@ -474,7 +474,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
+@@ -472,7 +472,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
        }
  
        if (going_down)
        }
  
        if (going_down)
@@ -76396,7 +76989,7 @@ index 556e7e6..120dcaf 100644
  
        switch (sdata->vif.type) {
        case NL80211_IFTYPE_AP_VLAN:
  
        switch (sdata->vif.type) {
        case NL80211_IFTYPE_AP_VLAN:
-@@ -533,7 +533,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
+@@ -531,7 +531,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
  
        ieee80211_recalc_ps(local, -1);
  
  
        ieee80211_recalc_ps(local, -1);
  
@@ -76406,10 +76999,10 @@ index 556e7e6..120dcaf 100644
                        napi_disable(&local->napi);
                ieee80211_clear_tx_pending(local);
 diff --git a/net/mac80211/main.c b/net/mac80211/main.c
                        napi_disable(&local->napi);
                ieee80211_clear_tx_pending(local);
 diff --git a/net/mac80211/main.c b/net/mac80211/main.c
-index 3d90dad..36884d5 100644
+index 7d9b21d..0687004 100644
 --- a/net/mac80211/main.c
 +++ b/net/mac80211/main.c
 --- a/net/mac80211/main.c
 +++ b/net/mac80211/main.c
-@@ -209,7 +209,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
+@@ -163,7 +163,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
                local->hw.conf.power_level = power;
        }
  
                local->hw.conf.power_level = power;
        }
  
@@ -76418,21 +77011,8 @@ index 3d90dad..36884d5 100644
                ret = drv_config(local, changed);
                /*
                 * Goal:
                ret = drv_config(local, changed);
                /*
                 * Goal:
-diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
-index 0f48368..d48e688 100644
---- a/net/mac80211/mlme.c
-+++ b/net/mac80211/mlme.c
-@@ -1464,6 +1464,8 @@ static bool ieee80211_assoc_success(struct ieee80211_work *wk,
-       bool have_higher_than_11mbit = false;
-       u16 ap_ht_cap_flags;
-+      pax_track_stack();
-+
-       /* AssocResp and ReassocResp have identical structure */
-       aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
 diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
 diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
-index 6326d34..7225f61 100644
+index 9ee7164..56c5061 100644
 --- a/net/mac80211/pm.c
 +++ b/net/mac80211/pm.c
 @@ -34,7 +34,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
 --- a/net/mac80211/pm.c
 +++ b/net/mac80211/pm.c
 @@ -34,7 +34,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
@@ -76463,10 +77043,10 @@ index 6326d34..7225f61 100644
  
   suspend:
 diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
  
   suspend:
 diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
-index 3d5a2cb..b17ad48 100644
+index 7d84b87..6a69cd9 100644
 --- a/net/mac80211/rate.c
 +++ b/net/mac80211/rate.c
 --- a/net/mac80211/rate.c
 +++ b/net/mac80211/rate.c
-@@ -371,7 +371,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
+@@ -401,7 +401,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
  
        ASSERT_RTNL();
  
  
        ASSERT_RTNL();
  
@@ -76476,10 +77056,10 @@ index 3d5a2cb..b17ad48 100644
  
        if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) {
 diff --git a/net/mac80211/rc80211_pid_debugfs.c b/net/mac80211/rc80211_pid_debugfs.c
  
        if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) {
 diff --git a/net/mac80211/rc80211_pid_debugfs.c b/net/mac80211/rc80211_pid_debugfs.c
-index 4851e9e..d860e05 100644
+index c97a065..ff61928 100644
 --- a/net/mac80211/rc80211_pid_debugfs.c
 +++ b/net/mac80211/rc80211_pid_debugfs.c
 --- a/net/mac80211/rc80211_pid_debugfs.c
 +++ b/net/mac80211/rc80211_pid_debugfs.c
-@@ -192,7 +192,7 @@ static ssize_t rate_control_pid_events_read(struct file *file, char __user *buf,
+@@ -193,7 +193,7 @@ static ssize_t rate_control_pid_events_read(struct file *file, char __user *buf,
  
        spin_unlock_irqrestore(&events->lock, status);
  
  
        spin_unlock_irqrestore(&events->lock, status);
  
@@ -76489,10 +77069,10 @@ index 4851e9e..d860e05 100644
  
        return p;
 diff --git a/net/mac80211/util.c b/net/mac80211/util.c
  
        return p;
 diff --git a/net/mac80211/util.c b/net/mac80211/util.c
-index fd031e8..84fbfcf 100644
+index d5230ec..c604b21 100644
 --- a/net/mac80211/util.c
 +++ b/net/mac80211/util.c
 --- a/net/mac80211/util.c
 +++ b/net/mac80211/util.c
-@@ -1170,7 +1170,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
+@@ -1000,7 +1000,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
        drv_set_coverage_class(local, hw->wiphy->coverage_class);
  
        /* everything else happens only if HW was up & running */
        drv_set_coverage_class(local, hw->wiphy->coverage_class);
  
        /* everything else happens only if HW was up & running */
@@ -76502,10 +77082,10 @@ index fd031e8..84fbfcf 100644
  
        /*
 diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
  
        /*
 diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
-index 32bff6d..d0cf986 100644
+index d5597b7..ab6d39c 100644
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -781,6 +781,16 @@ config NETFILTER_XT_MATCH_ESP
+@@ -779,6 +779,16 @@ config NETFILTER_XT_MATCH_ESP
  
          To compile it as a module, choose M here.  If unsure, say N.
  
  
          To compile it as a module, choose M here.  If unsure, say N.
  
@@ -76535,7 +77115,7 @@ index 1a02853..5d8c22e 100644
  obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
 diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
  obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
 diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
-index 12571fb..fb73976 100644
+index 29fa5ba..8debc79 100644
 --- a/net/netfilter/ipvs/ip_vs_conn.c
 +++ b/net/netfilter/ipvs/ip_vs_conn.c
 @@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest)
 --- a/net/netfilter/ipvs/ip_vs_conn.c
 +++ b/net/netfilter/ipvs/ip_vs_conn.c
 @@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest)
@@ -76566,10 +77146,10 @@ index 12571fb..fb73976 100644
  
        if (!todrop_rate[i]) return 0;
 diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
  
        if (!todrop_rate[i]) return 0;
 diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
-index 4f77bb1..5d0bc26 100644
+index 6dc7d7d..e45913a 100644
 --- a/net/netfilter/ipvs/ip_vs_core.c
 +++ b/net/netfilter/ipvs/ip_vs_core.c
 --- a/net/netfilter/ipvs/ip_vs_core.c
 +++ b/net/netfilter/ipvs/ip_vs_core.c
-@@ -563,7 +563,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
+@@ -562,7 +562,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
                ret = cp->packet_xmit(skb, cp, pd->pp);
                /* do not touch skb anymore */
  
                ret = cp->packet_xmit(skb, cp, pd->pp);
                /* do not touch skb anymore */
  
@@ -76578,7 +77158,7 @@ index 4f77bb1..5d0bc26 100644
                ip_vs_conn_put(cp);
                return ret;
        }
                ip_vs_conn_put(cp);
                return ret;
        }
-@@ -1612,7 +1612,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af)
+@@ -1611,7 +1611,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af)
        if (cp->flags & IP_VS_CONN_F_ONE_PACKET)
                pkts = sysctl_sync_threshold(ipvs);
        else
        if (cp->flags & IP_VS_CONN_F_ONE_PACKET)
                pkts = sysctl_sync_threshold(ipvs);
        else
@@ -76588,10 +77168,10 @@ index 4f77bb1..5d0bc26 100644
        if ((ipvs->sync_state & IP_VS_STATE_MASTER) &&
            cp->protocol == IPPROTO_SCTP) {
 diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
        if ((ipvs->sync_state & IP_VS_STATE_MASTER) &&
            cp->protocol == IPPROTO_SCTP) {
 diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
-index e3be48b..d658c8c 100644
+index e1a66cf..0910076 100644
 --- a/net/netfilter/ipvs/ip_vs_ctl.c
 +++ b/net/netfilter/ipvs/ip_vs_ctl.c
 --- a/net/netfilter/ipvs/ip_vs_ctl.c
 +++ b/net/netfilter/ipvs/ip_vs_ctl.c
-@@ -782,7 +782,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest,
+@@ -788,7 +788,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest,
                ip_vs_rs_hash(ipvs, dest);
                write_unlock_bh(&ipvs->rs_lock);
        }
                ip_vs_rs_hash(ipvs, dest);
                write_unlock_bh(&ipvs->rs_lock);
        }
@@ -76600,7 +77180,7 @@ index e3be48b..d658c8c 100644
  
        /* bind the service */
        if (!dest->svc) {
  
        /* bind the service */
        if (!dest->svc) {
-@@ -2027,7 +2027,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
+@@ -2028,7 +2028,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
                                           "      %-7s %-6d %-10d %-10d\n",
                                           &dest->addr.in6,
                                           ntohs(dest->port),
                                           "      %-7s %-6d %-10d %-10d\n",
                                           &dest->addr.in6,
                                           ntohs(dest->port),
@@ -76609,7 +77189,7 @@ index e3be48b..d658c8c 100644
                                           atomic_read(&dest->weight),
                                           atomic_read(&dest->activeconns),
                                           atomic_read(&dest->inactconns));
                                           atomic_read(&dest->weight),
                                           atomic_read(&dest->activeconns),
                                           atomic_read(&dest->inactconns));
-@@ -2038,7 +2038,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
+@@ -2039,7 +2039,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
                                           "%-7s %-6d %-10d %-10d\n",
                                           ntohl(dest->addr.ip),
                                           ntohs(dest->port),
                                           "%-7s %-6d %-10d %-10d\n",
                                           ntohl(dest->addr.ip),
                                           ntohs(dest->port),
@@ -76618,16 +77198,7 @@ index e3be48b..d658c8c 100644
                                           atomic_read(&dest->weight),
                                           atomic_read(&dest->activeconns),
                                           atomic_read(&dest->inactconns));
                                           atomic_read(&dest->weight),
                                           atomic_read(&dest->activeconns),
                                           atomic_read(&dest->inactconns));
-@@ -2285,6 +2285,8 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len)
-       struct ip_vs_dest_user_kern udest;
-       struct netns_ipvs *ipvs = net_ipvs(net);
-+      pax_track_stack();
-+
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-@@ -2508,7 +2510,7 @@ __ip_vs_get_dest_entries(struct net *net, const struct ip_vs_get_dests *get,
+@@ -2509,7 +2509,7 @@ __ip_vs_get_dest_entries(struct net *net, const struct ip_vs_get_dests *get,
  
                        entry.addr = dest->addr.ip;
                        entry.port = dest->port;
  
                        entry.addr = dest->addr.ip;
                        entry.port = dest->port;
@@ -76636,7 +77207,7 @@ index e3be48b..d658c8c 100644
                        entry.weight = atomic_read(&dest->weight);
                        entry.u_threshold = dest->u_threshold;
                        entry.l_threshold = dest->l_threshold;
                        entry.weight = atomic_read(&dest->weight);
                        entry.u_threshold = dest->u_threshold;
                        entry.l_threshold = dest->l_threshold;
-@@ -3041,7 +3043,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest)
+@@ -3042,7 +3042,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest)
        NLA_PUT_U16(skb, IPVS_DEST_ATTR_PORT, dest->port);
  
        NLA_PUT_U32(skb, IPVS_DEST_ATTR_FWD_METHOD,
        NLA_PUT_U16(skb, IPVS_DEST_ATTR_PORT, dest->port);
  
        NLA_PUT_U32(skb, IPVS_DEST_ATTR_FWD_METHOD,
@@ -76646,7 +77217,7 @@ index e3be48b..d658c8c 100644
        NLA_PUT_U32(skb, IPVS_DEST_ATTR_U_THRESH, dest->u_threshold);
        NLA_PUT_U32(skb, IPVS_DEST_ATTR_L_THRESH, dest->l_threshold);
 diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
        NLA_PUT_U32(skb, IPVS_DEST_ATTR_U_THRESH, dest->u_threshold);
        NLA_PUT_U32(skb, IPVS_DEST_ATTR_L_THRESH, dest->l_threshold);
 diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
-index 3cdd479..116afa8 100644
+index 2b6678c0..aaa41fc 100644
 --- a/net/netfilter/ipvs/ip_vs_sync.c
 +++ b/net/netfilter/ipvs/ip_vs_sync.c
 @@ -649,7 +649,7 @@ control:
 --- a/net/netfilter/ipvs/ip_vs_sync.c
 +++ b/net/netfilter/ipvs/ip_vs_sync.c
 @@ -649,7 +649,7 @@ control:
@@ -76668,7 +77239,7 @@ index 3cdd479..116afa8 100644
        cp->old_state = cp->state;
        /*
 diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
        cp->old_state = cp->state;
        /*
 diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
-index ee319a4..8a285ee 100644
+index aa2d720..d8aa111 100644
 --- a/net/netfilter/ipvs/ip_vs_xmit.c
 +++ b/net/netfilter/ipvs/ip_vs_xmit.c
 @@ -1151,7 +1151,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
 --- a/net/netfilter/ipvs/ip_vs_xmit.c
 +++ b/net/netfilter/ipvs/ip_vs_xmit.c
 @@ -1151,7 +1151,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
@@ -76690,7 +77261,7 @@ index ee319a4..8a285ee 100644
        }
  
 diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
        }
  
 diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
-index 2d8158a..5dca296 100644
+index 66b2c54..c7884e3 100644
 --- a/net/netfilter/nfnetlink_log.c
 +++ b/net/netfilter/nfnetlink_log.c
 @@ -70,7 +70,7 @@ struct nfulnl_instance {
 --- a/net/netfilter/nfnetlink_log.c
 +++ b/net/netfilter/nfnetlink_log.c
 @@ -70,7 +70,7 @@ struct nfulnl_instance {
@@ -76702,7 +77273,7 @@ index 2d8158a..5dca296 100644
  
  #define INSTANCE_BUCKETS      16
  static struct hlist_head instance_table[INSTANCE_BUCKETS];
  
  #define INSTANCE_BUCKETS      16
  static struct hlist_head instance_table[INSTANCE_BUCKETS];
-@@ -505,7 +505,7 @@ __build_packet_message(struct nfulnl_instance *inst,
+@@ -502,7 +502,7 @@ __build_packet_message(struct nfulnl_instance *inst,
        /* global sequence number */
        if (inst->flags & NFULNL_CFG_F_SEQ_GLOBAL)
                NLA_PUT_BE32(inst->skb, NFULA_SEQ_GLOBAL,
        /* global sequence number */
        if (inst->flags & NFULNL_CFG_F_SEQ_GLOBAL)
                NLA_PUT_BE32(inst->skb, NFULA_SEQ_GLOBAL,
@@ -76769,11 +77340,11 @@ index 0000000..6905327
 +MODULE_ALIAS("ipt_gradm");
 +MODULE_ALIAS("ip6t_gradm");
 diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c
 +MODULE_ALIAS("ipt_gradm");
 +MODULE_ALIAS("ip6t_gradm");
 diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c
-index 42ecb71..8d687c0 100644
+index 4fe4fb4..87a89e5 100644
 --- a/net/netfilter/xt_statistic.c
 +++ b/net/netfilter/xt_statistic.c
 --- a/net/netfilter/xt_statistic.c
 +++ b/net/netfilter/xt_statistic.c
-@@ -18,7 +18,7 @@
- #include <linux/netfilter/x_tables.h>
+@@ -19,7 +19,7 @@
+ #include <linux/module.h>
  
  struct xt_statistic_priv {
 -      atomic_t count;
  
  struct xt_statistic_priv {
 -      atomic_t count;
@@ -76781,7 +77352,7 @@ index 42ecb71..8d687c0 100644
  } ____cacheline_aligned_in_smp;
  
  MODULE_LICENSE("GPL");
  } ____cacheline_aligned_in_smp;
  
  MODULE_LICENSE("GPL");
-@@ -41,9 +41,9 @@ statistic_mt(const struct sk_buff *skb, struct xt_action_param *par)
+@@ -42,9 +42,9 @@ statistic_mt(const struct sk_buff *skb, struct xt_action_param *par)
                break;
        case XT_STATISTIC_MODE_NTH:
                do {
                break;
        case XT_STATISTIC_MODE_NTH:
                do {
@@ -76793,7 +77364,7 @@ index 42ecb71..8d687c0 100644
                if (nval == 0)
                        ret = !ret;
                break;
                if (nval == 0)
                        ret = !ret;
                break;
-@@ -63,7 +63,7 @@ static int statistic_mt_check(const struct xt_mtchk_param *par)
+@@ -64,7 +64,7 @@ static int statistic_mt_check(const struct xt_mtchk_param *par)
        info->master = kzalloc(sizeof(*info->master), GFP_KERNEL);
        if (info->master == NULL)
                return -ENOMEM;
        info->master = kzalloc(sizeof(*info->master), GFP_KERNEL);
        if (info->master == NULL)
                return -ENOMEM;
@@ -76803,7 +77374,7 @@ index 42ecb71..8d687c0 100644
        return 0;
  }
 diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
        return 0;
  }
 diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
-index 0a4db02..604f748 100644
+index 1201b6d..bcff8c6 100644
 --- a/net/netlink/af_netlink.c
 +++ b/net/netlink/af_netlink.c
 @@ -742,7 +742,7 @@ static void netlink_overrun(struct sock *sk)
 --- a/net/netlink/af_netlink.c
 +++ b/net/netlink/af_netlink.c
 @@ -742,7 +742,7 @@ static void netlink_overrun(struct sock *sk)
@@ -76815,7 +77386,7 @@ index 0a4db02..604f748 100644
  }
  
  static struct sock *netlink_getsockbypid(struct sock *ssk, u32 pid)
  }
  
  static struct sock *netlink_getsockbypid(struct sock *ssk, u32 pid)
-@@ -2000,7 +2000,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
+@@ -1999,7 +1999,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
                           sk_wmem_alloc_get(s),
                           nlk->cb,
                           atomic_read(&s->sk_refcnt),
                           sk_wmem_alloc_get(s),
                           nlk->cb,
                           atomic_read(&s->sk_refcnt),
@@ -76845,10 +77416,10 @@ index 732152f..60bb09e 100644
                *uaddr_len = sizeof(struct sockaddr_ax25);
        }
 diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
                *uaddr_len = sizeof(struct sockaddr_ax25);
        }
 diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
-index fabb4fa..e146b73 100644
+index d9d4970..d5a6a68 100644
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -954,7 +954,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
+@@ -1675,7 +1675,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
  
        spin_lock(&sk->sk_receive_queue.lock);
        po->stats.tp_packets++;
  
        spin_lock(&sk->sk_receive_queue.lock);
        po->stats.tp_packets++;
@@ -76857,7 +77428,7 @@ index fabb4fa..e146b73 100644
        __skb_queue_tail(&sk->sk_receive_queue, skb);
        spin_unlock(&sk->sk_receive_queue.lock);
        sk->sk_data_ready(sk, skb->len);
        __skb_queue_tail(&sk->sk_receive_queue, skb);
        spin_unlock(&sk->sk_receive_queue.lock);
        sk->sk_data_ready(sk, skb->len);
-@@ -963,7 +963,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
+@@ -1684,7 +1684,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
  drop_n_acct:
        spin_lock(&sk->sk_receive_queue.lock);
        po->stats.tp_drops++;
  drop_n_acct:
        spin_lock(&sk->sk_receive_queue.lock);
        po->stats.tp_drops++;
@@ -76866,7 +77437,7 @@ index fabb4fa..e146b73 100644
        spin_unlock(&sk->sk_receive_queue.lock);
  
  drop_n_restore:
        spin_unlock(&sk->sk_receive_queue.lock);
  
  drop_n_restore:
-@@ -2479,7 +2479,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
+@@ -3266,7 +3266,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
        case PACKET_HDRLEN:
                if (len > sizeof(int))
                        len = sizeof(int);
        case PACKET_HDRLEN:
                if (len > sizeof(int))
                        len = sizeof(int);
@@ -76875,7 +77446,7 @@ index fabb4fa..e146b73 100644
                        return -EFAULT;
                switch (val) {
                case TPACKET_V1:
                        return -EFAULT;
                switch (val) {
                case TPACKET_V1:
-@@ -2526,7 +2526,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
+@@ -3316,7 +3316,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
  
        if (put_user(len, optlen))
                return -EFAULT;
  
        if (put_user(len, optlen))
                return -EFAULT;
@@ -76885,7 +77456,7 @@ index fabb4fa..e146b73 100644
        return 0;
  }
 diff --git a/net/phonet/af_phonet.c b/net/phonet/af_phonet.c
        return 0;
  }
 diff --git a/net/phonet/af_phonet.c b/net/phonet/af_phonet.c
-index c6fffd9..a7ffa0c 100644
+index d65f699..05aa6ce 100644
 --- a/net/phonet/af_phonet.c
 +++ b/net/phonet/af_phonet.c
 @@ -41,7 +41,7 @@ static struct phonet_protocol *phonet_proto_get(unsigned int protocol)
 --- a/net/phonet/af_phonet.c
 +++ b/net/phonet/af_phonet.c
 @@ -41,7 +41,7 @@ static struct phonet_protocol *phonet_proto_get(unsigned int protocol)
@@ -76907,10 +77478,10 @@ index c6fffd9..a7ffa0c 100644
  
        err = proto_register(pp->prot, 1);
 diff --git a/net/phonet/pep.c b/net/phonet/pep.c
  
        err = proto_register(pp->prot, 1);
 diff --git a/net/phonet/pep.c b/net/phonet/pep.c
-index f17fd84..edffce8 100644
+index 2ba6e9f..409573f 100644
 --- a/net/phonet/pep.c
 +++ b/net/phonet/pep.c
 --- a/net/phonet/pep.c
 +++ b/net/phonet/pep.c
-@@ -387,7 +387,7 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -388,7 +388,7 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb)
  
        case PNS_PEP_CTRL_REQ:
                if (skb_queue_len(&pn->ctrlreq_queue) >= PNPIPE_CTRLREQ_MAX) {
  
        case PNS_PEP_CTRL_REQ:
                if (skb_queue_len(&pn->ctrlreq_queue) >= PNPIPE_CTRLREQ_MAX) {
@@ -76919,7 +77490,7 @@ index f17fd84..edffce8 100644
                        break;
                }
                __skb_pull(skb, 4);
                        break;
                }
                __skb_pull(skb, 4);
-@@ -408,7 +408,7 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -409,7 +409,7 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb)
                }
  
                if (pn->rx_credits == 0) {
                }
  
                if (pn->rx_credits == 0) {
@@ -76928,7 +77499,7 @@ index f17fd84..edffce8 100644
                        err = -ENOBUFS;
                        break;
                }
                        err = -ENOBUFS;
                        break;
                }
-@@ -556,7 +556,7 @@ static int pipe_handler_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -557,7 +557,7 @@ static int pipe_handler_do_rcv(struct sock *sk, struct sk_buff *skb)
                }
  
                if (pn->rx_credits == 0) {
                }
  
                if (pn->rx_credits == 0) {
@@ -76938,10 +77509,10 @@ index f17fd84..edffce8 100644
                        break;
                }
 diff --git a/net/phonet/socket.c b/net/phonet/socket.c
                        break;
                }
 diff --git a/net/phonet/socket.c b/net/phonet/socket.c
-index ab07711..9d4ac5d 100644
+index 4c7eff3..59c727f 100644
 --- a/net/phonet/socket.c
 +++ b/net/phonet/socket.c
 --- a/net/phonet/socket.c
 +++ b/net/phonet/socket.c
-@@ -612,8 +612,13 @@ static int pn_sock_seq_show(struct seq_file *seq, void *v)
+@@ -613,8 +613,13 @@ static int pn_sock_seq_show(struct seq_file *seq, void *v)
                        pn->resource, sk->sk_state,
                        sk_wmem_alloc_get(sk), sk_rmem_alloc_get(sk),
                        sock_i_uid(sk), sock_i_ino(sk),
                        pn->resource, sk->sk_state,
                        sk_wmem_alloc_get(sk), sk_rmem_alloc_get(sk),
                        sock_i_uid(sk), sock_i_ino(sk),
@@ -76958,10 +77529,10 @@ index ab07711..9d4ac5d 100644
        seq_printf(seq, "%*s\n", 127 - len, "");
        return 0;
 diff --git a/net/rds/cong.c b/net/rds/cong.c
        seq_printf(seq, "%*s\n", 127 - len, "");
        return 0;
 diff --git a/net/rds/cong.c b/net/rds/cong.c
-index 6daaa49..fbf6af5 100644
+index e5b65ac..f3b6fb7 100644
 --- a/net/rds/cong.c
 +++ b/net/rds/cong.c
 --- a/net/rds/cong.c
 +++ b/net/rds/cong.c
-@@ -77,7 +77,7 @@
+@@ -78,7 +78,7 @@
   * finds that the saved generation number is smaller than the global generation
   * number, it wakes up the process.
   */
   * finds that the saved generation number is smaller than the global generation
   * number, it wakes up the process.
   */
@@ -76970,7 +77541,7 @@ index 6daaa49..fbf6af5 100644
  
  /*
   * Congestion monitoring
  
  /*
   * Congestion monitoring
-@@ -232,7 +232,7 @@ void rds_cong_map_updated(struct rds_cong_map *map, uint64_t portmask)
+@@ -233,7 +233,7 @@ void rds_cong_map_updated(struct rds_cong_map *map, uint64_t portmask)
        rdsdebug("waking map %p for %pI4\n",
          map, &map->m_addr);
        rds_stats_inc(s_cong_update_received);
        rdsdebug("waking map %p for %pI4\n",
          map, &map->m_addr);
        rds_stats_inc(s_cong_update_received);
@@ -76979,7 +77550,7 @@ index 6daaa49..fbf6af5 100644
        if (waitqueue_active(&map->m_waitq))
                wake_up(&map->m_waitq);
        if (waitqueue_active(&rds_poll_waitq))
        if (waitqueue_active(&map->m_waitq))
                wake_up(&map->m_waitq);
        if (waitqueue_active(&rds_poll_waitq))
-@@ -258,7 +258,7 @@ EXPORT_SYMBOL_GPL(rds_cong_map_updated);
+@@ -259,7 +259,7 @@ EXPORT_SYMBOL_GPL(rds_cong_map_updated);
  
  int rds_cong_updated_since(unsigned long *recent)
  {
  
  int rds_cong_updated_since(unsigned long *recent)
  {
@@ -77002,10 +77573,10 @@ index edfaaaf..8c89879 100644
        spinlock_t              i_ack_lock;     /* protect i_ack_next */
        u64                     i_ack_next;     /* next ACK to send */
 diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c
        spinlock_t              i_ack_lock;     /* protect i_ack_next */
        u64                     i_ack_next;     /* next ACK to send */
 diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c
-index cd67026..0b9a54a 100644
+index 51c8689..36c555f 100644
 --- a/net/rds/ib_cm.c
 +++ b/net/rds/ib_cm.c
 --- a/net/rds/ib_cm.c
 +++ b/net/rds/ib_cm.c
-@@ -720,7 +720,7 @@ void rds_ib_conn_shutdown(struct rds_connection *conn)
+@@ -718,7 +718,7 @@ void rds_ib_conn_shutdown(struct rds_connection *conn)
        /* Clear the ACK state */
        clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
  #ifdef KERNEL_HAS_ATOMIC64
        /* Clear the ACK state */
        clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
  #ifdef KERNEL_HAS_ATOMIC64
@@ -77062,19 +77633,6 @@ index 9556d28..f046d0e 100644
  #else
        ic->i_ack_next = 0;
  #endif
  #else
        ic->i_ack_next = 0;
  #endif
-diff --git a/net/rds/iw_rdma.c b/net/rds/iw_rdma.c
-index 4e1de17..d121708 100644
---- a/net/rds/iw_rdma.c
-+++ b/net/rds/iw_rdma.c
-@@ -184,6 +184,8 @@ int rds_iw_update_cm_id(struct rds_iw_device *rds_iwdev, struct rdma_cm_id *cm_i
-       struct rdma_cm_id *pcm_id;
-       int rc;
-+      pax_track_stack();
-+
-       src_addr = (struct sockaddr_in *)&cm_id->route.addr.src_addr;
-       dst_addr = (struct sockaddr_in *)&cm_id->route.addr.dst_addr;
 diff --git a/net/rds/iw_recv.c b/net/rds/iw_recv.c
 index 5e57347..3916042 100644
 --- a/net/rds/iw_recv.c
 diff --git a/net/rds/iw_recv.c b/net/rds/iw_recv.c
 index 5e57347..3916042 100644
 --- a/net/rds/iw_recv.c
@@ -77098,10 +77656,10 @@ index 5e57347..3916042 100644
  #endif
  
 diff --git a/net/rds/tcp.c b/net/rds/tcp.c
  #endif
  
 diff --git a/net/rds/tcp.c b/net/rds/tcp.c
-index 8e0a320..ee8e38f 100644
+index edac9ef..16bcb98 100644
 --- a/net/rds/tcp.c
 +++ b/net/rds/tcp.c
 --- a/net/rds/tcp.c
 +++ b/net/rds/tcp.c
-@@ -58,7 +58,7 @@ void rds_tcp_nonagle(struct socket *sock)
+@@ -59,7 +59,7 @@ void rds_tcp_nonagle(struct socket *sock)
        int val = 1;
  
        set_fs(KERNEL_DS);
        int val = 1;
  
        set_fs(KERNEL_DS);
@@ -77137,7 +77695,7 @@ index 74c064c..fdec26f 100644
  /* count of skbs currently in use */
  atomic_t rxrpc_n_skbs;
 diff --git a/net/rxrpc/ar-ack.c b/net/rxrpc/ar-ack.c
  /* count of skbs currently in use */
  atomic_t rxrpc_n_skbs;
 diff --git a/net/rxrpc/ar-ack.c b/net/rxrpc/ar-ack.c
-index f99cfce..3682692 100644
+index f99cfce..cc529dd 100644
 --- a/net/rxrpc/ar-ack.c
 +++ b/net/rxrpc/ar-ack.c
 @@ -175,7 +175,7 @@ static void rxrpc_resend(struct rxrpc_call *call)
 --- a/net/rxrpc/ar-ack.c
 +++ b/net/rxrpc/ar-ack.c
 @@ -175,7 +175,7 @@ static void rxrpc_resend(struct rxrpc_call *call)
@@ -77176,16 +77734,7 @@ index f99cfce..3682692 100644
  
                _proto("Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
                       latest,
  
                _proto("Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
                       latest,
-@@ -842,6 +842,8 @@ void rxrpc_process_call(struct work_struct *work)
-       u32 abort_code = RX_PROTOCOL_ERROR;
-       u8 *acks = NULL;
-+      pax_track_stack();
-+
-       //printk("\n--------------------\n");
-       _enter("{%d,%s,%lx} [%lu]",
-              call->debug_id, rxrpc_call_states[call->state], call->events,
-@@ -1161,7 +1163,7 @@ void rxrpc_process_call(struct work_struct *work)
+@@ -1161,7 +1161,7 @@ void rxrpc_process_call(struct work_struct *work)
        goto maybe_reschedule;
  
  send_ACK_with_skew:
        goto maybe_reschedule;
  
  send_ACK_with_skew:
@@ -77194,7 +77743,7 @@ index f99cfce..3682692 100644
                            ntohl(ack.serial));
  send_ACK:
        mtu = call->conn->trans->peer->if_mtu;
                            ntohl(ack.serial));
  send_ACK:
        mtu = call->conn->trans->peer->if_mtu;
-@@ -1173,7 +1175,7 @@ send_ACK:
+@@ -1173,7 +1173,7 @@ send_ACK:
        ackinfo.rxMTU   = htonl(5692);
        ackinfo.jumbo_max = htonl(4);
  
        ackinfo.rxMTU   = htonl(5692);
        ackinfo.jumbo_max = htonl(4);
  
@@ -77203,7 +77752,7 @@ index f99cfce..3682692 100644
        _proto("Tx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
               ntohl(hdr.serial),
               ntohs(ack.maxSkew),
        _proto("Tx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
               ntohl(hdr.serial),
               ntohs(ack.maxSkew),
-@@ -1191,7 +1193,7 @@ send_ACK:
+@@ -1191,7 +1191,7 @@ send_ACK:
  send_message:
        _debug("send message");
  
  send_message:
        _debug("send message");
  
@@ -77314,10 +77863,10 @@ index 87f7135..74d3703 100644
        }
  
 diff --git a/net/rxrpc/ar-output.c b/net/rxrpc/ar-output.c
        }
  
 diff --git a/net/rxrpc/ar-output.c b/net/rxrpc/ar-output.c
-index 5f22e26..e5bd20f 100644
+index 338d793..47391d0 100644
 --- a/net/rxrpc/ar-output.c
 +++ b/net/rxrpc/ar-output.c
 --- a/net/rxrpc/ar-output.c
 +++ b/net/rxrpc/ar-output.c
-@@ -681,9 +681,9 @@ static int rxrpc_send_data(struct kiocb *iocb,
+@@ -682,9 +682,9 @@ static int rxrpc_send_data(struct kiocb *iocb,
                        sp->hdr.cid = call->cid;
                        sp->hdr.callNumber = call->call_id;
                        sp->hdr.seq =
                        sp->hdr.cid = call->cid;
                        sp->hdr.callNumber = call->call_id;
                        sp->hdr.seq =
@@ -77371,28 +77920,10 @@ index 92df566..87ec1bf 100644
                if (peer->srx.transport.family == AF_INET) {
                        switch (peer->srx.transport_type) {
 diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c
                if (peer->srx.transport.family == AF_INET) {
                        switch (peer->srx.transport_type) {
 diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c
-index 7635107..5000b71 100644
+index 7635107..4670276 100644
 --- a/net/rxrpc/rxkad.c
 +++ b/net/rxrpc/rxkad.c
 --- a/net/rxrpc/rxkad.c
 +++ b/net/rxrpc/rxkad.c
-@@ -211,6 +211,8 @@ static int rxkad_secure_packet_encrypt(const struct rxrpc_call *call,
-       u16 check;
-       int nsg;
-+      pax_track_stack();
-+
-       sp = rxrpc_skb(skb);
-       _enter("");
-@@ -338,6 +340,8 @@ static int rxkad_verify_packet_auth(const struct rxrpc_call *call,
-       u16 check;
-       int nsg;
-+      pax_track_stack();
-+
-       _enter("");
-       sp = rxrpc_skb(skb);
-@@ -610,7 +614,7 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn)
+@@ -610,7 +610,7 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn)
  
        len = iov[0].iov_len + iov[1].iov_len;
  
  
        len = iov[0].iov_len + iov[1].iov_len;
  
@@ -77401,7 +77932,7 @@ index 7635107..5000b71 100644
        _proto("Tx CHALLENGE %%%u", ntohl(hdr.serial));
  
        ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
        _proto("Tx CHALLENGE %%%u", ntohl(hdr.serial));
  
        ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
-@@ -660,7 +664,7 @@ static int rxkad_send_response(struct rxrpc_connection *conn,
+@@ -660,7 +660,7 @@ static int rxkad_send_response(struct rxrpc_connection *conn,
  
        len = iov[0].iov_len + iov[1].iov_len + iov[2].iov_len;
  
  
        len = iov[0].iov_len + iov[1].iov_len + iov[2].iov_len;
  
@@ -77410,24 +77941,11 @@ index 7635107..5000b71 100644
        _proto("Tx RESPONSE %%%u", ntohl(hdr->serial));
  
        ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
        _proto("Tx RESPONSE %%%u", ntohl(hdr->serial));
  
        ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
-diff --git a/net/sctp/auth.c b/net/sctp/auth.c
-index 865e68f..bf81204 100644
---- a/net/sctp/auth.c
-+++ b/net/sctp/auth.c
-@@ -82,7 +82,7 @@ static struct sctp_auth_bytes *sctp_auth_create_key(__u32 key_len, gfp_t gfp)
-       struct sctp_auth_bytes *key;
-       /* Verify that we are not going to overflow INT_MAX */
--      if ((INT_MAX - key_len) < sizeof(struct sctp_auth_bytes))
-+      if (key_len > (INT_MAX - sizeof(struct sctp_auth_bytes)))
-               return NULL;
-       /* Allocate the shared key */
 diff --git a/net/sctp/proc.c b/net/sctp/proc.c
 diff --git a/net/sctp/proc.c b/net/sctp/proc.c
-index 05a6ce2..c8bf836 100644
+index 1e2eee8..ce3967e 100644
 --- a/net/sctp/proc.c
 +++ b/net/sctp/proc.c
 --- a/net/sctp/proc.c
 +++ b/net/sctp/proc.c
-@@ -318,7 +318,8 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v)
+@@ -319,7 +319,8 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v)
                seq_printf(seq,
                           "%8pK %8pK %-3d %-3d %-2d %-4d "
                           "%4d %8d %8d %7d %5lu %-5d %5d ",
                seq_printf(seq,
                           "%8pK %8pK %-3d %-3d %-2d %-4d "
                           "%4d %8d %8d %7d %5lu %-5d %5d ",
@@ -77438,10 +77956,10 @@ index 05a6ce2..c8bf836 100644
                           assoc->assoc_id,
                           assoc->sndbuf_used,
 diff --git a/net/sctp/socket.c b/net/sctp/socket.c
                           assoc->assoc_id,
                           assoc->sndbuf_used,
 diff --git a/net/sctp/socket.c b/net/sctp/socket.c
-index 836aa63..d779d7b 100644
+index 54a7cd2..944edae 100644
 --- a/net/sctp/socket.c
 +++ b/net/sctp/socket.c
 --- a/net/sctp/socket.c
 +++ b/net/sctp/socket.c
-@@ -4575,7 +4575,7 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
+@@ -4574,7 +4574,7 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
                addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
                if (space_left < addrlen)
                        return -ENOMEM;
                addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
                if (space_left < addrlen)
                        return -ENOMEM;
@@ -77451,7 +77969,7 @@ index 836aa63..d779d7b 100644
                to += addrlen;
                cnt++;
 diff --git a/net/socket.c b/net/socket.c
                to += addrlen;
                cnt++;
 diff --git a/net/socket.c b/net/socket.c
-index ffe92ca..8057b85 100644
+index 2dce67a..1e91168 100644
 --- a/net/socket.c
 +++ b/net/socket.c
 @@ -88,6 +88,7 @@
 --- a/net/socket.c
 +++ b/net/socket.c
 @@ -88,6 +88,7 @@
@@ -77604,16 +78122,7 @@ index ffe92ca..8057b85 100644
        err =
            security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
        if (err)
        err =
            security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
        if (err)
-@@ -1890,6 +1950,8 @@ static int __sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
-       unsigned char *ctl_buf = ctl;
-       int err, ctl_len, iov_size, total_len;
-+      pax_track_stack();
-+
-       err = -EFAULT;
-       if (MSG_CMSG_COMPAT & flags) {
-               if (get_compat_msghdr(msg_sys, msg_compat))
-@@ -1950,7 +2012,7 @@ static int __sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
+@@ -1950,7 +2010,7 @@ static int __sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
                 * checking falls down on this.
                 */
                if (copy_from_user(ctl_buf,
                 * checking falls down on this.
                 */
                if (copy_from_user(ctl_buf,
@@ -77622,7 +78131,7 @@ index ffe92ca..8057b85 100644
                                   ctl_len))
                        goto out_freectl;
                msg_sys->msg_control = ctl_buf;
                                   ctl_len))
                        goto out_freectl;
                msg_sys->msg_control = ctl_buf;
-@@ -2120,7 +2182,7 @@ static int __sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
+@@ -2120,7 +2180,7 @@ static int __sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
         *      kernel msghdr to use the kernel address space)
         */
  
         *      kernel msghdr to use the kernel address space)
         */
  
@@ -77631,7 +78140,7 @@ index ffe92ca..8057b85 100644
        uaddr_len = COMPAT_NAMELEN(msg);
        if (MSG_CMSG_COMPAT & flags) {
                err = verify_compat_iovec(msg_sys, iov,
        uaddr_len = COMPAT_NAMELEN(msg);
        if (MSG_CMSG_COMPAT & flags) {
                err = verify_compat_iovec(msg_sys, iov,
-@@ -2748,7 +2810,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
+@@ -2748,7 +2808,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
        }
  
        ifr = compat_alloc_user_space(buf_size);
        }
  
        ifr = compat_alloc_user_space(buf_size);
@@ -77640,7 +78149,7 @@ index ffe92ca..8057b85 100644
  
        if (copy_in_user(&ifr->ifr_name, &ifr32->ifr_name, IFNAMSIZ))
                return -EFAULT;
  
        if (copy_in_user(&ifr->ifr_name, &ifr32->ifr_name, IFNAMSIZ))
                return -EFAULT;
-@@ -2772,12 +2834,12 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
+@@ -2772,12 +2832,12 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
                        offsetof(struct ethtool_rxnfc, fs.ring_cookie));
  
                if (copy_in_user(rxnfc, compat_rxnfc,
                        offsetof(struct ethtool_rxnfc, fs.ring_cookie));
  
                if (copy_in_user(rxnfc, compat_rxnfc,
@@ -77657,7 +78166,7 @@ index ffe92ca..8057b85 100644
                    copy_in_user(&rxnfc->rule_cnt, &compat_rxnfc->rule_cnt,
                                 sizeof(rxnfc->rule_cnt)))
                        return -EFAULT;
                    copy_in_user(&rxnfc->rule_cnt, &compat_rxnfc->rule_cnt,
                                 sizeof(rxnfc->rule_cnt)))
                        return -EFAULT;
-@@ -2789,12 +2851,12 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
+@@ -2789,12 +2849,12 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
  
        if (convert_out) {
                if (copy_in_user(compat_rxnfc, rxnfc,
  
        if (convert_out) {
                if (copy_in_user(compat_rxnfc, rxnfc,
@@ -77674,7 +78183,7 @@ index ffe92ca..8057b85 100644
                    copy_in_user(&compat_rxnfc->rule_cnt, &rxnfc->rule_cnt,
                                 sizeof(rxnfc->rule_cnt)))
                        return -EFAULT;
                    copy_in_user(&compat_rxnfc->rule_cnt, &rxnfc->rule_cnt,
                                 sizeof(rxnfc->rule_cnt)))
                        return -EFAULT;
-@@ -2864,7 +2926,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd,
+@@ -2864,7 +2924,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd,
                old_fs = get_fs();
                set_fs(KERNEL_DS);
                err = dev_ioctl(net, cmd,
                old_fs = get_fs();
                set_fs(KERNEL_DS);
                err = dev_ioctl(net, cmd,
@@ -77683,7 +78192,7 @@ index ffe92ca..8057b85 100644
                set_fs(old_fs);
  
                return err;
                set_fs(old_fs);
  
                return err;
-@@ -2973,7 +3035,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
+@@ -2973,7 +3033,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
  
        old_fs = get_fs();
        set_fs(KERNEL_DS);
  
        old_fs = get_fs();
        set_fs(KERNEL_DS);
@@ -77692,7 +78201,7 @@ index ffe92ca..8057b85 100644
        set_fs(old_fs);
  
        if (cmd == SIOCGIFMAP && !err) {
        set_fs(old_fs);
  
        if (cmd == SIOCGIFMAP && !err) {
-@@ -3078,7 +3140,7 @@ static int routing_ioctl(struct net *net, struct socket *sock,
+@@ -3078,7 +3138,7 @@ static int routing_ioctl(struct net *net, struct socket *sock,
                ret |= __get_user(rtdev, &(ur4->rt_dev));
                if (rtdev) {
                        ret |= copy_from_user(devname, compat_ptr(rtdev), 15);
                ret |= __get_user(rtdev, &(ur4->rt_dev));
                if (rtdev) {
                        ret |= copy_from_user(devname, compat_ptr(rtdev), 15);
@@ -77701,7 +78210,7 @@ index ffe92ca..8057b85 100644
                        devname[15] = 0;
                } else
                        r4.rt_dev = NULL;
                        devname[15] = 0;
                } else
                        r4.rt_dev = NULL;
-@@ -3318,8 +3380,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
+@@ -3318,8 +3378,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
        int __user *uoptlen;
        int err;
  
        int __user *uoptlen;
        int err;
  
@@ -77712,7 +78221,7 @@ index ffe92ca..8057b85 100644
  
        set_fs(KERNEL_DS);
        if (level == SOL_SOCKET)
  
        set_fs(KERNEL_DS);
        if (level == SOL_SOCKET)
-@@ -3339,7 +3401,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,
+@@ -3339,7 +3399,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,
        char __user *uoptval;
        int err;
  
        char __user *uoptval;
        int err;
  
@@ -77722,7 +78231,7 @@ index ffe92ca..8057b85 100644
        set_fs(KERNEL_DS);
        if (level == SOL_SOCKET)
 diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
        set_fs(KERNEL_DS);
        if (level == SOL_SOCKET)
 diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
-index d12ffa5..0b5a6e2 100644
+index 00a1a2a..6a0138a 100644
 --- a/net/sunrpc/sched.c
 +++ b/net/sunrpc/sched.c
 @@ -238,9 +238,9 @@ static int rpc_wait_bit_killable(void *word)
 --- a/net/sunrpc/sched.c
 +++ b/net/sunrpc/sched.c
 @@ -238,9 +238,9 @@ static int rpc_wait_bit_killable(void *word)
@@ -77738,10 +78247,10 @@ index d12ffa5..0b5a6e2 100644
  #else
  static inline void rpc_task_set_debuginfo(struct rpc_task *task)
 diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
  #else
  static inline void rpc_task_set_debuginfo(struct rpc_task *task)
 diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
-index 767d494..fe17e9d 100644
+index 71bed1c..5dff36d 100644
 --- a/net/sunrpc/svcsock.c
 +++ b/net/sunrpc/svcsock.c
 --- a/net/sunrpc/svcsock.c
 +++ b/net/sunrpc/svcsock.c
-@@ -394,7 +394,7 @@ static int svc_partial_recvfrom(struct svc_rqst *rqstp,
+@@ -396,7 +396,7 @@ static int svc_partial_recvfrom(struct svc_rqst *rqstp,
                                int buflen, unsigned int base)
  {
        size_t save_iovlen;
                                int buflen, unsigned int base)
  {
        size_t save_iovlen;
@@ -77906,10 +78415,10 @@ index 249a835..fb2794b 100644
                goto err;
        return 0;
 diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
                goto err;
        return 0;
 diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
-index a385430..32254ea 100644
+index ba1296d..0fec1a5 100644
 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
 +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
 +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
-@@ -299,7 +299,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
+@@ -300,7 +300,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
                return;
  
        ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP);
                return;
  
        ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP);
@@ -77918,7 +78427,7 @@ index a385430..32254ea 100644
  
        while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) {
                ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
  
        while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) {
                ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
-@@ -321,7 +321,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
+@@ -322,7 +322,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
        }
  
        if (ctxt)
        }
  
        if (ctxt)
@@ -77927,7 +78436,7 @@ index a385430..32254ea 100644
  
        set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
        /*
  
        set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
        /*
-@@ -393,7 +393,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
+@@ -394,7 +394,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
                return;
  
        ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
                return;
  
        ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
@@ -77936,7 +78445,7 @@ index a385430..32254ea 100644
        while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) {
                if (wc.status != IB_WC_SUCCESS)
                        /* Close the transport */
        while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) {
                if (wc.status != IB_WC_SUCCESS)
                        /* Close the transport */
-@@ -411,7 +411,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
+@@ -412,7 +412,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
        }
  
        if (ctxt)
        }
  
        if (ctxt)
@@ -77945,7 +78454,7 @@ index a385430..32254ea 100644
  }
  
  static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
  }
  
  static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
-@@ -1273,7 +1273,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
+@@ -1274,7 +1274,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
                spin_lock_bh(&xprt->sc_lock);
                if (xprt->sc_sq_depth < atomic_read(&xprt->sc_sq_count) + wr_count) {
                        spin_unlock_bh(&xprt->sc_lock);
                spin_lock_bh(&xprt->sc_lock);
                if (xprt->sc_sq_depth < atomic_read(&xprt->sc_sq_count) + wr_count) {
                        spin_unlock_bh(&xprt->sc_lock);
@@ -77955,10 +78464,10 @@ index a385430..32254ea 100644
                        /* See if we can opportunistically reap SQ WR to make room */
                        sq_cq_reap(xprt);
 diff --git a/net/sysctl_net.c b/net/sysctl_net.c
                        /* See if we can opportunistically reap SQ WR to make room */
                        sq_cq_reap(xprt);
 diff --git a/net/sysctl_net.c b/net/sysctl_net.c
-index ca84212..3aa338f 100644
+index e758139..d29ea47 100644
 --- a/net/sysctl_net.c
 +++ b/net/sysctl_net.c
 --- a/net/sysctl_net.c
 +++ b/net/sysctl_net.c
-@@ -46,7 +46,7 @@ static int net_ctl_permissions(struct ctl_table_root *root,
+@@ -47,7 +47,7 @@ static int net_ctl_permissions(struct ctl_table_root *root,
                               struct ctl_table *table)
  {
        /* Allow network administrator to have same access as root. */
                               struct ctl_table *table)
  {
        /* Allow network administrator to have same access as root. */
@@ -77968,10 +78477,10 @@ index ca84212..3aa338f 100644
                return (mode << 6) | (mode << 3) | mode;
        }
 diff --git a/net/tipc/link.c b/net/tipc/link.c
                return (mode << 6) | (mode << 3) | mode;
        }
 diff --git a/net/tipc/link.c b/net/tipc/link.c
-index f89570c..016cf63 100644
+index ae98a72..7bb6056 100644
 --- a/net/tipc/link.c
 +++ b/net/tipc/link.c
 --- a/net/tipc/link.c
 +++ b/net/tipc/link.c
-@@ -1170,7 +1170,7 @@ static int link_send_sections_long(struct tipc_port *sender,
+@@ -1203,7 +1203,7 @@ static int link_send_sections_long(struct tipc_port *sender,
        struct tipc_msg fragm_hdr;
        struct sk_buff *buf, *buf_chain, *prev;
        u32 fragm_crs, fragm_rest, hsz, sect_rest;
        struct tipc_msg fragm_hdr;
        struct sk_buff *buf, *buf_chain, *prev;
        u32 fragm_crs, fragm_rest, hsz, sect_rest;
@@ -77980,7 +78489,7 @@ index f89570c..016cf63 100644
        int curr_sect;
        u32 fragm_no;
  
        int curr_sect;
        u32 fragm_no;
  
-@@ -1214,7 +1214,7 @@ again:
+@@ -1247,7 +1247,7 @@ again:
  
                if (!sect_rest) {
                        sect_rest = msg_sect[++curr_sect].iov_len;
  
                if (!sect_rest) {
                        sect_rest = msg_sect[++curr_sect].iov_len;
@@ -77989,7 +78498,7 @@ index f89570c..016cf63 100644
                }
  
                if (sect_rest < fragm_rest)
                }
  
                if (sect_rest < fragm_rest)
-@@ -1233,7 +1233,7 @@ error:
+@@ -1266,7 +1266,7 @@ error:
                        }
                } else
                        skb_copy_to_linear_data_offset(buf, fragm_crs,
                        }
                } else
                        skb_copy_to_linear_data_offset(buf, fragm_crs,
@@ -78012,7 +78521,7 @@ index 83d5096..dcba497 100644
                pos += msg_sect[cnt].iov_len;
        }
 diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c
                pos += msg_sect[cnt].iov_len;
        }
 diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c
-index 6cf7268..7a488ce 100644
+index 1983717..4d6102c 100644
 --- a/net/tipc/subscr.c
 +++ b/net/tipc/subscr.c
 @@ -101,7 +101,7 @@ static void subscr_send_event(struct subscription *sub,
 --- a/net/tipc/subscr.c
 +++ b/net/tipc/subscr.c
 @@ -101,7 +101,7 @@ static void subscr_send_event(struct subscription *sub,
@@ -78025,7 +78534,7 @@ index 6cf7268..7a488ce 100644
  
        sub->evt.event = htohl(event, sub->swap);
 diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
  
        sub->evt.event = htohl(event, sub->swap);
 diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
-index ec68e1c..fdd792f 100644
+index d99678a..3514a21 100644
 --- a/net/unix/af_unix.c
 +++ b/net/unix/af_unix.c
 @@ -767,6 +767,12 @@ static struct sock *unix_find_other(struct net *net,
 --- a/net/unix/af_unix.c
 +++ b/net/unix/af_unix.c
 @@ -767,6 +767,12 @@ static struct sock *unix_find_other(struct net *net,
@@ -78075,7 +78584,7 @@ index ec68e1c..fdd792f 100644
                dput(path.dentry);
                path.dentry = dentry;
 diff --git a/net/wireless/core.h b/net/wireless/core.h
                dput(path.dentry);
                path.dentry = dentry;
 diff --git a/net/wireless/core.h b/net/wireless/core.h
-index 8672e02..48782dd 100644
+index b9ec306..b4a563e 100644
 --- a/net/wireless/core.h
 +++ b/net/wireless/core.h
 @@ -27,7 +27,7 @@ struct cfg80211_registered_device {
 --- a/net/wireless/core.h
 +++ b/net/wireless/core.h
 @@ -27,7 +27,7 @@ struct cfg80211_registered_device {
@@ -78088,10 +78597,10 @@ index 8672e02..48782dd 100644
        struct work_struct rfkill_sync;
  
 diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
        struct work_struct rfkill_sync;
  
 diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
-index fdbc23c..212d53e 100644
+index 0af7f54..c916d2f 100644
 --- a/net/wireless/wext-core.c
 +++ b/net/wireless/wext-core.c
 --- a/net/wireless/wext-core.c
 +++ b/net/wireless/wext-core.c
-@@ -746,8 +746,7 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
+@@ -747,8 +747,7 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
                 */
  
                /* Support for very large requests */
                 */
  
                /* Support for very large requests */
@@ -78101,7 +78610,7 @@ index fdbc23c..212d53e 100644
                        /* Allow userspace to GET more than max so
                         * we can support any size GET requests.
                         * There is still a limit : -ENOMEM.
                        /* Allow userspace to GET more than max so
                         * we can support any size GET requests.
                         * There is still a limit : -ENOMEM.
-@@ -784,22 +783,6 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
+@@ -785,22 +784,6 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
                }
        }
  
                }
        }
  
@@ -78125,7 +78634,7 @@ index fdbc23c..212d53e 100644
  
        iwp->length += essid_compat;
 diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
  
        iwp->length += essid_compat;
 diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
-index 552df27..8e7f238 100644
+index 9049a5c..cfa6f5c 100644
 --- a/net/xfrm/xfrm_policy.c
 +++ b/net/xfrm/xfrm_policy.c
 @@ -299,7 +299,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy)
 --- a/net/xfrm/xfrm_policy.c
 +++ b/net/xfrm/xfrm_policy.c
 @@ -299,7 +299,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy)
@@ -78182,7 +78691,7 @@ index 552df27..8e7f238 100644
  
        return xdst;
  }
  
        return xdst;
  }
-@@ -2335,7 +2335,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first)
+@@ -2345,7 +2345,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first)
                if (xdst->xfrm_genid != dst->xfrm->genid)
                        return 0;
                if (xdst->num_pols > 0 &&
                if (xdst->xfrm_genid != dst->xfrm->genid)
                        return 0;
                if (xdst->num_pols > 0 &&
@@ -78191,7 +78700,7 @@ index 552df27..8e7f238 100644
                        return 0;
  
                mtu = dst_mtu(dst->child);
                        return 0;
  
                mtu = dst_mtu(dst->child);
-@@ -2870,7 +2870,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol,
+@@ -2882,7 +2882,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol,
                               sizeof(pol->xfrm_vec[i].saddr));
                        pol->xfrm_vec[i].encap_family = mp->new_family;
                        /* flush bundles */
                               sizeof(pol->xfrm_vec[i].saddr));
                        pol->xfrm_vec[i].encap_family = mp->new_family;
                        /* flush bundles */
@@ -78200,30 +78709,8 @@ index 552df27..8e7f238 100644
                }
        }
  
                }
        }
  
-diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
-index 0256b8a..9341ef6 100644
---- a/net/xfrm/xfrm_user.c
-+++ b/net/xfrm/xfrm_user.c
-@@ -1394,6 +1394,8 @@ static int copy_to_user_tmpl(struct xfrm_policy *xp, struct sk_buff *skb)
-       struct xfrm_user_tmpl vec[XFRM_MAX_DEPTH];
-       int i;
-+      pax_track_stack();
-+
-       if (xp->xfrm_nr == 0)
-               return 0;
-@@ -2062,6 +2064,8 @@ static int xfrm_do_migrate(struct sk_buff *skb, struct nlmsghdr *nlh,
-       int err;
-       int n = 0;
-+      pax_track_stack();
-+
-       if (attrs[XFRMA_MIGRATE] == NULL)
-               return -EINVAL;
 diff --git a/scripts/Makefile.build b/scripts/Makefile.build
 diff --git a/scripts/Makefile.build b/scripts/Makefile.build
-index a0fd502..a8e6e83 100644
+index d2b366c..51ff91ebc 100644
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
 @@ -109,7 +109,7 @@ endif
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
 @@ -109,7 +109,7 @@ endif
@@ -78270,7 +78757,7 @@ index 1ac414f..a1c1451 100644
  host-cobjs    := $(filter-out %.so,$(host-cobjs))
  
 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
  host-cobjs    := $(filter-out %.so,$(host-cobjs))
  
 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
-index 291228e..6c55203 100644
+index cb1f50c..cef2a7c 100644
 --- a/scripts/basic/fixdep.c
 +++ b/scripts/basic/fixdep.c
 @@ -161,7 +161,7 @@ static unsigned int strhash(const char *str, unsigned int sz)
 --- a/scripts/basic/fixdep.c
 +++ b/scripts/basic/fixdep.c
 @@ -161,7 +161,7 @@ static unsigned int strhash(const char *str, unsigned int sz)
@@ -78307,7 +78794,7 @@ index 291228e..6c55203 100644
        const char *p, *q;
  
        for (; m < end; m++) {
        const char *p, *q;
  
        for (; m < end; m++) {
-@@ -405,7 +405,7 @@ static void print_deps(void)
+@@ -406,7 +406,7 @@ static void print_deps(void)
  static void traps(void)
  {
        static char test[] __attribute__((aligned(sizeof(int)))) = "CONF";
  static void traps(void)
  {
        static char test[] __attribute__((aligned(sizeof(int)))) = "CONF";
@@ -78325,7 +78812,7 @@ index 0000000..8729101
 +#!/bin/sh
 +echo -e "#include \"gcc-plugin.h\"\n#include \"tree.h\"\n#include \"tm.h\"\n#include \"rtl.h\"" | $1 -x c -shared - -o /dev/null -I`$2 -print-file-name=plugin`/include >/dev/null 2>&1 && echo "y"
 diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
 +#!/bin/sh
 +echo -e "#include \"gcc-plugin.h\"\n#include \"tree.h\"\n#include \"tm.h\"\n#include \"rtl.h\"" | $1 -x c -shared - -o /dev/null -I`$2 -print-file-name=plugin`/include >/dev/null 2>&1 && echo "y"
 diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
-index e26e2fb..f84937b 100644
+index f936d1f..a66d95f 100644
 --- a/scripts/mod/file2alias.c
 +++ b/scripts/mod/file2alias.c
 @@ -72,7 +72,7 @@ static void device_id_check(const char *modname, const char *device_id,
 --- a/scripts/mod/file2alias.c
 +++ b/scripts/mod/file2alias.c
 @@ -72,7 +72,7 @@ static void device_id_check(const char *modname, const char *device_id,
@@ -78382,7 +78869,7 @@ index e26e2fb..f84937b 100644
  
                                buf_printf(&mod->dev_table_buf,
                                           "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
  
                                buf_printf(&mod->dev_table_buf,
                                           "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
-@@ -786,7 +786,7 @@ static void dmi_ascii_filter(char *d, const char *s)
+@@ -807,7 +807,7 @@ static void dmi_ascii_filter(char *d, const char *s)
  static int do_dmi_entry(const char *filename, struct dmi_system_id *id,
                        char *alias)
  {
  static int do_dmi_entry(const char *filename, struct dmi_system_id *id,
                        char *alias)
  {
@@ -78392,7 +78879,7 @@ index e26e2fb..f84937b 100644
        sprintf(alias, "dmi*");
  
 diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
        sprintf(alias, "dmi*");
  
 diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
-index a509ff8..5822633 100644
+index 2bd594e..d43245e 100644
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
 @@ -919,6 +919,7 @@ enum mismatch {
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
 @@ -919,6 +919,7 @@ enum mismatch {
@@ -78462,7 +78949,7 @@ index a509ff8..5822633 100644
  {
        if (buf->size - buf->pos < len) {
                buf->size += len + SZ;
  {
        if (buf->size - buf->pos < len) {
                buf->size += len + SZ;
-@@ -1966,7 +1981,7 @@ static void write_if_changed(struct buffer *b, const char *fname)
+@@ -1972,7 +1987,7 @@ static void write_if_changed(struct buffer *b, const char *fname)
        if (fstat(fileno(file), &st) < 0)
                goto close_write;
  
        if (fstat(fileno(file), &st) < 0)
                goto close_write;
  
@@ -78538,10 +79025,10 @@ index 5c11312..72742b5 100644
      write_hex_cnt = 0;
      for (i = 0; i < logo_clutsize; i++) {
 diff --git a/security/Kconfig b/security/Kconfig
      write_hex_cnt = 0;
      for (i = 0; i < logo_clutsize; i++) {
 diff --git a/security/Kconfig b/security/Kconfig
-index e0f08b5..7388edd 100644
+index 51bd5a0..58c5b70 100644
 --- a/security/Kconfig
 +++ b/security/Kconfig
 --- a/security/Kconfig
 +++ b/security/Kconfig
-@@ -4,6 +4,586 @@
+@@ -4,6 +4,639 @@
  
  menu "Security options"
  
  
  menu "Security options"
  
@@ -78581,12 +79068,11 @@ index e0f08b5..7388edd 100644
 +
 +config PAX_SOFTMODE
 +      bool 'Support soft mode'
 +
 +config PAX_SOFTMODE
 +      bool 'Support soft mode'
-+      select PAX_PT_PAX_FLAGS
 +      help
 +        Enabling this option will allow you to run PaX in soft mode, that
 +        is, PaX features will not be enforced by default, only on executables
 +      help
 +        Enabling this option will allow you to run PaX in soft mode, that
 +        is, PaX features will not be enforced by default, only on executables
-+        marked explicitly.  You must also enable PT_PAX_FLAGS support as it
-+        is the only way to mark executables for soft mode use.
++        marked explicitly.  You must also enable PT_PAX_FLAGS or XATTR_PAX_FLAGS
++        support as they are the only way to mark executables for soft mode use.
 +
 +        Soft mode can be activated by using the "pax_softmode=1" kernel command
 +        line option on boot.  Furthermore you can control various PaX features
 +
 +        Soft mode can be activated by using the "pax_softmode=1" kernel command
 +        line option on boot.  Furthermore you can control various PaX features
@@ -78601,10 +79087,15 @@ index e0f08b5..7388edd 100644
 +        an otherwise reserved part of the ELF header.  This marking has
 +        numerous drawbacks (no support for soft-mode, toolchain does not
 +        know about the non-standard use of the ELF header) therefore it
 +        an otherwise reserved part of the ELF header.  This marking has
 +        numerous drawbacks (no support for soft-mode, toolchain does not
 +        know about the non-standard use of the ELF header) therefore it
-+        has been deprecated in favour of PT_PAX_FLAGS support.
++        has been deprecated in favour of PT_PAX_FLAGS and XATTR_PAX_FLAGS
++        support.
 +
 +
-+        Note that if you enable PT_PAX_FLAGS marking support as well,
-+        the PT_PAX_FLAG marks will override the legacy EI_PAX marks.
++        If you have applications not marked by the PT_PAX_FLAGS ELF program
++        header and you cannot use XATTR_PAX_FLAGS then you MUST enable this
++        option otherwise they will not get any protection.
++
++        Note that if you enable PT_PAX_FLAGS or XATTR_PAX_FLAGS marking
++        support as well, they will override the legacy EI_PAX marks.
 +
 +config PAX_PT_PAX_FLAGS
 +      bool 'Use ELF program header marking'
 +
 +config PAX_PT_PAX_FLAGS
 +      bool 'Use ELF program header marking'
@@ -78617,12 +79108,48 @@ index e0f08b5..7388edd 100644
 +        integrated into the toolchain (the binutils patch is available
 +        from http://pax.grsecurity.net).
 +
 +        integrated into the toolchain (the binutils patch is available
 +        from http://pax.grsecurity.net).
 +
-+        If your toolchain does not support PT_PAX_FLAGS markings,
-+        you can create one in most cases with 'paxctl -C'.
++        If you have applications not marked by the PT_PAX_FLAGS ELF program
++        header then you MUST enable either XATTR_PAX_FLAGS or EI_PAX marking
++        support otherwise they will not get any protection.
++
++        If you enable both PT_PAX_FLAGS and XATTR_PAX_FLAGS support then you
++        must make sure that the marks are the same if a binary has both marks.
 +
 +        Note that if you enable the legacy EI_PAX marking support as well,
 +        the EI_PAX marks will be overridden by the PT_PAX_FLAGS marks.
 +
 +
 +        Note that if you enable the legacy EI_PAX marking support as well,
 +        the EI_PAX marks will be overridden by the PT_PAX_FLAGS marks.
 +
++config PAX_XATTR_PAX_FLAGS
++      bool 'Use filesystem extended attributes marking'
++      select CIFS_XATTR if CIFS
++      select EXT2_FS_XATTR if EXT2_FS
++      select EXT3_FS_XATTR if EXT3_FS
++      select EXT4_FS_XATTR if EXT4_FS
++      select JFFS2_FS_XATTR if JFFS2_FS
++      select REISERFS_FS_XATTR if REISERFS_FS
++      select SQUASHFS_XATTR if SQUASHFS
++      select TMPFS_XATTR if TMPFS
++      select UBIFS_FS_XATTR if UBIFS_FS
++      help
++        Enabling this option will allow you to control PaX features on
++        a per executable basis via the 'setfattr' utility.  The control
++        flags will be read from the user.pax.flags extended attribute of
++        the file.  This marking has the benefit of supporting binary-only
++        applications that self-check themselves (e.g., skype) and would
++        not tolerate chpax/paxctl changes.  The main drawback is that
++        extended attributes are not supported by some filesystems (e.g.,
++        isofs, udf, vfat) so copying files through such filesystems will
++        lose the extended attributes and these PaX markings.
++
++        If you have applications not marked by the PT_PAX_FLAGS ELF program
++        header then you MUST enable either XATTR_PAX_FLAGS or EI_PAX marking
++        support otherwise they will not get any protection.
++
++        If you enable both PT_PAX_FLAGS and XATTR_PAX_FLAGS support then you
++        must make sure that the marks are the same if a binary has both marks.
++
++        Note that if you enable the legacy EI_PAX marking support as well,
++        the EI_PAX marks will be overridden by the XATTR_PAX_FLAGS marks.
++
 +choice
 +      prompt 'MAC system integration'
 +      default PAX_HAVE_ACL_FLAGS
 +choice
 +      prompt 'MAC system integration'
 +      default PAX_HAVE_ACL_FLAGS
@@ -78654,7 +79181,7 @@ index e0f08b5..7388edd 100644
 +
 +config PAX_NOEXEC
 +      bool "Enforce non-executable pages"
 +
 +config PAX_NOEXEC
 +      bool "Enforce non-executable pages"
-+      depends on (PAX_EI_PAX || PAX_PT_PAX_FLAGS || PAX_HAVE_ACL_FLAGS || PAX_HOOK_ACL_FLAGS) && (ALPHA || (ARM && (CPU_V6 || CPU_V7)) || IA64 || MIPS || PARISC || PPC || S390 || SPARC || X86)
++      depends on ALPHA || (ARM && (CPU_V6 || CPU_V7)) || IA64 || MIPS || PARISC || PPC || S390 || SPARC || X86
 +      help
 +        By design some architectures do not allow for protecting memory
 +        pages against execution or even if they do, Linux does not make
 +      help
 +        By design some architectures do not allow for protecting memory
 +        pages against execution or even if they do, Linux does not make
@@ -78929,7 +79456,6 @@ index e0f08b5..7388edd 100644
 +
 +config PAX_ASLR
 +      bool "Address Space Layout Randomization"
 +
 +config PAX_ASLR
 +      bool "Address Space Layout Randomization"
-+      depends on PAX_EI_PAX || PAX_PT_PAX_FLAGS || PAX_HAVE_ACL_FLAGS || PAX_HOOK_ACL_FLAGS
 +      help
 +        Many if not most exploit techniques rely on the knowledge of
 +        certain addresses in the attacked program.  The following options
 +      help
 +        Many if not most exploit techniques rely on the knowledge of
 +        certain addresses in the attacked program.  The following options
@@ -79011,6 +79537,7 @@ index e0f08b5..7388edd 100644
 +
 +config PAX_MEMORY_SANITIZE
 +      bool "Sanitize all freed memory"
 +
 +config PAX_MEMORY_SANITIZE
 +      bool "Sanitize all freed memory"
++      depends on !HIBERNATION
 +      help
 +        By saying Y here the kernel will erase memory pages as soon as they
 +        are freed.  This in turn reduces the lifetime of data stored in the
 +      help
 +        By saying Y here the kernel will erase memory pages as soon as they
 +        are freed.  This in turn reduces the lifetime of data stored in the
@@ -79049,10 +79576,10 @@ index e0f08b5..7388edd 100644
 +        before deploying it.
 +
 +        Note: full support for this feature requires gcc with plugin support
 +        before deploying it.
 +
 +        Note: full support for this feature requires gcc with plugin support
-+        so make sure your compiler is at least gcc 4.5.0 (cross compilation
-+        is not supported).  Using older gcc versions means that functions
-+        with large enough stack frames may leave uninitialized memory behind
-+        that may be exposed to a later syscall leaking the stack.
++        so make sure your compiler is at least gcc 4.5.0.  Using older gcc
++        versions means that functions with large enough stack frames may
++        leave uninitialized memory behind that may be exposed to a later
++        syscall leaking the stack.
 +
 +config PAX_MEMORY_UDEREF
 +      bool "Prevent invalid userland pointer dereference"
 +
 +config PAX_MEMORY_UDEREF
 +      bool "Prevent invalid userland pointer dereference"
@@ -79075,7 +79602,7 @@ index e0f08b5..7388edd 100644
 +
 +config PAX_REFCOUNT
 +      bool "Prevent various kernel object reference counter overflows"
 +
 +config PAX_REFCOUNT
 +      bool "Prevent various kernel object reference counter overflows"
-+      depends on GRKERNSEC && (X86 || SPARC64)
++      depends on GRKERNSEC && ((ARM && (CPU_32v6 || CPU_32v6K || CPU_32v7)) || SPARC64 || X86)
 +      help
 +        By saying Y here the kernel will detect and prevent overflowing
 +        various (but not all) kinds of object reference counters.  Such
 +      help
 +        By saying Y here the kernel will detect and prevent overflowing
 +        various (but not all) kinds of object reference counters.  Such
@@ -79121,6 +79648,19 @@ index e0f08b5..7388edd 100644
 +        Since this has a negligible performance impact, you should enable
 +        this feature.
 +
 +        Since this has a negligible performance impact, you should enable
 +        this feature.
 +
++config PAX_SIZE_OVERFLOW
++      bool "Prevent various integer overflows in function size parameters"
++      help
++        By saying Y here the kernel recomputes expressions of function
++        arguments marked by a size_overflow attribute with double integer
++        precision (DImode/TImode for 32/64 bit integer types).
++
++        The recomputed argument is checked against INT_MAX and an event
++        is logged on overflow and the triggering process is killed.
++
++        Homepage:
++        http://www.grsecurity.net/~ephox/overflow_plugin/
++
 +endmenu
 +
 +endmenu
 +endmenu
 +
 +endmenu
@@ -79128,7 +79668,7 @@ index e0f08b5..7388edd 100644
  config KEYS
        bool "Enable access key retention support"
        help
  config KEYS
        bool "Enable access key retention support"
        help
-@@ -167,7 +747,7 @@ config INTEL_TXT
+@@ -169,7 +802,7 @@ config INTEL_TXT
  config LSM_MMAP_MIN_ADDR
        int "Low address space for LSM to protect from user allocation"
        depends on SECURITY && SECURITY_SELINUX
  config LSM_MMAP_MIN_ADDR
        int "Low address space for LSM to protect from user allocation"
        depends on SECURITY && SECURITY_SELINUX
@@ -79151,7 +79691,7 @@ index 3783202..1852837 100644
  
        .ptrace_access_check =          apparmor_ptrace_access_check,
 diff --git a/security/commoncap.c b/security/commoncap.c
  
        .ptrace_access_check =          apparmor_ptrace_access_check,
 diff --git a/security/commoncap.c b/security/commoncap.c
-index a93b3b7..4410df9 100644
+index ee4f848..a320c64 100644
 --- a/security/commoncap.c
 +++ b/security/commoncap.c
 @@ -28,6 +28,7 @@
 --- a/security/commoncap.c
 +++ b/security/commoncap.c
 @@ -28,6 +28,7 @@
@@ -79171,7 +79711,7 @@ index a93b3b7..4410df9 100644
                return -EPERM;
        return 0;
  }
                return -EPERM;
        return 0;
  }
-@@ -575,6 +576,9 @@ int cap_bprm_secureexec(struct linux_binprm *bprm)
+@@ -579,6 +580,9 @@ int cap_bprm_secureexec(struct linux_binprm *bprm)
  {
        const struct cred *cred = current_cred();
  
  {
        const struct cred *cred = current_cred();
  
@@ -79182,10 +79722,10 @@ index a93b3b7..4410df9 100644
                if (bprm->cap_effective)
                        return 1;
 diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
                if (bprm->cap_effective)
                        return 1;
 diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
-index 08408bd..67e6e78 100644
+index 3ccf7ac..d73ad64 100644
 --- a/security/integrity/ima/ima.h
 +++ b/security/integrity/ima/ima.h
 --- a/security/integrity/ima/ima.h
 +++ b/security/integrity/ima/ima.h
-@@ -85,8 +85,8 @@ void ima_add_violation(struct inode *inode, const unsigned char *filename,
+@@ -86,8 +86,8 @@ void ima_add_violation(struct inode *inode, const unsigned char *filename,
  extern spinlock_t ima_queue_lock;
  
  struct ima_h_table {
  extern spinlock_t ima_queue_lock;
  
  struct ima_h_table {
@@ -79197,7 +79737,7 @@ index 08408bd..67e6e78 100644
  };
  extern struct ima_h_table ima_htable;
 diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c
  };
  extern struct ima_h_table ima_htable;
 diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c
-index da36d2c..e1e1965 100644
+index 88a2788..581ab92 100644
 --- a/security/integrity/ima/ima_api.c
 +++ b/security/integrity/ima/ima_api.c
 @@ -75,7 +75,7 @@ void ima_add_violation(struct inode *inode, const unsigned char *filename,
 --- a/security/integrity/ima/ima_api.c
 +++ b/security/integrity/ima/ima_api.c
 @@ -75,7 +75,7 @@ void ima_add_violation(struct inode *inode, const unsigned char *filename,
@@ -79209,8 +79749,27 @@ index da36d2c..e1e1965 100644
  
        entry = kmalloc(sizeof(*entry), GFP_KERNEL);
        if (!entry) {
  
        entry = kmalloc(sizeof(*entry), GFP_KERNEL);
        if (!entry) {
+diff --git a/security/integrity/ima/ima_audit.c b/security/integrity/ima/ima_audit.c
+index c5c5a72..2ad942f 100644
+--- a/security/integrity/ima/ima_audit.c
++++ b/security/integrity/ima/ima_audit.c
+@@ -56,9 +56,11 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode,
+               audit_log_format(ab, " name=");
+               audit_log_untrustedstring(ab, fname);
+       }
+-      if (inode)
+-              audit_log_format(ab, " dev=%s ino=%lu",
+-                               inode->i_sb->s_id, inode->i_ino);
++      if (inode) {
++              audit_log_format(ab, " dev=");
++              audit_log_untrustedstring(ab, inode->i_sb->s_id);
++              audit_log_format(ab, " ino=%lu", inode->i_ino);
++      }
+       audit_log_format(ab, " res=%d", !result ? 0 : 1);
+       audit_log_end(ab);
+ }
 diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c
 diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c
-index ef21b96..d53e674 100644
+index e1aa2b4..52027bf 100644
 --- a/security/integrity/ima/ima_fs.c
 +++ b/security/integrity/ima/ima_fs.c
 @@ -28,12 +28,12 @@
 --- a/security/integrity/ima/ima_fs.c
 +++ b/security/integrity/ima/ima_fs.c
 @@ -28,12 +28,12 @@
@@ -79229,10 +79788,10 @@ index ef21b96..d53e674 100644
  }
  
 diff --git a/security/integrity/ima/ima_queue.c b/security/integrity/ima/ima_queue.c
  }
  
 diff --git a/security/integrity/ima/ima_queue.c b/security/integrity/ima/ima_queue.c
-index 8e28f04..d5951b1 100644
+index 55a6271..ad829c3 100644
 --- a/security/integrity/ima/ima_queue.c
 +++ b/security/integrity/ima/ima_queue.c
 --- a/security/integrity/ima/ima_queue.c
 +++ b/security/integrity/ima/ima_queue.c
-@@ -79,7 +79,7 @@ static int ima_add_digest_entry(struct ima_template_entry *entry)
+@@ -81,7 +81,7 @@ static int ima_add_digest_entry(struct ima_template_entry *entry)
        INIT_LIST_HEAD(&qe->later);
        list_add_tail_rcu(&qe->later, &ima_measurements);
  
        INIT_LIST_HEAD(&qe->later);
        list_add_tail_rcu(&qe->later, &ima_measurements);
  
@@ -79242,7 +79801,7 @@ index 8e28f04..d5951b1 100644
        hlist_add_head_rcu(&qe->hnext, &ima_htable.queue[key]);
        return 0;
 diff --git a/security/keys/compat.c b/security/keys/compat.c
        hlist_add_head_rcu(&qe->hnext, &ima_htable.queue[key]);
        return 0;
 diff --git a/security/keys/compat.c b/security/keys/compat.c
-index 338b510..a235861 100644
+index 4c48e13..7abdac9 100644
 --- a/security/keys/compat.c
 +++ b/security/keys/compat.c
 @@ -44,7 +44,7 @@ long compat_keyctl_instantiate_key_iov(
 --- a/security/keys/compat.c
 +++ b/security/keys/compat.c
 @@ -44,7 +44,7 @@ long compat_keyctl_instantiate_key_iov(
@@ -79255,7 +79814,7 @@ index 338b510..a235861 100644
        if (iov != iovstack)
                kfree(iov);
 diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
        if (iov != iovstack)
                kfree(iov);
 diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
-index eca5191..da9c7f0 100644
+index 0b3f5d7..892c8a6 100644
 --- a/security/keys/keyctl.c
 +++ b/security/keys/keyctl.c
 @@ -921,7 +921,7 @@ static int keyctl_change_reqkey_auth(struct key *key)
 --- a/security/keys/keyctl.c
 +++ b/security/keys/keyctl.c
 @@ -921,7 +921,7 @@ static int keyctl_change_reqkey_auth(struct key *key)
@@ -79295,7 +79854,7 @@ index eca5191..da9c7f0 100644
        if (iov != iovstack)
                kfree(iov);
 diff --git a/security/keys/keyring.c b/security/keys/keyring.c
        if (iov != iovstack)
                kfree(iov);
 diff --git a/security/keys/keyring.c b/security/keys/keyring.c
-index 30e242f..ec111ab 100644
+index 37a7f3b..86dc19f 100644
 --- a/security/keys/keyring.c
 +++ b/security/keys/keyring.c
 @@ -214,15 +214,15 @@ static long keyring_read(const struct key *keyring,
 --- a/security/keys/keyring.c
 +++ b/security/keys/keyring.c
 @@ -214,15 +214,15 @@ static long keyring_read(const struct key *keyring,
@@ -79317,6 +79876,54 @@ index 30e242f..ec111ab 100644
                                        goto error;
  
                                buflen -= tmp;
                                        goto error;
  
                                buflen -= tmp;
+diff --git a/security/lsm_audit.c b/security/lsm_audit.c
+index 893af8a..ba9237c 100644
+--- a/security/lsm_audit.c
++++ b/security/lsm_audit.c
+@@ -234,10 +234,11 @@ static void dump_common_audit_data(struct audit_buffer *ab,
+               audit_log_d_path(ab, "path=", &a->u.path);
+               inode = a->u.path.dentry->d_inode;
+-              if (inode)
+-                      audit_log_format(ab, " dev=%s ino=%lu",
+-                                      inode->i_sb->s_id,
+-                                      inode->i_ino);
++              if (inode) {
++                      audit_log_format(ab, " dev=");
++                      audit_log_untrustedstring(ab, inode->i_sb->s_id);
++                      audit_log_format(ab, " ino=%lu", inode->i_ino);
++              }
+               break;
+       }
+       case LSM_AUDIT_DATA_DENTRY: {
+@@ -247,10 +248,11 @@ static void dump_common_audit_data(struct audit_buffer *ab,
+               audit_log_untrustedstring(ab, a->u.dentry->d_name.name);
+               inode = a->u.dentry->d_inode;
+-              if (inode)
+-                      audit_log_format(ab, " dev=%s ino=%lu",
+-                                      inode->i_sb->s_id,
+-                                      inode->i_ino);
++              if (inode) {
++                      audit_log_format(ab, " dev=");
++                      audit_log_untrustedstring(ab, inode->i_sb->s_id);
++                      audit_log_format(ab, " ino=%lu", inode->i_ino);
++              }
+               break;
+       }
+       case LSM_AUDIT_DATA_INODE: {
+@@ -265,8 +267,9 @@ static void dump_common_audit_data(struct audit_buffer *ab,
+                                        dentry->d_name.name);
+                       dput(dentry);
+               }
+-              audit_log_format(ab, " dev=%s ino=%lu", inode->i_sb->s_id,
+-                               inode->i_ino);
++              audit_log_format(ab, " dev=");
++              audit_log_untrustedstring(ab, inode->i_sb->s_id);
++              audit_log_format(ab, " ino=%lu", inode->i_ino);
+               break;
+       }
+       case LSM_AUDIT_DATA_TASK:
 diff --git a/security/min_addr.c b/security/min_addr.c
 index f728728..6457a0c 100644
 --- a/security/min_addr.c
 diff --git a/security/min_addr.c b/security/min_addr.c
 index f728728..6457a0c 100644
 --- a/security/min_addr.c
@@ -79338,12 +79945,12 @@ index f728728..6457a0c 100644
  
  /*
 diff --git a/security/security.c b/security/security.c
  
  /*
 diff --git a/security/security.c b/security/security.c
-index d9e1533..91427f2 100644
+index e2f684a..8d62ef5 100644
 --- a/security/security.c
 +++ b/security/security.c
 --- a/security/security.c
 +++ b/security/security.c
-@@ -25,8 +25,8 @@ static __initdata char chosen_lsm[SECURITY_NAME_MAX + 1] =
- /* things that live in capability.c */
extern void __init security_fixup_ops(struct security_operations *ops);
+@@ -26,8 +26,8 @@
+ static __initdata char chosen_lsm[SECURITY_NAME_MAX + 1] =
      CONFIG_DEFAULT_SECURITY;
  
 -static struct security_operations *security_ops;
 -static struct security_operations default_security_ops = {
  
 -static struct security_operations *security_ops;
 -static struct security_operations default_security_ops = {
@@ -79352,7 +79959,7 @@ index d9e1533..91427f2 100644
        .name   = "default",
  };
  
        .name   = "default",
  };
  
-@@ -67,7 +67,9 @@ int __init security_init(void)
+@@ -68,7 +68,9 @@ int __init security_init(void)
  
  void reset_security_ops(void)
  {
  
  void reset_security_ops(void)
  {
@@ -79363,18 +79970,19 @@ index d9e1533..91427f2 100644
  
  /* Save user chosen LSM */
 diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
  
  /* Save user chosen LSM */
 diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
-index 266a229..61bd553 100644
+index 1126c10..effb32b 100644
 --- a/security/selinux/hooks.c
 +++ b/security/selinux/hooks.c
 --- a/security/selinux/hooks.c
 +++ b/security/selinux/hooks.c
-@@ -93,7 +93,6 @@
+@@ -94,8 +94,6 @@
  #define NUM_SEL_MNT_OPTS 5
  
  #define NUM_SEL_MNT_OPTS 5
  
- extern int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm);
 -extern struct security_operations *security_ops;
 -extern struct security_operations *security_ops;
+-
  /* SECMARK reference count */
  /* SECMARK reference count */
- atomic_t selinux_secmark_refcount = ATOMIC_INIT(0);
-@@ -5455,7 +5454,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer)
+ static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0);
+@@ -5449,7 +5447,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer)
  
  #endif
  
  
  #endif
  
@@ -79396,24 +80004,11 @@ index b43813c..74be837 100644
  }
  #else
  static inline int selinux_xfrm_enabled(void)
  }
  #else
  static inline int selinux_xfrm_enabled(void)
-diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
-index f6917bc..8e8713e 100644
---- a/security/selinux/ss/services.c
-+++ b/security/selinux/ss/services.c
-@@ -1814,6 +1814,8 @@ int security_load_policy(void *data, size_t len)
-       int rc = 0;
-       struct policy_file file = { data, len }, *fp = &file;
-+      pax_track_stack();
-+
-       if (!ss_initialized) {
-               avtab_cache_init();
-               rc = policydb_read(&policydb, fp);
 diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
 diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
-index b9c5e14..20ab779 100644
+index 7db62b4..ee4d949 100644
 --- a/security/smack/smack_lsm.c
 +++ b/security/smack/smack_lsm.c
 --- a/security/smack/smack_lsm.c
 +++ b/security/smack/smack_lsm.c
-@@ -3393,7 +3393,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
+@@ -3481,7 +3481,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
        return 0;
  }
  
        return 0;
  }
  
@@ -79423,10 +80018,10 @@ index b9c5e14..20ab779 100644
  
        .ptrace_access_check =          smack_ptrace_access_check,
 diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c
  
        .ptrace_access_check =          smack_ptrace_access_check,
 diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c
-index f776400..f95b158c 100644
+index 4b327b6..646c57a 100644
 --- a/security/tomoyo/tomoyo.c
 +++ b/security/tomoyo/tomoyo.c
 --- a/security/tomoyo/tomoyo.c
 +++ b/security/tomoyo/tomoyo.c
-@@ -446,7 +446,7 @@ static int tomoyo_sb_pivotroot(struct path *old_path, struct path *new_path)
+@@ -504,7 +504,7 @@ static int tomoyo_socket_sendmsg(struct socket *sock, struct msghdr *msg,
   * tomoyo_security_ops is a "struct security_operations" which is used for
   * registering TOMOYO.
   */
   * tomoyo_security_ops is a "struct security_operations" which is used for
   * registering TOMOYO.
   */
@@ -79436,7 +80031,7 @@ index f776400..f95b158c 100644
        .cred_alloc_blank    = tomoyo_cred_alloc_blank,
        .cred_prepare        = tomoyo_cred_prepare,
 diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c
        .cred_alloc_blank    = tomoyo_cred_alloc_blank,
        .cred_prepare        = tomoyo_cred_prepare,
 diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c
-index 3687a6c..652565e 100644
+index 762af68..7103453 100644
 --- a/sound/aoa/codecs/onyx.c
 +++ b/sound/aoa/codecs/onyx.c
 @@ -54,7 +54,7 @@ struct onyx {
 --- a/sound/aoa/codecs/onyx.c
 +++ b/sound/aoa/codecs/onyx.c
 @@ -54,7 +54,7 @@ struct onyx {
@@ -79480,7 +80075,7 @@ index ffd2025..df062c9 100644
  /* PCM3052 register definitions */
  
 diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
  /* PCM3052 register definitions */
  
 diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
-index 23c34a0..a2673a5 100644
+index 3cc4b86..af0a951 100644
 --- a/sound/core/oss/pcm_oss.c
 +++ b/sound/core/oss/pcm_oss.c
 @@ -1189,10 +1189,10 @@ snd_pcm_sframes_t snd_pcm_oss_write3(struct snd_pcm_substream *substream, const
 --- a/sound/core/oss/pcm_oss.c
 +++ b/sound/core/oss/pcm_oss.c
 @@ -1189,10 +1189,10 @@ snd_pcm_sframes_t snd_pcm_oss_write3(struct snd_pcm_substream *substream, const
@@ -79568,10 +80163,10 @@ index 91cdf94..4085161 100644
        if (err < 0)
                return err;
 diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
        if (err < 0)
                return err;
 diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
-index 1c6be91..c761a59 100644
+index 25ed9fe..24c46e9 100644
 --- a/sound/core/pcm_native.c
 +++ b/sound/core/pcm_native.c
 --- a/sound/core/pcm_native.c
 +++ b/sound/core/pcm_native.c
-@@ -2770,11 +2770,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
+@@ -2765,11 +2765,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
        switch (substream->stream) {
        case SNDRV_PCM_STREAM_PLAYBACK:
                result = snd_pcm_playback_ioctl1(NULL, substream, cmd,
        switch (substream->stream) {
        case SNDRV_PCM_STREAM_PLAYBACK:
                result = snd_pcm_playback_ioctl1(NULL, substream, cmd,
@@ -79586,10 +80181,10 @@ index 1c6be91..c761a59 100644
        default:
                result = -EINVAL;
 diff --git a/sound/core/seq/seq_device.c b/sound/core/seq/seq_device.c
        default:
                result = -EINVAL;
 diff --git a/sound/core/seq/seq_device.c b/sound/core/seq/seq_device.c
-index 1f99767..14636533 100644
+index 5cf8d65..912a79c 100644
 --- a/sound/core/seq/seq_device.c
 +++ b/sound/core/seq/seq_device.c
 --- a/sound/core/seq/seq_device.c
 +++ b/sound/core/seq/seq_device.c
-@@ -63,7 +63,7 @@ struct ops_list {
+@@ -64,7 +64,7 @@ struct ops_list {
        int argsize;            /* argument size */
  
        /* operators */
        int argsize;            /* argument size */
  
        /* operators */
@@ -79598,7 +80193,7 @@ index 1f99767..14636533 100644
  
        /* registred devices */
        struct list_head dev_list;      /* list of devices */
  
        /* registred devices */
        struct list_head dev_list;      /* list of devices */
-@@ -332,7 +332,7 @@ int snd_seq_device_register_driver(char *id, struct snd_seq_dev_ops *entry,
+@@ -333,7 +333,7 @@ int snd_seq_device_register_driver(char *id, struct snd_seq_dev_ops *entry,
  
        mutex_lock(&ops->reg_mutex);
        /* copy driver operators */
  
        mutex_lock(&ops->reg_mutex);
        /* copy driver operators */
@@ -79607,7 +80202,7 @@ index 1f99767..14636533 100644
        ops->driver |= DRIVER_LOADED;
        ops->argsize = argsize;
  
        ops->driver |= DRIVER_LOADED;
        ops->argsize = argsize;
  
-@@ -462,7 +462,7 @@ static int init_device(struct snd_seq_device *dev, struct ops_list *ops)
+@@ -463,7 +463,7 @@ static int init_device(struct snd_seq_device *dev, struct ops_list *ops)
                           dev->name, ops->id, ops->argsize, dev->argsize);
                return -EINVAL;
        }
                           dev->name, ops->id, ops->argsize, dev->argsize);
                return -EINVAL;
        }
@@ -79616,7 +80211,7 @@ index 1f99767..14636533 100644
                dev->status = SNDRV_SEQ_DEVICE_REGISTERED;
                ops->num_init_devices++;
        } else {
                dev->status = SNDRV_SEQ_DEVICE_REGISTERED;
                ops->num_init_devices++;
        } else {
-@@ -489,7 +489,7 @@ static int free_device(struct snd_seq_device *dev, struct ops_list *ops)
+@@ -490,7 +490,7 @@ static int free_device(struct snd_seq_device *dev, struct ops_list *ops)
                           dev->name, ops->id, ops->argsize, dev->argsize);
                return -EINVAL;
        }
                           dev->name, ops->id, ops->argsize, dev->argsize);
                return -EINVAL;
        }
@@ -79626,10 +80221,10 @@ index 1f99767..14636533 100644
                dev->driver_data = NULL;
                ops->num_init_devices--;
 diff --git a/sound/drivers/mts64.c b/sound/drivers/mts64.c
                dev->driver_data = NULL;
                ops->num_init_devices--;
 diff --git a/sound/drivers/mts64.c b/sound/drivers/mts64.c
-index 8539ab0..be8a121 100644
+index f24bf9a..1f7b67c 100644
 --- a/sound/drivers/mts64.c
 +++ b/sound/drivers/mts64.c
 --- a/sound/drivers/mts64.c
 +++ b/sound/drivers/mts64.c
-@@ -28,6 +28,7 @@
+@@ -29,6 +29,7 @@
  #include <sound/initval.h>
  #include <sound/rawmidi.h>
  #include <sound/control.h>
  #include <sound/initval.h>
  #include <sound/rawmidi.h>
  #include <sound/control.h>
@@ -79637,7 +80232,7 @@ index 8539ab0..be8a121 100644
  
  #define CARD_NAME "Miditerminal 4140"
  #define DRIVER_NAME "MTS64"
  
  #define CARD_NAME "Miditerminal 4140"
  #define DRIVER_NAME "MTS64"
-@@ -66,7 +67,7 @@ struct mts64 {
+@@ -67,7 +68,7 @@ struct mts64 {
        struct pardevice *pardev;
        int pardev_claimed;
  
        struct pardevice *pardev;
        int pardev_claimed;
  
@@ -79646,7 +80241,7 @@ index 8539ab0..be8a121 100644
        int current_midi_output_port;
        int current_midi_input_port;
        u8 mode[MTS64_NUM_INPUT_PORTS];
        int current_midi_output_port;
        int current_midi_input_port;
        u8 mode[MTS64_NUM_INPUT_PORTS];
-@@ -696,7 +697,7 @@ static int snd_mts64_rawmidi_open(struct snd_rawmidi_substream *substream)
+@@ -697,7 +698,7 @@ static int snd_mts64_rawmidi_open(struct snd_rawmidi_substream *substream)
  {
        struct mts64 *mts = substream->rmidi->private_data;
  
  {
        struct mts64 *mts = substream->rmidi->private_data;
  
@@ -79655,7 +80250,7 @@ index 8539ab0..be8a121 100644
                /* We don't need a spinlock here, because this is just called 
                   if the device has not been opened before. 
                   So there aren't any IRQs from the device */
                /* We don't need a spinlock here, because this is just called 
                   if the device has not been opened before. 
                   So there aren't any IRQs from the device */
-@@ -704,7 +705,7 @@ static int snd_mts64_rawmidi_open(struct snd_rawmidi_substream *substream)
+@@ -705,7 +706,7 @@ static int snd_mts64_rawmidi_open(struct snd_rawmidi_substream *substream)
  
                msleep(50);
        }
  
                msleep(50);
        }
@@ -79664,7 +80259,7 @@ index 8539ab0..be8a121 100644
  
        return 0;
  }
  
        return 0;
  }
-@@ -714,8 +715,7 @@ static int snd_mts64_rawmidi_close(struct snd_rawmidi_substream *substream)
+@@ -715,8 +716,7 @@ static int snd_mts64_rawmidi_close(struct snd_rawmidi_substream *substream)
        struct mts64 *mts = substream->rmidi->private_data;
        unsigned long flags;
  
        struct mts64 *mts = substream->rmidi->private_data;
        unsigned long flags;
  
@@ -79674,7 +80269,7 @@ index 8539ab0..be8a121 100644
                /* We need the spinlock_irqsave here because we can still
                   have IRQs at this point */
                spin_lock_irqsave(&mts->lock, flags);
                /* We need the spinlock_irqsave here because we can still
                   have IRQs at this point */
                spin_lock_irqsave(&mts->lock, flags);
-@@ -724,8 +724,8 @@ static int snd_mts64_rawmidi_close(struct snd_rawmidi_substream *substream)
+@@ -725,8 +725,8 @@ static int snd_mts64_rawmidi_close(struct snd_rawmidi_substream *substream)
  
                msleep(500);
  
  
                msleep(500);
  
@@ -79686,10 +80281,10 @@ index 8539ab0..be8a121 100644
        return 0;
  }
 diff --git a/sound/drivers/opl4/opl4_lib.c b/sound/drivers/opl4/opl4_lib.c
        return 0;
  }
 diff --git a/sound/drivers/opl4/opl4_lib.c b/sound/drivers/opl4/opl4_lib.c
-index f07e38d..7aae69a 100644
+index b953fb4..1999c01 100644
 --- a/sound/drivers/opl4/opl4_lib.c
 +++ b/sound/drivers/opl4/opl4_lib.c
 --- a/sound/drivers/opl4/opl4_lib.c
 +++ b/sound/drivers/opl4/opl4_lib.c
-@@ -28,7 +28,7 @@ MODULE_AUTHOR("Clemens Ladisch <clemens@ladisch.de>");
+@@ -29,7 +29,7 @@ MODULE_AUTHOR("Clemens Ladisch <clemens@ladisch.de>");
  MODULE_DESCRIPTION("OPL4 driver");
  MODULE_LICENSE("GPL");
  
  MODULE_DESCRIPTION("OPL4 driver");
  MODULE_LICENSE("GPL");
  
@@ -79699,10 +80294,10 @@ index f07e38d..7aae69a 100644
        int timeout = 10;
        while ((inb(opl4->fm_port) & OPL4_STATUS_BUSY) && --timeout > 0)
 diff --git a/sound/drivers/portman2x4.c b/sound/drivers/portman2x4.c
        int timeout = 10;
        while ((inb(opl4->fm_port) & OPL4_STATUS_BUSY) && --timeout > 0)
 diff --git a/sound/drivers/portman2x4.c b/sound/drivers/portman2x4.c
-index f2b0ba2..429efc5 100644
+index f664823..590c745 100644
 --- a/sound/drivers/portman2x4.c
 +++ b/sound/drivers/portman2x4.c
 --- a/sound/drivers/portman2x4.c
 +++ b/sound/drivers/portman2x4.c
-@@ -47,6 +47,7 @@
+@@ -48,6 +48,7 @@
  #include <sound/initval.h>
  #include <sound/rawmidi.h>
  #include <sound/control.h>
  #include <sound/initval.h>
  #include <sound/rawmidi.h>
  #include <sound/control.h>
@@ -79710,7 +80305,7 @@ index f2b0ba2..429efc5 100644
  
  #define CARD_NAME "Portman 2x4"
  #define DRIVER_NAME "portman"
  
  #define CARD_NAME "Portman 2x4"
  #define DRIVER_NAME "portman"
-@@ -84,7 +85,7 @@ struct portman {
+@@ -85,7 +86,7 @@ struct portman {
        struct pardevice *pardev;
        int pardev_claimed;
  
        struct pardevice *pardev;
        int pardev_claimed;
  
@@ -79755,10 +80350,10 @@ index 537a9cb..8e8c8e9 100644
  
  /**
 diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c
  
  /**
 diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c
-index 4400308..261e9f3 100644
+index cd094ec..eca1277 100644
 --- a/sound/firewire/isight.c
 +++ b/sound/firewire/isight.c
 --- a/sound/firewire/isight.c
 +++ b/sound/firewire/isight.c
-@@ -97,7 +97,7 @@ static void isight_update_pointers(struct isight *isight, unsigned int count)
+@@ -96,7 +96,7 @@ static void isight_update_pointers(struct isight *isight, unsigned int count)
        ptr += count;
        if (ptr >= runtime->buffer_size)
                ptr -= runtime->buffer_size;
        ptr += count;
        if (ptr >= runtime->buffer_size)
                ptr -= runtime->buffer_size;
@@ -79767,7 +80362,7 @@ index 4400308..261e9f3 100644
  
        isight->period_counter += count;
        if (isight->period_counter >= runtime->period_size) {
  
        isight->period_counter += count;
        if (isight->period_counter >= runtime->period_size) {
-@@ -308,7 +308,7 @@ static int isight_hw_params(struct snd_pcm_substream *substream,
+@@ -307,7 +307,7 @@ static int isight_hw_params(struct snd_pcm_substream *substream,
        if (err < 0)
                return err;
  
        if (err < 0)
                return err;
  
@@ -79776,7 +80371,7 @@ index 4400308..261e9f3 100644
  
        return 0;
  }
  
        return 0;
  }
-@@ -341,7 +341,7 @@ static int isight_hw_free(struct snd_pcm_substream *substream)
+@@ -340,7 +340,7 @@ static int isight_hw_free(struct snd_pcm_substream *substream)
  {
        struct isight *isight = substream->private_data;
  
  {
        struct isight *isight = substream->private_data;
  
@@ -79785,7 +80380,7 @@ index 4400308..261e9f3 100644
  
        mutex_lock(&isight->mutex);
        isight_stop_streaming(isight);
  
        mutex_lock(&isight->mutex);
        isight_stop_streaming(isight);
-@@ -434,10 +434,10 @@ static int isight_trigger(struct snd_pcm_substream *substream, int cmd)
+@@ -433,10 +433,10 @@ static int isight_trigger(struct snd_pcm_substream *substream, int cmd)
  
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
  
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
@@ -79799,7 +80394,7 @@ index 4400308..261e9f3 100644
        default:
                return -EINVAL;
 diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
        default:
                return -EINVAL;
 diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
-index fe79a16..4d9714e 100644
+index c94578d..0794ac1 100644
 --- a/sound/isa/cmi8330.c
 +++ b/sound/isa/cmi8330.c
 @@ -172,7 +172,7 @@ struct snd_cmi8330 {
 --- a/sound/isa/cmi8330.c
 +++ b/sound/isa/cmi8330.c
 @@ -172,7 +172,7 @@ struct snd_cmi8330 {
@@ -79863,10 +80458,10 @@ index 09d4648..cf234c7 100644
                  list_add(&s->list, &cs4297a_devs);
  
 diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
                  list_add(&s->list, &cs4297a_devs);
  
 diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
-index 755f2b0..5c12361 100644
+index 71f6744..d8aeae7 100644
 --- a/sound/pci/hda/hda_codec.h
 +++ b/sound/pci/hda/hda_codec.h
 --- a/sound/pci/hda/hda_codec.h
 +++ b/sound/pci/hda/hda_codec.h
-@@ -611,7 +611,7 @@ struct hda_bus_ops {
+@@ -614,7 +614,7 @@ struct hda_bus_ops {
        /* notify power-up/down from codec to controller */
        void (*pm_notify)(struct hda_bus *bus);
  #endif
        /* notify power-up/down from codec to controller */
        void (*pm_notify)(struct hda_bus *bus);
  #endif
@@ -79875,7 +80470,7 @@ index 755f2b0..5c12361 100644
  
  /* template to pass to the bus constructor */
  struct hda_bus_template {
  
  /* template to pass to the bus constructor */
  struct hda_bus_template {
-@@ -713,6 +713,7 @@ struct hda_codec_ops {
+@@ -716,6 +716,7 @@ struct hda_codec_ops {
  #endif
        void (*reboot_notify)(struct hda_codec *codec);
  };
  #endif
        void (*reboot_notify)(struct hda_codec *codec);
  };
@@ -79883,7 +80478,7 @@ index 755f2b0..5c12361 100644
  
  /* record for amp information cache */
  struct hda_cache_head {
  
  /* record for amp information cache */
  struct hda_cache_head {
-@@ -743,7 +744,7 @@ struct hda_pcm_ops {
+@@ -746,7 +747,7 @@ struct hda_pcm_ops {
                       struct snd_pcm_substream *substream);
        int (*cleanup)(struct hda_pcm_stream *info, struct hda_codec *codec,
                       struct snd_pcm_substream *substream);
                       struct snd_pcm_substream *substream);
        int (*cleanup)(struct hda_pcm_stream *info, struct hda_codec *codec,
                       struct snd_pcm_substream *substream);
@@ -79892,7 +80487,7 @@ index 755f2b0..5c12361 100644
  
  /* PCM information for each substream */
  struct hda_pcm_stream {
  
  /* PCM information for each substream */
  struct hda_pcm_stream {
-@@ -801,7 +802,7 @@ struct hda_codec {
+@@ -804,7 +805,7 @@ struct hda_codec {
        const char *modelname;  /* model name for preset */
  
        /* set by patch */
        const char *modelname;  /* model name for preset */
  
        /* set by patch */
@@ -79924,10 +80519,10 @@ index 0da778a..bc38b84 100644
  
  
 diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c
  
  
 diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c
-index f3260e6..4a285d8 100644
+index 03ee4e3..be86b46 100644
 --- a/sound/pci/ymfpci/ymfpci_main.c
 +++ b/sound/pci/ymfpci/ymfpci_main.c
 --- a/sound/pci/ymfpci/ymfpci_main.c
 +++ b/sound/pci/ymfpci/ymfpci_main.c
-@@ -202,8 +202,8 @@ static void snd_ymfpci_hw_stop(struct snd_ymfpci *chip)
+@@ -203,8 +203,8 @@ static void snd_ymfpci_hw_stop(struct snd_ymfpci *chip)
                if ((snd_ymfpci_readl(chip, YDSXGR_STATUS) & 2) == 0)
                        break;
        }
                if ((snd_ymfpci_readl(chip, YDSXGR_STATUS) & 2) == 0)
                        break;
        }
@@ -79938,7 +80533,7 @@ index f3260e6..4a285d8 100644
                wake_up(&chip->interrupt_sleep);
        }
        __end:
                wake_up(&chip->interrupt_sleep);
        }
        __end:
-@@ -787,7 +787,7 @@ static void snd_ymfpci_irq_wait(struct snd_ymfpci *chip)
+@@ -788,7 +788,7 @@ static void snd_ymfpci_irq_wait(struct snd_ymfpci *chip)
                        continue;
                init_waitqueue_entry(&wait, current);
                add_wait_queue(&chip->interrupt_sleep, &wait);
                        continue;
                init_waitqueue_entry(&wait, current);
                add_wait_queue(&chip->interrupt_sleep, &wait);
@@ -79947,7 +80542,7 @@ index f3260e6..4a285d8 100644
                schedule_timeout_uninterruptible(msecs_to_jiffies(50));
                remove_wait_queue(&chip->interrupt_sleep, &wait);
        }
                schedule_timeout_uninterruptible(msecs_to_jiffies(50));
                remove_wait_queue(&chip->interrupt_sleep, &wait);
        }
-@@ -825,8 +825,8 @@ static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id)
+@@ -826,8 +826,8 @@ static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id)
                snd_ymfpci_writel(chip, YDSXGR_MODE, mode);
                spin_unlock(&chip->reg_lock);
  
                snd_ymfpci_writel(chip, YDSXGR_MODE, mode);
                spin_unlock(&chip->reg_lock);
  
@@ -79958,7 +80553,7 @@ index f3260e6..4a285d8 100644
                        wake_up(&chip->interrupt_sleep);
                }
        }
                        wake_up(&chip->interrupt_sleep);
                }
        }
-@@ -2363,7 +2363,7 @@ int __devinit snd_ymfpci_create(struct snd_card *card,
+@@ -2382,7 +2382,7 @@ int __devinit snd_ymfpci_create(struct snd_card *card,
        spin_lock_init(&chip->reg_lock);
        spin_lock_init(&chip->voice_lock);
        init_waitqueue_head(&chip->interrupt_sleep);
        spin_lock_init(&chip->reg_lock);
        spin_lock_init(&chip->voice_lock);
        init_waitqueue_head(&chip->interrupt_sleep);
@@ -79968,10 +80563,10 @@ index f3260e6..4a285d8 100644
        chip->pci = pci;
        chip->irq = -1;
 diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
        chip->pci = pci;
        chip->irq = -1;
 diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
-index 2879c88..224159e 100644
+index ee15337..e2187a6 100644
 --- a/sound/soc/soc-pcm.c
 +++ b/sound/soc/soc-pcm.c
 --- a/sound/soc/soc-pcm.c
 +++ b/sound/soc/soc-pcm.c
-@@ -568,7 +568,7 @@ static snd_pcm_uframes_t soc_pcm_pointer(struct snd_pcm_substream *substream)
+@@ -583,7 +583,7 @@ static snd_pcm_uframes_t soc_pcm_pointer(struct snd_pcm_substream *substream)
  }
  
  /* ASoC PCM operations */
  }
  
  /* ASoC PCM operations */
@@ -79981,7 +80576,7 @@ index 2879c88..224159e 100644
        .close          = soc_pcm_close,
        .hw_params      = soc_pcm_hw_params,
 diff --git a/sound/usb/card.h b/sound/usb/card.h
        .close          = soc_pcm_close,
        .hw_params      = soc_pcm_hw_params,
 diff --git a/sound/usb/card.h b/sound/usb/card.h
-index ae4251d..0961361 100644
+index a39edcc..1014050 100644
 --- a/sound/usb/card.h
 +++ b/sound/usb/card.h
 @@ -44,6 +44,7 @@ struct snd_urb_ops {
 --- a/sound/usb/card.h
 +++ b/sound/usb/card.h
 @@ -44,6 +44,7 @@ struct snd_urb_ops {
@@ -79997,29 +80592,32 @@ index ae4251d..0961361 100644
        spinlock_t lock;
  
 -      struct snd_urb_ops ops;         /* callbacks (must be filled at init) */
        spinlock_t lock;
  
 -      struct snd_urb_ops ops;         /* callbacks (must be filled at init) */
-+      snd_urb_ops_no_const ops;               /* callbacks (must be filled at init) */
++      snd_urb_ops_no_const ops;       /* callbacks (must be filled at init) */
+       int last_frame_number;          /* stored frame number */
+       int last_delay;                 /* stored delay */
  };
  };
- struct snd_usb_stream {
 diff --git a/tools/gcc/Makefile b/tools/gcc/Makefile
 new file mode 100644
 diff --git a/tools/gcc/Makefile b/tools/gcc/Makefile
 new file mode 100644
-index 0000000..b044b80
+index 0000000..ca64170
 --- /dev/null
 +++ b/tools/gcc/Makefile
 --- /dev/null
 +++ b/tools/gcc/Makefile
-@@ -0,0 +1,21 @@
+@@ -0,0 +1,26 @@
 +#CC := gcc
 +#PLUGIN_SOURCE_FILES := pax_plugin.c
 +#PLUGIN_OBJECT_FILES := $(patsubst %.c,%.o,$(PLUGIN_SOURCE_FILES))
 +GCCPLUGINS_DIR := $(shell $(CC) -print-file-name=plugin)
 +#CC := gcc
 +#PLUGIN_SOURCE_FILES := pax_plugin.c
 +#PLUGIN_OBJECT_FILES := $(patsubst %.c,%.o,$(PLUGIN_SOURCE_FILES))
 +GCCPLUGINS_DIR := $(shell $(CC) -print-file-name=plugin)
-+#CFLAGS += -I$(GCCPLUGINS_DIR)/include -fPIC -O2 -Wall -W
++#CFLAGS += -I$(GCCPLUGINS_DIR)/include -fPIC -O2 -Wall -W -std=gnu99
 +
 +
-+HOST_EXTRACFLAGS += -I$(GCCPLUGINS_DIR)/include
++HOST_EXTRACFLAGS += -I$(GCCPLUGINS_DIR)/include -I$(GCCPLUGINS_DIR)/include/c-family -std=gnu99 -ggdb
++CFLAGS_size_overflow_plugin.o := -Wno-missing-initializer
 +
 +hostlibs-y := constify_plugin.so
 +hostlibs-$(CONFIG_PAX_MEMORY_STACKLEAK) += stackleak_plugin.so
 +hostlibs-$(CONFIG_KALLOCSTAT_PLUGIN) += kallocstat_plugin.so
 +hostlibs-$(CONFIG_PAX_KERNEXEC_PLUGIN) += kernexec_plugin.so
 +hostlibs-$(CONFIG_CHECKER_PLUGIN) += checker_plugin.so
 +
 +hostlibs-y := constify_plugin.so
 +hostlibs-$(CONFIG_PAX_MEMORY_STACKLEAK) += stackleak_plugin.so
 +hostlibs-$(CONFIG_KALLOCSTAT_PLUGIN) += kallocstat_plugin.so
 +hostlibs-$(CONFIG_PAX_KERNEXEC_PLUGIN) += kernexec_plugin.so
 +hostlibs-$(CONFIG_CHECKER_PLUGIN) += checker_plugin.so
++hostlibs-y += colorize_plugin.so
++hostlibs-$(CONFIG_PAX_SIZE_OVERFLOW) += size_overflow_plugin.so
 +
 +always := $(hostlibs-y)
 +
 +
 +always := $(hostlibs-y)
 +
@@ -80028,6 +80626,8 @@ index 0000000..b044b80
 +kallocstat_plugin-objs := kallocstat_plugin.o
 +kernexec_plugin-objs := kernexec_plugin.o
 +checker_plugin-objs := checker_plugin.o
 +kallocstat_plugin-objs := kallocstat_plugin.o
 +kernexec_plugin-objs := kernexec_plugin.o
 +checker_plugin-objs := checker_plugin.o
++colorize_plugin-objs := colorize_plugin.o
++size_overflow_plugin-objs := size_overflow_plugin.o
 diff --git a/tools/gcc/checker_plugin.c b/tools/gcc/checker_plugin.c
 new file mode 100644
 index 0000000..d41b5af
 diff --git a/tools/gcc/checker_plugin.c b/tools/gcc/checker_plugin.c
 new file mode 100644
 index 0000000..d41b5af
@@ -80205,6 +80805,159 @@ index 0000000..d41b5af
 +
 +      return 0;
 +}
 +
 +      return 0;
 +}
+diff --git a/tools/gcc/colorize_plugin.c b/tools/gcc/colorize_plugin.c
+new file mode 100644
+index 0000000..ee950d0
+--- /dev/null
++++ b/tools/gcc/colorize_plugin.c
+@@ -0,0 +1,147 @@
++/*
++ * Copyright 2012 by PaX Team <pageexec@freemail.hu>
++ * Licensed under the GPL v2
++ *
++ * Note: the choice of the license means that the compilation process is
++ *       NOT 'eligible' as defined by gcc's library exception to the GPL v3,
++ *       but for the kernel it doesn't matter since it doesn't link against
++ *       any of the gcc libraries
++ *
++ * gcc plugin to colorize diagnostic output
++ *
++ */
++
++#include "gcc-plugin.h"
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "tree.h"
++#include "tree-pass.h"
++#include "flags.h"
++#include "intl.h"
++#include "toplev.h"
++#include "plugin.h"
++#include "diagnostic.h"
++#include "plugin-version.h"
++#include "tm.h"
++
++int plugin_is_GPL_compatible;
++
++static struct plugin_info colorize_plugin_info = {
++      .version        = "201203092200",
++};
++
++#define GREEN         "\033[32m\033[2m"
++#define LIGHTGREEN    "\033[32m\033[1m"
++#define YELLOW                "\033[33m\033[2m"
++#define LIGHTYELLOW   "\033[33m\033[1m"
++#define RED           "\033[31m\033[2m"
++#define LIGHTRED      "\033[31m\033[1m"
++#define BLUE          "\033[34m\033[2m"
++#define LIGHTBLUE     "\033[34m\033[1m"
++#define BRIGHT                "\033[m\033[1m"
++#define NORMAL                "\033[m"
++
++static diagnostic_starter_fn old_starter;
++static diagnostic_finalizer_fn old_finalizer;
++
++static void start_colorize(diagnostic_context *context, diagnostic_info *diagnostic)
++{
++      const char *color;
++      char *newprefix;
++
++      switch (diagnostic->kind) {
++      case DK_NOTE:
++              color = LIGHTBLUE;
++              break;
++
++      case DK_PEDWARN:
++      case DK_WARNING:
++              color = LIGHTYELLOW;
++              break;
++
++      case DK_ERROR:
++      case DK_FATAL:
++      case DK_ICE:
++      case DK_PERMERROR:
++      case DK_SORRY:
++              color = LIGHTRED;
++              break;
++
++      default:
++              color = NORMAL;
++      }
++
++      old_starter(context, diagnostic);
++      if (-1 == asprintf(&newprefix, "%s%s" NORMAL, color, context->printer->prefix))
++              return;
++      pp_destroy_prefix(context->printer);
++      pp_set_prefix(context->printer, newprefix);
++}
++
++static void finalize_colorize(diagnostic_context *context, diagnostic_info *diagnostic)
++{
++      old_finalizer(context, diagnostic);
++}
++
++static void colorize_arm(void)
++{
++      old_starter = diagnostic_starter(global_dc);
++      old_finalizer = diagnostic_finalizer(global_dc);
++
++      diagnostic_starter(global_dc) = start_colorize;
++      diagnostic_finalizer(global_dc) = finalize_colorize;
++}
++
++static unsigned int execute_colorize_rearm(void)
++{
++      if (diagnostic_starter(global_dc) == start_colorize)
++              return 0;
++
++      colorize_arm();
++      return 0;
++}
++
++struct simple_ipa_opt_pass pass_ipa_colorize_rearm = {
++      .pass = {
++              .type                   = SIMPLE_IPA_PASS,
++              .name                   = "colorize_rearm",
++              .gate                   = NULL,
++              .execute                = execute_colorize_rearm,
++              .sub                    = NULL,
++              .next                   = NULL,
++              .static_pass_number     = 0,
++              .tv_id                  = TV_NONE,
++              .properties_required    = 0,
++              .properties_provided    = 0,
++              .properties_destroyed   = 0,
++              .todo_flags_start       = 0,
++              .todo_flags_finish      = 0
++      }
++};
++
++static void colorize_start_unit(void *gcc_data, void *user_data)
++{
++      colorize_arm();
++}
++
++int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
++{
++      const char * const plugin_name = plugin_info->base_name;
++      struct register_pass_info colorize_rearm_pass_info = {
++              .pass                           = &pass_ipa_colorize_rearm.pass,
++              .reference_pass_name            = "*free_lang_data",
++              .ref_pass_instance_number       = 0,
++              .pos_op                         = PASS_POS_INSERT_AFTER
++      };
++
++      if (!plugin_default_version_check(version, &gcc_version)) {
++              error(G_("incompatible gcc/plugin versions"));
++              return 1;
++      }
++
++      register_callback(plugin_name, PLUGIN_INFO, NULL, &colorize_plugin_info);
++      register_callback(plugin_name, PLUGIN_START_UNIT, &colorize_start_unit, NULL);
++      register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &colorize_rearm_pass_info);
++      return 0;
++}
 diff --git a/tools/gcc/constify_plugin.c b/tools/gcc/constify_plugin.c
 new file mode 100644
 index 0000000..704a564
 diff --git a/tools/gcc/constify_plugin.c b/tools/gcc/constify_plugin.c
 new file mode 100644
 index 0000000..704a564
@@ -80689,10 +81442,10 @@ index 0000000..a5eabce
 +}
 diff --git a/tools/gcc/kernexec_plugin.c b/tools/gcc/kernexec_plugin.c
 new file mode 100644
 +}
 diff --git a/tools/gcc/kernexec_plugin.c b/tools/gcc/kernexec_plugin.c
 new file mode 100644
-index 0000000..51f747e
+index 0000000..008f159
 --- /dev/null
 +++ b/tools/gcc/kernexec_plugin.c
 --- /dev/null
 +++ b/tools/gcc/kernexec_plugin.c
-@@ -0,0 +1,348 @@
+@@ -0,0 +1,427 @@
 +/*
 + * Copyright 2011 by the PaX Team <pageexec@freemail.hu>
 + * Licensed under the GPL v2
 +/*
 + * Copyright 2011 by the PaX Team <pageexec@freemail.hu>
 + * Licensed under the GPL v2
@@ -80740,13 +81493,32 @@ index 0000000..51f747e
 +      .help           = "method=[bts|or]\tinstrumentation method\n"
 +};
 +
 +      .help           = "method=[bts|or]\tinstrumentation method\n"
 +};
 +
++static unsigned int execute_kernexec_reload(void);
 +static unsigned int execute_kernexec_fptr(void);
 +static unsigned int execute_kernexec_retaddr(void);
 +static bool kernexec_cmodel_check(void);
 +
 +static unsigned int execute_kernexec_fptr(void);
 +static unsigned int execute_kernexec_retaddr(void);
 +static bool kernexec_cmodel_check(void);
 +
-+static void (*kernexec_instrument_fptr)(gimple_stmt_iterator);
++static void (*kernexec_instrument_fptr)(gimple_stmt_iterator *);
 +static void (*kernexec_instrument_retaddr)(rtx);
 +
 +static void (*kernexec_instrument_retaddr)(rtx);
 +
++static struct gimple_opt_pass kernexec_reload_pass = {
++      .pass = {
++              .type                   = GIMPLE_PASS,
++              .name                   = "kernexec_reload",
++              .gate                   = kernexec_cmodel_check,
++              .execute                = execute_kernexec_reload,
++              .sub                    = NULL,
++              .next                   = NULL,
++              .static_pass_number     = 0,
++              .tv_id                  = TV_NONE,
++              .properties_required    = 0,
++              .properties_provided    = 0,
++              .properties_destroyed   = 0,
++              .todo_flags_start       = 0,
++              .todo_flags_finish      = TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_remove_unused_locals | TODO_update_ssa_no_phi
++      }
++};
++
 +static struct gimple_opt_pass kernexec_fptr_pass = {
 +      .pass = {
 +              .type                   = GIMPLE_PASS,
 +static struct gimple_opt_pass kernexec_fptr_pass = {
 +      .pass = {
 +              .type                   = GIMPLE_PASS,
@@ -80802,15 +81574,66 @@ index 0000000..51f747e
 +}
 +
 +/*
 +}
 +
 +/*
++ * add special KERNEXEC instrumentation: reload %r10 after it has been clobbered
++ */
++static void kernexec_reload_fptr_mask(gimple_stmt_iterator *gsi)
++{
++      gimple asm_movabs_stmt;
++
++      // build asm volatile("movabs $0x8000000000000000, %%r10\n\t" : : : );
++      asm_movabs_stmt = gimple_build_asm_vec("movabs $0x8000000000000000, %%r10\n\t", NULL, NULL, NULL, NULL);
++      gimple_asm_set_volatile(asm_movabs_stmt, true);
++      gsi_insert_after(gsi, asm_movabs_stmt, GSI_CONTINUE_LINKING);
++      update_stmt(asm_movabs_stmt);
++}
++
++/*
++ * find all asm() stmts that clobber r10 and add a reload of r10
++ */
++static unsigned int execute_kernexec_reload(void)
++{
++      basic_block bb;
++
++      // 1. loop through BBs and GIMPLE statements
++      FOR_EACH_BB(bb) {
++              gimple_stmt_iterator gsi;
++
++              for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
++                      // gimple match: __asm__ ("" :  :  : "r10");
++                      gimple asm_stmt;
++                      size_t nclobbers;
++
++                      // is it an asm ...
++                      asm_stmt = gsi_stmt(gsi);
++                      if (gimple_code(asm_stmt) != GIMPLE_ASM)
++                              continue;
++
++                      // ... clobbering r10
++                      nclobbers = gimple_asm_nclobbers(asm_stmt);
++                      while (nclobbers--) {
++                              tree op = gimple_asm_clobber_op(asm_stmt, nclobbers);
++                              if (strcmp(TREE_STRING_POINTER(TREE_VALUE(op)), "r10"))
++                                      continue;
++                              kernexec_reload_fptr_mask(&gsi);
++//print_gimple_stmt(stderr, asm_stmt, 0, TDF_LINENO);
++                              break;
++                      }
++              }
++      }
++
++      return 0;
++}
++
++/*
 + * add special KERNEXEC instrumentation: force MSB of fptr to 1, which will produce
 + * a non-canonical address from a userland ptr and will just trigger a GPF on dereference
 + */
 + * add special KERNEXEC instrumentation: force MSB of fptr to 1, which will produce
 + * a non-canonical address from a userland ptr and will just trigger a GPF on dereference
 + */
-+static void kernexec_instrument_fptr_bts(gimple_stmt_iterator gsi)
++static void kernexec_instrument_fptr_bts(gimple_stmt_iterator *gsi)
 +{
 +      gimple assign_intptr, assign_new_fptr, call_stmt;
 +      tree intptr, old_fptr, new_fptr, kernexec_mask;
 +
 +{
 +      gimple assign_intptr, assign_new_fptr, call_stmt;
 +      tree intptr, old_fptr, new_fptr, kernexec_mask;
 +
-+      call_stmt = gsi_stmt(gsi);
++      call_stmt = gsi_stmt(*gsi);
 +      old_fptr = gimple_call_fn(call_stmt);
 +
 +      // create temporary unsigned long variable used for bitops and cast fptr to it
 +      old_fptr = gimple_call_fn(call_stmt);
 +
 +      // create temporary unsigned long variable used for bitops and cast fptr to it
@@ -80818,14 +81641,14 @@ index 0000000..51f747e
 +      add_referenced_var(intptr);
 +      mark_sym_for_renaming(intptr);
 +      assign_intptr = gimple_build_assign(intptr, fold_convert(long_unsigned_type_node, old_fptr));
 +      add_referenced_var(intptr);
 +      mark_sym_for_renaming(intptr);
 +      assign_intptr = gimple_build_assign(intptr, fold_convert(long_unsigned_type_node, old_fptr));
-+      gsi_insert_before(&gsi, assign_intptr, GSI_SAME_STMT);
++      gsi_insert_before(gsi, assign_intptr, GSI_SAME_STMT);
 +      update_stmt(assign_intptr);
 +
 +      // apply logical or to temporary unsigned long and bitmask
 +      kernexec_mask = build_int_cstu(long_long_unsigned_type_node, 0x8000000000000000LL);
 +//    kernexec_mask = build_int_cstu(long_long_unsigned_type_node, 0xffffffff80000000LL);
 +      assign_intptr = gimple_build_assign(intptr, fold_build2(BIT_IOR_EXPR, long_long_unsigned_type_node, intptr, kernexec_mask));
 +      update_stmt(assign_intptr);
 +
 +      // apply logical or to temporary unsigned long and bitmask
 +      kernexec_mask = build_int_cstu(long_long_unsigned_type_node, 0x8000000000000000LL);
 +//    kernexec_mask = build_int_cstu(long_long_unsigned_type_node, 0xffffffff80000000LL);
 +      assign_intptr = gimple_build_assign(intptr, fold_build2(BIT_IOR_EXPR, long_long_unsigned_type_node, intptr, kernexec_mask));
-+      gsi_insert_before(&gsi, assign_intptr, GSI_SAME_STMT);
++      gsi_insert_before(gsi, assign_intptr, GSI_SAME_STMT);
 +      update_stmt(assign_intptr);
 +
 +      // cast temporary unsigned long back to a temporary fptr variable
 +      update_stmt(assign_intptr);
 +
 +      // cast temporary unsigned long back to a temporary fptr variable
@@ -80833,7 +81656,7 @@ index 0000000..51f747e
 +      add_referenced_var(new_fptr);
 +      mark_sym_for_renaming(new_fptr);
 +      assign_new_fptr = gimple_build_assign(new_fptr, fold_convert(TREE_TYPE(old_fptr), intptr));
 +      add_referenced_var(new_fptr);
 +      mark_sym_for_renaming(new_fptr);
 +      assign_new_fptr = gimple_build_assign(new_fptr, fold_convert(TREE_TYPE(old_fptr), intptr));
-+      gsi_insert_before(&gsi, assign_new_fptr, GSI_SAME_STMT);
++      gsi_insert_before(gsi, assign_new_fptr, GSI_SAME_STMT);
 +      update_stmt(assign_new_fptr);
 +
 +      // replace call stmt fn with the new fptr
 +      update_stmt(assign_new_fptr);
 +
 +      // replace call stmt fn with the new fptr
@@ -80841,14 +81664,14 @@ index 0000000..51f747e
 +      update_stmt(call_stmt);
 +}
 +
 +      update_stmt(call_stmt);
 +}
 +
-+static void kernexec_instrument_fptr_or(gimple_stmt_iterator gsi)
++static void kernexec_instrument_fptr_or(gimple_stmt_iterator *gsi)
 +{
 +      gimple asm_or_stmt, call_stmt;
 +      tree old_fptr, new_fptr, input, output;
 +      VEC(tree, gc) *inputs = NULL;
 +      VEC(tree, gc) *outputs = NULL;
 +
 +{
 +      gimple asm_or_stmt, call_stmt;
 +      tree old_fptr, new_fptr, input, output;
 +      VEC(tree, gc) *inputs = NULL;
 +      VEC(tree, gc) *outputs = NULL;
 +
-+      call_stmt = gsi_stmt(gsi);
++      call_stmt = gsi_stmt(*gsi);
 +      old_fptr = gimple_call_fn(call_stmt);
 +
 +      // create temporary fptr variable
 +      old_fptr = gimple_call_fn(call_stmt);
 +
 +      // create temporary fptr variable
@@ -80865,7 +81688,7 @@ index 0000000..51f747e
 +      VEC_safe_push(tree, gc, outputs, output);
 +      asm_or_stmt = gimple_build_asm_vec("orq %%r10, %0\n\t", inputs, outputs, NULL, NULL);
 +      gimple_asm_set_volatile(asm_or_stmt, true);
 +      VEC_safe_push(tree, gc, outputs, output);
 +      asm_or_stmt = gimple_build_asm_vec("orq %%r10, %0\n\t", inputs, outputs, NULL, NULL);
 +      gimple_asm_set_volatile(asm_or_stmt, true);
-+      gsi_insert_before(&gsi, asm_or_stmt, GSI_SAME_STMT);
++      gsi_insert_before(gsi, asm_or_stmt, GSI_SAME_STMT);
 +      update_stmt(asm_or_stmt);
 +
 +      // replace call stmt fn with the new fptr
 +      update_stmt(asm_or_stmt);
 +
 +      // replace call stmt fn with the new fptr
@@ -80879,10 +81702,11 @@ index 0000000..51f747e
 +static unsigned int execute_kernexec_fptr(void)
 +{
 +      basic_block bb;
 +static unsigned int execute_kernexec_fptr(void)
 +{
 +      basic_block bb;
-+      gimple_stmt_iterator gsi;
 +
 +      // 1. loop through BBs and GIMPLE statements
 +      FOR_EACH_BB(bb) {
 +
 +      // 1. loop through BBs and GIMPLE statements
 +      FOR_EACH_BB(bb) {
++              gimple_stmt_iterator gsi;
++
 +              for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
 +                      // gimple match: h_1 = get_fptr (); D.2709_3 = h_1 (x_2(D));
 +                      tree fn;
 +              for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
 +                      // gimple match: h_1 = get_fptr (); D.2709_3 = h_1 (x_2(D));
 +                      tree fn;
@@ -80909,7 +81733,7 @@ index 0000000..51f747e
 +                      if (TREE_CODE(fn) != FUNCTION_TYPE)
 +                              continue;
 +
 +                      if (TREE_CODE(fn) != FUNCTION_TYPE)
 +                              continue;
 +
-+                      kernexec_instrument_fptr(gsi);
++                      kernexec_instrument_fptr(&gsi);
 +
 +//debug_tree(gimple_call_fn(call_stmt));
 +//print_gimple_stmt(stderr, call_stmt, 0, TDF_LINENO);
 +
 +//debug_tree(gimple_call_fn(call_stmt));
 +//print_gimple_stmt(stderr, call_stmt, 0, TDF_LINENO);
@@ -80991,6 +81815,12 @@ index 0000000..51f747e
 +      const int argc = plugin_info->argc;
 +      const struct plugin_argument * const argv = plugin_info->argv;
 +      int i;
 +      const int argc = plugin_info->argc;
 +      const struct plugin_argument * const argv = plugin_info->argv;
 +      int i;
++      struct register_pass_info kernexec_reload_pass_info = {
++              .pass                           = &kernexec_reload_pass.pass,
++              .reference_pass_name            = "ssa",
++              .ref_pass_instance_number       = 0,
++              .pos_op                         = PASS_POS_INSERT_AFTER
++      };
 +      struct register_pass_info kernexec_fptr_pass_info = {
 +              .pass                           = &kernexec_fptr_pass.pass,
 +              .reference_pass_name            = "ssa",
 +      struct register_pass_info kernexec_fptr_pass_info = {
 +              .pass                           = &kernexec_fptr_pass.pass,
 +              .reference_pass_name            = "ssa",
@@ -81036,17 +81866,3883 @@ index 0000000..51f747e
 +      if (!kernexec_instrument_fptr || !kernexec_instrument_retaddr)
 +              error(G_("no instrumentation method was selected via '-fplugin-arg-%s-method'"), plugin_name);
 +
 +      if (!kernexec_instrument_fptr || !kernexec_instrument_retaddr)
 +              error(G_("no instrumentation method was selected via '-fplugin-arg-%s-method'"), plugin_name);
 +
++      if (kernexec_instrument_fptr == kernexec_instrument_fptr_or)
++              register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kernexec_reload_pass_info);
 +      register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kernexec_fptr_pass_info);
 +      register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kernexec_retaddr_pass_info);
 +
 +      return 0;
 +}
 +      register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kernexec_fptr_pass_info);
 +      register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &kernexec_retaddr_pass_info);
 +
 +      return 0;
 +}
+diff --git a/tools/gcc/size_overflow_hash1.h b/tools/gcc/size_overflow_hash1.h
+new file mode 100644
+index 0000000..55a1292
+--- /dev/null
++++ b/tools/gcc/size_overflow_hash1.h
+@@ -0,0 +1,2760 @@
++struct size_overflow_hash size_overflow_hash1[65536] = {
++      [10013].file    = "security/smack/smackfs.c",
++      [10013].name    = "smk_write_direct",
++      [10013].param3  = 1,
++      [10167].file    = "sound/core/oss/pcm_plugin.c",
++      [10167].name    = "snd_pcm_plugin_build",
++      [10167].param5  = 1,
++      [1020].file     = "drivers/usb/misc/usbtest.c",
++      [1020].name     = "test_unaligned_bulk",
++      [1020].param3   = 1,
++      [1022].file     = "sound/pci/rme9652/rme9652.c",
++      [1022].name     = "snd_rme9652_playback_copy",
++      [1022].param5   = 1,
++      [10341].file    = "fs/nfsd/nfs4xdr.c",
++      [10341].name    = "read_buf",
++      [10341].param2  = 1,
++      [10357].file    = "net/sunrpc/cache.c",
++      [10357].name    = "cache_read",
++      [10357].param3  = 1,
++      [10397].file    = "drivers/gpu/drm/i915/i915_debugfs.c",
++      [10397].name    = "i915_wedged_write",
++      [10397].param3  = 1,
++      [10414].file    = "drivers/tty/vt/vt.c",
++      [10414].name    = "vc_do_resize",
++      [10414].param3  = 1,
++      [10414].param4  = 1,
++      [10496].file    = "drivers/bluetooth/hci_vhci.c",
++      [10496].name    = "vhci_read",
++      [10496].param3  = 1,
++      [10565].file    = "drivers/input/touchscreen/ad7879-spi.c",
++      [10565].name    = "ad7879_spi_multi_read",
++      [10565].param3  = 1,
++      [10623].file    = "drivers/infiniband/core/user_mad.c",
++      [10623].name    = "ib_umad_write",
++      [10623].param3  = 1,
++      [10707].file    = "fs/nfs/idmap.c",
++      [10707].name    = "nfs_idmap_request_key",
++      [10707].param2  = 1,
++      [10773].file    = "drivers/input/mousedev.c",
++      [10773].name    = "mousedev_read",
++      [10773].param3  = 1,
++      [10777].file    = "fs/ntfs/file.c",
++      [10777].name    = "ntfs_file_buffered_write",
++      [10777].param6  = 1,
++      [10919].file    = "net/ipv4/netfilter/arp_tables.c",
++      [10919].name    = "do_arpt_set_ctl",
++      [10919].param4  = 1,
++      [11054].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [11054].name    = "lbs_wrmac_write",
++      [11054].param3  = 1,
++      [11068].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [11068].name    = "lbs_wrrf_write",
++      [11068].param3  = 1,
++      [11364].file    = "fs/ext4/super.c",
++      [11364].name    = "ext4_kvzalloc",
++      [11364].param1  = 1,
++      [11402].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [11402].name    = "lbs_threshold_write",
++      [11402].param5  = 1,
++      [11494].file    = "drivers/video/via/viafbdev.c",
++      [11494].name    = "viafb_dvp1_proc_write",
++      [11494].param3  = 1,
++      [11616].file    = "security/selinux/selinuxfs.c",
++      [11616].name    = "sel_write_enforce",
++      [11616].param3  = 1,
++      [11699].file    = "drivers/net/ethernet/neterion/vxge/vxge-config.h",
++      [11699].name    = "vxge_os_dma_malloc",
++      [11699].param2  = 1,
++      [11766].file    = "drivers/block/paride/pt.c",
++      [11766].name    = "pt_read",
++      [11766].param3  = 1,
++      [11784].file    = "fs/bio.c",
++      [11784].name    = "bio_kmalloc",
++      [11784].param2  = 1,
++      [11814].file    = "drivers/staging/speakup/kobjects.c",
++      [11814].name    = "keymap_store",
++      [11814].param4  = 1,
++      [11912].file    = "net/sunrpc/cache.c",
++      [11912].name    = "cache_write_pipefs",
++      [11912].param3  = 1,
++      [11919].file    = "drivers/lguest/core.c",
++      [11919].name    = "__lgread",
++      [11919].param4  = 1,
++      [11986].file    = "drivers/net/usb/asix.c",
++      [11986].name    = "asix_read_cmd",
++      [11986].param5  = 1,
++      [12059].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [12059].name    = "lbs_debugfs_write",
++      [12059].param3  = 1,
++      [12071].file    = "lib/kstrtox.c",
++      [12071].name    = "kstrtou8_from_user",
++      [12071].param2  = 1,
++      [12151].file    = "fs/compat.c",
++      [12151].name    = "compat_rw_copy_check_uvector",
++      [12151].param3  = 1,
++      [12205].file    = "fs/reiserfs/journal.c",
++      [12205].name    = "reiserfs_allocate_list_bitmaps",
++      [12205].param3  = 1,
++      [12234].file    = "include/acpi/platform/aclinux.h",
++      [12234].name    = "acpi_os_allocate",
++      [12234].param1  = 1,
++      [1227].file     = "lib/cpu_rmap.c",
++      [1227].name     = "alloc_cpu_rmap",
++      [1227].param1   = 1,
++      [12395].file    = "drivers/char/hw_random/core.c",
++      [12395].name    = "rng_dev_read",
++      [12395].param3  = 1,
++      [1248].file     = "kernel/kprobes.c",
++      [1248].name     = "write_enabled_file_bool",
++      [1248].param3   = 1,
++      [12501].file    = "net/mac80211/debugfs.c",
++      [12501].name    = "uapsd_max_sp_len_write",
++      [12501].param3  = 1,
++      [12591].file    = "sound/core/pcm_lib.c",
++      [12591].name    = "snd_pcm_lib_writev_transfer",
++      [12591].param5  = 1,
++      [12602].file    = "net/sunrpc/cache.c",
++      [12602].name    = "cache_downcall",
++      [12602].param3  = 1,
++      [12712].file    = "drivers/net/wimax/i2400m/fw.c",
++      [12712].name    = "i2400m_zrealloc_2x",
++      [12712].param3  = 1,
++      [12755].file    = "sound/drivers/opl4/opl4_proc.c",
++      [12755].name    = "snd_opl4_mem_proc_read",
++      [12755].param5  = 1,
++      [12833].file    = "net/sctp/auth.c",
++      [12833].name    = "sctp_auth_create_key",
++      [12833].param1  = 1,
++      [12840].file    = "net/sctp/tsnmap.c",
++      [12840].name    = "sctp_tsnmap_mark",
++      [12840].param2  = 1,
++      [12896].file    = "drivers/net/wireless/wl12xx/debugfs.c",
++      [12896].name    = "beacon_filtering_write",
++      [12896].param3  = 1,
++      [12931].file    = "drivers/hid/hid-roccat.c",
++      [12931].name    = "roccat_read",
++      [12931].param3  = 1,
++      [12954].file    = "fs/proc/base.c",
++      [12954].name    = "oom_adjust_write",
++      [12954].param3  = 1,
++      [13013].file    = "drivers/media/dvb/ttpci/av7110_ca.c",
++      [13013].name    = "dvb_ca_write",
++      [13013].param3  = 1,
++      [13103].file    = "drivers/acpi/acpica/utobject.c",
++      [13103].name    = "acpi_ut_create_string_object",
++      [13103].param1  = 1,
++      [13121].file    = "net/ipv4/ip_sockglue.c",
++      [13121].name    = "do_ip_setsockopt",
++      [13121].param5  = 1,
++      [13337].file    = "net/core/iovec.c",
++      [13337].name    = "csum_partial_copy_fromiovecend",
++      [13337].param4  = 1,
++      [13339].file    = "security/smack/smackfs.c",
++      [13339].name    = "smk_write_netlbladdr",
++      [13339].param3  = 1,
++      [13342].file    = "fs/jbd2/journal.c",
++      [13342].name    = "jbd2_alloc",
++      [13342].param1  = 1,
++      [13412].file    = "fs/proc/base.c",
++      [13412].name    = "oom_score_adj_write",
++      [13412].param3  = 1,
++      [13659].file    = "drivers/net/wan/hdlc.c",
++      [13659].name    = "attach_hdlc_protocol",
++      [13659].param3  = 1,
++      [13708].file    = "drivers/usb/misc/usbtest.c",
++      [13708].name    = "simple_alloc_urb",
++      [13708].param3  = 1,
++      [13863].file    = "drivers/net/wireless/iwlwifi/iwl-agn-rs.c",
++      [13863].name    = "rs_sta_dbgfs_scale_table_write",
++      [13863].param3  = 1,
++      [13924].file    = "net/ipv4/netfilter/ip_tables.c",
++      [13924].name    = "do_ipt_set_ctl",
++      [13924].param4  = 1,
++      [14019].file    = "net/dns_resolver/dns_key.c",
++      [14019].name    = "dns_resolver_instantiate",
++      [14019].param2  = 1,
++      [14019].param3  = 1,
++      [14025].file    = "net/ax25/af_ax25.c",
++      [14025].name    = "ax25_setsockopt",
++      [14025].param5  = 1,
++      [14029].file    = "drivers/spi/spidev.c",
++      [14029].name    = "spidev_compat_ioctl",
++      [14029].param2  = 1,
++      [14031].file    = "drivers/net/wireless/ath/ath5k/debug.c",
++      [14031].name    = "write_file_beacon",
++      [14031].param3  = 1,
++      [14086].file    = "fs/nfs/nfs4proc.c",
++      [14086].name    = "nfs4_reset_slot_table",
++      [14086].param2  = 1,
++      [14090].file    = "drivers/bluetooth/btmrvl_debugfs.c",
++      [14090].name    = "btmrvl_hsmode_write",
++      [14090].param3  = 1,
++      [14125].file    = "kernel/module.c",
++      [14125].name    = "load_module",
++      [14125].param2  = 1,
++      [14149].file    = "drivers/hid/hidraw.c",
++      [14149].name    = "hidraw_ioctl",
++      [14149].param2  = 1,
++      [14153].file    = "drivers/staging/bcm/led_control.c",
++      [14153].name    = "ValidateDSDParamsChecksum",
++      [14153].param3  = 1,
++      [14174].file    = "sound/pci/es1938.c",
++      [14174].name    = "snd_es1938_capture_copy",
++      [14174].param5  = 1,
++      [14207].file    = "drivers/media/video/v4l2-event.c",
++      [14207].name    = "v4l2_event_subscribe",
++      [14207].param3  = 1,
++      [14241].file    = "drivers/platform/x86/asus_acpi.c",
++      [14241].name    = "brn_proc_write",
++      [14241].param3  = 1,
++      [14299].file    = "sound/core/oss/pcm_plugin.c",
++      [14299].name    = "snd_pcm_plugin_alloc",
++      [14299].param2  = 1,
++      [14345].file    = "fs/cachefiles/daemon.c",
++      [14345].name    = "cachefiles_daemon_write",
++      [14345].param3  = 1,
++      [14347].file    = "drivers/media/dvb/dvb-core/dvb_ca_en50221.c",
++      [14347].name    = "dvb_ca_en50221_io_write",
++      [14347].param3  = 1,
++      [14462].file    = "fs/namei.c",
++      [14462].name    = "sys_rmdir",
++      [14462].param1  = 1,
++      [14478].file    = "drivers/char/random.c",
++      [14478].name    = "random_write",
++      [14478].param3  = 1,
++      [1458].file     = "drivers/misc/lkdtm.c",
++      [1458].name     = "direct_entry",
++      [1458].param3   = 1,
++      [145].file      = "lib/xz/xz_dec_test.c",
++      [145].name      = "xz_dec_test_write",
++      [145].param3    = 1,
++      [14646].file    = "fs/compat.c",
++      [14646].name    = "compat_writev",
++      [14646].param3  = 1,
++      [14736].file    = "drivers/usb/misc/usbtest.c",
++      [14736].name    = "unlink_queued",
++      [14736].param3  = 1,
++      [14842].file    = "fs/namei.c",
++      [14842].name    = "sys_renameat",
++      [14842].param2  = 1,
++      [14842].param4  = 1,
++      [15017].file    = "drivers/edac/edac_device.c",
++      [15017].name    = "edac_device_alloc_ctl_info",
++      [15017].param1  = 1,
++      [15087].file    = "fs/bio.c",
++      [15087].name    = "bio_map_kern",
++      [15087].param2  = 1,
++      [15087].param3  = 1,
++      [15112].file    = "drivers/xen/evtchn.c",
++      [15112].name    = "evtchn_write",
++      [15112].param3  = 1,
++      [15274].file    = "crypto/shash.c",
++      [15274].name    = "crypto_shash_setkey",
++      [15274].param3  = 1,
++      [15361].file    = "drivers/char/agp/generic.c",
++      [15361].name    = "agp_allocate_memory",
++      [15361].param2  = 1,
++      [15497].file    = "drivers/media/dvb/ddbridge/ddbridge-core.c",
++      [15497].name    = "ts_read",
++      [15497].param3  = 1,
++      [15551].file    = "net/ipv4/netfilter/ipt_CLUSTERIP.c",
++      [15551].name    = "clusterip_proc_write",
++      [15551].param3  = 1,
++      [15701].file    = "drivers/hid/hid-roccat-common.c",
++      [15701].name    = "roccat_common_receive",
++      [15701].param4  = 1,
++      [1572].file     = "net/ceph/pagevec.c",
++      [1572].name     = "ceph_copy_page_vector_to_user",
++      [1572].param4   = 1,
++      [15814].file    = "net/mac80211/debugfs_netdev.c",
++      [15814].name    = "ieee80211_if_write",
++      [15814].param3  = 1,
++      [15883].file    = "security/keys/keyctl.c",
++      [15883].name    = "sys_add_key",
++      [15883].param4  = 1,
++      [15884].file    = "fs/exofs/super.c",
++      [15884].name    = "exofs_read_lookup_dev_table",
++      [15884].param3  = 1,
++      [1603].file     = "fs/debugfs/file.c",
++      [1603].name     = "write_file_bool",
++      [1603].param3   = 1,
++      [16073].file    = "net/sctp/socket.c",
++      [16073].name    = "sctp_setsockopt",
++      [16073].param5  = 1,
++      [16138].file    = "security/selinux/ss/services.c",
++      [16138].name    = "security_context_to_sid_force",
++      [16138].param2  = 1,
++      [16166].file    = "drivers/platform/x86/thinkpad_acpi.c",
++      [16166].name    = "dispatch_proc_write",
++      [16166].param3  = 1,
++      [16229].file    = "drivers/scsi/scsi_transport_iscsi.c",
++      [16229].name    = "iscsi_offload_mesg",
++      [16229].param5  = 1,
++      [16353].file    = "drivers/base/regmap/regmap.c",
++      [16353].name    = "regmap_raw_write",
++      [16353].param4  = 1,
++      [16383].file    = "fs/proc/base.c",
++      [16383].name    = "comm_write",
++      [16383].param3  = 1,
++      [16447].file    = "drivers/hid/usbhid/hiddev.c",
++      [16447].name    = "hiddev_ioctl",
++      [16447].param2  = 1,
++      [16453].file    = "include/linux/slab.h",
++      [16453].name    = "kzalloc",
++      [16453].param1  = 1,
++      [16535].file    = "fs/proc/generic.c",
++      [16535].name    = "proc_file_read",
++      [16535].param3  = 1,
++      [16605].file    = "fs/ecryptfs/miscdev.c",
++      [16605].name    = "ecryptfs_send_miscdev",
++      [16605].param2  = 1,
++      [16606].file    = "drivers/ide/ide-tape.c",
++      [16606].name    = "idetape_chrdev_write",
++      [16606].param3  = 1,
++      [16741].file    = "fs/namei.c",
++      [16741].name    = "sys_unlinkat",
++      [16741].param2  = 1,
++      [16911].file    = "drivers/media/dvb/ttpci/av7110_hw.c",
++      [16911].name    = "LoadBitmap",
++      [16911].param2  = 1,
++      [17075].file    = "sound/isa/gus/gus_dram.c",
++      [17075].name    = "snd_gus_dram_write",
++      [17075].param4  = 1,
++      [17133].file    = "drivers/usb/misc/iowarrior.c",
++      [17133].name    = "iowarrior_read",
++      [17133].param3  = 1,
++      [17139].file    = "fs/ubifs/xattr.c",
++      [17139].name    = "ubifs_setxattr",
++      [17139].param4  = 1,
++      [17185].file    = "net/wireless/scan.c",
++      [17185].name    = "cfg80211_inform_bss",
++      [17185].param8  = 1,
++      [17349].file    = "net/tipc/link.c",
++      [17349].name    = "tipc_link_send_sections_fast",
++      [17349].param4  = 1,
++      [17377].file    = "drivers/usb/class/cdc-wdm.c",
++      [17377].name    = "wdm_write",
++      [17377].param3  = 1,
++      [17459].file    = "drivers/usb/misc/rio500.c",
++      [17459].name    = "write_rio",
++      [17459].param3  = 1,
++      [17460].file    = "fs/nfsd/nfscache.c",
++      [17460].name    = "nfsd_cache_update",
++      [17460].param3  = 1,
++      [17492].file    = "net/dccp/proto.c",
++      [17492].name    = "do_dccp_setsockopt",
++      [17492].param5  = 1,
++      [1754].file     = "sound/core/oss/pcm_oss.c",
++      [1754].name     = "snd_pcm_oss_write",
++      [1754].param3   = 1,
++      [17571].file    = "drivers/ptp/ptp_chardev.c",
++      [17571].name    = "ptp_read",
++      [17571].param4  = 1,
++      [17684].file    = "fs/namei.c",
++      [17684].name    = "sys_mknod",
++      [17684].param1  = 1,
++      [17718].file    = "net/caif/caif_socket.c",
++      [17718].name    = "setsockopt",
++      [17718].param5  = 1,
++      [17875].file    = "fs/namei.c",
++      [17875].name    = "sys_linkat",
++      [17875].param2  = 1,
++      [17875].param4  = 1,
++      [17946].file    = "drivers/net/wireless/libertas/if_spi.c",
++      [17946].name    = "if_spi_host_to_card",
++      [17946].param4  = 1,
++      [1800].file     = "drivers/media/dvb/dvb-core/dmxdev.c",
++      [1800].name     = "dvb_dvr_do_ioctl",
++      [1800].param3   = 1,
++      [18102].file    = "net/netlink/af_netlink.c",
++      [18102].name    = "netlink_change_ngroups",
++      [18102].param2  = 1,
++      [18183].file    = "drivers/tty/tty_buffer.c",
++      [18183].name    = "tty_insert_flip_string_fixed_flag",
++      [18183].param4  = 1,
++      [18224].file    = "drivers/xen/grant-table.c",
++      [18224].name    = "gnttab_map",
++      [18224].param2  = 1,
++      [18232].file    = "fs/nfs/write.c",
++      [18232].name    = "nfs_writedata_alloc",
++      [18232].param1  = 1,
++      [18277].file    = "drivers/char/virtio_console.c",
++      [18277].name    = "port_fops_write",
++      [18277].param3  = 1,
++      [18303].file    = "fs/xattr.c",
++      [18303].name    = "getxattr",
++      [18303].param4  = 1,
++      [18353].file    = "net/rfkill/core.c",
++      [18353].name    = "rfkill_fop_read",
++      [18353].param3  = 1,
++      [18386].file    = "fs/read_write.c",
++      [18386].name    = "vfs_readv",
++      [18386].param3  = 1,
++      [18391].file    = "fs/ocfs2/stack_user.c",
++      [18391].name    = "ocfs2_control_write",
++      [18391].param3  = 1,
++      [183].file      = "crypto/ahash.c",
++      [183].name      = "crypto_ahash_setkey",
++      [183].param3    = 1,
++      [18406].file    = "drivers/media/video/tm6000/tm6000-core.c",
++      [18406].name    = "tm6000_read_write_usb",
++      [18406].param7  = 1,
++      [1845].file     = "drivers/net/wireless/rt2x00/rt2x00debug.c",
++      [1845].name     = "rt2x00debug_write_rf",
++      [1845].param3   = 1,
++      [18465].file    = "drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c",
++      [18465].name    = "cxgb_alloc_mem",
++      [18465].param1  = 1,
++      [1858].file     = "net/ipv6/netfilter/ip6_tables.c",
++      [1858].name     = "do_ip6t_set_ctl",
++      [1858].param4   = 1,
++      [18659].file    = "drivers/media/dvb/dvb-core/dvbdev.c",
++      [18659].name    = "dvb_usercopy",
++      [18659].param2  = 1,
++      [18775].file    = "drivers/net/wireless/ath/ath5k/debug.c",
++      [18775].name    = "write_file_frameerrors",
++      [18775].param3  = 1,
++      [18928].file    = "drivers/staging/speakup/devsynth.c",
++      [18928].name    = "speakup_file_write",
++      [18928].param3  = 1,
++      [18988].file    = "drivers/staging/vme/devices/vme_user.c",
++      [18988].name    = "vme_user_read",
++      [18988].param3  = 1,
++      [19012].file    = "drivers/acpi/event.c",
++      [19012].name    = "acpi_system_read_event",
++      [19012].param3  = 1,
++      [19028].file    = "mm/filemap.c",
++      [19028].name    = "iov_iter_copy_from_user_atomic",
++      [19028].param4  = 1,
++      [19107].file    = "security/smack/smackfs.c",
++      [19107].name    = "smk_write_load_list",
++      [19107].param3  = 1,
++      [19261].file    = "net/netlabel/netlabel_domainhash.c",
++      [19261].name    = "netlbl_domhsh_init",
++      [19261].param1  = 1,
++      [19274].file    = "net/core/pktgen.c",
++      [19274].name    = "pktgen_if_write",
++      [19274].param3  = 1,
++      [19286].file    = "drivers/base/regmap/regmap.c",
++      [19286].name    = "_regmap_raw_write",
++      [19286].param4  = 1,
++      [19288].file    = "net/ipv6/raw.c",
++      [19288].name    = "rawv6_setsockopt",
++      [19288].param5  = 1,
++      [19308].file    = "drivers/char/mem.c",
++      [19308].name    = "read_oldmem",
++      [19308].param3  = 1,
++      [19332].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [19332].name    = "iwl_dbgfs_plcp_delta_write",
++      [19332].param3  = 1,
++      [19349].file    = "drivers/acpi/acpica/utobject.c",
++      [19349].name    = "acpi_ut_create_package_object",
++      [19349].param1  = 1,
++      [19504].file    = "drivers/usb/serial/garmin_gps.c",
++      [19504].name    = "pkt_add",
++      [19504].param3  = 1,
++      [19522].file    = "mm/percpu.c",
++      [19522].name    = "pcpu_mem_zalloc",
++      [19522].param1  = 1,
++      [19548].file    = "drivers/scsi/qla2xxx/qla_init.c",
++      [19548].name    = "qla2x00_get_ctx_sp",
++      [19548].param3  = 1,
++      [19738].file    = "fs/sysfs/file.c",
++      [19738].name    = "sysfs_write_file",
++      [19738].param3  = 1,
++      [19833].file    = "drivers/xen/xenfs/privcmd.c",
++      [19833].name    = "gather_array",
++      [19833].param3  = 1,
++      [19909].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [19909].name    = "lbs_sleepparams_write",
++      [19909].param3  = 1,
++      [19920].file    = "drivers/input/joydev.c",
++      [19920].name    = "joydev_ioctl",
++      [19920].param2  = 1,
++      [19931].file    = "drivers/usb/misc/ftdi-elan.c",
++      [19931].name    = "ftdi_elan_write",
++      [19931].param3  = 1,
++      [19943].file    = "drivers/net/wireless/ath/ath9k/debug.c",
++      [19943].name    = "write_file_regval",
++      [19943].param3  = 1,
++      [19960].file    = "drivers/usb/class/usblp.c",
++      [19960].name    = "usblp_read",
++      [19960].param3  = 1,
++      [20023].file    = "drivers/media/video/gspca/gspca.c",
++      [20023].name    = "dev_read",
++      [20023].param3  = 1,
++      [20113].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [20113].name    = "lbs_rdmac_write",
++      [20113].param3  = 1,
++      [20314].file    = "drivers/gpu/drm/drm_hashtab.c",
++      [20314].name    = "drm_ht_create",
++      [20314].param2  = 1,
++      [20376].file    = "mm/nobootmem.c",
++      [20376].name    = "__alloc_bootmem_nopanic",
++      [20376].param1  = 1,
++      [20606].file    = "fs/nilfs2/mdt.c",
++      [20606].name    = "nilfs_mdt_init",
++      [20606].param3  = 1,
++      [20611].file    = "net/netfilter/x_tables.c",
++      [20611].name    = "xt_alloc_table_info",
++      [20611].param1  = 1,
++      [20713].file    = "drivers/gpu/drm/ttm/ttm_bo_vm.c",
++      [20713].name    = "ttm_bo_io",
++      [20713].param5  = 1,
++      [20730].file    = "drivers/media/video/videobuf2-vmalloc.c",
++      [20730].name    = "vb2_vmalloc_alloc",
++      [20730].param2  = 1,
++      [20801].file    = "drivers/vhost/vhost.c",
++      [20801].name    = "vhost_add_used_n",
++      [20801].param3  = 1,
++      [20835].file    = "drivers/isdn/i4l/isdn_common.c",
++      [20835].name    = "isdn_read",
++      [20835].param3  = 1,
++      [20951].file    = "crypto/rng.c",
++      [20951].name    = "rngapi_reset",
++      [20951].param3  = 1,
++      [21134].file    = "drivers/video/via/viafbdev.c",
++      [21134].name    = "viafb_dfph_proc_write",
++      [21134].param3  = 1,
++      [21193].file    = "net/wireless/sme.c",
++      [21193].name    = "cfg80211_disconnected",
++      [21193].param4  = 1,
++      [21277].file    = "drivers/usb/storage/shuttle_usbat.c",
++      [21277].name    = "usbat_flash_write_data",
++      [21277].param4  = 1,
++      [21312].file    = "lib/ts_kmp.c",
++      [21312].name    = "kmp_init",
++      [21312].param2  = 1,
++      [21335].file    = "net/econet/af_econet.c",
++      [21335].name    = "econet_sendmsg",
++      [21335].param4  = 1,
++      [21397].file    = "net/core/sock.c",
++      [21397].name    = "sock_setsockopt",
++      [21397].param5  = 1,
++      [21406].file    = "fs/libfs.c",
++      [21406].name    = "simple_write_to_buffer",
++      [21406].param2  = 1,
++      [21406].param5  = 1,
++      [21451].file    = "net/netfilter/ipvs/ip_vs_ctl.c",
++      [21451].name    = "do_ip_vs_set_ctl",
++      [21451].param4  = 1,
++      [21459].file    = "security/smack/smackfs.c",
++      [21459].name    = "smk_write_doi",
++      [21459].param3  = 1,
++      [21468].file    = "drivers/char/virtio_console.c",
++      [21468].name    = "port_fops_read",
++      [21468].param3  = 1,
++      [21511].file    = "drivers/input/ff-core.c",
++      [21511].name    = "input_ff_create",
++      [21511].param2  = 1,
++      [21538].file    = "net/bluetooth/l2cap_sock.c",
++      [21538].name    = "l2cap_sock_setsockopt",
++      [21538].param5  = 1,
++      [21608].file    = "drivers/char/tpm/tpm.c",
++      [21608].name    = "tpm_write",
++      [21608].param3  = 1,
++      [2160].file     = "drivers/net/wireless/ray_cs.c",
++      [2160].name     = "int_proc_write",
++      [2160].param3   = 1,
++      [21632].file    = "fs/afs/cell.c",
++      [21632].name    = "afs_cell_create",
++      [21632].param2  = 1,
++      [21679].file    = "drivers/net/wireless/ath/carl9170/debug.c",
++      [21679].name    = "carl9170_debugfs_write",
++      [21679].param3  = 1,
++      [21712].file    = "net/rxrpc/ar-output.c",
++      [21712].name    = "rxrpc_send_data",
++      [21712].param5  = 1,
++      [2180].file     = "drivers/char/ppdev.c",
++      [2180].name     = "pp_write",
++      [2180].param3   = 1,
++      [21946].file    = "fs/nfs/idmap.c",
++      [21946].name    = "nfs_map_name_to_uid",
++      [21946].param3  = 1,
++      [22085].file    = "drivers/staging/sep/sep_driver.c",
++      [22085].name    = "sep_lock_user_pages",
++      [22085].param2  = 1,
++      [22085].param3  = 1,
++      [22187].file    = "fs/namei.c",
++      [22187].name    = "user_path_at_empty",
++      [22187].param2  = 1,
++      [22190].file    = "drivers/char/tpm/tpm.c",
++      [22190].name    = "tpm_read",
++      [22190].param3  = 1,
++      [22204].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [22204].name    = "iwl_dbgfs_echo_test_write",
++      [22204].param3  = 1,
++      [22291].file    = "net/core/pktgen.c",
++      [22291].name    = "pgctrl_write",
++      [22291].param3  = 1,
++      [22439].file    = "fs/afs/rxrpc.c",
++      [22439].name    = "afs_alloc_flat_call",
++      [22439].param2  = 1,
++      [22439].param3  = 1,
++      [2243].file     = "drivers/scsi/scsi_tgt_lib.c",
++      [2243].name     = "scsi_tgt_kspace_exec",
++      [2243].param8   = 1,
++      [22546].file    = "drivers/char/pcmcia/cm4040_cs.c",
++      [22546].name    = "cm4040_read",
++      [22546].param3  = 1,
++      [22742].file    = "drivers/tty/tty_buffer.c",
++      [22742].name    = "tty_insert_flip_string_flags",
++      [22742].param4  = 1,
++      [22772].file    = "drivers/target/iscsi/iscsi_target_erl1.c",
++      [22772].name    = "iscsit_dump_data_payload",
++      [22772].param2  = 1,
++      [2286].file     = "drivers/scsi/mvumi.c",
++      [2286].name     = "mvumi_alloc_mem_resource",
++      [2286].param3   = 1,
++      [22904].file    = "security/selinux/ss/services.c",
++      [22904].name    = "security_context_to_sid_default",
++      [22904].param2  = 1,
++      [22932].file    = "fs/compat.c",
++      [22932].name    = "compat_sys_writev",
++      [22932].param3  = 1,
++      [2302].file     = "drivers/media/video/stk-webcam.c",
++      [2302].name     = "v4l_stk_read",
++      [2302].param3   = 1,
++      [23037].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [23037].name    = "iwl_dbgfs_wd_timeout_write",
++      [23037].param3  = 1,
++      [2307].file     = "drivers/pcmcia/cistpl.c",
++      [2307].name     = "pcmcia_replace_cis",
++      [2307].param3   = 1,
++      [23093].file    = "drivers/scsi/st.c",
++      [23093].name    = "st_read",
++      [23093].param3  = 1,
++      [23117].file    = "drivers/media/dvb/ttpci/av7110_av.c",
++      [23117].name    = "dvb_audio_write",
++      [23117].param3  = 1,
++      [2324].file     = "net/ieee802154/wpan-class.c",
++      [2324].name     = "wpan_phy_alloc",
++      [2324].param1   = 1,
++      [23535].file    = "ipc/sem.c",
++      [23535].name    = "sys_semtimedop",
++      [23535].param3  = 1,
++      [2357].file     = "drivers/usb/serial/garmin_gps.c",
++      [2357].name     = "garmin_read_process",
++      [2357].param3   = 1,
++      [23589].file    = "kernel/relay.c",
++      [23589].name    = "subbuf_read_actor",
++      [23589].param3  = 1,
++      [23619].file    = "drivers/tty/tty_buffer.c",
++      [23619].name    = "tty_buffer_request_room",
++      [23619].param2  = 1,
++      [23640].file    = "drivers/usb/host/ehci-dbg.c",
++      [23640].name    = "debug_lpm_write",
++      [23640].param3  = 1,
++      [23684].file    = "drivers/net/wireless/iwlegacy/iwl-debugfs.c",
++      [23684].name    = "iwl_legacy_dbgfs_clear_traffic_statistics_write",
++      [23684].param3  = 1,
++      [23848].file    = "crypto/blkcipher.c",
++      [23848].name    = "async_setkey",
++      [23848].param3  = 1,
++      [2386].file     = "drivers/acpi/acpica/exnames.c",
++      [2386].name     = "acpi_ex_allocate_name_string",
++      [2386].param2   = 1,
++      [23883].file    = "drivers/net/wireless/iwlwifi/iwl-trans-pcie.c",
++      [23883].name    = "iwl_dbgfs_interrupt_write",
++      [23883].param3  = 1,
++      [23999].file    = "sound/pci/rme9652/hdsp.c",
++      [23999].name    = "snd_hdsp_capture_copy",
++      [23999].param5  = 1,
++      [24072].file    = "drivers/staging/pohmelfs/inode.c",
++      [24072].name    = "pohmelfs_send_readpages",
++      [24072].param3  = 1,
++      [24233].file    = "drivers/pci/pcie/aer/aer_inject.c",
++      [24233].name    = "aer_inject_write",
++      [24233].param3  = 1,
++      [24263].file    = "kernel/cgroup.c",
++      [24263].name    = "cgroup_file_write",
++      [24263].param3  = 1,
++      [24313].file    = "drivers/staging/frontier/tranzport.c",
++      [24313].name    = "usb_tranzport_write",
++      [24313].param3  = 1,
++      [24359].file    = "kernel/power/qos.c",
++      [24359].name    = "pm_qos_power_write",
++      [24359].param3  = 1,
++      [24410].file    = "drivers/net/wireless/ipw2x00/libipw_module.c",
++      [24410].name    = "debug_level_proc_write",
++      [24410].param3  = 1,
++      [24457].file    = "fs/btrfs/backref.c",
++      [24457].name    = "init_data_container",
++      [24457].param1  = 1,
++      [24539].file    = "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c",
++      [24539].name    = "vmw_framebuffer_dmabuf_dirty",
++      [24539].param6  = 1,
++      [24719].file    = "drivers/input/evdev.c",
++      [24719].name    = "bits_to_user",
++      [24719].param2  = 1,
++      [24719].param3  = 1,
++      [2472].file     = "net/ipv4/netfilter/ip_tables.c",
++      [2472].name     = "compat_do_ipt_set_ctl",
++      [2472].param4   = 1,
++      [24755].file    = "drivers/infiniband/hw/qib/qib_diag.c",
++      [24755].name    = "qib_diag_write",
++      [24755].param3  = 1,
++      [24805].file    = "security/keys/user_defined.c",
++      [24805].name    = "user_update",
++      [24805].param3  = 1,
++      [25036].file    = "fs/pipe.c",
++      [25036].name    = "pipe_iov_copy_from_user",
++      [25036].param3  = 1,
++      [25127].file    = "drivers/scsi/device_handler/scsi_dh_alua.c",
++      [25127].name    = "realloc_buffer",
++      [25127].param2  = 1,
++      [25157].file    = "security/keys/request_key_auth.c",
++      [25157].name    = "request_key_auth_new",
++      [25157].param3  = 1,
++      [25158].file    = "drivers/net/ethernet/mellanox/mlx4/en_rx.c",
++      [25158].name    = "mlx4_en_create_rx_ring",
++      [25158].param3  = 1,
++      [25223].file    = "drivers/platform/x86/toshiba_acpi.c",
++      [25223].name    = "fan_proc_write",
++      [25223].param3  = 1,
++      [25267].file    = "fs/configfs/file.c",
++      [25267].name    = "configfs_write_file",
++      [25267].param3  = 1,
++      [25356].file    = "net/core/dev.c",
++      [25356].name    = "alloc_netdev_mqs",
++      [25356].param4  = 1,
++      [25356].param5  = 1,
++      [25495].file    = "drivers/scsi/bfa/bfad_debugfs.c",
++      [25495].name    = "bfad_debugfs_write_regwr",
++      [25495].param3  = 1,
++      [25558].file    = "fs/proc/task_mmu.c",
++      [25558].name    = "clear_refs_write",
++      [25558].param3  = 1,
++      [25692].file    = "drivers/net/wireless/ath/ath6kl/wmi.c",
++      [25692].name    = "ath6kl_wmi_send_action_cmd",
++      [25692].param6  = 1,
++      [2609].file     = "lib/kstrtox.c",
++      [2609].name     = "kstrtoul_from_user",
++      [2609].param2   = 1,
++      [26100].file    = "sound/core/info.c",
++      [26100].name    = "snd_info_entry_write",
++      [26100].param3  = 1,
++      [26215].file    = "drivers/md/dm-table.c",
++      [26215].name    = "dm_table_create",
++      [26215].param3  = 1,
++      [26256].file    = "fs/hpfs/name.c",
++      [26256].name    = "hpfs_translate_name",
++      [26256].param3  = 1,
++      [26404].file    = "drivers/net/wireless/mwifiex/debugfs.c",
++      [26404].name    = "mwifiex_rdeeprom_write",
++      [26404].param3  = 1,
++      [26494].file    = "kernel/signal.c",
++      [26494].name    = "sys_rt_sigpending",
++      [26494].param2  = 1,
++      [26497].file    = "security/keys/keyctl.c",
++      [26497].name    = "sys_keyctl",
++      [26497].param4  = 1,
++      [26533].file    = "drivers/block/aoe/aoechr.c",
++      [26533].name    = "aoechr_write",
++      [26533].param3  = 1,
++      [26560].file    = "crypto/algapi.c",
++      [26560].name    = "crypto_alloc_instance2",
++      [26560].param3  = 1,
++      [26620].file    = "net/bluetooth/mgmt.c",
++      [26620].name    = "mgmt_control",
++      [26620].param3  = 1,
++      [26701].file    = "drivers/mtd/chips/cfi_util.c",
++      [26701].name    = "cfi_read_pri",
++      [26701].param3  = 1,
++      [26757].file    = "fs/xattr.c",
++      [26757].name    = "sys_fgetxattr",
++      [26757].param4  = 1,
++      [2678].file     = "drivers/platform/x86/asus_acpi.c",
++      [2678].name     = "disp_proc_write",
++      [2678].param3   = 1,
++      [26834].file    = "drivers/gpu/drm/drm_drv.c",
++      [26834].name    = "drm_ioctl",
++      [26834].param2  = 1,
++      [26843].file    = "drivers/firewire/core-cdev.c",
++      [26843].name    = "fw_device_op_compat_ioctl",
++      [26843].param2  = 1,
++      [26845].file    = "drivers/scsi/qla2xxx/qla_bsg.c",
++      [26845].name    = "qla2x00_get_ctx_bsg_sp",
++      [26845].param3  = 1,
++      [26962].file    = "drivers/usb/class/usbtmc.c",
++      [26962].name    = "usbtmc_write",
++      [26962].param3  = 1,
++      [26966].file    = "drivers/media/dvb/ddbridge/ddbridge-core.c",
++      [26966].name    = "ts_write",
++      [26966].param3  = 1,
++      [27004].file    = "drivers/misc/hpilo.c",
++      [27004].name    = "ilo_write",
++      [27004].param3  = 1,
++      [27025].file    = "fs/ntfs/file.c",
++      [27025].name    = "__ntfs_copy_from_user_iovec_inatomic",
++      [27025].param3  = 1,
++      [27025].param4  = 1,
++      [27061].file    = "drivers/firewire/core-cdev.c",
++      [27061].name    = "iso_callback",
++      [27061].param3  = 1,
++      [2711].file     = "drivers/media/dvb/dvb-core/dvb_ringbuffer.c",
++      [2711].name     = "dvb_ringbuffer_read_user",
++      [2711].param3   = 1,
++      [27129].file    = "fs/lockd/mon.c",
++      [27129].name    = "nsm_get_handle",
++      [27129].param4  = 1,
++      [27142].file    = "fs/proc/kcore.c",
++      [27142].name    = "read_kcore",
++      [27142].param3  = 1,
++      [27164].file    = "include/drm/drm_mem_util.h",
++      [27164].name    = "drm_calloc_large",
++      [27164].param1  = 1,
++      [2722].file     = "drivers/gpu/drm/ttm/ttm_page_alloc.c",
++      [2722].name     = "ttm_alloc_new_pages",
++      [2722].param5   = 1,
++      [27232].file    = "security/apparmor/lib.c",
++      [27232].name    = "kvmalloc",
++      [27232].param1  = 1,
++      [27275].file    = "drivers/scsi/cxgbi/libcxgbi.c",
++      [27275].name    = "cxgbi_ddp_reserve",
++      [27275].param4  = 1,
++      [27280].file    = "drivers/net/ethernet/mellanox/mlx4/en_tx.c",
++      [27280].name    = "mlx4_en_create_tx_ring",
++      [27280].param4  = 1,
++      [27290].file    = "security/selinux/ss/services.c",
++      [27290].name    = "security_context_to_sid_core",
++      [27290].param2  = 1,
++      [27302].file    = "fs/proc/base.c",
++      [27302].name    = "proc_loginuid_write",
++      [27302].param3  = 1,
++      [27472].file    = "security/selinux/selinuxfs.c",
++      [27472].name    = "sel_write_load",
++      [27472].param3  = 1,
++      [27491].file    = "fs/proc/base.c",
++      [27491].name    = "proc_pid_attr_write",
++      [27491].param3  = 1,
++      [27568].file    = "drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c",
++      [27568].name    = "t4_alloc_mem",
++      [27568].param1  = 1,
++      [27582].file    = "drivers/platform/x86/asus_acpi.c",
++      [27582].name    = "ledd_proc_write",
++      [27582].param3  = 1,
++      [27695].file    = "fs/namei.c",
++      [27695].name    = "sys_link",
++      [27695].param1  = 1,
++      [27695].param2  = 1,
++      [27697].file    = "drivers/staging/mei/iorw.c",
++      [27697].name    = "amthi_read",
++      [27697].param4  = 1,
++      [27927].file    = "drivers/tty/tty_io.c",
++      [27927].name    = "redirected_tty_write",
++      [27927].param3  = 1,
++      [28040].file    = "kernel/kfifo.c",
++      [28040].name    = "__kfifo_alloc",
++      [28040].param2  = 1,
++      [28040].param3  = 1,
++      [28092].file    = "fs/select.c",
++      [28092].name    = "do_sys_poll",
++      [28092].param2  = 1,
++      [28170].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [28170].name    = "iwl_dbgfs_ucode_tracing_write",
++      [28170].param3  = 1,
++      [28247].file    = "net/sctp/tsnmap.c",
++      [28247].name    = "sctp_tsnmap_init",
++      [28247].param2  = 1,
++      [28265].file    = "fs/notify/fanotify/fanotify_user.c",
++      [28265].name    = "fanotify_write",
++      [28265].param3  = 1,
++      [28316].file    = "drivers/input/joydev.c",
++      [28316].name    = "joydev_ioctl_common",
++      [28316].param2  = 1,
++      [28360].file    = "drivers/hid/usbhid/hiddev.c",
++      [28360].name    = "hiddev_compat_ioctl",
++      [28360].param2  = 1,
++      [28407].file    = "drivers/net/wireless/rt2x00/rt2x00debug.c",
++      [28407].name    = "rt2x00debug_write_csr",
++      [28407].param3  = 1,
++      [28462].file    = "net/rfkill/core.c",
++      [28462].name    = "rfkill_fop_write",
++      [28462].param3  = 1,
++      [28635].file    = "drivers/gpu/drm/drm_sman.c",
++      [28635].name    = "drm_sman_init",
++      [28635].param2  = 1,
++      [28655].file    = "drivers/infiniband/hw/mthca/mthca_allocator.c",
++      [28655].name    = "mthca_alloc_init",
++      [28655].param2  = 1,
++      [28688].file    = "mm/mempolicy.c",
++      [28688].name    = "compat_sys_get_mempolicy",
++      [28688].param3  = 1,
++      [28783].file    = "drivers/gpu/drm/i915/i915_debugfs.c",
++      [28783].name    = "i915_cache_sharing_write",
++      [28783].param3  = 1,
++      [28787].file    = "drivers/media/video/videobuf2-core.c",
++      [28787].name    = "vb2_write",
++      [28787].param3  = 1,
++      [28879].file    = "drivers/base/map.c",
++      [28879].name    = "kobj_map",
++      [28879].param2  = 1,
++      [28879].param3  = 1,
++      [28889].file    = "drivers/char/pcmcia/cm4040_cs.c",
++      [28889].name    = "cm4040_write",
++      [28889].param3  = 1,
++      [29073].file    = "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c",
++      [29073].name    = "vmw_kms_readback",
++      [29073].param6  = 1,
++      [29085].file    = "security/apparmor/apparmorfs.c",
++      [29085].name    = "profile_load",
++      [29085].param3  = 1,
++      [29092].file    = "lib/lru_cache.c",
++      [29092].name    = "lc_create",
++      [29092].param3  = 1,
++      [29189].file    = "drivers/gpu/drm/ttm/ttm_page_alloc.c",
++      [29189].name    = "ttm_put_pages",
++      [29189].param2  = 1,
++      [29257].file    = "drivers/vhost/vhost.c",
++      [29257].name    = "vhost_add_used_and_signal_n",
++      [29257].param4  = 1,
++      [29366].file    = "drivers/char/pcmcia/cm4000_cs.c",
++      [29366].name    = "cmm_read",
++      [29366].param3  = 1,
++      [29405].file    = "drivers/media/dvb/dvb-usb/dw2102.c",
++      [29405].name    = "dw210x_op_rw",
++      [29405].param6  = 1,
++      [29437].file    = "drivers/net/wireless/iwlegacy/iwl-4965-rs.c",
++      [29437].name    = "iwl4965_rs_sta_dbgfs_scale_table_write",
++      [29437].param3  = 1,
++      [29465].file    = "drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c",
++      [29465].name    = "mem_read",
++      [29465].param3  = 1,
++      [29714].file    = "drivers/scsi/cxgbi/libcxgbi.c",
++      [29714].name    = "cxgbi_device_register",
++      [29714].param1  = 1,
++      [29714].param2  = 1,
++      [29859].file    = "net/rds/page.c",
++      [29859].name    = "rds_page_copy_user",
++      [29859].param4  = 1,
++      [29875].file    = "sound/isa/gus/gus_pcm.c",
++      [29875].name    = "snd_gf1_pcm_playback_copy",
++      [29875].param5  = 1,
++      [29905].file    = "mm/nobootmem.c",
++      [29905].name    = "___alloc_bootmem",
++      [29905].param1  = 1,
++      [2995].file     = "mm/page_alloc.c",
++      [2995].name     = "alloc_large_system_hash",
++      [2995].param2   = 1,
++      [30242].file    = "fs/cifs/cifssmb.c",
++      [30242].name    = "cifs_readdata_alloc",
++      [30242].param1  = 1,
++      [30341].file    = "drivers/infiniband/hw/qib/qib_verbs.c",
++      [30341].name    = "qib_verbs_send",
++      [30341].param3  = 1,
++      [30341].param5  = 1,
++      [30438].file    = "mm/filemap_xip.c",
++      [30438].name    = "xip_file_read",
++      [30438].param3  = 1,
++      [30449].file    = "drivers/telephony/ixj.c",
++      [30449].name    = "ixj_read",
++      [30449].param3  = 1,
++      [30489].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [30489].name    = "iwl_dbgfs_rx_handlers_write",
++      [30489].param3  = 1,
++      [30693].file    = "fs/namei.c",
++      [30693].name    = "sys_rename",
++      [30693].param1  = 1,
++      [30693].param2  = 1,
++      [307].file      = "drivers/base/regmap/regmap-debugfs.c",
++      [307].name      = "regmap_map_read_file",
++      [307].param3    = 1,
++      [30970].file    = "drivers/usb/misc/ldusb.c",
++      [30970].name    = "ld_usb_read",
++      [30970].param3  = 1,
++      [31155].file    = "drivers/staging/frontier/alphatrack.c",
++      [31155].name    = "usb_alphatrack_write",
++      [31155].param3  = 1,
++      [31207].file    = "drivers/platform/x86/asus_acpi.c",
++      [31207].name    = "parse_arg",
++      [31207].param2  = 1,
++      [31348].file    = "kernel/sched.c",
++      [31348].name    = "sys_sched_getaffinity",
++      [31348].param2  = 1,
++      [31465].file    = "net/rds/message.c",
++      [31465].name    = "rds_message_map_pages",
++      [31465].param2  = 1,
++      [31492].file    = "drivers/hid/hidraw.c",
++      [31492].name    = "hidraw_read",
++      [31492].param3  = 1,
++      [31649].file    = "fs/ecryptfs/crypto.c",
++      [31649].name    = "ecryptfs_decode_and_decrypt_filename",
++      [31649].param5  = 1,
++      [3170].file     = "security/integrity/ima/ima_fs.c",
++      [3170].name     = "ima_write_policy",
++      [3170].param3   = 1,
++      [31730].file    = "net/dccp/proto.c",
++      [31730].name    = "dccp_setsockopt",
++      [31730].param5  = 1,
++      [31782].file    = "drivers/misc/pti.c",
++      [31782].name    = "pti_char_write",
++      [31782].param3  = 1,
++      [31789].file    = "fs/file.c",
++      [31789].name    = "alloc_fdmem",
++      [31789].param1  = 1,
++      [31957].file    = "fs/afs/proc.c",
++      [31957].name    = "afs_proc_cells_write",
++      [31957].param3  = 1,
++      [32025].file    = "drivers/nfc/pn544.c",
++      [32025].name    = "pn544_write",
++      [32025].param3  = 1,
++      [32182].file    = "net/sunrpc/cache.c",
++      [32182].name    = "cache_write",
++      [32182].param3  = 1,
++      [32326].file    = "drivers/tty/n_r3964.c",
++      [32326].name    = "r3964_write",
++      [32326].param4  = 1,
++      [32402].file    = "net/ceph/pagevec.c",
++      [32402].name    = "ceph_copy_user_to_page_vector",
++      [32402].param4  = 1,
++      [3241].file     = "drivers/usb/wusbcore/crypto.c",
++      [3241].name     = "wusb_prf",
++      [3241].param7   = 1,
++      [32459].file    = "drivers/media/radio/radio-wl1273.c",
++      [32459].name    = "wl1273_fm_fops_write",
++      [32459].param3  = 1,
++      [32560].file    = "drivers/input/input-mt.c",
++      [32560].name    = "input_mt_init_slots",
++      [32560].param2  = 1,
++      [32574].file    = "mm/mempolicy.c",
++      [32574].name    = "sys_get_mempolicy",
++      [32574].param3  = 1,
++      [32608].file    = "security/selinux/selinuxfs.c",
++      [32608].name    = "sel_write_checkreqprot",
++      [32608].param3  = 1,
++      [32950].file    = "fs/reiserfs/resize.c",
++      [32950].name    = "reiserfs_resize",
++      [32950].param2  = 1,
++      [33010].file    = "drivers/media/dvb/dvb-core/dvb_ringbuffer.c",
++      [33010].name    = "dvb_ringbuffer_pkt_read_user",
++      [33010].param5  = 1,
++      [33268].file    = "mm/maccess.c",
++      [33268].name    = "__probe_kernel_write",
++      [33268].param3  = 1,
++      [33280].file    = "fs/xfs/kmem.c",
++      [33280].name    = "kmem_realloc",
++      [33280].param2  = 1,
++      [33375].file    = "drivers/staging/rtl8712/osdep_service.h",
++      [33375].name    = "_malloc",
++      [33375].param1  = 1,
++      [33637].file    = "net/9p/client.c",
++      [33637].name    = "p9_client_read",
++      [33637].param5  = 1,
++      [33669].file    = "fs/gfs2/glock.c",
++      [33669].name    = "gfs2_glock_nq_m",
++      [33669].param1  = 1,
++      [33810].file    = "net/mac80211/util.c",
++      [33810].name    = "ieee80211_send_probe_req",
++      [33810].param6  = 1,
++      [3384].file     = "drivers/block/paride/pg.c",
++      [3384].name     = "pg_write",
++      [3384].param3   = 1,
++      [34016].file    = "drivers/tty/tty_buffer.c",
++      [34016].name    = "tty_prepare_flip_string_flags",
++      [34016].param4  = 1,
++      [34105].file    = "fs/libfs.c",
++      [34105].name    = "simple_read_from_buffer",
++      [34105].param2  = 1,
++      [34105].param5  = 1,
++      [34120].file    = "drivers/media/video/pvrusb2/pvrusb2-io.c",
++      [34120].name    = "pvr2_stream_buffer_count",
++      [34120].param2  = 1,
++      [34226].file    = "mm/shmem.c",
++      [34226].name    = "shmem_xattr_set",
++      [34226].param4  = 1,
++      [34251].file    = "drivers/staging/cxt1e1/sbecom_inline_linux.h",
++      [34251].name    = "OS_kmalloc",
++      [34251].param1  = 1,
++      [34276].file    = "drivers/media/video/videobuf2-core.c",
++      [34276].name    = "__vb2_perform_fileio",
++      [34276].param3  = 1,
++      [34278].file    = "fs/ubifs/debug.c",
++      [34278].name    = "dfs_global_file_write",
++      [34278].param3  = 1,
++      [34432].file    = "drivers/edac/edac_pci.c",
++      [34432].name    = "edac_pci_alloc_ctl_info",
++      [34432].param1  = 1,
++      [34551].file    = "fs/ocfs2/stack_user.c",
++      [34551].name    = "ocfs2_control_cfu",
++      [34551].param2  = 1,
++      [34666].file    = "fs/cifs/cifs_debug.c",
++      [34666].name    = "cifs_security_flags_proc_write",
++      [34666].param3  = 1,
++      [34672].file    = "drivers/tty/tty_io.c",
++      [34672].name    = "tty_write",
++      [34672].param3  = 1,
++      [34760].file    = "include/acpi/platform/aclinux.h",
++      [34760].name    = "acpi_os_allocate_zeroed",
++      [34760].param1  = 1,
++      [34802].file    = "drivers/scsi/cxgbi/libcxgbi.h",
++      [34802].name    = "cxgbi_alloc_big_mem",
++      [34802].param1  = 1,
++      [34847].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [34847].name    = "iwl_dbgfs_clear_traffic_statistics_write",
++      [34847].param3  = 1,
++      [34863].file    = "drivers/video/fbsysfs.c",
++      [34863].name    = "framebuffer_alloc",
++      [34863].param1  = 1,
++      [34882].file    = "drivers/platform/x86/toshiba_acpi.c",
++      [34882].name    = "video_proc_write",
++      [34882].param3  = 1,
++      [34988].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [34988].name    = "lbs_rdrf_write",
++      [34988].param3  = 1,
++      [35007].file    = "drivers/usb/mon/mon_bin.c",
++      [35007].name    = "mon_bin_read",
++      [35007].param3  = 1,
++      [35050].file    = "fs/ocfs2/dlmfs/dlmfs.c",
++      [35050].name    = "dlmfs_file_write",
++      [35050].param3  = 1,
++      [35119].file    = "fs/xattr.c",
++      [35119].name    = "sys_llistxattr",
++      [35119].param3  = 1,
++      [35129].file    = "mm/nobootmem.c",
++      [35129].name    = "___alloc_bootmem_nopanic",
++      [35129].param1  = 1,
++      [35176].file    = "drivers/usb/misc/ldusb.c",
++      [35176].name    = "ld_usb_write",
++      [35176].param3  = 1,
++      [35234].file    = "net/irda/irnet/irnet_ppp.c",
++      [35234].name    = "irnet_ctrl_write",
++      [35234].param3  = 1,
++      [35256].file    = "sound/core/memory.c",
++      [35256].name    = "copy_from_user_toio",
++      [35256].param3  = 1,
++      [35268].file    = "security/keys/request_key_auth.c",
++      [35268].name    = "request_key_auth_read",
++      [35268].param3  = 1,
++      [3541].file     = "drivers/mtd/ubi/cdev.c",
++      [3541].name     = "vol_cdev_write",
++      [3541].param3   = 1,
++      [35443].file    = "sound/core/pcm_memory.c",
++      [35443].name    = "_snd_pcm_lib_alloc_vmalloc_buffer",
++      [35443].param2  = 1,
++      [35449].file    = "fs/namei.c",
++      [35449].name    = "sys_mkdir",
++      [35449].param1  = 1,
++      [35542].file    = "drivers/tty/ipwireless/hardware.c",
++      [35542].name    = "ipwireless_send_packet",
++      [35542].param4  = 1,
++      [35556].file    = "fs/read_write.c",
++      [35556].name    = "sys_readv",
++      [35556].param3  = 1,
++      [35610].file    = "net/batman-adv/translation-table.c",
++      [35610].name    = "tt_save_orig_buffer",
++      [35610].param4  = 1,
++      [35693].file    = "drivers/staging/mei/main.c",
++      [35693].name    = "mei_read",
++      [35693].param3  = 1,
++      [35729].file    = "include/linux/skbuff.h",
++      [35729].name    = "__dev_alloc_skb",
++      [35729].param1  = 1,
++      [35731].file    = "drivers/usb/class/cdc-wdm.c",
++      [35731].name    = "wdm_read",
++      [35731].param3  = 1,
++      [35796].file    = "drivers/mtd/nand/nand_bch.c",
++      [35796].name    = "nand_bch_init",
++      [35796].param2  = 1,
++      [35796].param3  = 1,
++      [35880].file    = "fs/ecryptfs/crypto.c",
++      [35880].name    = "ecryptfs_encrypt_and_encode_filename",
++      [35880].param6  = 1,
++      [3604].file     = "net/batman-adv/translation-table.c",
++      [3604].name     = "tt_update_orig",
++      [3604].param4   = 1,
++      [36080].file    = "drivers/media/video/v4l2-ioctl.c",
++      [36080].name    = "video_usercopy",
++      [36080].param2  = 1,
++      [36149].file    = "fs/udf/inode.c",
++      [36149].name    = "udf_alloc_i_data",
++      [36149].param2  = 1,
++      [36183].file    = "drivers/tty/vt/vc_screen.c",
++      [36183].name    = "vcs_read",
++      [36183].param3  = 1,
++      [36199].file    = "net/sunrpc/auth_gss/auth_gss.c",
++      [36199].name    = "gss_pipe_downcall",
++      [36199].param3  = 1,
++      [3630].file     = "drivers/video/broadsheetfb.c",
++      [3630].name     = "broadsheetfb_write",
++      [3630].param3   = 1,
++      [3632].file     = "drivers/firewire/core-cdev.c",
++      [3632].name     = "fw_device_op_read",
++      [3632].param3   = 1,
++      [36490].file    = "drivers/net/wireless/ath/ath6kl/cfg80211.c",
++      [36490].name    = "ath6kl_cfg80211_connect_event",
++      [36490].param7  = 1,
++      [36522].file    = "drivers/hid/hidraw.c",
++      [36522].name    = "hidraw_send_report",
++      [36522].param3  = 1,
++      [36560].file    = "net/sunrpc/cache.c",
++      [36560].name    = "write_flush",
++      [36560].param3  = 1,
++      [36633].file    = "drivers/net/wireless/rt2x00/rt2x00debug.c",
++      [36633].name    = "rt2x00debug_read_queue_stats",
++      [36633].param3  = 1,
++      [3665].file     = "drivers/media/video/ivtv/ivtvfb.c",
++      [3665].name     = "ivtvfb_write",
++      [3665].param3   = 1,
++      [36981].file    = "drivers/video/via/viafbdev.c",
++      [36981].name    = "viafb_dfpl_proc_write",
++      [36981].param3  = 1,
++      [37034].file    = "fs/cifs/cifssmb.c",
++      [37034].name    = "cifs_writedata_alloc",
++      [37034].param1  = 1,
++      [37044].file    = "sound/firewire/packets-buffer.c",
++      [37044].name    = "iso_packets_buffer_init",
++      [37044].param3  = 1,
++      [37115].file    = "drivers/tty/tty_buffer.c",
++      [37115].name    = "tty_prepare_flip_string",
++      [37115].param3  = 1,
++      [37163].file    = "net/core/skbuff.c",
++      [37163].name    = "__netdev_alloc_skb",
++      [37163].param2  = 1,
++      [37204].file    = "drivers/isdn/hardware/eicon/divasi.c",
++      [37204].name    = "um_idi_read",
++      [37204].param3  = 1,
++      [37233].file    = "fs/ocfs2/cluster/tcp.c",
++      [37233].name    = "o2net_send_message_vec",
++      [37233].param4  = 1,
++      [37309].file    = "drivers/mtd/mtdchar.c",
++      [37309].name    = "mtd_do_readoob",
++      [37309].param4  = 1,
++      [37382].file    = "drivers/staging/pohmelfs/inode.c",
++      [37382].name    = "pohmelfs_readpages_trans_complete",
++      [37382].param2  = 1,
++      [37384].file    = "drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c",
++      [37384].name    = "vmw_fifo_reserve",
++      [37384].param2  = 1,
++      [37497].file    = "net/mac80211/util.c",
++      [37497].name    = "ieee80211_build_probe_req",
++      [37497].param7  = 1,
++      [37594].file    = "include/linux/poll.h",
++      [37594].name    = "get_fd_set",
++      [37594].param1  = 1,
++      [37611].file    = "drivers/xen/xenbus/xenbus_xs.c",
++      [37611].name    = "split",
++      [37611].param2  = 1,
++      [37661].file    = "mm/filemap.c",
++      [37661].name    = "file_read_actor",
++      [37661].param4  = 1,
++      [37872].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [37872].name    = "iwl_dbgfs_protection_mode_write",
++      [37872].param3  = 1,
++      [37976].file    = "drivers/platform/x86/asus_acpi.c",
++      [37976].name    = "bluetooth_proc_write",
++      [37976].param3  = 1,
++      [3797].file     = "sound/pci/asihpi/hpicmn.c",
++      [3797].name     = "hpi_alloc_control_cache",
++      [3797].param1   = 1,
++      [3801].file     = "drivers/block/paride/pt.c",
++      [3801].name     = "pt_write",
++      [3801].param3   = 1,
++      [38057].file    = "fs/coda/psdev.c",
++      [38057].name    = "coda_psdev_write",
++      [38057].param3  = 1,
++      [38186].file    = "kernel/signal.c",
++      [38186].name    = "do_sigpending",
++      [38186].param2  = 1,
++      [38401].file    = "drivers/xen/xenfs/xenbus.c",
++      [38401].name    = "queue_reply",
++      [38401].param3  = 1,
++      [3841].file     = "drivers/platform/x86/asus_acpi.c",
++      [3841].name     = "write_led",
++      [3841].param2   = 1,
++      [38532].file    = "fs/afs/cell.c",
++      [38532].name    = "afs_cell_lookup",
++      [38532].param2  = 1,
++      [38576].file    = "drivers/i2c/i2c-dev.c",
++      [38576].name    = "i2cdev_read",
++      [38576].param3  = 1,
++      [38747].file    = "fs/xattr.c",
++      [38747].name    = "sys_lgetxattr",
++      [38747].param4  = 1,
++      [38972].file    = "security/smack/smackfs.c",
++      [38972].name    = "smk_write_logging",
++      [38972].param3  = 1,
++      [39001].file    = "net/xfrm/xfrm_hash.c",
++      [39001].name    = "xfrm_hash_alloc",
++      [39001].param1  = 1,
++      [39044].file    = "lib/kstrtox.c",
++      [39044].name    = "kstrtos16_from_user",
++      [39044].param2  = 1,
++      [39052].file    = "drivers/input/evdev.c",
++      [39052].name    = "evdev_ioctl",
++      [39052].param2  = 1,
++      [39154].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [39154].name    = "iwl_dbgfs_clear_ucode_statistics_write",
++      [39154].param3  = 1,
++      [39155].file    = "drivers/xen/grant-table.c",
++      [39155].name    = "get_free_entries",
++      [39155].param1  = 1,
++      [39254].file    = "drivers/char/pcmcia/cm4000_cs.c",
++      [39254].name    = "cmm_write",
++      [39254].param3  = 1,
++      [39415].file    = "fs/pstore/inode.c",
++      [39415].name    = "pstore_mkfile",
++      [39415].param5  = 1,
++      [39417].file    = "drivers/block/DAC960.c",
++      [39417].name    = "dac960_user_command_proc_write",
++      [39417].param3  = 1,
++      [39479].file    = "drivers/ide/ide-tape.c",
++      [39479].name    = "idetape_chrdev_read",
++      [39479].param3  = 1,
++      [39573].file    = "drivers/hid/hid-picolcd.c",
++      [39573].name    = "picolcd_debug_reset_write",
++      [39573].param3  = 1,
++      [39583].file    = "drivers/net/ethernet/broadcom/cnic.c",
++      [39583].name    = "cnic_init_id_tbl",
++      [39583].param2  = 1,
++      [39606].file    = "drivers/bluetooth/hci_vhci.c",
++      [39606].name    = "vhci_write",
++      [39606].param3  = 1,
++      [39638].file    = "security/selinux/selinuxfs.c",
++      [39638].name    = "sel_write_avc_cache_threshold",
++      [39638].param3  = 1,
++      [39645].file    = "drivers/media/dvb/dvb-core/dvbdev.c",
++      [39645].name    = "dvb_generic_ioctl",
++      [39645].param2  = 1,
++      [39741].file    = "drivers/video/via/viafbdev.c",
++      [39741].name    = "viafb_iga2_odev_proc_write",
++      [39741].param3  = 1,
++      [39888].file    = "net/core/skbuff.c",
++      [39888].name    = "__alloc_skb",
++      [39888].param1  = 1,
++      [40043].file    = "drivers/media/video/v4l2-ioctl.c",
++      [40043].name    = "video_ioctl2",
++      [40043].param2  = 1,
++      [40049].file    = "drivers/bluetooth/btmrvl_debugfs.c",
++      [40049].name    = "btmrvl_psmode_write",
++      [40049].param3  = 1,
++      [40075].file    = "drivers/media/video/c-qcam.c",
++      [40075].name    = "qc_capture",
++      [40075].param3  = 1,
++      [40163].file    = "fs/ncpfs/file.c",
++      [40163].name    = "ncp_file_write",
++      [40163].param3  = 1,
++      [40240].file    = "drivers/char/nvram.c",
++      [40240].name    = "nvram_write",
++      [40240].param3  = 1,
++      [40256].file    = "drivers/tty/vt/vc_screen.c",
++      [40256].name    = "vcs_write",
++      [40256].param3  = 1,
++      [40302].file    = "sound/isa/gus/gus_dram.c",
++      [40302].name    = "snd_gus_dram_poke",
++      [40302].param4  = 1,
++      [40355].file    = "drivers/staging/mei/main.c",
++      [40355].name    = "mei_write",
++      [40355].param3  = 1,
++      [40373].file    = "fs/cifs/cifs_spnego.c",
++      [40373].name    = "cifs_spnego_key_instantiate",
++      [40373].param3  = 1,
++      [40412].file    = "fs/namei.c",
++      [40412].name    = "user_path_at",
++      [40412].param2  = 1,
++      [40578].file    = "sound/soc/soc-core.c",
++      [40578].name    = "codec_reg_write_file",
++      [40578].param3  = 1,
++      [40678].file    = "drivers/net/wireless/iwlegacy/iwl-debugfs.c",
++      [40678].name    = "iwl_legacy_dbgfs_traffic_log_write",
++      [40678].param3  = 1,
++      [40713].file    = "net/mac80211/debugfs.c",
++      [40713].name    = "noack_write",
++      [40713].param3  = 1,
++      [40754].file    = "fs/btrfs/delayed-inode.c",
++      [40754].name    = "btrfs_alloc_delayed_item",
++      [40754].param1  = 1,
++      [40786].file    = "net/ipv4/netfilter/nf_nat_snmp_basic.c",
++      [40786].name    = "asn1_octets_decode",
++      [40786].param2  = 1,
++      [40901].file    = "drivers/block/drbd/drbd_bitmap.c",
++      [40901].name    = "drbd_bm_resize",
++      [40901].param2  = 1,
++      [40952].file    = "drivers/misc/sgi-xp/xpc_partition.c",
++      [40952].name    = "xpc_kmalloc_cacheline_aligned",
++      [40952].param1  = 1,
++      [41000].file    = "sound/core/pcm_native.c",
++      [41000].name    = "snd_pcm_aio_read",
++      [41000].param3  = 1,
++      [41003].file    = "fs/namei.c",
++      [41003].name    = "user_path_parent",
++      [41003].param2  = 1,
++      [41005].file    = "net/bridge/netfilter/ebtables.c",
++      [41005].name    = "copy_counters_to_user",
++      [41005].param5  = 1,
++      [41090].file    = "drivers/net/wireless/iwlegacy/iwl-debugfs.c",
++      [41090].name    = "iwl_legacy_dbgfs_sram_write",
++      [41090].param3  = 1,
++      [41122].file    = "fs/binfmt_misc.c",
++      [41122].name    = "bm_status_write",
++      [41122].param3  = 1,
++      [41230].file    = "drivers/usb/storage/datafab.c",
++      [41230].name    = "datafab_read_data",
++      [41230].param4  = 1,
++      [41249].file    = "drivers/media/video/zr364xx.c",
++      [41249].name    = "send_control_msg",
++      [41249].param6  = 1,
++      [41302].file    = "net/dns_resolver/dns_query.c",
++      [41302].name    = "dns_query",
++      [41302].param3  = 1,
++      [41418].file    = "fs/libfs.c",
++      [41418].name    = "simple_attr_write",
++      [41418].param3  = 1,
++      [4155].file     = "kernel/kexec.c",
++      [4155].name     = "do_kimage_alloc",
++      [4155].param3   = 1,
++      [41592].file    = "net/sctp/ssnmap.c",
++      [41592].name    = "sctp_ssnmap_new",
++      [41592].param1  = 1,
++      [41592].param2  = 1,
++      [41616].file    = "net/core/filter.c",
++      [41616].name    = "sk_chk_filter",
++      [41616].param2  = 1,
++      [41676].file    = "fs/compat.c",
++      [41676].name    = "compat_sys_preadv",
++      [41676].param3  = 1,
++      [41727].file    = "drivers/media/video/meye.c",
++      [41727].name    = "rvmalloc",
++      [41727].param1  = 1,
++      [41884].file    = "sound/core/oss/pcm_plugin.c",
++      [41884].name    = "snd_pcm_plug_alloc",
++      [41884].param2  = 1,
++      [41924].file    = "security/keys/keyctl.c",
++      [41924].name    = "keyctl_get_security",
++      [41924].param3  = 1,
++      [4202].file     = "drivers/edac/edac_mc.c",
++      [4202].name     = "edac_mc_alloc",
++      [4202].param1   = 1,
++      [42143].file    = "drivers/media/video/c-qcam.c",
++      [42143].name    = "qcam_read",
++      [42143].param3  = 1,
++      [42206].file    = "fs/quota/quota_tree.c",
++      [42206].name    = "getdqbuf",
++      [42206].param1  = 1,
++      [42270].file    = "net/wireless/scan.c",
++      [42270].name    = "cfg80211_inform_bss_frame",
++      [42270].param4  = 1,
++      [4233].file     = "fs/select.c",
++      [4233].name     = "sys_poll",
++      [4233].param2   = 1,
++      [42378].file    = "drivers/net/wireless/ath/ath6kl/debug.c",
++      [42378].name    = "ath6kl_regread_write",
++      [42378].param3  = 1,
++      [42420].file    = "drivers/net/wireless/hostap/hostap_ioctl.c",
++      [42420].name    = "prism2_set_genericelement",
++      [42420].param3  = 1,
++      [42466].file    = "drivers/scsi/lpfc/lpfc_debugfs.c",
++      [42466].name    = "lpfc_idiag_cmd_get",
++      [42466].param2  = 1,
++      [42472].file    = "fs/compat.c",
++      [42472].name    = "compat_readv",
++      [42472].param3  = 1,
++      [42483].file    = "drivers/media/video/videobuf-dma-sg.c",
++      [42483].name    = "videobuf_dma_init_user_locked",
++      [42483].param3  = 1,
++      [42483].param4  = 1,
++      [42562].file    = "kernel/kfifo.c",
++      [42562].name    = "__kfifo_to_user_r",
++      [42562].param3  = 1,
++      [42666].file    = "drivers/pcmcia/cistpl.c",
++      [42666].name    = "read_cis_cache",
++      [42666].param4  = 1,
++      [42882].file    = "security/keys/user_defined.c",
++      [42882].name    = "user_instantiate",
++      [42882].param3  = 1,
++      [42964].file    = "drivers/video/fb_sys_fops.c",
++      [42964].name    = "fb_sys_read",
++      [42964].param3  = 1,
++      [43023].file    = "drivers/usb/misc/usblcd.c",
++      [43023].name    = "lcd_write",
++      [43023].param3  = 1,
++      [4324].file     = "drivers/video/fbmem.c",
++      [4324].name     = "fb_read",
++      [4324].param3   = 1,
++      [43380].file    = "drivers/scsi/bfa/bfad_debugfs.c",
++      [43380].name    = "bfad_debugfs_write_regrd",
++      [43380].param3  = 1,
++      [43393].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [43393].name    = "iwl_dbgfs_sram_write",
++      [43393].param3  = 1,
++      [4344].file     = "fs/namei.c",
++      [4344].name     = "sys_mkdirat",
++      [4344].param2   = 1,
++      [43510].file    = "kernel/kexec.c",
++      [43510].name    = "compat_sys_kexec_load",
++      [43510].param2  = 1,
++      [43515].file    = "drivers/usb/storage/jumpshot.c",
++      [43515].name    = "jumpshot_read_data",
++      [43515].param4  = 1,
++      [43540].file    = "include/rdma/ib_verbs.h",
++      [43540].name    = "ib_copy_to_udata",
++      [43540].param3  = 1,
++      [4357].file     = "security/tomoyo/securityfs_if.c",
++      [4357].name     = "tomoyo_read_self",
++      [4357].param3   = 1,
++      [43590].file    = "security/smack/smackfs.c",
++      [43590].name    = "smk_write_onlycap",
++      [43590].param3  = 1,
++      [43596].file    = "drivers/usb/core/buffer.c",
++      [43596].name    = "hcd_buffer_alloc",
++      [43596].param2  = 1,
++      [43632].file    = "drivers/media/video/videobuf2-core.c",
++      [43632].name    = "vb2_read",
++      [43632].param3  = 1,
++      [43731].file    = "drivers/hid/hid-picolcd.c",
++      [43731].name    = "picolcd_debug_eeprom_read",
++      [43731].param3  = 1,
++      [43777].file    = "drivers/acpi/acpica/utobject.c",
++      [43777].name    = "acpi_ut_create_buffer_object",
++      [43777].param1  = 1,
++      [43834].file    = "security/apparmor/apparmorfs.c",
++      [43834].name    = "profile_replace",
++      [43834].param3  = 1,
++      [43899].file    = "drivers/media/rc/imon.c",
++      [43899].name    = "vfd_write",
++      [43899].param3  = 1,
++      [43982].file    = "drivers/platform/x86/toshiba_acpi.c",
++      [43982].name    = "keys_proc_write",
++      [43982].param3  = 1,
++      [44039].file    = "drivers/video/via/viafbdev.c",
++      [44039].name    = "odev_update",
++      [44039].param2  = 1,
++      [44050].file    = "fs/nfs/idmap.c",
++      [44050].name    = "nfs_map_group_to_gid",
++      [44050].param3  = 1,
++      [44125].file    = "fs/ext4/super.c",
++      [44125].name    = "ext4_kvmalloc",
++      [44125].param1  = 1,
++      [44180].file    = "drivers/video/via/viafbdev.c",
++      [44180].name    = "viafb_vt1636_proc_write",
++      [44180].param3  = 1,
++      [44290].file    = "drivers/net/usb/dm9601.c",
++      [44290].name    = "dm_read",
++      [44290].param3  = 1,
++      [44298].file    = "drivers/scsi/pmcraid.c",
++      [44298].name    = "pmcraid_copy_sglist",
++      [44298].param3  = 1,
++      [44365].file    = "fs/namei.c",
++      [44365].name    = "do_rmdir",
++      [44365].param2  = 1,
++      [44640].file    = "fs/select.c",
++      [44640].name    = "sys_ppoll",
++      [44640].param2  = 1,
++      [44649].file    = "mm/page_cgroup.c",
++      [44649].name    = "swap_cgroup_swapon",
++      [44649].param2  = 1,
++      [44656].file    = "drivers/net/wireless/iwlegacy/iwl-debugfs.c",
++      [44656].name    = "iwl_legacy_dbgfs_wd_timeout_write",
++      [44656].param3  = 1,
++      [4471].file     = "fs/ntfs/malloc.h",
++      [4471].name     = "__ntfs_malloc",
++      [4471].param1   = 1,
++      [44773].file    = "drivers/staging/vme/devices/vme_user.c",
++      [44773].name    = "vme_user_write",
++      [44773].param3  = 1,
++      [44825].file    = "drivers/scsi/osd/osd_initiator.c",
++      [44825].name    = "_osd_realloc_seg",
++      [44825].param3  = 1,
++      [44943].file    = "mm/util.c",
++      [44943].name    = "kmemdup",
++      [44943].param2  = 1,
++      [44990].file    = "drivers/media/video/pvrusb2/pvrusb2-ioread.c",
++      [44990].name    = "pvr2_ioread_set_sync_key",
++      [44990].param3  = 1,
++      [45000].file    = "fs/afs/proc.c",
++      [45000].name    = "afs_proc_rootcell_write",
++      [45000].param3  = 1,
++      [45119].file    = "drivers/usb/misc/yurex.c",
++      [45119].name    = "yurex_write",
++      [45119].param3  = 1,
++      [45169].file    = "drivers/video/metronomefb.c",
++      [45169].name    = "metronomefb_write",
++      [45169].param3  = 1,
++      [45200].file    = "drivers/scsi/scsi_proc.c",
++      [45200].name    = "proc_scsi_write_proc",
++      [45200].param3  = 1,
++      [45217].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [45217].name    = "iwl_dbgfs_debug_level_write",
++      [45217].param3  = 1,
++      [45231].file    = "fs/ecryptfs/crypto.c",
++      [45231].name    = "ecryptfs_copy_filename",
++      [45231].param4  = 1,
++      [45233].file    = "net/rds/info.c",
++      [45233].name    = "rds_info_getsockopt",
++      [45233].param3  = 1,
++      [45244].file    = "drivers/mfd/ab3100-core.c",
++      [45244].name    = "ab3100_get_set_reg",
++      [45244].param3  = 1,
++      [45264].file    = "drivers/net/wireless/ath/ath5k/debug.c",
++      [45264].name    = "write_file_ani",
++      [45264].param3  = 1,
++      [45326].file    = "drivers/mtd/ubi/cdev.c",
++      [45326].name    = "vol_cdev_read",
++      [45326].param3  = 1,
++      [45335].file    = "fs/read_write.c",
++      [45335].name    = "vfs_writev",
++      [45335].param3  = 1,
++      [45421].file    = "drivers/message/fusion/mptctl.c",
++      [45421].name    = "mptctl_do_mpt_command",
++      [45421].param3  = 1,
++      [45534].file    = "drivers/net/wireless/ath/carl9170/cmd.c",
++      [45534].name    = "carl9170_cmd_buf",
++      [45534].param3  = 1,
++      [45576].file    = "net/netfilter/xt_recent.c",
++      [45576].name    = "recent_mt_proc_write",
++      [45576].param3  = 1,
++      [45586].file    = "drivers/net/wireless/rt2x00/rt2x00debug.c",
++      [45586].name    = "rt2x00debug_write_bbp",
++      [45586].param3  = 1,
++      [45629].file    = "lib/bch.c",
++      [45629].name    = "bch_alloc",
++      [45629].param1  = 1,
++      [45633].file    = "drivers/input/evdev.c",
++      [45633].name    = "evdev_do_ioctl",
++      [45633].param2  = 1,
++      [45740].file    = "drivers/net/wireless/ath/ath6kl/debug.c",
++      [45740].name    = "ath6kl_lrssi_roam_write",
++      [45740].param3  = 1,
++      [45747].file    = "net/netlink/af_netlink.c",
++      [45747].name    = "__netlink_change_ngroups",
++      [45747].param2  = 1,
++      [45930].file    = "security/apparmor/apparmorfs.c",
++      [45930].name    = "profile_remove",
++      [45930].param3  = 1,
++      [45954].file    = "drivers/usb/misc/legousbtower.c",
++      [45954].name    = "tower_write",
++      [45954].param3  = 1,
++      [45995].file    = "fs/namei.c",
++      [45995].name    = "sys_mknodat",
++      [45995].param2  = 1,
++      [46072].file    = "drivers/video/arcfb.c",
++      [46072].name    = "arcfb_write",
++      [46072].param3  = 1,
++      [46140].file    = "sound/core/memalloc.c",
++      [46140].name    = "snd_mem_proc_write",
++      [46140].param3  = 1,
++      [4614].file     = "sound/core/pcm_lib.c",
++      [4614].name     = "snd_pcm_lib_write_transfer",
++      [4614].param5   = 1,
++      [4616].file     = "net/sunrpc/cache.c",
++      [4616].name     = "cache_do_downcall",
++      [4616].param3   = 1,
++      [46243].file    = "fs/binfmt_misc.c",
++      [46243].name    = "bm_register_write",
++      [46243].param3  = 1,
++      [46250].file    = "fs/xattr.c",
++      [46250].name    = "sys_getxattr",
++      [46250].param4  = 1,
++      [46343].file    = "fs/compat.c",
++      [46343].name    = "compat_do_readv_writev",
++      [46343].param4  = 1,
++      [4644].file     = "drivers/net/usb/mcs7830.c",
++      [4644].name     = "mcs7830_get_reg",
++      [4644].param3   = 1,
++      [46605].file    = "sound/core/oss/pcm_oss.c",
++      [46605].name    = "snd_pcm_oss_sync1",
++      [46605].param2  = 1,
++      [46630].file    = "net/decnet/af_decnet.c",
++      [46630].name    = "__dn_setsockopt",
++      [46630].param5  = 1,
++      [46655].file    = "drivers/media/video/hdpvr/hdpvr-video.c",
++      [46655].name    = "hdpvr_read",
++      [46655].param3  = 1,
++      [46685].file    = "drivers/gpu/drm/ttm/ttm_bo_vm.c",
++      [46685].name    = "ttm_bo_fbdev_io",
++      [46685].param4  = 1,
++      [46752].file    = "drivers/staging/pohmelfs/dir.c",
++      [46752].name    = "pohmelfs_name_alloc",
++      [46752].param1  = 1,
++      [46881].file    = "drivers/char/lp.c",
++      [46881].name    = "lp_write",
++      [46881].param3  = 1,
++      [47130].file    = "kernel/kfifo.c",
++      [47130].name    = "kfifo_copy_to_user",
++      [47130].param3  = 1,
++      [47265].file    = "drivers/scsi/bnx2fc/bnx2fc_io.c",
++      [47265].name    = "bnx2fc_cmd_mgr_alloc",
++      [47265].param2  = 1,
++      [47265].param3  = 1,
++      [47342].file    = "fs/proc/base.c",
++      [47342].name    = "sched_autogroup_write",
++      [47342].param3  = 1,
++      [47363].file    = "drivers/input/evdev.c",
++      [47363].name    = "evdev_ioctl_handler",
++      [47363].param2  = 1,
++      [47385].file    = "drivers/net/wireless/zd1211rw/zd_usb.c",
++      [47385].name    = "zd_usb_iowrite16v",
++      [47385].param3  = 1,
++      [47463].file    = "fs/xfs/kmem.c",
++      [47463].name    = "kmem_zalloc",
++      [47463].param1  = 1,
++      [47636].file    = "drivers/usb/class/usblp.c",
++      [47636].name    = "usblp_ioctl",
++      [47636].param2  = 1,
++      [47637].file    = "drivers/block/cciss.c",
++      [47637].name    = "cciss_proc_write",
++      [47637].param3  = 1,
++      [47652].file    = "lib/kstrtox.c",
++      [47652].name    = "kstrtoll_from_user",
++      [47652].param2  = 1,
++      [47881].file    = "security/selinux/selinuxfs.c",
++      [47881].name    = "sel_write_disable",
++      [47881].param3  = 1,
++      [48010].file    = "drivers/net/wireless/ath/ath9k/debug.c",
++      [48010].name    = "write_file_rx_chainmask",
++      [48010].param3  = 1,
++      [48155].file    = "net/sctp/sm_make_chunk.c",
++      [48155].name    = "sctp_make_abort_user",
++      [48155].param3  = 1,
++      [48182].file    = "crypto/cryptd.c",
++      [48182].name    = "cryptd_alloc_instance",
++      [48182].param2  = 1,
++      [48248].file    = "security/keys/keyctl.c",
++      [48248].name    = "keyctl_instantiate_key",
++      [48248].param3  = 1,
++      [48461].file    = "drivers/gpu/drm/drm_memory.c",
++      [48461].name    = "agp_remap",
++      [48461].param2  = 1,
++      [48642].file    = "fs/hugetlbfs/inode.c",
++      [48642].name    = "hugetlbfs_read",
++      [48642].param3  = 1,
++      [48720].file    = "drivers/gpu/drm/i915/i915_debugfs.c",
++      [48720].name    = "i915_max_freq_write",
++      [48720].param3  = 1,
++      [48768].file    = "net/irda/irnet/irnet_ppp.c",
++      [48768].name    = "dev_irnet_write",
++      [48768].param3  = 1,
++      [48856].file    = "drivers/acpi/acpica/utalloc.c",
++      [48856].name    = "acpi_ut_initialize_buffer",
++      [48856].param2  = 1,
++      [48941].file    = "drivers/gpu/drm/nouveau/nouveau_vm.c",
++      [48941].name    = "nouveau_vm_new",
++      [48941].param2  = 1,
++      [48941].param3  = 1,
++      [49126].file    = "lib/prio_heap.c",
++      [49126].name    = "heap_init",
++      [49126].param2  = 1,
++      [49143].file    = "sound/core/oss/pcm_oss.c",
++      [49143].name    = "snd_pcm_oss_write2",
++      [49143].param3  = 1,
++      [49216].file    = "fs/read_write.c",
++      [49216].name    = "do_readv_writev",
++      [49216].param4  = 1,
++      [49354].file    = "drivers/media/video/cx18/cx18-fileops.c",
++      [49354].name    = "cx18_v4l2_read",
++      [49354].param3  = 1,
++      [49448].file    = "drivers/isdn/gigaset/common.c",
++      [49448].name    = "gigaset_initdriver",
++      [49448].param2  = 1,
++      [49494].file    = "drivers/virtio/virtio_ring.c",
++      [49494].name    = "vring_new_virtqueue",
++      [49494].param1  = 1,
++      [49507].file    = "fs/namei.c",
++      [49507].name    = "sys_symlink",
++      [49507].param1  = 1,
++      [49604].file    = "crypto/af_alg.c",
++      [49604].name    = "alg_setsockopt",
++      [49604].param5  = 1,
++      [49646].file    = "drivers/tty/vt/vt.c",
++      [49646].name    = "vc_resize",
++      [49646].param2  = 1,
++      [49646].param3  = 1,
++      [49663].file    = "drivers/media/video/uvc/uvc_driver.c",
++      [49663].name    = "uvc_simplify_fraction",
++      [49663].param3  = 1,
++      [49718].file    = "drivers/hid/hid-roccat-common.c",
++      [49718].name    = "roccat_common_send",
++      [49718].param4  = 1,
++      [4972].file     = "drivers/video/fb_sys_fops.c",
++      [4972].name     = "fb_sys_write",
++      [4972].param3   = 1,
++      [49746].file    = "net/ipv4/netfilter/arp_tables.c",
++      [49746].name    = "compat_do_arpt_set_ctl",
++      [49746].param4  = 1,
++      [49780].file    = "net/mac80211/key.c",
++      [49780].name    = "ieee80211_key_alloc",
++      [49780].param3  = 1,
++      [49845].file    = "mm/vmalloc.c",
++      [49845].name    = "__vmalloc_node",
++      [49845].param1  = 1,
++      [49935].file    = "fs/xfs/kmem.c",
++      [49935].name    = "kmem_zalloc_greedy",
++      [49935].param2  = 1,
++      [49935].param3  = 1,
++      [50001].file    = "sound/pci/ctxfi/ctresource.c",
++      [50001].name    = "rsc_mgr_init",
++      [50001].param3  = 1,
++      [50022].file    = "drivers/usb/storage/shuttle_usbat.c",
++      [50022].name    = "usbat_flash_read_data",
++      [50022].param4  = 1,
++      [50096].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [50096].name    = "lbs_rdbbp_write",
++      [50096].param3  = 1,
++      [50102].file    = "drivers/telephony/ixj.c",
++      [50102].name    = "ixj_write",
++      [50102].param3  = 1,
++      [50238].file    = "drivers/net/wireless/iwlegacy/iwl-debugfs.c",
++      [50238].name    = "iwl_legacy_dbgfs_clear_ucode_statistics_write",
++      [50238].param3  = 1,
++      [50267].file    = "drivers/net/wireless/rt2x00/rt2x00debug.c",
++      [50267].name    = "rt2x00debug_read_crypto_stats",
++      [50267].param3  = 1,
++      [50398].file    = "fs/proc/base.c",
++      [50398].name    = "mem_write",
++      [50398].param3  = 1,
++      [50518].file    = "drivers/gpu/drm/nouveau/nouveau_gem.c",
++      [50518].name    = "u_memcpya",
++      [50518].param2  = 1,
++      [50518].param3  = 1,
++      [5052].file     = "drivers/char/ppdev.c",
++      [5052].name     = "pp_read",
++      [5052].param3   = 1,
++      [50562].file    = "drivers/media/video/zoran/zoran_procfs.c",
++      [50562].name    = "zoran_write",
++      [50562].param3  = 1,
++      [50653].file    = "net/sunrpc/cache.c",
++      [50653].name    = "cache_write_procfs",
++      [50653].param3  = 1,
++      [50692].file    = "lib/ts_bm.c",
++      [50692].name    = "bm_init",
++      [50692].param2  = 1,
++      [50813].file    = "mm/vmalloc.c",
++      [50813].name    = "__vmalloc_node_flags",
++      [50813].param1  = 1,
++      [5087].file     = "drivers/atm/solos-pci.c",
++      [5087].name     = "console_store",
++      [5087].param4   = 1,
++      [5102].file     = "drivers/usb/misc/usbtest.c",
++      [5102].name     = "usbtest_alloc_urb",
++      [5102].param3   = 1,
++      [5102].param5   = 1,
++      [51052].file    = "drivers/base/firmware_class.c",
++      [51052].name    = "firmware_data_write",
++      [51052].param6  = 1,
++      [51177].file    = "net/sunrpc/xprtrdma/transport.c",
++      [51177].name    = "xprt_rdma_allocate",
++      [51177].param2  = 1,
++      [51182].file    = "drivers/misc/sgi-xp/xpc_main.c",
++      [51182].name    = "xpc_kzalloc_cacheline_aligned",
++      [51182].param1  = 1,
++      [51250].file    = "fs/read_write.c",
++      [51250].name    = "rw_copy_check_uvector",
++      [51250].param3  = 1,
++      [51253].file    = "drivers/net/wireless/rt2x00/rt2x00debug.c",
++      [51253].name    = "rt2x00debug_write_eeprom",
++      [51253].param3  = 1,
++      [51284].file    = "drivers/net/wireless/iwlegacy/iwl-debugfs.c",
++      [51284].name    = "iwl_legacy_dbgfs_interrupt_write",
++      [51284].param3  = 1,
++      [51323].file    = "sound/pci/ac97/ac97_pcm.c",
++      [51323].name    = "snd_ac97_pcm_assign",
++      [51323].param2  = 1,
++      [51340].file    = "drivers/usb/class/usblp.c",
++      [51340].name    = "usblp_write",
++      [51340].param3  = 1,
++      [51471].file    = "drivers/block/floppy.c",
++      [51471].name    = "fd_locked_ioctl",
++      [51471].param3  = 1,
++      [5197].file     = "net/core/dev.c",
++      [5197].name     = "dev_set_alias",
++      [5197].param3   = 1,
++      [51998].file    = "drivers/net/macvtap.c",
++      [51998].name    = "macvtap_get_user",
++      [51998].param4  = 1,
++      [5204].file     = "drivers/media/video/usbvision/usbvision-video.c",
++      [5204].name     = "usbvision_v4l2_read",
++      [5204].param3   = 1,
++      [52086].file    = "drivers/usb/image/mdc800.c",
++      [52086].name    = "mdc800_device_read",
++      [52086].param3  = 1,
++      [52172].file    = "drivers/pcmcia/cistpl.c",
++      [52172].name    = "pccard_store_cis",
++      [52172].param6  = 1,
++      [52173].file    = "drivers/misc/ibmasm/ibmasmfs.c",
++      [52173].name    = "remote_settings_file_write",
++      [52173].param3  = 1,
++      [52199].file    = "mm/nobootmem.c",
++      [52199].name    = "__alloc_bootmem",
++      [52199].param1  = 1,
++      [52201].file    = "drivers/video/via/viafbdev.c",
++      [52201].name    = "viafb_dvp0_proc_write",
++      [52201].param3  = 1,
++      [5233].file     = "include/linux/poll.h",
++      [5233].name     = "set_fd_set",
++      [5233].param1   = 1,
++      [52343].file    = "drivers/usb/misc/adutux.c",
++      [52343].name    = "adu_read",
++      [52343].param3  = 1,
++      [52364].file    = "sound/core/pcm_lib.c",
++      [52364].name    = "snd_pcm_lib_readv_transfer",
++      [52364].param5  = 1,
++      [52401].file    = "drivers/staging/rtl8712/rtl871x_ioctl_linux.c",
++      [52401].name    = "r871x_set_wpa_ie",
++      [52401].param3  = 1,
++      [52699].file    = "lib/ts_fsm.c",
++      [52699].name    = "fsm_init",
++      [52699].param2  = 1,
++      [52721].file    = "security/keys/encrypted-keys/encrypted.c",
++      [52721].name    = "encrypted_instantiate",
++      [52721].param3  = 1,
++      [53041].file    = "fs/libfs.c",
++      [53041].name    = "simple_transaction_get",
++      [53041].param3  = 1,
++      [5313].file     = "fs/gfs2/quota.c",
++      [5313].name     = "do_sync",
++      [5313].param1   = 1,
++      [53209].file    = "drivers/usb/host/ehci-sched.c",
++      [53209].name    = "iso_sched_alloc",
++      [53209].param1  = 1,
++      [53302].file    = "drivers/firewire/core-cdev.c",
++      [53302].name    = "dispatch_ioctl",
++      [53302].param2  = 1,
++      [53355].file    = "fs/ceph/dir.c",
++      [53355].name    = "ceph_read_dir",
++      [53355].param3  = 1,
++      [53405].file    = "drivers/media/video/videobuf-core.c",
++      [53405].name    = "__videobuf_copy_to_user",
++      [53405].param4  = 1,
++      [53407].file    = "net/wireless/sme.c",
++      [53407].name    = "cfg80211_connect_result",
++      [53407].param4  = 1,
++      [53407].param6  = 1,
++      [53426].file    = "fs/libfs.c",
++      [53426].name    = "simple_transaction_read",
++      [53426].param3  = 1,
++      [5344].file     = "security/selinux/ss/hashtab.c",
++      [5344].name     = "hashtab_create",
++      [5344].param3   = 1,
++      [53468].file    = "drivers/char/mem.c",
++      [53468].name    = "write_mem",
++      [53468].param3  = 1,
++      [53513].file    = "drivers/mmc/core/mmc_ops.c",
++      [53513].name    = "mmc_send_bus_test",
++      [53513].param4  = 1,
++      [53539].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [53539].name    = "iwl_dbgfs_txfifo_flush_write",
++      [53539].param3  = 1,
++      [53626].file    = "drivers/block/paride/pg.c",
++      [53626].name    = "pg_read",
++      [53626].param3  = 1,
++      [53631].file    = "mm/util.c",
++      [53631].name    = "memdup_user",
++      [53631].param2  = 1,
++      [53680].file    = "lib/kstrtox.c",
++      [53680].name    = "kstrtol_from_user",
++      [53680].param2  = 1,
++      [5389].file     = "drivers/infiniband/core/uverbs_cmd.c",
++      [5389].name     = "ib_uverbs_unmarshall_recv",
++      [5389].param5   = 1,
++      [53901].file    = "net/rds/message.c",
++      [53901].name    = "rds_message_alloc",
++      [53901].param1  = 1,
++      [53904].file    = "fs/namei.c",
++      [53904].name    = "sys_unlink",
++      [53904].param1  = 1,
++      [5410].file     = "kernel/kexec.c",
++      [5410].name     = "sys_kexec_load",
++      [5410].param2   = 1,
++      [54182].file    = "drivers/block/rbd.c",
++      [54182].name    = "rbd_snap_add",
++      [54182].param4  = 1,
++      [5419].file     = "drivers/net/wireless/iwlegacy/iwl-debugfs.c",
++      [5419].name     = "iwl_legacy_dbgfs_disable_ht40_write",
++      [5419].param3   = 1,
++      [54201].file    = "drivers/platform/x86/asus_acpi.c",
++      [54201].name    = "mled_proc_write",
++      [54201].param3  = 1,
++      [5422].file     = "fs/namei.c",
++      [5422].name     = "do_unlinkat",
++      [5422].param2   = 1,
++      [54252].file    = "drivers/scsi/st.c",
++      [54252].name    = "st_write",
++      [54252].param3  = 1,
++      [54263].file    = "security/keys/trusted.c",
++      [54263].name    = "trusted_instantiate",
++      [54263].param3  = 1,
++      [54298].file    = "drivers/usb/wusbcore/crypto.c",
++      [54298].name    = "wusb_ccm_mac",
++      [54298].param7  = 1,
++      [54318].file    = "include/drm/drm_mem_util.h",
++      [54318].name    = "drm_malloc_ab",
++      [54318].param1  = 1,
++      [54318].param2  = 1,
++      [54335].file    = "drivers/md/dm-table.c",
++      [54335].name    = "dm_vcalloc",
++      [54335].param1  = 1,
++      [54335].param2  = 1,
++      [54339].file    = "security/smack/smackfs.c",
++      [54339].name    = "smk_write_cipso",
++      [54339].param3  = 1,
++      [5438].file     = "sound/core/memory.c",
++      [5438].name     = "copy_to_user_fromio",
++      [5438].param3   = 1,
++      [54401].file    = "lib/dynamic_debug.c",
++      [54401].name    = "ddebug_proc_write",
++      [54401].param3  = 1,
++      [54427].file    = "drivers/usb/storage/jumpshot.c",
++      [54427].name    = "jumpshot_write_data",
++      [54427].param4  = 1,
++      [54467].file    = "net/packet/af_packet.c",
++      [54467].name    = "packet_setsockopt",
++      [54467].param5  = 1,
++      [54573].file    = "ipc/sem.c",
++      [54573].name    = "sys_semop",
++      [54573].param3  = 1,
++      [54643].file    = "drivers/isdn/hardware/eicon/divasi.c",
++      [54643].name    = "um_idi_write",
++      [54643].param3  = 1,
++      [54657].file    = "mm/migrate.c",
++      [54657].name    = "do_pages_stat",
++      [54657].param2  = 1,
++      [54663].file    = "drivers/isdn/hardware/eicon/platform.h",
++      [54663].name    = "diva_os_malloc",
++      [54663].param2  = 1,
++      [54751].file    = "drivers/infiniband/core/device.c",
++      [54751].name    = "ib_alloc_device",
++      [54751].param1  = 1,
++      [54806].file    = "drivers/scsi/lpfc/lpfc_debugfs.c",
++      [54806].name    = "lpfc_debugfs_dif_err_write",
++      [54806].param3  = 1,
++      [5494].file     = "fs/cifs/cifsacl.c",
++      [5494].name     = "cifs_idmap_key_instantiate",
++      [5494].param3   = 1,
++      [55066].file    = "net/ipv6/ipv6_sockglue.c",
++      [55066].name    = "do_ipv6_setsockopt",
++      [55066].param5  = 1,
++      [55105].file    = "drivers/base/devres.c",
++      [55105].name    = "devres_alloc",
++      [55105].param2  = 1,
++      [55115].file    = "net/sctp/probe.c",
++      [55115].name    = "sctpprobe_read",
++      [55115].param3  = 1,
++      [55155].file    = "net/bluetooth/rfcomm/sock.c",
++      [55155].name    = "rfcomm_sock_setsockopt",
++      [55155].param5  = 1,
++      [55187].file    = "security/keys/keyctl.c",
++      [55187].name    = "keyctl_describe_key",
++      [55187].param3  = 1,
++      [5524].file     = "lib/kstrtox.c",
++      [5524].name     = "kstrtos8_from_user",
++      [5524].param2   = 1,
++      [55253].file    = "drivers/net/wireless/ray_cs.c",
++      [55253].name    = "ray_cs_essid_proc_write",
++      [55253].param3  = 1,
++      [5548].file     = "drivers/media/media-entity.c",
++      [5548].name     = "media_entity_init",
++      [5548].param2   = 1,
++      [5548].param4   = 1,
++      [55580].file    = "drivers/usb/mon/mon_bin.c",
++      [55580].name    = "copy_from_buf",
++      [55580].param2  = 1,
++      [55682].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [55682].name    = "lbs_host_sleep_write",
++      [55682].param3  = 1,
++      [55712].file    = "drivers/char/mem.c",
++      [55712].name    = "read_zero",
++      [55712].param3  = 1,
++      [55857].file    = "drivers/net/wireless/ath/ath9k/debug.c",
++      [55857].name    = "write_file_tx_chainmask",
++      [55857].param3  = 1,
++      [55978].file    = "drivers/usb/misc/iowarrior.c",
++      [55978].name    = "iowarrior_write",
++      [55978].param3  = 1,
++      [5599].file     = "drivers/char/random.c",
++      [5599].name     = "write_pool",
++      [5599].param3   = 1,
++      [56090].file    = "drivers/media/video/videobuf-dma-sg.c",
++      [56090].name    = "__videobuf_alloc_vb",
++      [56090].param1  = 1,
++      [56199].file    = "fs/binfmt_misc.c",
++      [56199].name    = "parse_command",
++      [56199].param2  = 1,
++      [56218].file    = "drivers/mmc/card/mmc_test.c",
++      [56218].name    = "mtf_test_write",
++      [56218].param3  = 1,
++      [56416].file    = "drivers/misc/lkdtm.c",
++      [56416].name    = "do_register_entry",
++      [56416].param4  = 1,
++      [56432].file    = "drivers/mfd/aat2870-core.c",
++      [56432].name    = "aat2870_reg_write_file",
++      [56432].param3  = 1,
++      [56471].file    = "include/linux/slab.h",
++      [56471].name    = "kcalloc",
++      [56471].param1  = 1,
++      [56471].param2  = 1,
++      [56513].file    = "fs/cifs/connect.c",
++      [56513].name    = "cifs_readv_from_socket",
++      [56513].param3  = 1,
++      [56544].file    = "drivers/block/drbd/drbd_receiver.c",
++      [56544].name    = "receive_DataRequest",
++      [56544].param3  = 1,
++      [5661].file     = "lib/dma-debug.c",
++      [5661].name     = "filter_write",
++      [5661].param3   = 1,
++      [56672].file    = "drivers/char/agp/generic.c",
++      [56672].name    = "agp_alloc_page_array",
++      [56672].param1  = 1,
++      [56843].file    = "drivers/scsi/scsi_transport_iscsi.c",
++      [56843].name    = "iscsi_recv_pdu",
++      [56843].param4  = 1,
++      [57120].file    = "lib/kstrtox.c",
++      [57120].name    = "kstrtouint_from_user",
++      [57120].param2  = 1,
++      [57128].file    = "drivers/pnp/pnpbios/proc.c",
++      [57128].name    = "pnpbios_proc_write",
++      [57128].param3  = 1,
++      [57190].file    = "drivers/char/agp/generic.c",
++      [57190].name    = "agp_generic_alloc_user",
++      [57190].param1  = 1,
++      [57471].file    = "drivers/media/video/sn9c102/sn9c102_core.c",
++      [57471].name    = "sn9c102_read",
++      [57471].param3  = 1,
++      [57605].file    = "net/netlink/af_netlink.c",
++      [57605].name    = "netlink_kernel_create",
++      [57605].param3  = 1,
++      [57670].file    = "drivers/bluetooth/btmrvl_debugfs.c",
++      [57670].name    = "btmrvl_pscmd_write",
++      [57670].param3  = 1,
++      [57675].file    = "drivers/net/wireless/ath/ath9k/debug.c",
++      [57675].name    = "write_file_regidx",
++      [57675].param3  = 1,
++      [57724].file    = "net/bluetooth/hci_sock.c",
++      [57724].name    = "hci_sock_setsockopt",
++      [57724].param5  = 1,
++      [57748].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [57748].name    = "iwl_dbgfs_missed_beacon_write",
++      [57748].param3  = 1,
++      [57786].file    = "net/ipv6/netfilter/ip6_tables.c",
++      [57786].name    = "compat_do_ip6t_set_ctl",
++      [57786].param4  = 1,
++      [57872].file    = "fs/ceph/xattr.c",
++      [57872].name    = "ceph_setxattr",
++      [57872].param4  = 1,
++      [57927].file    = "fs/read_write.c",
++      [57927].name    = "sys_preadv",
++      [57927].param3  = 1,
++      [58020].file    = "drivers/firewire/core-cdev.c",
++      [58020].name    = "fw_device_op_ioctl",
++      [58020].param2  = 1,
++      [58043].file    = "kernel/auditfilter.c",
++      [58043].name    = "audit_unpack_string",
++      [58043].param3  = 1,
++      [5805].file     = "drivers/xen/grant-table.c",
++      [5805].name     = "gnttab_alloc_grant_references",
++      [5805].param1   = 1,
++      [58087].file    = "kernel/module.c",
++      [58087].name    = "module_alloc_update_bounds_rw",
++      [58087].param1  = 1,
++      [58107].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [58107].name    = "iwl_dbgfs_sleep_level_override_write",
++      [58107].param3  = 1,
++      [58124].file    = "drivers/usb/misc/usbtest.c",
++      [58124].name    = "ctrl_out",
++      [58124].param3  = 1,
++      [58124].param5  = 1,
++      [58263].file    = "security/keys/keyring.c",
++      [58263].name    = "keyring_read",
++      [58263].param3  = 1,
++      [58278].file    = "drivers/net/wireless/iwlwifi/iwl-trans-pcie.c",
++      [58278].name    = "iwl_dbgfs_log_event_write",
++      [58278].param3  = 1,
++      [5830].file     = "drivers/gpu/vga/vga_switcheroo.c",
++      [5830].name     = "vga_switcheroo_debugfs_write",
++      [5830].param3   = 1,
++      [58320].file    = "drivers/scsi/scsi_proc.c",
++      [58320].name    = "proc_scsi_write",
++      [58320].param3  = 1,
++      [58344].file    = "net/sunrpc/cache.c",
++      [58344].name    = "read_flush",
++      [58344].param3  = 1,
++      [58392].file    = "fs/namei.c",
++      [58392].name    = "getname_flags",
++      [58392].param1  = 1,
++      [58418].file    = "kernel/module.c",
++      [58418].name    = "sys_init_module",
++      [58418].param2  = 1,
++      [58502].file    = "sound/core/sgbuf.c",
++      [58502].name    = "snd_malloc_sgbuf_pages",
++      [58502].param2  = 1,
++      [58597].file    = "kernel/kfifo.c",
++      [58597].name    = "__kfifo_to_user",
++      [58597].param3  = 1,
++      [58641].file    = "drivers/usb/misc/adutux.c",
++      [58641].name    = "adu_write",
++      [58641].param3  = 1,
++      [58709].file    = "fs/compat.c",
++      [58709].name    = "compat_sys_pwritev",
++      [58709].param3  = 1,
++      [58769].file    = "drivers/net/wireless/zd1211rw/zd_usb.c",
++      [58769].name    = "zd_usb_read_fw",
++      [58769].param4  = 1,
++      [5876].file     = "drivers/net/ppp/ppp_generic.c",
++      [5876].name     = "ppp_write",
++      [5876].param3   = 1,
++      [58826].file    = "net/sunrpc/xprt.c",
++      [58826].name    = "xprt_alloc",
++      [58826].param2  = 1,
++      [58867].file    = "drivers/platform/x86/asus_acpi.c",
++      [58867].name    = "wled_proc_write",
++      [58867].param3  = 1,
++      [58878].file    = "drivers/net/wireless/libertas/debugfs.c",
++      [58878].name    = "lbs_wrbbp_write",
++      [58878].param3  = 1,
++      [58888].file    = "fs/xattr.c",
++      [58888].name    = "listxattr",
++      [58888].param3  = 1,
++      [58912].file    = "drivers/lguest/core.c",
++      [58912].name    = "__lgwrite",
++      [58912].param4  = 1,
++      [58918].file    = "sound/core/pcm_native.c",
++      [58918].name    = "snd_pcm_aio_write",
++      [58918].param3  = 1,
++      [58919].file    = "net/netlabel/netlabel_unlabeled.c",
++      [58919].name    = "netlbl_unlabel_init",
++      [58919].param1  = 1,
++      [58942].file    = "drivers/block/aoe/aoedev.c",
++      [58942].name    = "aoedev_flush",
++      [58942].param2  = 1,
++      [58958].file    = "fs/fuse/control.c",
++      [58958].name    = "fuse_conn_limit_write",
++      [58958].param3  = 1,
++      [58].file       = "lib/kstrtox.c",
++      [58].name       = "kstrtoull_from_user",
++      [58].param2     = 1,
++      [59034].file    = "drivers/acpi/acpica/dsobject.c",
++      [59034].name    = "acpi_ds_build_internal_package_obj",
++      [59034].param3  = 1,
++      [59073].file    = "drivers/staging/speakup/i18n.c",
++      [59073].name    = "msg_set",
++      [59073].param3  = 1,
++      [59108].file    = "drivers/net/wireless/ath/ath5k/debug.c",
++      [59108].name    = "write_file_queue",
++      [59108].param3  = 1,
++      [59297].file    = "drivers/media/dvb/ttpci/av7110_av.c",
++      [59297].name    = "dvb_play",
++      [59297].param3  = 1,
++      [59472].file    = "drivers/misc/ibmasm/ibmasmfs.c",
++      [59472].name    = "command_file_write",
++      [59472].param3  = 1,
++      [59505].file    = "drivers/media/video/pvrusb2/pvrusb2-ioread.c",
++      [59505].name    = "pvr2_ioread_read",
++      [59505].param3  = 1,
++      [59681].file    = "fs/xfs/kmem.c",
++      [59681].name    = "kmem_alloc",
++      [59681].param1  = 1,
++      [5968].file     = "net/sunrpc/sched.c",
++      [5968].name     = "rpc_malloc",
++      [5968].param2   = 1,
++      [59794].file    = "mm/mincore.c",
++      [59794].name    = "sys_mincore",
++      [59794].param1  = 1,
++      [59794].param2  = 1,
++      [59838].file    = "net/netlink/af_netlink.c",
++      [59838].name    = "nl_pid_hash_zalloc",
++      [59838].param1  = 1,
++      [59856].file    = "drivers/base/devres.c",
++      [59856].name    = "devm_kzalloc",
++      [59856].param2  = 1,
++      [59991].file    = "drivers/media/video/uvc/uvc_queue.c",
++      [59991].name    = "uvc_alloc_buffers",
++      [59991].param2  = 1,
++      [59991].param3  = 1,
++      [60005].file    = "fs/namei.c",
++      [60005].name    = "getname",
++      [60005].param1  = 1,
++      [60066].file    = "mm/filemap.c",
++      [60066].name    = "iov_iter_copy_from_user",
++      [60066].param4  = 1,
++      [60198].file    = "fs/nfs/nfs4proc.c",
++      [60198].name    = "nfs4_write_cached_acl",
++      [60198].param3  = 1,
++      [60330].file    = "drivers/media/video/w9966.c",
++      [60330].name    = "w9966_v4l_read",
++      [60330].param3  = 1,
++      [6041].file     = "drivers/mtd/mtdchar.c",
++      [6041].name     = "mtd_write",
++      [6041].param3   = 1,
++      [60436].file    = "drivers/net/macvtap.c",
++      [60436].name    = "macvtap_sendmsg",
++      [60436].param4  = 1,
++      [60483].file    = "drivers/char/virtio_console.c",
++      [60483].name    = "fill_readbuf",
++      [60483].param3  = 1,
++      [604].file      = "drivers/staging/rtl8712/usb_ops_linux.c",
++      [604].name      = "r8712_usbctrl_vendorreq",
++      [604].param6    = 1,
++      [60543].file    = "drivers/usb/class/usbtmc.c",
++      [60543].name    = "usbtmc_read",
++      [60543].param3  = 1,
++      [60683].file    = "sound/drivers/opl4/opl4_proc.c",
++      [60683].name    = "snd_opl4_mem_proc_write",
++      [60683].param5  = 1,
++      [60693].file    = "drivers/misc/hpilo.c",
++      [60693].name    = "ilo_read",
++      [60693].param3  = 1,
++      [60744].file    = "sound/pci/emu10k1/emuproc.c",
++      [60744].name    = "snd_emu10k1_fx8010_read",
++      [60744].param5  = 1,
++      [60833].file    = "drivers/block/aoe/aoenet.c",
++      [60833].name    = "set_aoe_iflist",
++      [60833].param2  = 1,
++      [60878].file    = "drivers/net/wireless/rt2x00/rt2x00debug.c",
++      [60878].name    = "rt2x00debug_read_queue_dump",
++      [60878].param3  = 1,
++      [60882].file    = "drivers/input/joydev.c",
++      [60882].name    = "joydev_compat_ioctl",
++      [60882].param2  = 1,
++      [60891].file    = "kernel/sched.c",
++      [60891].name    = "sys_sched_setaffinity",
++      [60891].param2  = 1,
++      [60927].file    = "drivers/net/wireless/ath/ath9k/debug.c",
++      [60927].name    = "write_file_disable_ani",
++      [60927].param3  = 1,
++      [60928].file    = "drivers/staging/bcm/Bcmchar.c",
++      [60928].name    = "bcm_char_read",
++      [60928].param3  = 1,
++      [61058].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [61058].name    = "iwl_dbgfs_disable_ht40_write",
++      [61058].param3  = 1,
++      [61120].file    = "drivers/char/mem.c",
++      [61120].name    = "read_mem",
++      [61120].param3  = 1,
++      [61222].file    = "net/sunrpc/rpc_pipe.c",
++      [61222].name    = "rpc_pipe_generic_upcall",
++      [61222].param4  = 1,
++      [61254].file    = "drivers/scsi/scsi_devinfo.c",
++      [61254].name    = "proc_scsi_devinfo_write",
++      [61254].param3  = 1,
++      [61283].file    = "drivers/net/wireless/ath/ath6kl/debug.c",
++      [61283].name    = "ath6kl_fwlog_read",
++      [61283].param3  = 1,
++      [61289].file    = "security/apparmor/apparmorfs.c",
++      [61289].name    = "aa_simple_write_to_buffer",
++      [61289].param4  = 1,
++      [61389].file    = "include/linux/slab.h",
++      [61389].name    = "kzalloc_node",
++      [61389].param1  = 1,
++      [61546].file    = "mm/filemap.c",
++      [61546].name    = "__iovec_copy_from_user_inatomic",
++      [61546].param3  = 1,
++      [61546].param4  = 1,
++      [61552].file    = "drivers/input/evdev.c",
++      [61552].name    = "str_to_user",
++      [61552].param2  = 1,
++      [61673].file    = "security/keys/trusted.c",
++      [61673].name    = "trusted_update",
++      [61673].param3  = 1,
++      [61676].file    = "kernel/module.c",
++      [61676].name    = "module_alloc_update_bounds_rx",
++      [61676].param1  = 1,
++      [61770].file    = "drivers/media/video/et61x251/et61x251_core.c",
++      [61770].name    = "et61x251_read",
++      [61770].param3  = 1,
++      [6186].file     = "drivers/char/mem.c",
++      [6186].name     = "read_kmem",
++      [6186].param3   = 1,
++      [61932].file    = "drivers/message/fusion/mptctl.c",
++      [61932].name    = "__mptctl_ioctl",
++      [61932].param2  = 1,
++      [62081].file    = "drivers/net/irda/vlsi_ir.c",
++      [62081].name    = "vlsi_alloc_ring",
++      [62081].param3  = 1,
++      [62116].file    = "fs/libfs.c",
++      [62116].name    = "simple_attr_read",
++      [62116].param3  = 1,
++      [6225].file     = "drivers/block/floppy.c",
++      [6225].name     = "fd_ioctl",
++      [6225].param3   = 1,
++      [62294].file    = "sound/core/info.c",
++      [62294].name    = "resize_info_buffer",
++      [62294].param2  = 1,
++      [62378].file    = "net/ipv4/tcp.c",
++      [62378].name    = "do_tcp_setsockopt",
++      [62378].param5  = 1,
++      [62387].file    = "fs/nfs/idmap.c",
++      [62387].name    = "nfs_idmap_lookup_id",
++      [62387].param2  = 1,
++      [62453].file    = "fs/namei.c",
++      [62453].name    = "user_path_create",
++      [62453].param2  = 1,
++      [62495].file    = "drivers/block/floppy.c",
++      [62495].name    = "fallback_on_nodma_alloc",
++      [62495].param2  = 1,
++      [62498].file    = "fs/xattr.c",
++      [62498].name    = "sys_listxattr",
++      [62498].param3  = 1,
++      [62583].file    = "drivers/net/wireless/mwifiex/debugfs.c",
++      [62583].name    = "mwifiex_regrdwr_write",
++      [62583].param3  = 1,
++      [625].file      = "fs/read_write.c",
++      [625].name      = "sys_pwritev",
++      [625].param3    = 1,
++      [62669].file    = "drivers/platform/x86/asus_acpi.c",
++      [62669].name    = "tled_proc_write",
++      [62669].param3  = 1,
++      [62714].file    = "security/keys/keyctl.c",
++      [62714].name    = "keyctl_update_key",
++      [62714].param3  = 1,
++      [62799].file    = "fs/proc/task_mmu.c",
++      [62799].name    = "pagemap_read",
++      [62799].param3  = 1,
++      [62811].file    = "drivers/usb/misc/legousbtower.c",
++      [62811].name    = "tower_read",
++      [62811].param3  = 1,
++      [62851].file    = "fs/proc/vmcore.c",
++      [62851].name    = "read_vmcore",
++      [62851].param3  = 1,
++      [62925].file    = "include/rdma/ib_verbs.h",
++      [62925].name    = "ib_copy_from_udata",
++      [62925].param3  = 1,
++      [62967].file    = "security/keys/encrypted-keys/encrypted.c",
++      [62967].name    = "encrypted_update",
++      [62967].param3  = 1,
++      [62970].file    = "net/sched/sch_api.c",
++      [62970].name    = "qdisc_class_hash_alloc",
++      [62970].param1  = 1,
++      [62999].file    = "net/core/neighbour.c",
++      [62999].name    = "neigh_hash_alloc",
++      [62999].param1  = 1,
++      [63004].file    = "drivers/usb/storage/datafab.c",
++      [63004].name    = "datafab_write_data",
++      [63004].param4  = 1,
++      [63007].file    = "fs/proc/base.c",
++      [63007].name    = "proc_coredump_filter_write",
++      [63007].param3  = 1,
++      [63010].file    = "drivers/gpu/drm/ttm/ttm_page_alloc.c",
++      [63010].name    = "ttm_page_pool_free",
++      [63010].param2  = 1,
++      [63076].file    = "fs/cifs/xattr.c",
++      [63076].name    = "cifs_setxattr",
++      [63076].param4  = 1,
++      [63091].file    = "drivers/net/usb/pegasus.c",
++      [63091].name    = "get_registers",
++      [63091].param3  = 1,
++      [63169].file    = "drivers/scsi/sg.c",
++      [63169].name    = "sg_read",
++      [63169].param3  = 1,
++      [6331].file     = "drivers/atm/solos-pci.c",
++      [6331].name     = "solos_param_store",
++      [6331].param4   = 1,
++      [63367].file    = "net/netfilter/ipset/ip_set_core.c",
++      [63367].name    = "ip_set_alloc",
++      [63367].param1  = 1,
++      [63473].file    = "drivers/staging/pohmelfs/trans.c",
++      [63473].name    = "netfs_trans_alloc",
++      [63473].param2  = 1,
++      [63473].param4  = 1,
++      [63489].file    = "drivers/bluetooth/btmrvl_debugfs.c",
++      [63489].name    = "btmrvl_hscfgcmd_write",
++      [63489].param3  = 1,
++      [63490].file    = "crypto/shash.c",
++      [63490].name    = "shash_compat_setkey",
++      [63490].param3  = 1,
++      [63583].file    = "drivers/char/mem.c",
++      [63583].name    = "write_kmem",
++      [63583].param3  = 1,
++      [63605].file    = "mm/mempool.c",
++      [63605].name    = "mempool_kmalloc",
++      [63605].param2  = 1,
++      [63717].file    = "drivers/net/wireless/iwlwifi/iwl-trans-pcie.c",
++      [63717].name    = "iwl_dbgfs_csr_write",
++      [63717].param3  = 1,
++      [63748].file    = "drivers/staging/crystalhd/crystalhd_misc.c",
++      [63748].name    = "crystalhd_map_dio",
++      [63748].param3  = 1,
++      [63765].file    = "fs/seq_file.c",
++      [63765].name    = "seq_read",
++      [63765].param3  = 1,
++      [63777].file    = "drivers/virtio/virtio_ring.c",
++      [63777].name    = "virtqueue_add_buf_gfp",
++      [63777].param3  = 1,
++      [63777].param4  = 1,
++      [63961].file    = "fs/xattr.c",
++      [63961].name    = "sys_flistxattr",
++      [63961].param3  = 1,
++      [63988].file    = "drivers/input/evdev.c",
++      [63988].name    = "evdev_ioctl_compat",
++      [63988].param2  = 1,
++      [64118].file    = "fs/namei.c",
++      [64118].name    = "sys_symlinkat",
++      [64118].param1  = 1,
++      [64156].file    = "drivers/net/wireless/ath/ath6kl/cfg80211.c",
++      [64156].name    = "ath6kl_mgmt_tx",
++      [64156].param9  = 1,
++      [64227].file    = "mm/nobootmem.c",
++      [64227].name    = "__alloc_bootmem_node_nopanic",
++      [64227].param2  = 1,
++      [64312].file    = "drivers/video/hecubafb.c",
++      [64312].name    = "hecubafb_write",
++      [64312].param3  = 1,
++      [64351].file    = "kernel/kfifo.c",
++      [64351].name    = "kfifo_copy_from_user",
++      [64351].param3  = 1,
++      [64392].file    = "drivers/mmc/core/mmc_ops.c",
++      [64392].name    = "mmc_send_cxd_data",
++      [64392].param5  = 1,
++      [64471].file    = "drivers/bluetooth/btmrvl_debugfs.c",
++      [64471].name    = "btmrvl_hscmd_write",
++      [64471].param3  = 1,
++      [64667].file    = "sound/core/oss/pcm_oss.c",
++      [64667].name    = "snd_pcm_oss_read",
++      [64667].param3  = 1,
++      [64689].file    = "sound/isa/gus/gus_dram.c",
++      [64689].name    = "snd_gus_dram_read",
++      [64689].param4  = 1,
++      [64692].file    = "fs/binfmt_misc.c",
++      [64692].name    = "bm_entry_write",
++      [64692].param3  = 1,
++      [64705].file    = "drivers/staging/iio/accel/sca3000_ring.c",
++      [64705].name    = "sca3000_read_first_n_hw_rb",
++      [64705].param2  = 1,
++      [64743].file    = "fs/ocfs2/dlmfs/dlmfs.c",
++      [64743].name    = "dlmfs_file_read",
++      [64743].param3  = 1,
++      [6477].file     = "net/bluetooth/mgmt.c",
++      [6477].name     = "mgmt_pending_add",
++      [6477].param5   = 1,
++      [64898].file    = "drivers/media/video/videobuf-dma-sg.c",
++      [64898].name    = "videobuf_dma_init_user",
++      [64898].param3  = 1,
++      [64898].param4  = 1,
++      [64906].file    = "drivers/net/wireless/b43legacy/debugfs.c",
++      [64906].name    = "b43legacy_debugfs_write",
++      [64906].param3  = 1,
++      [64961].file    = "drivers/spi/spidev.c",
++      [64961].name    = "spidev_ioctl",
++      [64961].param2  = 1,
++      [65033].file    = "crypto/shash.c",
++      [65033].name    = "shash_async_setkey",
++      [65033].param3  = 1,
++      [65093].file    = "security/integrity/evm/evm_secfs.c",
++      [65093].name    = "evm_write_key",
++      [65093].param3  = 1,
++      [65098].file    = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [65098].name    = "iwl_dbgfs_traffic_log_write",
++      [65098].param3  = 1,
++      [6514].file     = "mm/nobootmem.c",
++      [6514].name     = "__alloc_bootmem_low",
++      [6514].param1   = 1,
++      [65169].file    = "net/core/skbuff.c",
++      [65169].name    = "dev_alloc_skb",
++      [65169].param1  = 1,
++      [6517].file     = "drivers/md/dm-table.c",
++      [6517].name     = "alloc_targets",
++      [6517].param2   = 1,
++      [65195].file    = "fs/jffs2/xattr.c",
++      [65195].name    = "do_jffs2_setxattr",
++      [65195].param5  = 1,
++      [65237].file    = "kernel/profile.c",
++      [65237].name    = "read_profile",
++      [65237].param3  = 1,
++      [65345].file    = "lib/xz/xz_dec_lzma2.c",
++      [65345].name    = "xz_dec_lzma2_create",
++      [65345].param2  = 1,
++      [65364].file    = "sound/core/pcm_lib.c",
++      [65364].name    = "snd_pcm_lib_read_transfer",
++      [65364].param5  = 1,
++      [65409].file    = "net/802/garp.c",
++      [65409].name    = "garp_request_join",
++      [65409].param4  = 1,
++      [65432].file    = "drivers/hid/hid-roccat-kone.c",
++      [65432].name    = "kone_receive",
++      [65432].param4  = 1,
++      [65452].file    = "drivers/message/fusion/mptctl.c",
++      [65452].name    = "mptctl_ioctl",
++      [65452].param2  = 1,
++      [65514].file    = "drivers/media/video/gspca/t613.c",
++      [65514].name    = "reg_w_ixbuf",
++      [65514].param4  = 1,
++      [6551].file     = "drivers/usb/host/xhci-mem.c",
++      [6551].name     = "xhci_alloc_stream_info",
++      [6551].param3   = 1,
++      [65535].file    = "drivers/media/dvb/dvb-usb/opera1.c",
++      [65535].name    = "opera1_xilinx_rw",
++      [65535].param5  = 1,
++      [6657].file     = "drivers/hid/hid-roccat-kone.c",
++      [6657].name     = "kone_send",
++      [6657].param4   = 1,
++      [6672].file     = "drivers/net/wireless/b43/debugfs.c",
++      [6672].name     = "b43_debugfs_write",
++      [6672].param3   = 1,
++      [6691].file     = "drivers/acpi/proc.c",
++      [6691].name     = "acpi_system_write_wakeup_device",
++      [6691].param3   = 1,
++      [6772].file     = "drivers/net/wireless/iwlwifi/iwl-debugfs.c",
++      [6772].name     = "iwl_dbgfs_force_reset_write",
++      [6772].param3   = 1,
++      [6780].file     = "sound/core/info.c",
++      [6780].name     = "snd_info_entry_read",
++      [6780].param3   = 1,
++      [6800].file     = "drivers/net/wireless/iwlegacy/iwl-debugfs.c",
++      [6800].name     = "iwl_legacy_dbgfs_missed_beacon_write",
++      [6800].param3   = 1,
++      [680].file      = "drivers/misc/ibmasm/ibmasmfs.c",
++      [680].name      = "command_file_read",
++      [680].param3    = 1,
++      [6865].file     = "drivers/staging/iio/ring_sw.c",
++      [6865].name     = "iio_read_first_n_sw_rb",
++      [6865].param2   = 1,
++      [6867].file     = "fs/coda/psdev.c",
++      [6867].name     = "coda_psdev_read",
++      [6867].param3   = 1,
++      [6891].file     = "drivers/bluetooth/btmrvl_debugfs.c",
++      [6891].name     = "btmrvl_gpiogap_write",
++      [6891].param3   = 1,
++      [6944].file     = "drivers/ide/ide-proc.c",
++      [6944].name     = "ide_settings_proc_write",
++      [6944].param3   = 1,
++      [6950].file     = "drivers/isdn/capi/capi.c",
++      [6950].name     = "capi_write",
++      [6950].param3   = 1,
++      [697].file      = "sound/isa/gus/gus_dram.c",
++      [697].name      = "snd_gus_dram_peek",
++      [697].param4    = 1,
++      [7066].file     = "security/keys/keyctl.c",
++      [7066].name     = "keyctl_instantiate_key_common",
++      [7066].param4   = 1,
++      [7129].file     = "mm/maccess.c",
++      [7129].name     = "__probe_kernel_read",
++      [7129].param3   = 1,
++      [720].file      = "sound/pci/rme9652/hdsp.c",
++      [720].name      = "snd_hdsp_playback_copy",
++      [720].param5    = 1,
++      [7411].file     = "drivers/vhost/vhost.c",
++      [7411].name     = "__vhost_add_used_n",
++      [7411].param3   = 1,
++      [7488].file     = "security/keys/user_defined.c",
++      [7488].name     = "user_read",
++      [7488].param3   = 1,
++      [7551].file     = "drivers/input/touchscreen/ad7879-spi.c",
++      [7551].name     = "ad7879_spi_xfer",
++      [7551].param3   = 1,
++      [7676].file     = "drivers/acpi/custom_method.c",
++      [7676].name     = "cm_write",
++      [7676].param3   = 1,
++      [7832].file     = "drivers/net/wireless/ath/ath5k/debug.c",
++      [7832].name     = "write_file_antenna",
++      [7832].param3   = 1,
++      [7843].file     = "fs/compat.c",
++      [7843].name     = "compat_sys_readv",
++      [7843].param3   = 1,
++      [7958].file     = "drivers/gpu/vga/vgaarb.c",
++      [7958].name     = "vga_arb_write",
++      [7958].param3   = 1,
++      [7976].file     = "drivers/usb/gadget/rndis.c",
++      [7976].name     = "rndis_add_response",
++      [7976].param2   = 1,
++      [8014].file     = "net/netfilter/ipset/ip_set_list_set.c",
++      [8014].name     = "init_list_set",
++      [8014].param2   = 1,
++      [8014].param3   = 1,
++      [8087].file     = "drivers/video/via/viafbdev.c",
++      [8087].name     = "viafb_iga1_odev_proc_write",
++      [8087].param3   = 1,
++      [8126].file     = "sound/soc/soc-core.c",
++      [8126].name     = "codec_reg_read_file",
++      [8126].param3   = 1,
++      [8185].file     = "drivers/net/wireless/ath/ath6kl/debug.c",
++      [8185].name     = "ath6kl_regwrite_write",
++      [8185].param3   = 1,
++      [8317].file     = "security/smack/smackfs.c",
++      [8317].name     = "smk_write_ambient",
++      [8317].param3   = 1,
++      [8334].file     = "drivers/scsi/sg.c",
++      [8334].name     = "sg_proc_write_adio",
++      [8334].param3   = 1,
++      [8481].file     = "drivers/isdn/i4l/isdn_common.c",
++      [8481].name     = "isdn_write",
++      [8481].param3   = 1,
++      [8536].file     = "fs/cifs/dns_resolve.c",
++      [8536].name     = "dns_resolve_server_name_to_ip",
++      [8536].param1   = 1,
++      [8650].file     = "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c",
++      [8650].name     = "vmw_kms_present",
++      [8650].param9   = 1,
++      [865].file      = "drivers/base/regmap/regmap-debugfs.c",
++      [865].name      = "regmap_access_read_file",
++      [865].param3    = 1,
++      [8663].file     = "net/bridge/netfilter/ebtables.c",
++      [8663].name     = "do_update_counters",
++      [8663].param4   = 1,
++      [8684].file     = "fs/read_write.c",
++      [8684].name     = "sys_writev",
++      [8684].param3   = 1,
++      [8699].file     = "security/selinux/selinuxfs.c",
++      [8699].name     = "sel_commit_bools_write",
++      [8699].param3   = 1,
++      [8714].file     = "lib/kstrtox.c",
++      [8714].name     = "kstrtou16_from_user",
++      [8714].param2   = 1,
++      [8764].file     = "drivers/usb/core/devio.c",
++      [8764].name     = "usbdev_read",
++      [8764].param3   = 1,
++      [8802].file     = "fs/dlm/user.c",
++      [8802].name     = "device_write",
++      [8802].param3   = 1,
++      [8810].file     = "net/mac80211/debugfs_sta.c",
++      [8810].name     = "sta_agg_status_write",
++      [8810].param3   = 1,
++      [8815].file     = "security/tomoyo/securityfs_if.c",
++      [8815].name     = "tomoyo_write_self",
++      [8815].param3   = 1,
++      [8821].file     = "net/wireless/sme.c",
++      [8821].name     = "cfg80211_roamed",
++      [8821].param5   = 1,
++      [8821].param7   = 1,
++      [8833].file     = "security/selinux/ss/services.c",
++      [8833].name     = "security_context_to_sid",
++      [8833].param2   = 1,
++      [8851].file     = "net/key/af_key.c",
++      [8851].name     = "pfkey_sendmsg",
++      [8851].param4   = 1,
++      [8917].file     = "net/ipv4/raw.c",
++      [8917].name     = "raw_setsockopt",
++      [8917].param5   = 1,
++      [8983].file     = "include/linux/skbuff.h",
++      [8983].name     = "alloc_skb",
++      [8983].param1   = 1,
++      [9226].file     = "mm/migrate.c",
++      [9226].name     = "sys_move_pages",
++      [9226].param2   = 1,
++      [9341].file     = "drivers/acpi/apei/erst-dbg.c",
++      [9341].name     = "erst_dbg_write",
++      [9341].param3   = 1,
++      [9463].file     = "drivers/infiniband/hw/ipath/ipath_verbs.c",
++      [9463].name     = "ipath_verbs_send",
++      [9463].param3   = 1,
++      [9463].param5   = 1,
++      [9546].file     = "drivers/video/fbmem.c",
++      [9546].name     = "fb_write",
++      [9546].param3   = 1,
++      [9601].file     = "kernel/kfifo.c",
++      [9601].name     = "__kfifo_from_user",
++      [9601].param3   = 1,
++      [9618].file     = "security/selinux/selinuxfs.c",
++      [9618].name     = "sel_write_bool",
++      [9618].param3   = 1,
++      [9768].file     = "drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c",
++      [9768].name     = "vmw_execbuf_process",
++      [9768].param5   = 1,
++      [9828].file     = "drivers/media/dvb/dvb-core/dmxdev.c",
++      [9828].name     = "dvb_demux_do_ioctl",
++      [9828].param3   = 1,
++      [9870].file     = "net/atm/addr.c",
++      [9870].name     = "atm_get_addr",
++      [9870].param3   = 1,
++      [9962].file     = "drivers/scsi/sg.c",
++      [9962].name     = "sg_proc_write_dressz",
++      [9962].param3   = 1,
++      [9977].file     = "drivers/net/wireless/zd1211rw/zd_usb.c",
++      [9977].name     = "zd_usb_iowrite16v_async",
++      [9977].param3   = 1,
++      [16344].collision       = 1,
++      [30494].collision       = 1,
++      [31291].collision       = 1,
++      [33040].collision       = 1,
++      [38314].collision       = 1,
++      [54338].collision       = 1,
++      [60651].collision       = 1,
++};
+diff --git a/tools/gcc/size_overflow_hash2.h b/tools/gcc/size_overflow_hash2.h
+new file mode 100644
+index 0000000..8ed7d96
+--- /dev/null
++++ b/tools/gcc/size_overflow_hash2.h
+@@ -0,0 +1,44 @@
++struct size_overflow_hash size_overflow_hash2[65536] = {
++      [2118].file     = "fs/ntfs/malloc.h",
++      [2118].name     = "ntfs_malloc_nofs",
++      [2118].param1   = 1,
++      [22224].file    = "fs/proc/vmcore.c",
++      [22224].name    = "read_from_oldmem",
++      [22224].param2  = 1,
++      [26518].file    = "drivers/gpu/vga/vgaarb.c",
++      [26518].name    = "vga_arb_read",
++      [26518].param3  = 1,
++      [26569].file    = "lib/kstrtox.c",
++      [26569].name    = "kstrtoint_from_user",
++      [26569].param2  = 1,
++      [30632].file    = "drivers/ide/ide-proc.c",
++      [30632].name    = "ide_driver_proc_write",
++      [30632].param3  = 1,
++      [36150].file    = "net/ceph/buffer.c",
++      [36150].name    = "ceph_buffer_new",
++      [36150].param1  = 1,
++      [39024].file    = "lib/scatterlist.c",
++      [39024].name    = "sg_kmalloc",
++      [39024].param1  = 1,
++      [39105].file    = "drivers/gpu/drm/ttm/ttm_tt.c",
++      [39105].name    = "ttm_tt_create",
++      [39105].param2  = 1,
++      [43208].file    = "fs/nfs/read.c",
++      [43208].name    = "nfs_readdata_alloc",
++      [43208].param1  = 1,
++      [46911].file    = "drivers/media/video/ivtv/ivtv-fileops.c",
++      [46911].name    = "ivtv_v4l2_read",
++      [46911].param3  = 1,
++      [50359].file    = "kernel/sched.c",
++      [50359].name    = "alloc_sched_domains",
++      [50359].param1  = 1,
++      [52857].file    = "sound/pci/rme9652/rme9652.c",
++      [52857].name    = "snd_rme9652_capture_copy",
++      [52857].param5  = 1,
++      [57500].file    = "drivers/spi/spidev.c",
++      [57500].name    = "spidev_write",
++      [57500].param3  = 1,
++      [65149].file    = "fs/nilfs2/ioctl.c",
++      [65149].name    = "nilfs_ioctl_wrap_copy",
++      [65149].param4  = 1,
++};
+diff --git a/tools/gcc/size_overflow_plugin.c b/tools/gcc/size_overflow_plugin.c
+new file mode 100644
+index 0000000..a9ae886
+--- /dev/null
++++ b/tools/gcc/size_overflow_plugin.c
+@@ -0,0 +1,1042 @@
++/*
++ * Copyright 2011, 2012 by Emese Revfy <re.emese@gmail.com>
++ * Licensed under the GPL v2, or (at your option) v3
++ *
++ * Homepage:
++ * http://www.grsecurity.net/~ephox/overflow_plugin/
++ *
++ * This plugin recomputes expressions of function arguments marked by a size_overflow attribute
++ * with double integer precision (DImode/TImode for 32/64 bit integer types).
++ * The recomputed argument is checked against INT_MAX and an event is logged on overflow and the triggering process is killed.
++ *
++ * Usage:
++ * $ gcc -I`gcc -print-file-name=plugin`/include -fPIC -shared -O2 -o size_overflow_plugin.so size_overflow_plugin.c
++ * $ gcc -fplugin=size_overflow_plugin.so test.c  -O2
++ */
++
++#include "gcc-plugin.h"
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "tree.h"
++#include "tree-pass.h"
++#include "intl.h"
++#include "plugin-version.h"
++#include "tm.h"
++#include "toplev.h"
++#include "function.h"
++#include "tree-flow.h"
++#include "plugin.h"
++#include "gimple.h"
++#include "c-common.h"
++#include "diagnostic.h"
++
++struct size_overflow_hash {
++              const char *name;
++              const char *file;
++              unsigned short collision:1;
++              unsigned short param1:1;
++              unsigned short param2:1;
++              unsigned short param3:1;
++              unsigned short param4:1;
++              unsigned short param5:1;
++              unsigned short param6:1;
++              unsigned short param7:1;
++              unsigned short param8:1;
++              unsigned short param9:1;
++};
++
++#include "size_overflow_hash1.h"
++#include "size_overflow_hash2.h"
++
++#define __unused __attribute__((__unused__))
++#define NAME(node) IDENTIFIER_POINTER(DECL_NAME(node))
++#define BEFORE_STMT true
++#define AFTER_STMT false
++#define CREATE_NEW_VAR NULL_TREE
++
++int plugin_is_GPL_compatible;
++void debug_gimple_stmt (gimple gs);
++
++static tree expand(struct pointer_set_t *visited, tree var);
++static tree signed_size_overflow_type;
++static tree unsigned_size_overflow_type;
++static tree report_size_overflow_decl;
++static tree const_char_ptr_type_node;
++static unsigned int handle_function(void);
++
++static struct plugin_info size_overflow_plugin_info = {
++      .version        = "20120311beta",
++      .help           = "no-size_overflow\tturn off size overflow checking\n",
++};
++
++static tree handle_size_overflow_attribute(tree *node, tree __unused name, tree args, int __unused flags, bool *no_add_attrs)
++{
++      unsigned int arg_count = type_num_arguments(*node);
++
++      for (; args; args = TREE_CHAIN(args)) {
++              tree position = TREE_VALUE(args);
++              if (TREE_CODE(position) != INTEGER_CST || TREE_INT_CST_HIGH(position) || TREE_INT_CST_LOW(position) < 1 || TREE_INT_CST_LOW(position) > arg_count ) {
++                      error("handle_size_overflow_attribute: overflow parameter outside range.");
++                      *no_add_attrs = true;
++              }
++      }
++      return NULL_TREE;
++}
++
++static struct attribute_spec no_size_overflow_attr = {
++      .name                           = "size_overflow",
++      .min_length                     = 1,
++      .max_length                     = -1,
++      .decl_required                  = false,
++      .type_required                  = true,
++      .function_type_required         = true,
++      .handler                        = handle_size_overflow_attribute
++};
++
++static void register_attributes(void __unused *event_data, void __unused *data)
++{
++      register_attribute(&no_size_overflow_attr);
++}
++
++// http://www.team5150.com/~andrew/noncryptohashzoo2~/CrapWow.html
++static unsigned int CrapWow(const char *key, unsigned int len, unsigned int seed)
++{
++#define cwfold( a, b, lo, hi ) { p = (unsigned int)(a) * (unsigned long long)(b); lo ^= (unsigned int)p; hi ^= (unsigned int)(p >> 32); }
++#define cwmixa( in ) { cwfold( in, m, k, h ); }
++#define cwmixb( in ) { cwfold( in, n, h, k ); }
++
++      const unsigned int m = 0x57559429;
++      const unsigned int n = 0x5052acdb;
++      const unsigned int *key4 = (const unsigned int *)key;
++      unsigned int h = len;
++      unsigned int k = len + seed + n;
++      unsigned long long p;
++
++      while (len >= 8) {
++              cwmixb(key4[0]) cwmixa(key4[1]) key4 += 2;
++              len -= 8;
++      }
++      if (len >= 4) {
++              cwmixb(key4[0]) key4 += 1;
++              len -= 4;
++      }
++      if (len)
++              cwmixa(key4[0] & ((1 << (len * 8)) - 1 ));
++      cwmixb(h ^ (k + n));
++      return k ^ h;
++
++#undef cwfold
++#undef cwmixa
++#undef cwmixb
++}
++
++static inline unsigned int size_overflow_hash(const char *fndecl, unsigned int seed)
++{
++      return CrapWow(fndecl, strlen(fndecl), seed) & 0xffff;
++}
++
++static inline tree get_original_function_decl(tree fndecl)
++{
++      if (DECL_ABSTRACT_ORIGIN(fndecl))
++              return DECL_ABSTRACT_ORIGIN(fndecl);
++      return fndecl;
++}
++
++static inline gimple get_def_stmt(tree node)
++{
++      gcc_assert(TREE_CODE(node) == SSA_NAME);
++      return SSA_NAME_DEF_STMT(node);
++}
++
++static struct size_overflow_hash *get_function_hash(tree fndecl)
++{
++      unsigned int hash;
++      const char *func = NAME(fndecl);
++
++      hash = size_overflow_hash(func, 0);
++
++      if (size_overflow_hash1[hash].collision) {
++              hash = size_overflow_hash(func, 23432);
++              return &size_overflow_hash2[hash];
++      }
++      return &size_overflow_hash1[hash];
++}
++
++static void check_missing_attribute(tree arg)
++{
++      tree var, func = get_original_function_decl(current_function_decl);
++      const char *curfunc = NAME(func);
++      unsigned int new_hash, argnum = 1;
++      struct size_overflow_hash *hash;
++      location_t loc;
++      expanded_location xloc;
++      bool match = false;
++
++      loc = DECL_SOURCE_LOCATION(func);
++      xloc = expand_location(loc);
++
++      if (lookup_attribute("size_overflow", TYPE_ATTRIBUTES(TREE_TYPE(func))))
++              return;
++
++      hash = get_function_hash(func);
++      if (hash->name && !strcmp(hash->name, NAME(func)) && !strcmp(hash->file, xloc.file))
++              return;
++
++      gcc_assert(TREE_CODE(arg) != COMPONENT_REF);
++
++      if (TREE_CODE(arg) == SSA_NAME)
++              arg = SSA_NAME_VAR(arg);
++
++      for (var = DECL_ARGUMENTS(func); var; var = TREE_CHAIN(var)) {
++              if (strcmp(NAME(arg), NAME(var))) {
++                      argnum++;
++                      continue;
++              }
++              match = true;
++              if (!TYPE_UNSIGNED(TREE_TYPE(var)))
++                      return;
++              break;
++      }
++      if (!match) {
++              warning(0, "check_missing_attribute: cannot find the %s argument in %s", NAME(arg), NAME(func));
++              return;
++      }
++
++#define check_param(num)                      \
++      if (num == argnum && hash->param##num)  \
++              return;
++      check_param(1);
++      check_param(2);
++      check_param(3);
++      check_param(4);
++      check_param(5);
++      check_param(6);
++      check_param(7);
++      check_param(8);
++      check_param(9);
++#undef check_param
++
++      new_hash = size_overflow_hash(curfunc, 0);
++      inform(loc, "Function %s is missing from the size_overflow hash table +%s+%d+%u+%s", curfunc, curfunc, argnum, new_hash, xloc.file);
++}
++
++static tree create_new_var(tree type)
++{
++      tree new_var = create_tmp_var(type, "cicus");
++
++      add_referenced_var(new_var);
++      mark_sym_for_renaming(new_var);
++      return new_var;
++}
++
++static bool is_bool(tree node)
++{
++      tree type;
++
++      if (node == NULL_TREE)
++              return false;
++
++      type = TREE_TYPE(node);
++      if (!INTEGRAL_TYPE_P(type))
++              return false;
++      if (TREE_CODE(type) == BOOLEAN_TYPE)
++              return true;
++      if (TYPE_PRECISION(type) == 1)
++              return true;
++      return false;
++}
++
++static gimple build_cast_stmt(tree type, tree var, tree new_var, location_t loc)
++{
++      gimple assign;
++
++      if (new_var == CREATE_NEW_VAR)
++              new_var = create_new_var(type);
++
++      assign = gimple_build_assign(new_var, fold_convert(type, var));
++      gimple_set_location(assign, loc);
++      gimple_set_lhs(assign, make_ssa_name(new_var, assign));
++
++      return assign;
++}
++
++static tree create_assign(struct pointer_set_t *visited, gimple oldstmt, tree rhs1, bool before)
++{
++      tree oldstmt_rhs1;
++      enum tree_code code;
++      gimple stmt;
++      gimple_stmt_iterator gsi;
++
++      if (is_bool(rhs1)) {
++              pointer_set_insert(visited, oldstmt);
++              return gimple_get_lhs(oldstmt);
++      }
++
++      if (rhs1 == NULL_TREE) {
++              debug_gimple_stmt(oldstmt);
++              error("create_assign: rhs1 is NULL_TREE");
++              gcc_unreachable();
++      }
++
++      oldstmt_rhs1 = gimple_assign_rhs1(oldstmt);
++      code = TREE_CODE(oldstmt_rhs1);
++      if (code == PARM_DECL || (code == SSA_NAME && gimple_code(get_def_stmt(oldstmt_rhs1)) == GIMPLE_NOP))
++              check_missing_attribute(oldstmt_rhs1);
++
++      stmt = build_cast_stmt(signed_size_overflow_type, rhs1, CREATE_NEW_VAR, gimple_location(oldstmt));
++      gsi = gsi_for_stmt(oldstmt);
++      if (before)
++              gsi_insert_before(&gsi, stmt, GSI_NEW_STMT);
++      else
++              gsi_insert_after(&gsi, stmt, GSI_NEW_STMT);
++      update_stmt(stmt);
++      pointer_set_insert(visited, oldstmt);
++      return gimple_get_lhs(stmt);
++}
++
++static tree dup_assign(struct pointer_set_t *visited, gimple oldstmt, tree rhs1, tree rhs2, tree __unused rhs3)
++{
++      tree new_var, lhs = gimple_get_lhs(oldstmt);
++      gimple stmt;
++      gimple_stmt_iterator gsi;
++
++      if (gimple_num_ops(oldstmt) != 4 && rhs1 == NULL_TREE) {
++              rhs1 = gimple_assign_rhs1(oldstmt);
++              rhs1 = create_assign(visited, oldstmt, rhs1, BEFORE_STMT);
++      }
++      if (gimple_num_ops(oldstmt) == 3 && rhs2 == NULL_TREE) {
++              rhs2 = gimple_assign_rhs2(oldstmt);
++              rhs2 = create_assign(visited, oldstmt, rhs2, BEFORE_STMT);
++      }
++
++      stmt = gimple_copy(oldstmt);
++      gimple_set_location(stmt, gimple_location(oldstmt));
++
++      if (gimple_assign_rhs_code(oldstmt) == WIDEN_MULT_EXPR)
++              gimple_assign_set_rhs_code(stmt, MULT_EXPR);
++
++      if (is_bool(lhs))
++              new_var = SSA_NAME_VAR(lhs);
++      else
++              new_var = create_new_var(signed_size_overflow_type);
++      new_var = make_ssa_name(new_var, stmt);
++      gimple_set_lhs(stmt, new_var);
++
++      if (rhs1 != NULL_TREE) {
++              if (!gimple_assign_cast_p(oldstmt))
++                      rhs1 = fold_convert(signed_size_overflow_type, rhs1);
++              gimple_assign_set_rhs1(stmt, rhs1);
++      }
++
++      if (rhs2 != NULL_TREE)
++              gimple_assign_set_rhs2(stmt, rhs2);
++#if BUILDING_GCC_VERSION >= 4007
++      if (rhs3 != NULL_TREE)
++              gimple_assign_set_rhs3(stmt, rhs3);
++#endif
++      gimple_set_vuse(stmt, gimple_vuse(oldstmt));
++      gimple_set_vdef(stmt, gimple_vdef(oldstmt));
++
++      gsi = gsi_for_stmt(oldstmt);
++      gsi_insert_after(&gsi, stmt, GSI_SAME_STMT);
++      update_stmt(stmt);
++      pointer_set_insert(visited, oldstmt);
++      return gimple_get_lhs(stmt);
++}
++
++static gimple overflow_create_phi_node(gimple oldstmt, tree var)
++{
++      basic_block bb;
++      gimple phi;
++      gimple_stmt_iterator gsi = gsi_for_stmt(oldstmt);
++
++      bb = gsi_bb(gsi);
++      phi = make_phi_node(var, EDGE_COUNT(bb->preds));
++
++      gsi_insert_after(&gsi, phi, GSI_NEW_STMT);
++      gimple_set_bb(phi, bb);
++      return phi;
++}
++
++static tree signed_cast_constant(tree node)
++{
++      gcc_assert(is_gimple_constant(node));
++
++      if (TYPE_PRECISION(signed_size_overflow_type) == TYPE_PRECISION(TREE_TYPE(node)))
++              return build_int_cst_wide(signed_size_overflow_type, TREE_INT_CST_LOW(node), TREE_INT_CST_HIGH(node));
++      else
++              return build_int_cst(signed_size_overflow_type, int_cst_value(node));
++}
++
++static gimple cast_old_phi_arg(gimple oldstmt, tree arg, tree new_var)
++{
++      basic_block first_bb;
++      gimple newstmt;
++      gimple_stmt_iterator gsi;
++
++      newstmt = build_cast_stmt(signed_size_overflow_type, arg, new_var, gimple_location(oldstmt));
++
++      first_bb = split_block_after_labels(ENTRY_BLOCK_PTR)->dest;
++      if (dom_info_available_p(CDI_DOMINATORS))
++              set_immediate_dominator(CDI_DOMINATORS, first_bb, ENTRY_BLOCK_PTR);
++      gsi = gsi_start_bb(first_bb);
++
++      gsi_insert_before(&gsi, newstmt, GSI_NEW_STMT);
++      return newstmt;
++}
++
++static gimple handle_new_phi_arg(tree arg, tree new_var, tree new_rhs)
++{
++      gimple newstmt;
++      gimple_stmt_iterator gsi;
++      void (*gsi_insert)(gimple_stmt_iterator *, gimple, enum gsi_iterator_update);
++      gimple def_newstmt = get_def_stmt(new_rhs);
++
++      gsi_insert = gsi_insert_after;
++      gsi = gsi_for_stmt(def_newstmt);
++
++      switch (gimple_code(get_def_stmt(arg))) {
++      case GIMPLE_PHI:
++              newstmt = gimple_build_assign(new_var, new_rhs);
++              gsi = gsi_after_labels(gimple_bb(def_newstmt));
++              gsi_insert = gsi_insert_before;
++              break;
++      case GIMPLE_ASM:
++      case GIMPLE_CALL:
++              newstmt = gimple_build_assign(new_var, new_rhs);
++              break;
++      case GIMPLE_ASSIGN:
++              newstmt = gimple_copy(def_newstmt);
++              break;
++      default:
++              /* unknown gimple_code (build_new_phi_arg) */
++              gcc_unreachable();
++      }
++
++      gimple_set_lhs(newstmt, make_ssa_name(new_var, newstmt));
++      gsi_insert(&gsi, newstmt, GSI_NEW_STMT);
++      return newstmt;
++}
++
++static tree build_new_phi_arg(struct pointer_set_t *visited, gimple oldstmt, tree arg, tree new_var)
++{
++      gimple newstmt;
++      tree new_rhs;
++
++      if (is_gimple_constant(arg))
++              return signed_cast_constant(arg);
++
++      pointer_set_insert(visited, oldstmt);
++      new_rhs = expand(visited, arg);
++      if (new_rhs == NULL_TREE) {
++              gcc_assert(TREE_CODE(TREE_TYPE(arg)) != VOID_TYPE);
++              newstmt = cast_old_phi_arg(oldstmt, arg, new_var);
++      } else
++              newstmt = handle_new_phi_arg(arg, new_var, new_rhs);
++      update_stmt(newstmt);
++      return gimple_get_lhs(newstmt);
++}
++
++static tree build_new_phi(struct pointer_set_t *visited, gimple oldstmt)
++{
++      gimple phi;
++      tree new_var = create_new_var(signed_size_overflow_type);
++      unsigned int i, n = gimple_phi_num_args(oldstmt);
++
++      phi = overflow_create_phi_node(oldstmt, new_var);
++
++      for (i = 0; i < n; i++) {
++              tree arg, lhs;
++
++              arg = gimple_phi_arg_def(oldstmt, i);
++              lhs = build_new_phi_arg(visited, oldstmt, arg, new_var);
++              add_phi_arg(phi, lhs, gimple_phi_arg_edge(oldstmt, i), gimple_location(oldstmt));
++      }
++      update_stmt(phi);
++      return gimple_phi_result(phi);
++}
++
++static tree handle_unary_ops(struct pointer_set_t *visited, tree var)
++{
++      gimple def_stmt = get_def_stmt(var);
++      tree new_rhs1, rhs1 = gimple_assign_rhs1(def_stmt);
++
++      if (is_gimple_constant(rhs1))
++              return dup_assign(visited, def_stmt, signed_cast_constant(rhs1), NULL_TREE, NULL_TREE);
++
++      switch (TREE_CODE(rhs1)) {
++      case SSA_NAME:
++              new_rhs1 = expand(visited, rhs1);
++              break;
++      case ARRAY_REF:
++      case ADDR_EXPR:
++      case COMPONENT_REF:
++      case COND_EXPR:
++      case INDIRECT_REF:
++#if BUILDING_GCC_VERSION >= 4006
++      case MEM_REF:
++#endif
++      case PARM_DECL:
++      case TARGET_MEM_REF:
++      case VAR_DECL:
++              return create_assign(visited, def_stmt, var, AFTER_STMT);
++      default:
++              debug_gimple_stmt(def_stmt);
++              debug_tree(rhs1);
++              gcc_unreachable();
++      }
++
++      if (new_rhs1 == NULL_TREE)
++              return create_assign(visited, def_stmt, rhs1, AFTER_STMT);
++      return dup_assign(visited, def_stmt, new_rhs1, NULL_TREE, NULL_TREE);
++}
++
++static tree transform_mult_overflow(tree rhs, tree const_rhs, tree log2const_rhs, location_t loc)
++{
++      tree new_def_rhs;
++
++      if (!is_gimple_constant(rhs))
++              return NULL_TREE;
++
++      new_def_rhs = fold_build2_loc(loc, MULT_EXPR, TREE_TYPE(const_rhs), rhs, const_rhs);
++      new_def_rhs = signed_cast_constant(new_def_rhs);
++      if (int_cst_value(new_def_rhs) >= 0)
++              return NULL_TREE;
++      return fold_build2_loc(loc, RSHIFT_EXPR, TREE_TYPE(new_def_rhs), new_def_rhs, log2const_rhs);
++}
++
++static tree handle_intentional_mult_overflow(struct pointer_set_t *visited, tree rhs, tree const_rhs)
++{
++      gimple new_def_stmt, def_stmt;
++      tree def_rhs1, def_rhs2, new_def_rhs;
++      location_t loc;
++      tree log2const_rhs;
++      int log2 = exact_log2(TREE_INT_CST_LOW(const_rhs));
++
++      if (log2 == -1) {
++//            warning(0, "Possibly unhandled intentional integer truncation");
++              return NULL_TREE;
++      }
++
++      def_stmt = get_def_stmt(rhs);
++      loc = gimple_location(def_stmt);
++      def_rhs1 = gimple_assign_rhs1(def_stmt);
++      def_rhs2 = gimple_assign_rhs2(def_stmt);
++      new_def_stmt = get_def_stmt(expand(visited, rhs));
++      log2const_rhs = build_int_cstu(TREE_TYPE(const_rhs), log2);
++
++      new_def_rhs = transform_mult_overflow(def_rhs1, const_rhs, log2const_rhs, loc);
++      if (new_def_rhs != NULL_TREE) {
++              gimple_assign_set_rhs1(new_def_stmt, new_def_rhs);
++      } else {
++              new_def_rhs = transform_mult_overflow(def_rhs2, const_rhs, log2const_rhs, loc);
++              if (new_def_rhs != NULL_TREE)
++                      gimple_assign_set_rhs2(new_def_stmt, new_def_rhs);
++      }
++      if (new_def_rhs == NULL_TREE)
++              return NULL_TREE;
++
++      update_stmt(new_def_stmt);
++//    warning(0, "Handle integer truncation (gcc optimization)");
++      return gimple_get_lhs(new_def_stmt);
++}
++
++static bool is_mult_overflow(gimple def_stmt, tree rhs1)
++{
++      gimple rhs1_def_stmt = get_def_stmt(rhs1);
++
++      if (gimple_assign_rhs_code(def_stmt) != MULT_EXPR)
++              return false;
++      if (gimple_code(rhs1_def_stmt) != GIMPLE_ASSIGN)
++              return false;
++      if (gimple_assign_rhs_code(rhs1_def_stmt) != PLUS_EXPR)
++              return false;
++      return true;
++}
++
++static tree handle_intentional_overflow(struct pointer_set_t *visited, gimple def_stmt, tree rhs1, tree rhs2)
++{
++      if (is_mult_overflow(def_stmt, rhs1))
++              return handle_intentional_mult_overflow(visited, rhs1, rhs2);
++      return NULL_TREE;
++}
++
++static tree handle_binary_ops(struct pointer_set_t *visited, tree var)
++{
++      tree rhs1, rhs2;
++      gimple def_stmt = get_def_stmt(var);
++      tree new_rhs1 = NULL_TREE;
++      tree new_rhs2 = NULL_TREE;
++
++      rhs1 = gimple_assign_rhs1(def_stmt);
++      rhs2 = gimple_assign_rhs2(def_stmt);
++
++      /* no DImode/TImode division in the 32/64 bit kernel */
++      switch (gimple_assign_rhs_code(def_stmt)) {
++      case RDIV_EXPR:
++      case TRUNC_DIV_EXPR:
++      case CEIL_DIV_EXPR:
++      case FLOOR_DIV_EXPR:
++      case ROUND_DIV_EXPR:
++      case TRUNC_MOD_EXPR:
++      case CEIL_MOD_EXPR:
++      case FLOOR_MOD_EXPR:
++      case ROUND_MOD_EXPR:
++      case EXACT_DIV_EXPR:
++      case POINTER_PLUS_EXPR:
++      /* logical AND cannot cause an overflow */
++      case BIT_AND_EXPR:
++              return create_assign(visited, def_stmt, var, AFTER_STMT);
++      default:
++              break;
++      }
++
++      if (is_gimple_constant(rhs2)) {
++              new_rhs2 = signed_cast_constant(rhs2);
++              new_rhs1 = handle_intentional_overflow(visited, def_stmt, rhs1, rhs2);
++      }
++
++      if (is_gimple_constant(rhs1)) {
++              new_rhs1 = signed_cast_constant(rhs1);
++              new_rhs2 = handle_intentional_overflow(visited, def_stmt, rhs2, rhs1);
++      }
++
++      if (new_rhs1 == NULL_TREE && TREE_CODE(rhs1) == SSA_NAME)
++              new_rhs1 = expand(visited, rhs1);
++      if (new_rhs2 == NULL_TREE && TREE_CODE(rhs2) == SSA_NAME)
++              new_rhs2 = expand(visited, rhs2);
++
++      return dup_assign(visited, def_stmt, new_rhs1, new_rhs2, NULL_TREE);
++}
++
++#if BUILDING_GCC_VERSION >= 4007
++static tree get_new_rhs(struct pointer_set_t *visited, tree rhs)
++{
++      if (is_gimple_constant(rhs))
++              return signed_cast_constant(rhs);
++      if (TREE_CODE(rhs) != SSA_NAME)
++              return NULL_TREE;
++      return expand(visited, rhs);
++}
++
++static tree handle_ternary_ops(struct pointer_set_t *visited, tree var)
++{
++      tree rhs1, rhs2, rhs3, new_rhs1, new_rhs2, new_rhs3;
++      gimple def_stmt = get_def_stmt(var);
++
++      rhs1 = gimple_assign_rhs1(def_stmt);
++      rhs2 = gimple_assign_rhs2(def_stmt);
++      rhs3 = gimple_assign_rhs3(def_stmt);
++      new_rhs1 = get_new_rhs(visited, rhs1);
++      new_rhs2 = get_new_rhs(visited, rhs2);
++      new_rhs3 = get_new_rhs(visited, rhs3);
++
++      if (new_rhs1 == NULL_TREE && new_rhs2 != NULL_TREE && new_rhs3 != NULL_TREE)
++              return dup_assign(visited, def_stmt, new_rhs1, new_rhs2, new_rhs3);
++      error("handle_ternary_ops: unknown rhs");
++      gcc_unreachable();
++}
++#endif
++
++static void set_size_overflow_type(tree node)
++{
++      switch (TYPE_MODE(TREE_TYPE(node))) {
++      case SImode:
++              signed_size_overflow_type = intDI_type_node;
++              unsigned_size_overflow_type = unsigned_intDI_type_node;
++              break;
++      case DImode:
++              if (LONG_TYPE_SIZE == GET_MODE_BITSIZE(SImode)) {
++                      signed_size_overflow_type = intDI_type_node;
++                      unsigned_size_overflow_type = unsigned_intDI_type_node;
++              } else {
++                      signed_size_overflow_type = intTI_type_node;
++                      unsigned_size_overflow_type = unsigned_intTI_type_node;
++              }
++              break;
++      default:
++              error("set_size_overflow_type: unsupported gcc configuration.");
++              gcc_unreachable();
++      }
++}
++
++static tree expand_visited(gimple def_stmt)
++{
++      gimple tmp;
++      gimple_stmt_iterator gsi = gsi_for_stmt(def_stmt);
++
++      gsi_next(&gsi);
++      tmp = gsi_stmt(gsi);
++      switch (gimple_code(tmp)) {
++      case GIMPLE_ASSIGN:
++              return gimple_get_lhs(tmp);
++      case GIMPLE_PHI:
++              return gimple_phi_result(tmp);
++      case GIMPLE_CALL:
++              return gimple_call_lhs(tmp);
++      default:
++              return NULL_TREE;
++      }
++}
++
++static tree expand(struct pointer_set_t *visited, tree var)
++{
++      gimple def_stmt;
++
++      if (is_gimple_constant(var))
++              return NULL_TREE;
++
++      if (TREE_CODE(var) == ADDR_EXPR)
++              return NULL_TREE;
++
++      if (SSA_NAME_IS_DEFAULT_DEF(var))
++              return NULL_TREE;
++
++      def_stmt = get_def_stmt(var);
++
++      if (!def_stmt)
++              return NULL_TREE;
++
++      if (pointer_set_contains(visited, def_stmt))
++              return expand_visited(def_stmt);
++
++      switch (gimple_code(def_stmt)) {
++      case GIMPLE_NOP:
++              check_missing_attribute(var);
++              return NULL_TREE;
++      case GIMPLE_PHI:
++              return build_new_phi(visited, def_stmt);
++      case GIMPLE_CALL:
++      case GIMPLE_ASM:
++              gcc_assert(TREE_CODE(TREE_TYPE(var)) != VOID_TYPE);
++              return create_assign(visited, def_stmt, var, AFTER_STMT);
++      case GIMPLE_ASSIGN:
++              switch (gimple_num_ops(def_stmt)) {
++              case 2:
++                      return handle_unary_ops(visited, var);
++              case 3:
++                      return handle_binary_ops(visited, var);
++#if BUILDING_GCC_VERSION >= 4007
++              case 4:
++                      return handle_ternary_ops(visited, var);
++#endif
++              }
++      default:
++              debug_gimple_stmt(def_stmt);
++              error("expand: unknown gimple code");
++              gcc_unreachable();
++      }
++}
++
++static void change_function_arg(gimple func_stmt, tree origarg, unsigned int argnum, tree newarg)
++{
++      gimple assign, stmt;
++      gimple_stmt_iterator gsi = gsi_for_stmt(func_stmt);
++      tree origtype = TREE_TYPE(origarg);
++
++      stmt = gsi_stmt(gsi);
++      gcc_assert(gimple_code(stmt) == GIMPLE_CALL);
++
++      assign = build_cast_stmt(origtype, newarg, CREATE_NEW_VAR, gimple_location(stmt));
++      gsi_insert_before(&gsi, assign, GSI_SAME_STMT);
++      update_stmt(assign);
++
++      gimple_call_set_arg(stmt, argnum, gimple_get_lhs(assign));
++      update_stmt(stmt);
++}
++
++static tree get_function_arg(unsigned int argnum, gimple stmt, tree fndecl)
++{
++      const char *origid;
++      tree arg, origarg;
++
++      if (!DECL_ABSTRACT_ORIGIN(fndecl)) {
++              gcc_assert(gimple_call_num_args(stmt) > argnum);
++              return gimple_call_arg(stmt, argnum);
++      }
++
++      origarg = DECL_ARGUMENTS(DECL_ABSTRACT_ORIGIN(fndecl));
++      while (origarg && argnum) {
++              argnum--;
++              origarg = TREE_CHAIN(origarg);
++      }
++
++      gcc_assert(argnum == 0);
++
++      gcc_assert(origarg != NULL_TREE);
++      origid = NAME(origarg);
++      for (arg = DECL_ARGUMENTS(fndecl); arg; arg = TREE_CHAIN(arg)) {
++              if (!strcmp(origid, NAME(arg)))
++                      return arg;
++      }
++      return NULL_TREE;
++}
++
++static void insert_cond(tree arg, basic_block cond_bb)
++{
++      gimple cond_stmt;
++      gimple_stmt_iterator gsi = gsi_last_bb(cond_bb);
++
++      cond_stmt = gimple_build_cond(GT_EXPR, arg, build_int_cstu(signed_size_overflow_type, 0x7fffffff), NULL_TREE, NULL_TREE);
++      gsi_insert_after(&gsi, cond_stmt, GSI_CONTINUE_LINKING);
++      update_stmt(cond_stmt);
++}
++
++static tree create_string_param(tree string)
++{
++      tree array_ref = build4(ARRAY_REF, TREE_TYPE(string), string, integer_zero_node, NULL, NULL);
++
++      return build1(ADDR_EXPR, ptr_type_node, array_ref);
++}
++
++static void insert_cond_result(basic_block bb_true, gimple stmt, tree arg)
++{
++      gimple func_stmt, def_stmt;
++      tree current_func, loc_file, loc_line;
++      expanded_location xloc;
++      gimple_stmt_iterator gsi = gsi_start_bb(bb_true);
++
++      def_stmt = get_def_stmt(arg);
++      xloc = expand_location(gimple_location(def_stmt));
++
++      if (!gimple_has_location(def_stmt)) {
++              xloc = expand_location(gimple_location(stmt));
++              gcc_assert(gimple_has_location(stmt));
++      }
++
++      loc_line = build_int_cstu(unsigned_type_node, xloc.line);
++
++      loc_file = build_string(strlen(xloc.file), xloc.file);
++      TREE_TYPE(loc_file) = char_array_type_node;
++      loc_file = create_string_param(loc_file);
++
++      current_func = build_string(IDENTIFIER_LENGTH(DECL_NAME(current_function_decl)), NAME(current_function_decl));
++      TREE_TYPE(current_func) = char_array_type_node;
++      current_func = create_string_param(current_func);
++
++      // void report_size_overflow(const char *file, unsigned int line, const char *func)
++      func_stmt = gimple_build_call(report_size_overflow_decl, 3, loc_file, loc_line, current_func);
++
++      gsi_insert_after(&gsi, func_stmt, GSI_CONTINUE_LINKING);
++}
++
++static void insert_check_size_overflow(gimple stmt, tree arg)
++{
++      basic_block cond_bb, join_bb, bb_true;
++      edge e;
++      gimple_stmt_iterator gsi = gsi_for_stmt(stmt);
++
++      cond_bb = gimple_bb(stmt);
++      gsi_prev(&gsi);
++      if (gsi_end_p(gsi))
++              e = split_block_after_labels(cond_bb);
++      else
++              e = split_block(cond_bb, gsi_stmt(gsi));
++      cond_bb = e->src;
++      join_bb = e->dest;
++      e->flags = EDGE_FALSE_VALUE;
++      e->probability = REG_BR_PROB_BASE;
++
++      bb_true = create_empty_bb(cond_bb);
++      make_edge(cond_bb, bb_true, EDGE_TRUE_VALUE);
++
++      if (dom_info_available_p(CDI_DOMINATORS)) {
++              set_immediate_dominator(CDI_DOMINATORS, bb_true, cond_bb);
++              set_immediate_dominator(CDI_DOMINATORS, join_bb, cond_bb);
++      }
++
++      insert_cond(arg, cond_bb);
++      insert_cond_result(bb_true, stmt, arg);
++}
++
++static void handle_function_arg(gimple stmt, tree fndecl, unsigned int argnum)
++{
++      struct pointer_set_t *visited;
++      tree arg, newarg;
++      gimple ucast_stmt;
++      gimple_stmt_iterator gsi;
++      location_t loc = gimple_location(stmt);
++
++      arg = get_function_arg(argnum, stmt, fndecl);
++      if (arg == NULL_TREE)
++              return;
++
++      if (is_gimple_constant(arg))
++              return;
++      if (TREE_CODE(arg) != SSA_NAME)
++              return;
++
++      set_size_overflow_type(arg);
++      visited = pointer_set_create();
++      newarg = expand(visited, arg);
++      pointer_set_destroy(visited);
++
++      if (newarg == NULL_TREE)
++              return;
++
++      change_function_arg(stmt, arg, argnum, newarg);
++
++      ucast_stmt = build_cast_stmt(unsigned_size_overflow_type, newarg, CREATE_NEW_VAR, loc);
++      gsi = gsi_for_stmt(stmt);
++      gsi_insert_before(&gsi, ucast_stmt, GSI_SAME_STMT);
++
++      insert_check_size_overflow(stmt, gimple_get_lhs(ucast_stmt));
++//    inform(loc, "Integer size_overflow check applied here.");
++}
++
++static void handle_function_by_attribute(gimple stmt, tree attr, tree fndecl)
++{
++      tree p = TREE_VALUE(attr);
++      do {
++              handle_function_arg(stmt, fndecl, TREE_INT_CST_LOW(TREE_VALUE(p))-1);
++              p = TREE_CHAIN(p);
++      } while (p);
++}
++
++static void handle_function_by_hash(gimple stmt, tree fndecl)
++{
++      struct size_overflow_hash *hash;
++      expanded_location xloc;
++
++      hash = get_function_hash(fndecl);
++      xloc = expand_location(DECL_SOURCE_LOCATION(fndecl));
++
++      fndecl = get_original_function_decl(fndecl);
++      if (!hash->name || !hash->file)
++              return;
++      if (strcmp(hash->name, NAME(fndecl)) || strcmp(hash->file, xloc.file))
++              return;
++
++#define search_param(argnum)                                                  \
++      if (hash->param##argnum)                                                \
++              handle_function_arg(stmt, fndecl, argnum - 1);
++
++      search_param(1);
++      search_param(2);
++      search_param(3);
++      search_param(4);
++      search_param(5);
++      search_param(6);
++      search_param(7);
++      search_param(8);
++      search_param(9);
++#undef search_param
++}
++
++static unsigned int handle_function(void)
++{
++      basic_block bb = ENTRY_BLOCK_PTR->next_bb;
++      int saved_last_basic_block = last_basic_block;
++
++      do {
++              gimple_stmt_iterator gsi;
++              basic_block next = bb->next_bb;
++
++              for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
++                      tree fndecl, attr;
++                      gimple stmt = gsi_stmt(gsi);
++
++                      if (!(is_gimple_call(stmt)))
++                              continue;
++                      fndecl = gimple_call_fndecl(stmt);
++                      if (fndecl == NULL_TREE)
++                              continue;
++                      if (gimple_call_num_args(stmt) == 0)
++                              continue;
++                      attr = lookup_attribute("size_overflow", TYPE_ATTRIBUTES(TREE_TYPE(fndecl)));
++                      if (!attr || !TREE_VALUE(attr))
++                              handle_function_by_hash(stmt, fndecl);
++                      else
++                              handle_function_by_attribute(stmt, attr, fndecl);
++                      gsi = gsi_for_stmt(stmt);
++              }
++              bb = next;
++      } while (bb && bb->index <= saved_last_basic_block);
++      return 0;
++}
++
++static struct gimple_opt_pass size_overflow_pass = {
++      .pass = {
++              .type                   = GIMPLE_PASS,
++              .name                   = "size_overflow",
++              .gate                   = NULL,
++              .execute                = handle_function,
++              .sub                    = NULL,
++              .next                   = NULL,
++              .static_pass_number     = 0,
++              .tv_id                  = TV_NONE,
++              .properties_required    = PROP_cfg | PROP_referenced_vars,
++              .properties_provided    = 0,
++              .properties_destroyed   = 0,
++              .todo_flags_start       = 0,
++              .todo_flags_finish      = TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_remove_unused_locals | TODO_update_ssa_no_phi | TODO_cleanup_cfg | TODO_ggc_collect | TODO_verify_flow
++      }
++};
++
++static void start_unit_callback(void __unused *gcc_data, void __unused *user_data)
++{
++      tree fntype;
++
++      const_char_ptr_type_node = build_pointer_type(build_type_variant(char_type_node, 1, 0));
++
++      // void report_size_overflow(const char *loc_file, unsigned int loc_line, const char *current_func)
++      fntype = build_function_type_list(void_type_node,
++                                        const_char_ptr_type_node,
++                                        unsigned_type_node,
++                                        const_char_ptr_type_node,
++                                        NULL_TREE);
++      report_size_overflow_decl = build_fn_decl("report_size_overflow", fntype);
++
++      TREE_PUBLIC(report_size_overflow_decl) = 1;
++      DECL_EXTERNAL(report_size_overflow_decl) = 1;
++      DECL_ARTIFICIAL(report_size_overflow_decl) = 1;
++}
++
++extern struct gimple_opt_pass pass_dce;
++
++int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
++{
++      int i;
++      const char * const plugin_name = plugin_info->base_name;
++      const int argc = plugin_info->argc;
++      const struct plugin_argument * const argv = plugin_info->argv;
++      bool enable = true;
++
++      struct register_pass_info size_overflow_pass_info = {
++              .pass                           = &size_overflow_pass.pass,
++              .reference_pass_name            = "mudflap2",
++              .ref_pass_instance_number       = 1,
++              .pos_op                         = PASS_POS_INSERT_BEFORE
++      };
++
++      struct register_pass_info dce_pass_info = {
++              .pass                           = &pass_dce.pass,
++              .reference_pass_name            = "mudflap2",
++              .ref_pass_instance_number       = 1,
++              .pos_op                         = PASS_POS_INSERT_BEFORE
++      };
++
++      if (!plugin_default_version_check(version, &gcc_version)) {
++              error(G_("incompatible gcc/plugin versions"));
++              return 1;
++      }
++
++      for (i = 0; i < argc; ++i) {
++              if (!(strcmp(argv[i].key, "no-size_overflow"))) {
++                      enable = false;
++                      continue;
++              }
++              error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
++      }
++
++      register_callback(plugin_name, PLUGIN_INFO, NULL, &size_overflow_plugin_info);
++      if (enable) {
++              register_callback ("start_unit", PLUGIN_START_UNIT, &start_unit_callback, NULL);
++              register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &size_overflow_pass_info);
++              register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &dce_pass_info);
++      }
++      register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
++
++      return 0;
++}
 diff --git a/tools/gcc/stackleak_plugin.c b/tools/gcc/stackleak_plugin.c
 new file mode 100644
 diff --git a/tools/gcc/stackleak_plugin.c b/tools/gcc/stackleak_plugin.c
 new file mode 100644
-index 0000000..d44f37c
+index 0000000..b87ec9d
 --- /dev/null
 +++ b/tools/gcc/stackleak_plugin.c
 --- /dev/null
 +++ b/tools/gcc/stackleak_plugin.c
-@@ -0,0 +1,291 @@
+@@ -0,0 +1,313 @@
 +/*
 + * Copyright 2011 by the PaX Team <pageexec@freemail.hu>
 + * Licensed under the GPL v2
 +/*
 + * Copyright 2011 by the PaX Team <pageexec@freemail.hu>
 + * Licensed under the GPL v2
@@ -81096,7 +85792,7 @@ index 0000000..d44f37c
 +static bool init_locals;
 +
 +static struct plugin_info stackleak_plugin_info = {
 +static bool init_locals;
 +
 +static struct plugin_info stackleak_plugin_info = {
-+      .version        = "201111150100",
++      .version        = "201203140940",
 +      .help           = "track-lowest-sp=nn\ttrack sp in functions whose frame size is at least nn bytes\n"
 +//                      "initialize-locals\t\tforcibly initialize all stack frames\n"
 +};
 +      .help           = "track-lowest-sp=nn\ttrack sp in functions whose frame size is at least nn bytes\n"
 +//                      "initialize-locals\t\tforcibly initialize all stack frames\n"
 +};
@@ -81146,31 +85842,33 @@ index 0000000..d44f37c
 +      return track_frame_size >= 0;
 +}
 +
 +      return track_frame_size >= 0;
 +}
 +
-+static void stackleak_check_alloca(gimple_stmt_iterator gsi)
++static void stackleak_check_alloca(gimple_stmt_iterator *gsi)
 +{
 +      gimple check_alloca;
 +{
 +      gimple check_alloca;
-+      tree fndecl, fntype, alloca_size;
++      tree fntype, fndecl, alloca_size;
 +
 +
-+      // insert call to void pax_check_alloca(unsigned long size)
 +      fntype = build_function_type_list(void_type_node, long_unsigned_type_node, NULL_TREE);
 +      fndecl = build_fn_decl(check_function, fntype);
 +      DECL_ASSEMBLER_NAME(fndecl); // for LTO
 +      fntype = build_function_type_list(void_type_node, long_unsigned_type_node, NULL_TREE);
 +      fndecl = build_fn_decl(check_function, fntype);
 +      DECL_ASSEMBLER_NAME(fndecl); // for LTO
-+      alloca_size = gimple_call_arg(gsi_stmt(gsi), 0);
++
++      // insert call to void pax_check_alloca(unsigned long size)
++      alloca_size = gimple_call_arg(gsi_stmt(*gsi), 0);
 +      check_alloca = gimple_build_call(fndecl, 1, alloca_size);
 +      check_alloca = gimple_build_call(fndecl, 1, alloca_size);
-+      gsi_insert_before(&gsi, check_alloca, GSI_CONTINUE_LINKING);
++      gsi_insert_before(gsi, check_alloca, GSI_SAME_STMT);
 +}
 +
 +}
 +
-+static void stackleak_add_instrumentation(gimple_stmt_iterator gsi)
++static void stackleak_add_instrumentation(gimple_stmt_iterator *gsi)
 +{
 +      gimple track_stack;
 +{
 +      gimple track_stack;
-+      tree fndecl, fntype;
++      tree fntype, fndecl;
 +
 +
-+      // insert call to void pax_track_stack(void)
 +      fntype = build_function_type_list(void_type_node, NULL_TREE);
 +      fndecl = build_fn_decl(track_function, fntype);
 +      DECL_ASSEMBLER_NAME(fndecl); // for LTO
 +      fntype = build_function_type_list(void_type_node, NULL_TREE);
 +      fndecl = build_fn_decl(track_function, fntype);
 +      DECL_ASSEMBLER_NAME(fndecl); // for LTO
++
++      // insert call to void pax_track_stack(void)
 +      track_stack = gimple_build_call(fndecl, 0);
 +      track_stack = gimple_build_call(fndecl, 0);
-+      gsi_insert_after(&gsi, track_stack, GSI_CONTINUE_LINKING);
++      gsi_insert_after(gsi, track_stack, GSI_CONTINUE_LINKING);
 +}
 +
 +#if BUILDING_GCC_VERSION == 4005
 +}
 +
 +#if BUILDING_GCC_VERSION == 4005
@@ -81206,34 +85904,54 @@ index 0000000..d44f37c
 +static unsigned int execute_stackleak_tree_instrument(void)
 +{
 +      basic_block bb, entry_bb;
 +static unsigned int execute_stackleak_tree_instrument(void)
 +{
 +      basic_block bb, entry_bb;
-+      bool prologue_instrumented = false;
++      bool prologue_instrumented = false, is_leaf = true;
 +
 +      entry_bb = ENTRY_BLOCK_PTR_FOR_FUNCTION(cfun)->next_bb;
 +
 +      // 1. loop through BBs and GIMPLE statements
 +      FOR_EACH_BB(bb) {
 +              gimple_stmt_iterator gsi;
 +
 +      entry_bb = ENTRY_BLOCK_PTR_FOR_FUNCTION(cfun)->next_bb;
 +
 +      // 1. loop through BBs and GIMPLE statements
 +      FOR_EACH_BB(bb) {
 +              gimple_stmt_iterator gsi;
++
 +              for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
 +              for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
++                      gimple stmt;
++
++                      stmt = gsi_stmt(gsi);
++
++                      if (is_gimple_call(stmt))
++                              is_leaf = false;
++
 +                      // gimple match: align 8 built-in BUILT_IN_NORMAL:BUILT_IN_ALLOCA attributes <tree_list 0xb7576450>
 +                      // gimple match: align 8 built-in BUILT_IN_NORMAL:BUILT_IN_ALLOCA attributes <tree_list 0xb7576450>
-+                      if (!is_alloca(gsi_stmt(gsi)))
++                      if (!is_alloca(stmt))
 +                              continue;
 +
 +                      // 2. insert stack overflow check before each __builtin_alloca call
 +                              continue;
 +
 +                      // 2. insert stack overflow check before each __builtin_alloca call
-+                      stackleak_check_alloca(gsi);
++                      stackleak_check_alloca(&gsi);
 +
 +                      // 3. insert track call after each __builtin_alloca call
 +
 +                      // 3. insert track call after each __builtin_alloca call
-+                      stackleak_add_instrumentation(gsi);
++                      stackleak_add_instrumentation(&gsi);
 +                      if (bb == entry_bb)
 +                              prologue_instrumented = true;
 +              }
 +      }
 +
 +                      if (bb == entry_bb)
 +                              prologue_instrumented = true;
 +              }
 +      }
 +
++      // special cases for some bad linux code: taking the address of static inline functions will materialize them
++      // but we mustn't instrument some of them as the resulting stack alignment required by the function call ABI
++      // will break other assumptions regarding the expected (but not otherwise enforced) register clobbering  ABI.
++      // case in point: native_save_fl on amd64 when optimized for size clobbers rdx if it were instrumented here.
++      if (is_leaf && !TREE_PUBLIC(current_function_decl) && DECL_DECLARED_INLINE_P(current_function_decl))
++              return 0;
++      if (is_leaf && !strncmp(IDENTIFIER_POINTER(DECL_NAME(current_function_decl)), "_paravirt_", 10))
++              return 0;
++
 +      // 4. insert track call at the beginning
 +      if (!prologue_instrumented) {
 +      // 4. insert track call at the beginning
 +      if (!prologue_instrumented) {
++              gimple_stmt_iterator gsi;
++
 +              bb = split_block_after_labels(ENTRY_BLOCK_PTR)->dest;
 +              if (dom_info_available_p(CDI_DOMINATORS))
 +                      set_immediate_dominator(CDI_DOMINATORS, bb, ENTRY_BLOCK_PTR);
 +              bb = split_block_after_labels(ENTRY_BLOCK_PTR)->dest;
 +              if (dom_info_available_p(CDI_DOMINATORS))
 +                      set_immediate_dominator(CDI_DOMINATORS, bb, ENTRY_BLOCK_PTR);
-+              stackleak_add_instrumentation(gsi_start_bb(bb));
++              gsi = gsi_start_bb(bb);
++              stackleak_add_instrumentation(&gsi);
 +      }
 +
 +      return 0;
 +      }
 +
 +      return 0;
@@ -81295,7 +86013,7 @@ index 0000000..d44f37c
 +//            .reference_pass_name            = "tree_profile",
 +              .reference_pass_name            = "optimized",
 +              .ref_pass_instance_number       = 0,
 +//            .reference_pass_name            = "tree_profile",
 +              .reference_pass_name            = "optimized",
 +              .ref_pass_instance_number       = 0,
-+              .pos_op                         = PASS_POS_INSERT_AFTER
++              .pos_op                         = PASS_POS_INSERT_BEFORE
 +      };
 +      struct register_pass_info stackleak_final_pass_info = {
 +              .pass                           = &stackleak_final_rtl_opt_pass.pass,
 +      };
 +      struct register_pass_info stackleak_final_pass_info = {
 +              .pass                           = &stackleak_final_rtl_opt_pass.pass,
@@ -81377,10 +86095,10 @@ index af0f22f..9a7d479 100644
                         break;
         }
 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
                         break;
         }
 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index aefdda3..8e8fbb9 100644
+index d9cfb78..4f27c10 100644
 --- a/virt/kvm/kvm_main.c
 +++ b/virt/kvm/kvm_main.c
 --- a/virt/kvm/kvm_main.c
 +++ b/virt/kvm/kvm_main.c
-@@ -73,7 +73,7 @@ LIST_HEAD(vm_list);
+@@ -75,7 +75,7 @@ LIST_HEAD(vm_list);
  
  static cpumask_var_t cpus_hardware_enabled;
  static int kvm_usage_count = 0;
  
  static cpumask_var_t cpus_hardware_enabled;
  static int kvm_usage_count = 0;
@@ -81389,7 +86107,7 @@ index aefdda3..8e8fbb9 100644
  
  struct kmem_cache *kvm_vcpu_cache;
  EXPORT_SYMBOL_GPL(kvm_vcpu_cache);
  
  struct kmem_cache *kvm_vcpu_cache;
  EXPORT_SYMBOL_GPL(kvm_vcpu_cache);
-@@ -2266,7 +2266,7 @@ static void hardware_enable_nolock(void *junk)
+@@ -2268,7 +2268,7 @@ static void hardware_enable_nolock(void *junk)
  
        if (r) {
                cpumask_clear_cpu(cpu, cpus_hardware_enabled);
  
        if (r) {
                cpumask_clear_cpu(cpu, cpus_hardware_enabled);
@@ -81398,7 +86116,7 @@ index aefdda3..8e8fbb9 100644
                printk(KERN_INFO "kvm: enabling virtualization on "
                                 "CPU%d failed\n", cpu);
        }
                printk(KERN_INFO "kvm: enabling virtualization on "
                                 "CPU%d failed\n", cpu);
        }
-@@ -2320,10 +2320,10 @@ static int hardware_enable_all(void)
+@@ -2322,10 +2322,10 @@ static int hardware_enable_all(void)
  
        kvm_usage_count++;
        if (kvm_usage_count == 1) {
  
        kvm_usage_count++;
        if (kvm_usage_count == 1) {
@@ -81411,7 +86129,7 @@ index aefdda3..8e8fbb9 100644
                        hardware_disable_all_nolock();
                        r = -EBUSY;
                }
                        hardware_disable_all_nolock();
                        r = -EBUSY;
                }
-@@ -2588,7 +2588,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
+@@ -2676,7 +2676,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
        kvm_arch_vcpu_put(vcpu);
  }
  
        kvm_arch_vcpu_put(vcpu);
  }
  
@@ -81420,7 +86138,7 @@ index aefdda3..8e8fbb9 100644
                  struct module *module)
  {
        int r;
                  struct module *module)
  {
        int r;
-@@ -2651,7 +2651,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
+@@ -2739,7 +2739,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
        if (!vcpu_align)
                vcpu_align = __alignof__(struct kvm_vcpu);
        kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
        if (!vcpu_align)
                vcpu_align = __alignof__(struct kvm_vcpu);
        kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
@@ -81429,7 +86147,7 @@ index aefdda3..8e8fbb9 100644
        if (!kvm_vcpu_cache) {
                r = -ENOMEM;
                goto out_free_3;
        if (!kvm_vcpu_cache) {
                r = -ENOMEM;
                goto out_free_3;
-@@ -2661,9 +2661,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
+@@ -2749,9 +2749,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
        if (r)
                goto out_free;
  
        if (r)
                goto out_free;
  
diff --git a/kernel/patches/linux-3.1-bridge-master-device-stuck-in-no-carrier-state-forever-when-in-user-stp-mode.patch b/kernel/patches/linux-3.1-bridge-master-device-stuck-in-no-carrier-state-forever-when-in-user-stp-mode.patch
deleted file mode 100644 (file)
index 2e3d327..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-From b03b6dd58cef7d15b7c46a6729b83dd535ef08ab Mon Sep 17 00:00:00 2001
-From: Vitalii Demianets <vitas@nppfactor.kiev.ua>
-Date: Fri, 25 Nov 2011 00:16:37 +0000
-Subject: [PATCH] bridge: master device stuck in no-carrier state forever when
- in user-stp mode
-
-When in user-stp mode, bridge master do not follow state of its slaves, so
-after the following sequence of events it can stuck forever in no-carrier
-state:
-1) turn stp off
-2) put all slaves down - master device will follow their state and also go in
-no-carrier state
-3) turn stp on with bridge-stp script returning 0 (go to the user-stp mode)
-Now bridge master won't follow slaves' state and will never reach running
-state.
-
-This patch solves the problem by making user-stp and kernel-stp behavior
-similar regarding master following slaves' states.
-
-Signed-off-by: Vitalii Demianets <vitas@nppfactor.kiev.ua>
-Acked-by: Stephen Hemminger <shemminger@vyatta.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- net/bridge/br_netlink.c |    6 ++++++
- net/bridge/br_stp.c     |   29 ++++++++++++++---------------
- 2 files changed, 20 insertions(+), 15 deletions(-)
-
-diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
-index e5f9ece3..a1daf82 100644
---- a/net/bridge/br_netlink.c
-+++ b/net/bridge/br_netlink.c
-@@ -18,6 +18,7 @@
- #include <net/sock.h>
- #include "br_private.h"
-+#include "br_private_stp.h"
- static inline size_t br_nlmsg_size(void)
- {
-@@ -188,6 +189,11 @@ static int br_rtm_setlink(struct sk_buff *skb,  struct nlmsghdr *nlh, void *arg)
-       p->state = new_state;
-       br_log_state(p);
-+
-+      spin_lock_bh(&p->br->lock);
-+      br_port_state_selection(p->br);
-+      spin_unlock_bh(&p->br->lock);
-+
-       br_ifinfo_notify(RTM_NEWLINK, p);
-       return 0;
-diff --git a/net/bridge/br_stp.c b/net/bridge/br_stp.c
-index ad0a3f7..dd147d7 100644
---- a/net/bridge/br_stp.c
-+++ b/net/bridge/br_stp.c
-@@ -399,25 +399,24 @@ void br_port_state_selection(struct net_bridge *br)
-       struct net_bridge_port *p;
-       unsigned int liveports = 0;
--      /* Don't change port states if userspace is handling STP */
--      if (br->stp_enabled == BR_USER_STP)
--              return;
--
-       list_for_each_entry(p, &br->port_list, list) {
-               if (p->state == BR_STATE_DISABLED)
-                       continue;
--              if (p->port_no == br->root_port) {
--                      p->config_pending = 0;
--                      p->topology_change_ack = 0;
--                      br_make_forwarding(p);
--              } else if (br_is_designated_port(p)) {
--                      del_timer(&p->message_age_timer);
--                      br_make_forwarding(p);
--              } else {
--                      p->config_pending = 0;
--                      p->topology_change_ack = 0;
--                      br_make_blocking(p);
-+              /* Don't change port states if userspace is handling STP */
-+              if (br->stp_enabled != BR_USER_STP) {
-+                      if (p->port_no == br->root_port) {
-+                              p->config_pending = 0;
-+                              p->topology_change_ack = 0;
-+                              br_make_forwarding(p);
-+                      } else if (br_is_designated_port(p)) {
-+                              del_timer(&p->message_age_timer);
-+                              br_make_forwarding(p);
-+                      } else {
-+                              p->config_pending = 0;
-+                              p->topology_change_ack = 0;
-+                              br_make_blocking(p);
-+                      }
-               }
-               if (p->state == BR_STATE_FORWARDING)
--- 
-1.7.6.2
-
diff --git a/kernel/scripts/configcommon.py b/kernel/scripts/configcommon.py
new file mode 100755 (executable)
index 0000000..54f355a
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+import re
+import sys
+
+filelist = sys.argv[1:]
+
+lines = []
+options_state   = {}
+options_counter = {}
+
+first_file = True
+for filename in filelist:
+       f = open(filename)
+
+       for line in f.readlines():
+               # Strip newline.
+               line = line.rstrip()
+
+               if line.startswith("# Automatically generated file;"):
+                       continue
+
+               if line.endswith("Kernel Configuration"):
+                       continue
+
+               option = value = None
+
+               m = re.match("^# (.*) is not set$", line)
+               if m:
+                       option = m.group(1)
+                       value  = "n"
+
+               m = re.match("^(.*)=(.*)$", line)
+               if m:
+                       option = m.group(1)
+                       value  = m.group(2)
+
+               if option:
+                       option_value = "%s=%s" % (option, value or "")
+
+                       try:
+                               options_counter[option_value] += 1
+                               continue
+
+                       except KeyError:
+                               options_counter[option_value] = 1
+
+               if first_file:
+                       lines.append(line)
+
+       f.close()
+       first_file = False
+
+for line in lines:
+       m = re.match("^# (.*) is not set$", line)
+       if m:
+               if options_counter.get("%s=n" % m.group(1), 0) == len(filelist):
+                       print "# %s is not set" % m.group(1)
+
+               continue
+
+       m = re.match("^(.*)=(.*)$", line)
+       if m:
+               if options_counter.get(m.group(0), 0) == len(filelist):
+                       print m.group(0)
+
+               continue
+
+       print line
diff --git a/kernel/scripts/configdiff.py b/kernel/scripts/configdiff.py
new file mode 100755 (executable)
index 0000000..612e9bf
--- /dev/null
@@ -0,0 +1,84 @@
+#!/usr/bin/python
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+import re
+import sys
+
+filelist = sys.argv[1:]
+
+options = []
+
+f = open(filelist[0])
+for line in f.readlines():
+       # Strip newline.
+       line = line.rstrip()
+
+       option = value = None
+
+       m = re.match("^# (.*) is not set$", line)
+       if m:
+               option = m.group(1)
+               value  = "n"
+
+       m = re.match("^(.*)=(.*)$", line)
+       if m:
+               option = m.group(1)
+               value  = m.group(2)
+
+       if option:
+               option_value = "%s=%s" % (option, value or "")
+               options.append(option_value)
+
+f.close()
+
+f = open(filelist[1])
+
+section = None
+for line in f.readlines():
+       m = re.match("^# (.*)$", line)
+       if m:
+               _section = m.group(1)
+               if not _section.startswith("CONFIG_") and \
+                               not _section.endswith("Kernel Configuration") and \
+                               not _section.startswith("Automatically generated file;"):
+                       section = _section
+
+       option = None
+       value  = None
+
+       m = re.match("^# (.*) is not set$", line)
+       if m:
+               option = m.group(1)
+               value  = "n"
+
+       m = re.match("^(.*)=(.*)$", line)
+       if m:
+               option = m.group(1)
+               value  = m.group(2)
+
+       if not option:
+               continue
+
+       # Ignore all options CONFIG_HAVE_ because we cannot
+       # set them anyway.
+       elif option.startswith("CONFIG_HAVE_"):
+               continue
+
+       option_value = "%s=%s" % (option, value)
+       if not option_value in options:
+               if section:
+                       print
+                       print "#"
+                       print "# %s" % section
+                       print "#"
+                       section = None
+
+               if value == "n":
+                       print "# %s is not set" % option
+               else:
+                       print "%s=%s" % (option, value)
+
+f.close()
diff --git a/kernel/scripts/configure b/kernel/scripts/configure
new file mode 100755 (executable)
index 0000000..e60bc83
--- /dev/null
@@ -0,0 +1,315 @@
+#!/bin/bash
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+BASEDIR=$(dirname ${0})
+SCRIPTS_DIR=${BASEDIR}
+
+CONFIGS="x86_64:default i686:legacy i686:default"
+CONFIGS="${CONFIGS} armv7hl:omap armv5tel:versatile armv5tel:kirkwood"
+
+function merge_config() {
+       local arch=${1}
+       local flavour=${2}
+       local output=${3}
+       shift 3
+
+       local arg
+       for arg in arch flavour output; do
+               if [ -z "${!arg}" ]; then
+                       echo >&2 "merge usage: <arch> <flavour> <output filename>"
+                       exit 2
+               fi
+       done
+
+       local config_mode="oldnoconfig"
+       local extra_configs
+       while [ $# -gt 0 ]; do
+               case "${1}" in
+                       --mode=*)
+                               config_mode=${1#--mode=}
+                               shift
+                               ;;
+                       -*)
+                               echo >&2 "Unknown option: ${1}"
+                               ;;
+                       *)
+                               extra_configs="${extra_configs} ${1}"
+                               ;;
+               esac
+               shift
+       done
+
+       local configs="${extra_configs} config-generic"
+
+       case "${arch}:${flavour}" in
+               # x86
+               x86_64:default)
+                       configs="${configs} config-x86-generic config-x86_64-default"
+                       ;;
+               i686:default)
+                       configs="${configs} config-x86-generic config-i686-default"
+                       ;;
+               i686:legacy)
+                       configs="${configs} config-x86-generic config-i686-default"
+                       configs="${configs} config-i686-legacy"
+                       ;;
+
+               # ARM
+               armv5tel:versatile)
+                       configs="${configs} config-arm-generic"
+                       ;;
+               armv5tel:kirkwood)
+                       configs="${configs} config-arm-generic config-armv5tel-kirkwood"
+                       ;;
+               armv7hl:omap)
+                       configs="${configs} config-arm-generic config-armv7hl-omap"
+                       ;;
+               *)
+                       echo >&2 "ERROR: Invalid parameters given: $@"
+                       return 1
+                       ;;
+       esac
+
+       # Determine the kernel arch.
+       local kernel_arch=
+       case "${arch}" in
+               arm*)
+                       kernel_arch="arm"
+                       ;;
+               i?86|x86*)
+                       kernel_arch="x86"
+                       ;;
+       esac
+
+       # Merge the configuration files from its elementary configuration
+       # files.
+       local tmp_out=$(mktemp)
+       local tmp_in=$(mktemp)
+
+       local config
+       for config in ${configs}; do
+               cat ${tmp_out} > ${tmp_in}
+               perl ${SCRIPTS_DIR}/merge.pl \
+                       ${config} ${tmp_in} > ${tmp_out}
+       done
+
+       if [ "${config_mode}" != "none" ]; then
+               echo "Running 'make oldnoconfig' for ${arch} (${flavour})..."
+               (
+                       cd ${KERNEL_DIR}
+                       cat ${tmp_out} > .config
+                       make ARCH="${kernel_arch}" ${config_mode}
+                       cat .config > ${tmp_out}
+               )
+       fi
+
+       cat ${tmp_out} > ${output}
+       rm -f ${tmp_in} ${tmp_out}
+}
+
+# This function runs an interactive "make oldconfig".
+function make_oldconfig() {
+       local arch="x86_64"
+       local kernel_arch="x86"
+       local flavour="default"
+
+       local config_in=$(mktemp)
+       local config_out=$(mktemp)
+       local diff_out=$(mktemp)
+
+       merge_config ${arch} ${flavour} ${config_in} --mode=none
+
+       (
+               cd ${KERNEL_DIR}
+               cat ${config_in} > .config
+
+               echo "You may now edit the configuration..."
+
+               local option
+               select option in oldconfig menuconfig oldnoconfig startover quit; do
+                       case "${option}" in
+                               oldconfig|menuconfig|oldnoconfig)
+                                       make ARCH=${kernel_arch} ${option}
+                                       ;;
+                               startover)
+                                       cat ${config_in} > .config
+                                       ;;
+                               quit)
+                                       break
+                                       ;;
+                       esac
+               done
+
+               cat .config > ${config_out}
+       )
+
+       ${SCRIPTS_DIR}/configdiff.py ${config_in} ${config_out} > ${diff_out}
+
+       # Update the rest of the configurations.
+       diff_configs ${diff_out} --mode=oldconfig
+
+       rm -f ${config_in} ${config_out} ${diff_out}
+}
+
+# config-generic
+#  Intersection of all files.
+# config-x86-generic
+#  Diff of (intersection of (i686-{default,legacy} and x86_64-default)
+#  against config-generic).
+# config-x86-x86_64
+#  Diff against merge of (config-generic and config-x86-generic).
+
+function diff_configs() {
+       local extra_configs="$@"
+
+       declare -A arch_configs
+
+       tmpdir=$(mktemp -d)
+
+       for config in ${CONFIGS}; do
+               arch=${config%:*}
+               flavour=${config#*:}
+
+               filename=${tmpdir}/config-${arch}-${flavour}
+
+               merge_config ${arch} ${flavour} ${filename} ${extra_configs}
+
+               # Do not include i686 legacy.
+               case "${config}" in
+                       i686:legacy)
+                               continue
+                               ;;
+                       armv5tel:versatile)
+                               ;;
+                       arm*)
+                               continue
+                               ;;
+               esac
+
+               case "${arch}" in
+                       x86*|i?86)
+                               arch_configs[x86]="${arch_configs[x86]} ${filename}"
+                               ;;
+                       arm*)
+                               arch_configs[arm]="${arch_configs[arm]} ${filename}"
+                               ;;
+                       *)
+                               echo >&2 "ERROR: Invalid architecture: ${arch}"
+                               ;;
+               esac
+       done
+
+       common_configs=""
+       for arch in x86 arm; do
+               filename="${tmpdir}/config-${arch}-common"
+               ${SCRIPTS_DIR}/configcommon.py ${arch_configs[${arch}]} \
+                       > ${filename}
+
+               common_configs="${common_configs} ${filename}"
+       done
+
+       ${SCRIPTS_DIR}/configcommon.py ${common_configs} > ${tmpdir}/config-generic
+
+       ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-generic ${tmpdir}/config-arm-common \
+               > ${tmpdir}/config-arm-generic
+
+       ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-generic ${tmpdir}/config-x86-common \
+               > ${tmpdir}/config-x86-generic
+
+       for config in ${CONFIGS}; do
+               arch=${config%:*}
+               flavour=${config#*:}
+
+               case "${config}" in
+                       arm*:*)
+                               suparch="arm"
+                               ;;
+                       i?86:*|x86*:*)
+                               suparch="x86"
+                               ;;
+               esac
+               filename=${tmpdir}/config-${arch}-${flavour}
+
+               case "${config}" in
+                       i686:legacy)
+                               # Legacy depends directly on the default configuration.
+                               ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-i686-default \
+                                       ${filename} > ${filename}.tmp
+                               ;;
+                       armv5tel:versatile)
+                               rm -f ${filename}
+                               continue
+                               ;;
+                       *)
+                               ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-${suparch}-common \
+                                       ${filename} > ${filename}.tmp
+                               ;;
+               esac
+               mv ${filename}{.tmp,}
+       done
+       rm -f ${tmpdir}/config-*-common
+
+       for config in ${tmpdir}/*; do
+               if ! cmp $(basename ${config}) ${config} &>/dev/null; then
+                       echo "$(basename ${config}) has changed."
+               fi
+               cat ${config} > $(basename ${config})
+       done
+
+       rm -rf ${tmpdir}
+}
+
+KERNEL_DIR=
+
+# Parse commandline.
+while [ $# -gt 0 ]; do
+       arg=${1}; shift
+       case "${arg}" in
+               --kernel-dir=*)
+                       KERNEL_DIR=${arg#--kernel-dir=}
+                       ;;
+               help|"")
+                       echo "${0} - available commands:"
+                       echo "    * merge <arch> <flavour> <output filename>"
+                       echo "    * update ..."
+                       echo "    * oldconfig"
+                       echo ""
+                       echo "    You must always set --kernel-dir=..."
+                       exit 0
+                       ;;
+               merge|oldconfig|update)
+                       action=${arg}
+                       break
+                       ;;
+       esac
+done
+
+if [ -z "${KERNEL_DIR}" ]; then
+       echo >&2 "--kernel-dir=... was not set!"
+       exit 2
+fi
+
+if [ -z "${action}" ]; then
+       echo >&2 "No action given... Try ${0} help."
+       exit 2
+fi
+
+case "${action}" in
+       merge)
+               merge_config $@
+               exit $?
+               ;;
+       oldconfig)
+               make_oldconfig
+               exit $?
+               ;;
+       update)
+               diff_configs $@
+               exit $?
+               ;;
+esac
+
+exit 1
diff --git a/kernel/scripts/merge.pl b/kernel/scripts/merge.pl
new file mode 100644 (file)
index 0000000..8c31815
--- /dev/null
@@ -0,0 +1,66 @@
+#! /usr/bin/perl
+
+my @args=@ARGV;
+my %configvalues;
+my @configoptions;
+my $configcounter = 0;
+
+# optionally print out the architecture as the first line of our output
+my $arch = $args[2];
+if (defined $arch) {
+       print "# $arch\n";
+}
+
+# first, read the override file
+
+open (FILE,"$args[0]") || die "Could not open $args[0]";
+while (<FILE>) {
+       my $str = $_;
+       my $configname;
+
+       if (/\# ([\w]+) is not set/) {
+               $configname = $1;
+       } elsif (/([\w]+)=/) {
+               $configname = $1;
+       }
+
+       if (defined($configname) && !exists($configvalues{$configname})) {
+               $configvalues{$configname} = $str;
+               $configoptions[$configcounter] = $configname;
+               $configcounter ++;
+       }
+};
+
+# now, read and output the entire configfile, except for the overridden
+# parts... for those the new value is printed.
+
+open (FILE2,"$args[1]") || die "Could not open $args[1]";
+while (<FILE2>) {
+       my $configname;
+
+       if (/\# ([\w]+) is not set/) {
+               $configname = $1;
+       } elsif (/([\w]+)=/) {
+               $configname  = $1;
+       }
+
+       if (defined($configname) && exists($configvalues{$configname})) {
+               print "$configvalues{$configname}";
+               delete($configvalues{$configname});
+       } else {
+               print "$_";
+       }
+}
+
+# now print the new values from the overridden configfile
+my $counter = 0;
+
+while ($counter < $configcounter) {
+       my $configname = $configoptions[$counter];
+       if (exists($configvalues{$configname})) {
+               print "$configvalues{$configname}";
+       }
+       $counter++;
+}
+
+1;