From e59b4c3b2352a5d1da284f21ff56abd9f16d4f01 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 1 Mar 2012 19:10:03 +0100 Subject: [PATCH] kernel: 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. --- kernel/config-arm-generic | 463 + kernel/config-armv5tel-kirkwood | 130 + kernel/config-armv7hl-omap | 600 + kernel/{config.i686-legacy => config-generic} | 1275 +- kernel/config-i686-default | 302 + kernel/config-i686-legacy | 118 + kernel/config-x86-generic | 837 + kernel/config-x86_64-default | 175 + kernel/config.armv5tel-versatile | 1449 -- kernel/config.i686 | 4870 ------ kernel/config.x86_64 | 2932 ---- kernel/kernel.nm | 81 +- ...> grsecurity-2.9-3.2.9-201203062051.patch} | 13314 +++++++--------- ...-state-forever-when-in-user-stp-mode.patch | 98 - kernel/scripts/configcommon.py | 80 + kernel/scripts/configdiff.py | 82 + kernel/scripts/configure | 315 + kernel/scripts/merge.pl | 66 + 18 files changed, 9207 insertions(+), 17980 deletions(-) create mode 100644 kernel/config-arm-generic create mode 100644 kernel/config-armv5tel-kirkwood create mode 100644 kernel/config-armv7hl-omap rename kernel/{config.i686-legacy => config-generic} (81%) create mode 100644 kernel/config-i686-default create mode 100644 kernel/config-i686-legacy create mode 100644 kernel/config-x86-generic create mode 100644 kernel/config-x86_64-default delete mode 100644 kernel/config.armv5tel-versatile delete mode 100644 kernel/config.i686 delete mode 100644 kernel/config.x86_64 rename kernel/patches/{grsecurity-2.2.2-3.1.5-201112101853.patch => grsecurity-2.9-3.2.9-201203062051.patch} (89%) delete mode 100644 kernel/patches/linux-3.1-bridge-master-device-stuck-in-no-carrier-state-forever-when-in-user-stp-mode.patch create mode 100755 kernel/scripts/configcommon.py create mode 100755 kernel/scripts/configdiff.py create mode 100755 kernel/scripts/configure create mode 100644 kernel/scripts/merge.pl diff --git a/kernel/config-arm-generic b/kernel/config-arm-generic new file mode 100644 index 000000000..1d0112f89 --- /dev/null +++ b/kernel/config-arm-generic @@ -0,0 +1,463 @@ + +# +# Linux/arm 3.2.7 Kernel Configuration +# +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 index 000000000..38a8f2134 --- /dev/null +++ b/kernel/config-armv5tel-kirkwood @@ -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 index 000000000..a66904b84 --- /dev/null +++ b/kernel/config-armv7hl-omap @@ -0,0 +1,600 @@ + +# +# Linux/arm 3.2.7 Kernel Configuration +# +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=y +CONFIG_CPU_FREQ_TABLE=m +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 + +# +# 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 + +# +# 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 diff --git a/kernel/config.i686-legacy b/kernel/config-generic similarity index 81% rename from kernel/config.i686-legacy rename to kernel/config-generic index 0cb854c31..7a470a061 100644 --- a/kernel/config.i686-legacy +++ b/kernel/config-generic @@ -1,56 +1,19 @@ # # 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 +# Linux/x86 3.2.7 Kernel Configuration +# 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 @@ -64,14 +27,9 @@ 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 @@ -87,9 +45,6 @@ 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 # @@ -99,23 +54,16 @@ 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 +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=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 @@ -130,6 +78,7 @@ CONFIG_CGROUP_MEM_RES_CTLR_SWAP=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 @@ -155,15 +104,13 @@ CONFIG_SYSCTL=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_PCSPKR_PLATFORM=y -CONFIG_HAVE_PCSPKR_PLATFORM=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_EPOLL=y @@ -191,30 +138,15 @@ CONFIG_SLUB=y 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 @@ -224,9 +156,7 @@ 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 @@ -243,8 +173,6 @@ CONFIG_CFQ_GROUP_IOSCHED=y 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 @@ -273,7 +201,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_MUTEX_SPIN_ON_OWNER=y CONFIG_FREEZER=y # @@ -283,310 +210,59 @@ 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_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_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_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_SPLIT_PTLOCK_CPUS=4 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_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_CC_STACKPROTECTOR=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 -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_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 + +# +# Memory power savings +# # # 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_ATS=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 @@ -600,26 +276,13 @@ 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 # @@ -1062,9 +725,6 @@ 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 @@ -1161,7 +821,8 @@ CONFIG_FW_LOADER=y 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 @@ -1174,15 +835,11 @@ CONFIG_PARPORT_SERIAL=m # 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 @@ -1205,20 +862,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_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 @@ -1229,7 +881,6 @@ CONFIG_HP_ILO=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 @@ -1252,6 +903,11 @@ CONFIG_CB710_DEBUG_ASSUMPTIONS=y # 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 @@ -1308,7 +964,6 @@ 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 @@ -1328,10 +983,10 @@ CONFIG_SCSI_AIC94XX=m 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_ARCMSR_AER is not set CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=m CONFIG_MEGARAID_MAILBOX=m @@ -1341,21 +996,11 @@ 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 @@ -1379,7 +1024,6 @@ 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 @@ -1397,7 +1041,6 @@ CONFIG_SCSI_OSD_DPRINT_SENSE=1 CONFIG_ATA=y # CONFIG_ATA_NONSTANDARD is not set CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_ATA_ACPI=y CONFIG_SATA_PMP=y # @@ -1444,7 +1087,6 @@ 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 @@ -1488,7 +1130,6 @@ 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 @@ -1499,13 +1140,13 @@ 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_THIN_PROVISIONING is not set CONFIG_DM_MIRROR=y CONFIG_DM_RAID=m CONFIG_DM_LOG_USERSPACE=m @@ -1543,50 +1184,89 @@ 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_NET_CORE=y 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_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_NET_SB1000 is not set +CONFIG_VIRTIO_NET=m # 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_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_NET_VENDOR_DEC=y CONFIG_NET_TULIP=y CONFIG_DE2104X=m CONFIG_DE2104X_DSL=0 @@ -1600,119 +1280,180 @@ CONFIG_WINBOND_840=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_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_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_NET_VENDOR_NATSEMI=y CONFIG_NATSEMI=m +CONFIG_NS83820=m +CONFIG_NET_VENDOR_8390=y 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_R8169=m +CONFIG_NET_VENDOR_RDC=y 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_SIS190=m +CONFIG_SFC=m +CONFIG_NET_VENDOR_SMSC=y 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_DEBUG_FS 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_MLX4_EN=m -CONFIG_MLX4_CORE=m -CONFIG_MLX4_DEBUG=y +CONFIG_NET_VENDOR_TEHUTI=y 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 + +# +# 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_AIRO=m CONFIG_ATMEL=m CONFIG_PCI_ATMEL=m CONFIG_AT76C50X_USB=m @@ -1744,6 +1485,8 @@ CONFIG_CARL9170=m 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 @@ -1752,6 +1495,7 @@ CONFIG_B43_SDIO=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 @@ -1766,6 +1510,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_BRCMSMAC is not set +# CONFIG_BRCMFMAC is not set CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y @@ -1782,16 +1528,7 @@ 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 is not set CONFIG_IWLWIFI_LEGACY=m # @@ -1853,7 +1590,6 @@ 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 @@ -1861,98 +1597,12 @@ CONFIG_ZD1211RW=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 # - -# -# 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 @@ -2111,7 +1761,6 @@ 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 @@ -2127,13 +1776,9 @@ CONFIG_MOUSE_SYNAPTICS_I2C=m # 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_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 @@ -2150,9 +1795,7 @@ CONFIG_INPUT_GPIO_ROTARY_ENCODER=m # 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 @@ -2167,6 +1810,7 @@ CONFIG_SERIO_ALTERA_PS2=m 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 @@ -2178,7 +1822,6 @@ 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 @@ -2193,9 +1836,7 @@ CONFIG_N_GSM=m # 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 @@ -2220,7 +1861,6 @@ 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 @@ -2229,25 +1869,13 @@ 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 @@ -2266,19 +1894,12 @@ CONFIG_I2C_ALGOPCA=m # # 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 @@ -2286,11 +1907,11 @@ CONFIG_I2C_VIAPRO=m # # ACPI drivers # -CONFIG_I2C_SCMI=m # # 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 @@ -2313,7 +1934,6 @@ 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 @@ -2345,7 +1965,6 @@ CONFIG_GPIO_SYSFS=y # # CONFIG_GPIO_GENERIC_PLATFORM is not set # CONFIG_GPIO_IT8761E is not set -CONFIG_GPIO_SCH=m # CONFIG_GPIO_VX855 is not set # @@ -2360,9 +1979,6 @@ CONFIG_GPIO_SCH=m # # 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 @@ -2424,8 +2040,6 @@ CONFIG_HWMON_VID=m # # Native drivers # -CONFIG_SENSORS_ABITUGURU=m -CONFIG_SENSORS_ABITUGURU3=m CONFIG_SENSORS_AD7414=m CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m @@ -2439,10 +2053,6 @@ 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 @@ -2450,12 +2060,10 @@ 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 @@ -2493,11 +2101,13 @@ CONFIG_PMBUS=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_ZL6100 is not set CONFIG_SENSORS_SHT15=m CONFIG_SENSORS_SHT21=m CONFIG_SENSORS_SIS5595=m @@ -2519,7 +2129,6 @@ 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 @@ -2533,13 +2142,10 @@ 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 @@ -2550,41 +2156,7 @@ 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 @@ -2618,7 +2190,10 @@ CONFIG_BCMA_POSSIBLE=y # 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 @@ -2631,7 +2206,6 @@ CONFIG_MFD_SM501_GPIO=y 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 @@ -2668,15 +2242,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_ENE=m +# CONFIG_RC_ATI_REMOTE is not set 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 @@ -2717,7 +2287,6 @@ 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 @@ -2812,7 +2381,6 @@ 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 @@ -2829,17 +2397,13 @@ CONFIG_VIDEO_CX88_MPEG=m 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_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 @@ -2899,6 +2463,7 @@ CONFIG_USB_GSPCA_STK014=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 @@ -2918,6 +2483,7 @@ CONFIG_VIDEO_CX231XX=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 @@ -2988,6 +2554,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_PCTV452E is not set CONFIG_DVB_USB_DW2102=m CONFIG_DVB_USB_CINERGY_T2=m CONFIG_DVB_USB_ANYSEE=m @@ -2999,6 +2566,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_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 @@ -3109,6 +2678,7 @@ CONFIG_DVB_CX24116=m CONFIG_DVB_SI21XX=m CONFIG_DVB_DS3000=m CONFIG_DVB_MB86A16=m +CONFIG_DVB_TDA10071=m # # DVB-T (terrestrial) frontends @@ -3174,14 +2744,17 @@ CONFIG_DVB_TUNER_DIB0090=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_A8293=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 @@ -3191,50 +2764,24 @@ CONFIG_DVB_IX2505V=m # # 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_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_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 @@ -3249,15 +2796,9 @@ CONFIG_FB_TILEBLITTING=y 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 @@ -3267,20 +2808,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_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 @@ -3290,13 +2823,7 @@ 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 @@ -3308,12 +2835,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_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_SMSCUFX is not set CONFIG_FB_UDL=m CONFIG_FB_VIRTUAL=m CONFIG_FB_METRONOME=m @@ -3326,9 +2850,6 @@ 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 @@ -3344,9 +2865,6 @@ CONFIG_DISPLAY_SUPPORT=m # # 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 @@ -3384,7 +2902,6 @@ 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 @@ -3395,7 +2912,6 @@ 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 @@ -3406,15 +2922,10 @@ 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 @@ -3431,7 +2942,6 @@ 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 @@ -3498,7 +3008,6 @@ 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 @@ -3509,16 +3018,13 @@ 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 @@ -3557,10 +3063,11 @@ CONFIG_HID_TWINHAN=m 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_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 @@ -3574,6 +3081,7 @@ CONFIG_HID_PICOLCD_FB=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 @@ -3595,9 +3103,11 @@ CONFIG_HID_TOPSEED=m # 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_XHCI=y CONFIG_USB=y # CONFIG_USB_DEBUG is not set CONFIG_USB_ANNOUNCE_NEW_DEVICES=y @@ -3610,6 +3120,7 @@ CONFIG_USB_DEVICEFS=y # 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 @@ -3800,7 +3311,6 @@ 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 @@ -3828,18 +3338,14 @@ 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 # @@ -3856,31 +3362,10 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m # # 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 @@ -3950,10 +3435,7 @@ CONFIG_DMADEVICES=y # # 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 # @@ -3962,7 +3444,6 @@ CONFIG_DMA_ENGINE=y 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 @@ -3980,22 +3461,17 @@ CONFIG_VIRTIO_RING=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_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 @@ -4003,30 +3479,19 @@ CONFIG_ET131X=m # 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_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 @@ -4034,14 +3499,8 @@ CONFIG_HYPERV_MOUSE=m # 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 @@ -4052,79 +3511,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_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_DMAR=y -CONFIG_DMAR_DEFAULT_ON=y -CONFIG_DMAR_FLOPPY_WA=y CONFIG_VIRT_DRIVERS=y +# CONFIG_PM_DEVFREQ 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 is not set -# CONFIG_SIGMA is not set -# CONFIG_GOOGLE_FIRMWARE is not set # # File systems @@ -4218,8 +3616,6 @@ 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 @@ -4243,6 +3639,7 @@ CONFIG_PSTORE=y # 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 @@ -4368,7 +3765,6 @@ CONFIG_HEADERS_CHECK=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 @@ -4394,11 +3790,9 @@ CONFIG_TIMER_STATS=y 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 @@ -4406,34 +3800,24 @@ CONFIG_DEBUG_LIST=y # 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 @@ -4444,7 +3828,6 @@ 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 @@ -4454,9 +3837,7 @@ 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 @@ -4466,31 +3847,8 @@ 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 @@ -4506,11 +3864,9 @@ CONFIG_GRKERNSEC_HIGH=y # CONFIG_GRKERNSEC_CUSTOM is not set # -# Address Space Protection +# Memory Protections # 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 @@ -4574,6 +3930,8 @@ CONFIG_GRKERNSEC_AUDIT_TEXTREL=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 # @@ -4598,7 +3956,6 @@ CONFIG_GRKERNSEC_FLOODBURST=6 # # PaX # -CONFIG_ARCH_TRACK_EXEC_LIMIT=y CONFIG_PAX=y # @@ -4616,31 +3973,24 @@ CONFIG_PAX_HAVE_ACL_FLAGS=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_KERNEXEC=y -CONFIG_PAX_KERNEXEC_MODULE_TEXT=4 +CONFIG_PAX_KERNEXEC_PLUGIN_METHOD="" # # 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_ENCRYPTED_KEYS is not set CONFIG_KEYS_DEBUG_PROC_KEYS=y CONFIG_SECURITY_DMESG_RESTRICT=y CONFIG_SECURITY=y @@ -4648,8 +3998,6 @@ 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 @@ -4661,6 +4009,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_EVM is not set CONFIG_DEFAULT_SECURITY_SELINUX=y # CONFIG_DEFAULT_SECURITY_DAC is not set CONFIG_DEFAULT_SECURITY="selinux" @@ -4670,8 +4019,6 @@ 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 # @@ -4692,10 +4039,10 @@ CONFIG_CRYPTO_PCOMP=m 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_PCRYPT=m CONFIG_CRYPTO_WORKQUEUE=y CONFIG_CRYPTO_CRYPTD=y CONFIG_CRYPTO_AUTHENC=m @@ -4730,7 +4077,6 @@ 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 @@ -4749,11 +4095,10 @@ 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_BLOWFISH_COMMON=m CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAST5=m CONFIG_CRYPTO_CAST6=m @@ -4761,13 +4106,11 @@ 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 @@ -4784,25 +4127,6 @@ 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 # @@ -4810,7 +4134,6 @@ CONFIG_BINARY_PRINTF=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 @@ -4819,7 +4142,6 @@ 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 @@ -4838,7 +4160,6 @@ 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 @@ -4847,8 +4168,6 @@ 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-i686-default b/kernel/config-i686-default new file mode 100644 index 000000000..27a95dcce --- /dev/null +++ b/kernel/config-i686-default @@ -0,0 +1,302 @@ + +# +# Linux/x86 3.2.7 Kernel Configuration +# +# 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 index 000000000..6f03829f2 --- /dev/null +++ b/kernel/config-i686-legacy @@ -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 index 000000000..d17f88daa --- /dev/null +++ b/kernel/config-x86-generic @@ -0,0 +1,837 @@ + +# +# Linux/x86 3.2.7 Kernel Configuration +# +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 index 000000000..f41d5624d --- /dev/null +++ b/kernel/config-x86_64-default @@ -0,0 +1,175 @@ + +# +# Linux/x86 3.2.7 Kernel Configuration +# +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 index bee5a61aa..000000000 --- a/kernel/config.armv5tel-versatile +++ /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 index 6344c968f..000000000 --- a/kernel/config.i686 +++ /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 index 5114d2794..000000000 --- a/kernel/config.x86_64 +++ /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 diff --git a/kernel/kernel.nm b/kernel/kernel.nm index e266e41d5..ba8e2386b 100644 --- a/kernel/kernel.nm +++ b/kernel/kernel.nm @@ -4,8 +4,8 @@ ############################################################################### name = kernel -version = 3.1.5 -release = 4 +version = 3.2.9 +release = 1 thisapp = linux-%{version} maintainer = Michael Tremer @@ -15,9 +15,9 @@ license = GPLv2 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 @@ -40,13 +40,14 @@ build elfutils-devel gcc-plugin-devel gettext - module-init-tools ncurses-devel net-tools perl python-devel xmlto xz-lzma-compat + + /sbin/depmod end tools_cpupower_requires @@ -84,6 +85,9 @@ build # Build versatile kernel. 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 @@ -92,7 +96,8 @@ build end if "%{DISTRO_ARCH}" == "armv7hl" - # Currently build no kernel images. + # Build a kernel for TI OMAP SoCs. + build_kernel_omap = 1 kernel_arch = arm @@ -115,6 +120,16 @@ build 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} @@ -138,6 +153,8 @@ build touch .scmversion mkdir -pv configs + + cd %{DIR_SOURCE} configure_kernel() { local flavour=${1} local suffix @@ -145,13 +162,8 @@ build 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 @@ -317,9 +329,7 @@ packages summary = The Linux kernel %{kernel_release}. prerequires - dracut - grubby - module-init-tools + /sbin/depmod end provides @@ -327,7 +337,8 @@ packages end requires - %{prerequires} + dracut + grubby linux-firmware end @@ -428,13 +439,45 @@ packages end package kernel-versatile-devel - kernel KERNELDEVEL + template KERNELDEVEL 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} diff --git a/kernel/patches/grsecurity-2.2.2-3.1.5-201112101853.patch b/kernel/patches/grsecurity-2.9-3.2.9-201203062051.patch similarity index 89% rename from kernel/patches/grsecurity-2.2.2-3.1.5-201112101853.patch rename to kernel/patches/grsecurity-2.9-3.2.9-201203062051.patch index 67dea054b..7a64df3be 100644 --- a/kernel/patches/grsecurity-2.2.2-3.1.5-201112101853.patch +++ b/kernel/patches/grsecurity-2.9-3.2.9-201203062051.patch @@ -168,10 +168,10 @@ index dfa6fc6..0095943 100644 +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 -@@ -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. @@ -186,7 +186,7 @@ index d6e6724..a024ce8 100644 pcd. [PARIDE] diff --git a/Makefile b/Makefile -index 94ab2ad..1e4a6e8 100644 +index 5f1739b..1831396 100644 --- a/Makefile +++ b/Makefile @@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ @@ -212,36 +212,42 @@ index 94ab2ad..1e4a6e8 100644 $(Q)$(MAKE) $(build)=scripts/basic $(Q)rm -f .tmp_quiet_recordmcount -@@ -564,6 +565,42 @@ else +@@ -564,6 +565,48 @@ 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 -+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 -+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 -+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 -+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) -+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 -+GCC_PLUGINS := $(CONSTIFY_PLUGIN) $(STACKLEAK_PLUGIN) $(KALLOCSTAT_PLUGIN) $(KERNEXEC_PLUGIN) $(CHECKER_PLUGIN) ++GCC_PLUGINS_CFLAGS := $(CONSTIFY_PLUGIN_CFLAGS) $(STACKLEAK_PLUGIN_CFLAGS) $(KALLOCSTAT_PLUGIN_CFLAGS) $(KERNEXEC_PLUGIN_CFLAGS) $(CHECKER_PLUGIN_CFLAGS) ++GCC_PLUGINS_AFLAGS := $(KERNEXEC_PLUGIN_AFLAGS) +export CONSTIFY_PLUGIN STACKLEAK_PLUGIN KERNEXEC_PLUGIN CHECKER_PLUGIN ++ifeq ($(KBUILD_EXTMOD),) +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--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 +261,7 @@ index 94ab2ad..1e4a6e8 100644 include $(srctree)/arch/$(SRCARCH)/Makefile ifneq ($(CONFIG_FRAME_WARN),0) -@@ -708,7 +745,7 @@ export mod_strip_cmd +@@ -708,7 +751,7 @@ export mod_strip_cmd ifeq ($(KBUILD_EXTMOD),) @@ -264,15 +270,16 @@ index 94ab2ad..1e4a6e8 100644 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 +975,8 @@ vmlinux.o: $(modpost-init) $(vmlinux-main) FORCE # 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) -@@ -941,7 +979,7 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ; +@@ -941,7 +986,7 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ; # Error messages still appears in the original language PHONY += $(vmlinux-dirs) @@ -281,23 +288,24 @@ index 94ab2ad..1e4a6e8 100644 $(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 +1030,7 @@ prepare0: archprepare FORCE + $(Q)$(MAKE) $(build)=. # 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 -@@ -1087,6 +1126,7 @@ all: modules +@@ -1086,6 +1132,8 @@ all: 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.'; -@@ -1102,7 +1142,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin) +@@ -1101,7 +1149,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin) # Target to prepare building external modules PHONY += modules_prepare @@ -306,35 +314,37 @@ index 94ab2ad..1e4a6e8 100644 # Target to install modules PHONY += modules_install -@@ -1198,7 +1238,7 @@ distclean: mrproper - @find $(srctree) $(RCS_FIND_IGNORE) \ +@@ -1198,6 +1246,7 @@ distclean: mrproper \( -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 -@@ -1360,6 +1400,7 @@ PHONY += $(module-dirs) modules +@@ -1358,6 +1407,8 @@ PHONY += $(module-dirs) modules $(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 -@@ -1486,17 +1527,19 @@ else +@@ -1484,17 +1535,21 @@ else 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 -+%.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 @@ -347,22 +357,45 @@ 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 $@) -@@ -1506,11 +1549,13 @@ endif +@@ -1504,11 +1559,15 @@ endif $(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 -+%.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) +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/elf.h b/arch/alpha/include/asm/elf.h index da5449e..7418343 100644 --- a/arch/alpha/include/asm/elf.h @@ -612,10 +645,21 @@ 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 -index 86976d0..8a57797 100644 +index 86976d0..6610950 100644 --- 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 + #include + ++#ifdef CONFIG_GENERIC_ATOMIC64 ++#include ++#endif ++ + #define ATOMIC_INIT(i) { (i) } + + #ifdef __KERNEL__ +@@ -239,6 +243,14 @@ typedef struct { u64 __aligned(8) counter; } atomic64_t; @@ -630,6 +674,23 @@ index 86976d0..8a57797 100644 #define ATOMIC64_INIT(i) { (i) } static inline u64 atomic64_read(atomic64_t *v) +@@ -459,6 +471,16 @@ static inline int atomic64_add_unless(atomic64_t *v, u64 a, u64 u) + #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0) + #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1LL, 0LL) + ++#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_GENERIC_ATOMIC64 */ + #endif + #endif 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 @@ -733,10 +794,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 -index aeef960..2966009 100644 +index 5b0bce6..becd81c 100644 --- 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); @@ -748,7 +809,7 @@ index aeef960..2966009 100644 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..3dcae52 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -28,7 +28,6 @@ @@ -773,19 +834,19 @@ index c9d11ea..5078081 100644 /* * The vectors page is always readable from user space for the 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 -@@ -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. */ -@@ -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"); @@ -907,10 +968,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 -index 8b9b136..70d5100 100644 +index 025f742..8432b08 100644 --- 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 @@ -933,10 +994,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 -index 3b5ea68..42fc9af 100644 +index aa33949..b242a2f 100644 --- 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 @@ -950,7 +1011,7 @@ index 3b5ea68..42fc9af 100644 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 */ @@ -985,10 +1046,10 @@ index 3b5ea68..42fc9af 100644 * First Level Translation Fault Handler * 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 -@@ -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; @@ -999,7 +1060,7 @@ index 74be05f..f605b8c 100644 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); @@ -1019,7 +1080,7 @@ index 74be05f..f605b8c 100644 } /* 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. */ @@ -1116,6 +1177,27 @@ index f7040a1..db9f300 100644 if (exception_trace && printk_ratelimit()) printk("%s%s[%d]: segfault at %08lx pc %08lx " "sp %08lx ecr %lu\n", +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/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 +1242,27 @@ index 385fd30..6c3d97e 100644 goto success; addr = vma->vm_end; } +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/elf.h b/arch/ia64/include/asm/elf.h index b5298eb..67c6e62 100644 --- a/arch/ia64/include/asm/elf.h @@ -1499,6 +1602,38 @@ index 82abd15..d95ae5d 100644 prefetchw(to); if (access_ok(VERIFY_READ, from, n)) __copy_user_zeroing(to,from,n); +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 + #include + ++#ifdef CONFIG_GENERIC_ATOMIC64 ++#include ++#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/elf.h b/arch/mips/include/asm/elf.h index 455c0ac..ad65fbe 100644 --- a/arch/mips/include/asm/elf.h @@ -1586,7 +1721,7 @@ index ff44823..97f8906 100644 /* 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) @@ -1717,6 +1852,27 @@ index 302d779..7d35bf8 100644 - - return ret; -} +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/elf.h b/arch/parisc/include/asm/elf.h index 19f6cb1..6c78cf2 100644 --- a/arch/parisc/include/asm/elf.h @@ -2079,6 +2235,27 @@ index 18162ce..94de376 100644 /* * 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/elf.h b/arch/powerpc/include/asm/elf.h index 3bf9cca..e7457d0 100644 --- a/arch/powerpc/include/asm/elf.h @@ -2141,10 +2318,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 -index 2cd664e..1d2e8a7 100644 +index dd9c4fd..a2ced87 100644 --- 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. */ @@ -2156,21 +2333,21 @@ index 2cd664e..1d2e8a7 100644 #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) + - #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 -index 9356262..ea96148 100644 +index fb40ede..d3ce956 100644 --- 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. */ @@ -2444,10 +2621,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 -index 41b02c7..05e76fb 100644 +index cf9c69b..ebc9640 100644 --- 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 @@ -2493,10 +2670,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 -index 8f53954..a704ad6 100644 +index 6457574..08b28d3 100644 --- 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 */ @@ -2507,7 +2684,7 @@ index 8f53954..a704ad6 100644 #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) { @@ -2520,7 +2697,7 @@ index 8f53954..a704ad6 100644 (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; @@ -2529,7 +2706,7 @@ index 8f53954..a704ad6 100644 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 */ @@ -2589,7 +2766,7 @@ index 8f53954..a704ad6 100644 - 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, @@ -2602,10 +2779,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 -index e91c736..742ec06 100644 +index a50b5ec..547078a 100644 --- 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. */ @@ -2615,7 +2792,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 -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) @@ -2637,10 +2814,10 @@ index f19d977..8ac286e 100644 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 -@@ -36,6 +36,7 @@ +@@ -35,6 +35,7 @@ #include #include #include @@ -2648,7 +2825,7 @@ index 142ab10..236e61a 100644 #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 @@ -2657,7 +2834,7 @@ index 142ab10..236e61a 100644 /* 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), @@ -2837,7 +3014,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 -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, @@ -2906,8 +3083,29 @@ index ba51948..23009d9 100644 /* 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/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; @@ -2921,8 +3119,8 @@ index 547f1a6..3fff354 100644 +#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 @@ -2936,10 +3134,10 @@ index 547f1a6..3fff354 100644 - #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 -@@ -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); @@ -3060,10 +3258,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 -index 541a750..8739853 100644 +index 9451b21..ed8956f 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c -@@ -319,39 +319,3 @@ unsigned long get_wchan(struct task_struct *p) +@@ -321,39 +321,3 @@ unsigned long get_wchan(struct task_struct *p) } return 0; } @@ -3103,24 +3301,11 @@ index 541a750..8739853 100644 - 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 -index c9a9f7f..60d0315 100644 +index f09c748..cf9ec1d 100644 --- 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; @@ -3143,7 +3328,7 @@ index c9a9f7f..60d0315 100644 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; @@ -3270,6 +3455,18 @@ index afeb710..d1d1289 100644 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 index ad1fb5d..fc5315b 100644 --- a/arch/sparc/Makefile @@ -3283,6 +3480,17 @@ index ad1fb5d..fc5315b 100644 VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y) VMLINUX_MAIN += $(drivers-y) $(net-y) +diff --git a/arch/sparc/include/asm/atomic.h b/arch/sparc/include/asm/atomic.h +index 8ff83d8..4a459c2 100644 +--- a/arch/sparc/include/asm/atomic.h ++++ b/arch/sparc/include/asm/atomic.h +@@ -4,5 +4,6 @@ + #include + #else + #include ++#include + #endif + #endif 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 @@ -3522,8 +3730,21 @@ index 7df8b7f..4946269 100644 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 ++ + #define PAGE_SHIFT 12 + + #ifndef __ASSEMBLY__ 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) @@ -3874,7 +4095,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 -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) @@ -3935,7 +4156,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 -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 @@ -4086,10 +4307,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 -index c0490c7..84959d1 100644 +index 591f20c..0f1b925 100644 --- 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") @@ -4098,7 +4319,7 @@ index c0490c7..84959d1 100644 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)) { @@ -4547,7 +4768,7 @@ index 1b30bb3..b4a16c7 100644 /* 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 @@ @@ -4560,12 +4781,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 -index aa1c1b1..f93e28f 100644 +index 8023fd7..c8e89e9 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c -@@ -22,6 +22,9 @@ +@@ -21,6 +21,9 @@ + #include #include - #include #include +#include +#include @@ -4573,7 +4794,7 @@ index aa1c1b1..f93e28f 100644 #include #include -@@ -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); } @@ -4842,7 +5063,7 @@ index aa1c1b1..f93e28f 100644 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 { @@ -5379,10 +5600,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 -index f4e9764..5682724 100644 +index 07e1453..0a7d9e9 100644 --- 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; } @@ -5391,7 +5612,7 @@ index f4e9764..5682724 100644 /* * 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); @@ -5400,7 +5621,7 @@ index f4e9764..5682724 100644 /* 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; @@ -5420,7 +5641,7 @@ index f4e9764..5682724 100644 /* 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 */ @@ -5431,7 +5652,7 @@ index f4e9764..5682724 100644 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); @@ -5497,21 +5718,42 @@ index cbef74e..c38fead 100644 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/um/Makefile b/arch/um/Makefile -index c0f712c..3a5c4c9 100644 +index 7730af6..cce5b19 100644 --- 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) \ - $(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 + - include $(srctree)/$(ARCH_DIR)/Makefile-$(SUBARCH) - #This will adjust *FLAGS accordingly to the platform. + include $(srctree)/$(ARCH_DIR)/Makefile-os-$(OS) + 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 +5767,7 @@ index 6c03acd..a5e0215 100644 }; 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 @@ @@ -5539,10 +5781,10 @@ index 4cc9b6c..02e5029 100644 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 -@@ -404,22 +404,6 @@ int singlestepping(void * t) +@@ -406,22 +406,6 @@ int singlestepping(void * t) return 2; } @@ -5565,63 +5807,11 @@ index 21c1ae7..4640aaa 100644 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; -+} -+ - /* - * 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); - 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 -@@ -236,7 +236,7 @@ config X86_HT +@@ -235,7 +235,7 @@ config X86_HT config X86_32_LAZY_GS def_bool y @@ -5630,7 +5820,7 @@ index 6a47bb2..dc9a868 100644 config ARCH_HWEIGHT_CFLAGS string -@@ -1019,7 +1019,7 @@ choice +@@ -1022,7 +1022,7 @@ choice config NOHIGHMEM bool "off" @@ -5639,7 +5829,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 -@@ -1056,7 +1056,7 @@ config NOHIGHMEM +@@ -1059,7 +1059,7 @@ config NOHIGHMEM config HIGHMEM4G bool "4GB" @@ -5648,7 +5838,7 @@ index 6a47bb2..dc9a868 100644 ---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 @@ -5657,7 +5847,7 @@ index 6a47bb2..dc9a868 100644 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)" @@ -5665,7 +5855,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 -@@ -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" @@ -5673,7 +5863,7 @@ index 6a47bb2..dc9a868 100644 ---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" @@ -5681,7 +5871,7 @@ index 6a47bb2..dc9a868 100644 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 @@ -5725,7 +5915,7 @@ index e3ca7e0..b30b28a 100644 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 @@ -6215,7 +6405,7 @@ index 4d3ff03..e4972ff 100644 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 @@ -6477,6 +6667,62 @@ index be6d9e3..21fbbca 100644 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 ++ + .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 @@ -6509,8 +6755,65 @@ index 6214a9b..1f4fc9a 100644 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 ++ + #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 ++ + .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 -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 @@ @@ -6521,7 +6824,7 @@ index 573aa10..b73ad89 100644 #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 @@ -6529,14 +6832,14 @@ index 573aa10..b73ad89 100644 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 -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, @@ -6548,6 +6851,34 @@ index fd84387..0b4af7d 100644 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 @@ -6629,7 +6960,7 @@ index 6557769..ef6ae89 100644 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 @@ @@ -6642,7 +6973,7 @@ index 54edb207..9335b5f 100644 /* Avoid __ASSEMBLER__'ifying just for this. */ #include -@@ -95,6 +97,30 @@ ENTRY(native_irq_enable_sysexit) +@@ -95,6 +97,32 @@ ENTRY(native_irq_enable_sysexit) ENDPROC(native_irq_enable_sysexit) #endif @@ -6659,7 +6990,9 @@ index 54edb207..9335b5f 100644 +#endif +#ifdef CONFIG_PAX_RANDKSTACK + pushq %rax ++ pushq %r11 + call pax_randomize_kstack ++ popq %r11 + popq %rax +#endif + .endm @@ -6673,7 +7006,7 @@ index 54edb207..9335b5f 100644 /* * 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 @@ -6686,12 +7019,13 @@ index 54edb207..9335b5f 100644 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 ++ orl $X86_EFLAGS_IF,(%rsp) + GET_THREAD_INFO(%r11) + movl TI_sysenter_return(%r11), %r11d + CFI_REGISTER rip,r11 @@ -6731,7 +7065,7 @@ index 54edb207..9335b5f 100644 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) @@ -6750,7 +7084,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 */ -@@ -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 @@ -6760,7 +7094,7 @@ index 54edb207..9335b5f 100644 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 @@ -6769,7 +7103,7 @@ index 54edb207..9335b5f 100644 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 @@ -6784,7 +7118,7 @@ index 54edb207..9335b5f 100644 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 @@ -6793,7 +7127,7 @@ index 54edb207..9335b5f 100644 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 @@ -6803,7 +7137,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 -@@ -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 @@ -6826,7 +7160,7 @@ index 54edb207..9335b5f 100644 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 */ @@ -6849,7 +7183,7 @@ index 54edb207..9335b5f 100644 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) @@ -6868,7 +7202,7 @@ index 54edb207..9335b5f 100644 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 @@ -6877,7 +7211,7 @@ index 54edb207..9335b5f 100644 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 @@ -6887,7 +7221,7 @@ index 54edb207..9335b5f 100644 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 @@ -6917,7 +7251,7 @@ index 54edb207..9335b5f 100644 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 @@ -6927,7 +7261,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 -@@ -455,6 +512,7 @@ ia32_badsys: +@@ -455,6 +515,7 @@ ia32_badsys: quiet_ni_syscall: movq $-ENOSYS,%rax @@ -7007,14 +7341,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 -index 091508b..0ee32ec 100644 +index 091508b..7692c6f 100644 --- 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 -+#ifdef CONFIG_PAX_KERNEXEC_PLUGIN ++#ifdef KERNEXEC_PLUGIN + .macro pax_force_retaddr_bts rip=0 + btsq $63,\rip(%rsp) + .endm @@ -7070,7 +7417,7 @@ index 37ad100..7d47faa 100644 ".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) @@ -7105,7 +7452,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 -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 @@ @@ -7358,54 +7705,51 @@ index 10572e3..2618d91 100644 : "+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 */ - __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 -+ * @v: pointer of type atomic_unchecked_t + * @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) +{ -+ int __i; +#ifdef CONFIG_M386 ++ int __i; + 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)) @@ -7416,7 +7760,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) -@@ -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); } @@ -7438,7 +7782,7 @@ index 10572e3..2618d91 100644 /** * __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) { @@ -7467,7 +7811,7 @@ index 10572e3..2618d91 100644 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; } @@ -7670,7 +8014,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 -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 @@ @@ -7903,23 +8247,11 @@ index 017594d..d3fcf72 100644 : "=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) { - 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 +8263,10 @@ index 017594d..d3fcf72 100644 + */ +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))) @@ -7947,7 +8277,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) -@@ -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); } @@ -7959,7 +8289,7 @@ index 017594d..d3fcf72 100644 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) { @@ -8098,11 +8428,66 @@ index 46fc474..b02b0f9 100644 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 -index 88b23a4..d2e5f9f 100644 +index f3444f7..051a196 100644 --- 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" @@ -8324,10 +8709,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 -index f2ad216..eb24c96 100644 +index 5f962df..7289f09 100644 --- 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. */ @@ -8353,7 +8738,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, -@@ -290,9 +308,7 @@ do { \ +@@ -291,9 +309,7 @@ do { \ #define ARCH_DLINFO \ do { \ @@ -8364,7 +8749,7 @@ index f2ad216..eb24c96 100644 } while (0) #define AT_SYSINFO 32 -@@ -303,7 +319,7 @@ do { \ +@@ -304,7 +320,7 @@ do { \ #endif /* !CONFIG_X86_32 */ @@ -8373,14 +8758,16 @@ index f2ad216..eb24c96 100644 #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 - - #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 @@ -8456,7 +8843,7 @@ index d09bb03..4ea4194 100644 : "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); @@ -8471,7 +8858,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 -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) @@ -8498,31 +8885,15 @@ index c9e09ea..73888df 100644 /* * 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 @@ -8582,10 +8953,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 -index dd51c83..66cbfac 100644 +index b4973f4..7c4d3fc 100644 --- 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; @@ -8594,10 +8965,10 @@ index dd51c83..66cbfac 100644 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); - - const struct trace_print_flags *exit_reasons_str; -}; +} __do_const; @@ -9626,10 +9997,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 -index 0d1171c..36571a9 100644 +index bb3ee36..781a6b8 100644 --- 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; @@ -9638,7 +10009,7 @@ index 0d1171c..36571a9 100644 /* * 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 @@ -9659,7 +10030,7 @@ index 0d1171c..36571a9 100644 .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 = { \ @@ -9668,7 +10039,7 @@ index 0d1171c..36571a9 100644 .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)) @@ -9681,7 +10052,7 @@ index 0d1171c..36571a9 100644 /* * 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__; \ @@ -9690,7 +10061,7 @@ index 0d1171c..36571a9 100644 __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. */ @@ -9706,7 +10077,7 @@ index 0d1171c..36571a9 100644 #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 { \ @@ -9720,7 +10091,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)) @@ -9791,7 +10162,7 @@ index 3566454..4bdfb8c 100644 } #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 @@ @@ -9821,7 +10192,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 -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) @@ -9931,23 +10302,15 @@ index df4cd32..27ae072 100644 : "+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 @@ -10058,10 +10421,10 @@ index 73b11bc..d4a3b63 100644 #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 -@@ -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" @@ -10076,7 +10439,7 @@ index ee67edf..49c796b 100644 "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" @@ -10091,7 +10454,7 @@ index ee67edf..49c796b 100644 "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) { @@ -10212,7 +10575,7 @@ index cb23852..2dde194 100644 asmlinkage long sys32_sched_rr_get_interval(compat_pid_t, 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 { \ @@ -10242,7 +10605,7 @@ index c2ff2a1..4349184 100644 } 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); @@ -10251,6 +10614,7 @@ index c2ff2a1..4349184 100644 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; @@ -10258,7 +10622,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 -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 @@ @@ -10402,7 +10766,7 @@ index a1fe5c1..ee326d8 100644 #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 @@ -10643,22 +11007,20 @@ 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 -index 566e803..89f1e60 100644 +index 566e803..b9521e9 100644 --- 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 +@@ -43,6 +43,9 @@ unsigned long __must_check __copy_from_user_ll_nocache_nozero static __always_inline unsigned long __must_check __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n) { -+ pax_track_stack(); -+ + if ((long)n < 0) + return n; + if (__builtin_constant_p(n)) { unsigned long ret; -@@ -61,6 +66,8 @@ __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n) +@@ -61,6 +64,8 @@ __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n) return ret; } } @@ -10667,7 +11029,7 @@ index 566e803..89f1e60 100644 return __copy_to_user_ll(to, from, n); } -@@ -82,12 +89,16 @@ static __always_inline unsigned long __must_check +@@ -82,12 +87,16 @@ static __always_inline unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n) { might_fault(); @@ -10684,20 +11046,18 @@ 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 -@@ -137,6 +148,12 @@ static __always_inline unsigned long +@@ -137,6 +146,10 @@ static __always_inline unsigned long __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; -@@ -152,6 +169,8 @@ __copy_from_user(void *to, const void __user *from, unsigned long n) +@@ -152,6 +165,8 @@ __copy_from_user(void *to, const void __user *from, unsigned long n) return ret; } } @@ -10706,7 +11066,7 @@ index 566e803..89f1e60 100644 return __copy_from_user_ll(to, from, n); } -@@ -159,6 +178,10 @@ static __always_inline unsigned long __copy_from_user_nocache(void *to, +@@ -159,6 +174,10 @@ static __always_inline unsigned long __copy_from_user_nocache(void *to, const void __user *from, unsigned long n) { might_fault(); @@ -10717,7 +11077,7 @@ index 566e803..89f1e60 100644 if (__builtin_constant_p(n)) { unsigned long ret; -@@ -181,15 +204,19 @@ static __always_inline unsigned long +@@ -181,15 +200,19 @@ static __always_inline unsigned long __copy_from_user_inatomic_nocache(void *to, const void __user *from, unsigned long n) { @@ -10744,7 +11104,7 @@ index 566e803..89f1e60 100644 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 +222,61 @@ extern void copy_from_user_overflow(void) #endif ; @@ -10814,7 +11174,7 @@ index 566e803..89f1e60 100644 } diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h -index 1c66d30..59bd7d4 100644 +index 1c66d30..e66922c 100644 --- a/arch/x86/include/asm/uaccess_64.h +++ b/arch/x86/include/asm/uaccess_64.h @@ -10,6 +10,9 @@ @@ -10843,7 +11203,12 @@ index 1c66d30..59bd7d4 100644 { unsigned ret; -@@ -36,138 +39,226 @@ copy_user_generic(void *to, const void *from, unsigned len) +@@ -32,142 +35,226 @@ 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; } @@ -10861,8 +11226,7 @@ index 1c66d30..59bd7d4 100644 static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, -- unsigned long n) -+ unsigned n) + unsigned long n) { - int sz = __compiletime_object_size(to); - @@ -10908,8 +11272,6 @@ index 1c66d30..59bd7d4 100644 - if (!__builtin_constant_p(size)) - return copy_user_generic(dst, (__force void *)src, size); + -+ pax_track_stack(); -+ + if (size > INT_MAX) + return size; + @@ -10998,8 +11360,6 @@ index 1c66d30..59bd7d4 100644 - if (!__builtin_constant_p(size)) - return copy_user_generic((__force void *)dst, src, size); + -+ pax_track_stack(); -+ + if (size > INT_MAX) + return size; + @@ -11118,7 +11478,7 @@ index 1c66d30..59bd7d4 100644 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 +263,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) } case 2: { u16 tmp; @@ -11127,7 +11487,7 @@ index 1c66d30..59bd7d4 100644 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 +273,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) case 4: { u32 tmp; @@ -11136,7 +11496,7 @@ index 1c66d30..59bd7d4 100644 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 +282,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) } case 8: { u64 tmp; @@ -11145,7 +11505,7 @@ index 1c66d30..59bd7d4 100644 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 +290,16 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size) return ret; } default: @@ -11164,7 +11524,7 @@ index 1c66d30..59bd7d4 100644 } } -@@ -219,35 +318,74 @@ __must_check unsigned long clear_user(void __user *mem, unsigned long len); +@@ -219,35 +314,72 @@ __must_check unsigned long clear_user(void __user *mem, unsigned long len); __must_check unsigned long __clear_user(void __user *mem, unsigned long len); static __must_check __always_inline int @@ -11172,8 +11532,6 @@ index 1c66d30..59bd7d4 100644 +__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; + @@ -11267,7 +11625,7 @@ index bb05228..d763d5b 100644 #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 { @@ -11369,16 +11727,16 @@ index d3d8590..d296b5f 100644 /** * 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); + unsigned char (*get_nmi_reason)(void); 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); @@ -11494,7 +11852,7 @@ index 13ab720..95d5442 100644 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, @@ -11631,7 +11989,7 @@ index c638228..16dfa8d 100644 } 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; @@ -11643,7 +12001,7 @@ index 52fa563..5de9d9c 100644 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(); @@ -11652,20 +12010,11 @@ index 52fa563..5de9d9c 100644 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 -index 8eb863e..32e6934 100644 +index 6d939d7..0697fcc 100644 --- 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); @@ -11674,7 +12023,7 @@ index 8eb863e..32e6934 100644 { /* 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); } @@ -11683,16 +12032,16 @@ index 8eb863e..32e6934 100644 { 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; - /* - * 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)))) { @@ -11702,10 +12051,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 -index 0371c48..54cdf63 100644 +index a46bd38..6b906d7 100644 --- 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. */ @@ -11714,7 +12063,7 @@ index 0371c48..54cdf63 100644 (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]; @@ -11725,7 +12074,7 @@ index 0371c48..54cdf63 100644 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); @@ -11737,7 +12086,7 @@ index 0371c48..54cdf63 100644 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]; @@ -11748,7 +12097,7 @@ index 0371c48..54cdf63 100644 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); @@ -11760,7 +12109,7 @@ index 0371c48..54cdf63 100644 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); @@ -11829,7 +12178,7 @@ index e72a119..6e2955d 100644 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 @@ -11844,10 +12193,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 -index b13ed39..603286c 100644 +index 0bab2b1..d0a1bf8 100644 --- 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) */ @@ -11857,10 +12206,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 -index 6218439..0f1addc 100644 +index aa003b1..47ea638 100644 --- 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; @@ -11921,7 +12270,7 @@ index 6218439..0f1addc 100644 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; @@ -11930,18 +12279,18 @@ index 6218439..0f1addc 100644 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); -+#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; -@@ -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); @@ -11951,7 +12300,7 @@ index 6218439..0f1addc 100644 #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) = @@ -11960,7 +12309,7 @@ index 6218439..0f1addc 100644 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; @@ -11969,7 +12318,7 @@ index 6218439..0f1addc 100644 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(); @@ -11978,7 +12327,7 @@ index 6218439..0f1addc 100644 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); @@ -11987,7 +12336,7 @@ index 6218439..0f1addc 100644 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(); @@ -11995,7 +12344,7 @@ index 6218439..0f1addc 100644 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; @@ -12005,10 +12354,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 -index ed6086e..a1dcf29 100644 +index 5231312..a78a987 100644 --- 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. */ @@ -12017,23 +12366,8 @@ index ed6086e..a1dcf29 100644 load_idt(&idt_descr); } #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 ---- 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; - } 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 @@ @@ -12044,7 +12378,7 @@ index 08363b0..ee26113 100644 #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); @@ -12053,7 +12387,7 @@ index 08363b0..ee26113 100644 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 */ @@ -12066,7 +12400,7 @@ index 08363b0..ee26113 100644 /* 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 */ @@ -12075,7 +12409,7 @@ index 08363b0..ee26113 100644 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 */ @@ -12093,7 +12427,7 @@ index 08363b0..ee26113 100644 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. */ @@ -12102,7 +12436,7 @@ index 08363b0..ee26113 100644 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; } @@ -12112,7 +12446,7 @@ index 08363b0..ee26113 100644 __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); @@ -12121,7 +12455,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) -@@ -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 || @@ -12130,7 +12464,7 @@ index 08363b0..ee26113 100644 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; @@ -12139,7 +12473,7 @@ index 08363b0..ee26113 100644 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); @@ -12148,7 +12482,7 @@ index 08363b0..ee26113 100644 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; @@ -12158,10 +12492,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 -index 5c0e653..1e82c7c 100644 +index 5c0e653..0882b0a 100644 --- 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 + #include + #include ++#include + + /* 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; @@ -12172,10 +12514,18 @@ index 5c0e653..1e82c7c 100644 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 -@@ -24,7 +24,9 @@ void winchip_mcheck_init(struct cpuinfo_x86 *c) +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + /* 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; @@ -12212,19 +12562,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 -index cfa62ec..9250dd7 100644 +index 2bda212..78cc605 100644 --- 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); @@ -12234,13 +12575,16 @@ index cfa62ec..9250dd7 100644 } 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 -@@ -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 + 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); @@ -12429,7 +12773,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 -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, @@ -12479,14 +12823,14 @@ index 3b97a80..667ce7a 100644 } 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) - printk("<%02x> ", c); + printk(KERN_CONT "<%02x> ", c); else - printk("%02x ", c); + printk(KERN_CONT "%02x ", c); @@ -132,6 +131,7 @@ int is_valid_bugaddr(unsigned long ip) { unsigned short ud2; @@ -12512,7 +12856,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 -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, @@ -12618,7 +12962,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 -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 @@ @@ -12629,15 +12973,6 @@ index cd28a35..2601699 100644 #include #include #include -@@ -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 @@ -13420,7 +13755,7 @@ index f3f6f53..0841b66 100644 /* 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 @@ @@ -13604,9 +13939,9 @@ index 6419bb0..00440bf 100644 + call pax_exit_kernel_user +#endif +#ifdef CONFIG_PAX_RANDKSTACK -+ push %rax ++ pushq %rax + call pax_randomize_kstack -+ pop %rax ++ popq %rax +#endif + .endm + @@ -13799,7 +14134,7 @@ index 6419bb0..00440bf 100644 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 @@ -13811,7 +14146,7 @@ index 6419bb0..00440bf 100644 /* 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 @@ -13824,7 +14159,7 @@ index 6419bb0..00440bf 100644 .popsection /* -@@ -405,7 +691,7 @@ ENTRY(ret_from_fork) +@@ -410,7 +696,7 @@ ENTRY(ret_from_fork) RESTORE_REST @@ -13833,7 +14168,7 @@ index 6419bb0..00440bf 100644 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 @@ -13842,7 +14177,7 @@ index 6419bb0..00440bf 100644 /* * 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 @@ -13851,7 +14186,7 @@ index 6419bb0..00440bf 100644 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 @@ -13866,7 +14201,7 @@ index 6419bb0..00440bf 100644 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 @@ -13875,7 +14210,7 @@ index 6419bb0..00440bf 100644 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 @@ -13884,7 +14219,7 @@ index 6419bb0..00440bf 100644 /* * sysretq will re-enable interrupts: */ -@@ -549,14 +838,18 @@ badsys: +@@ -554,14 +843,18 @@ badsys: * jump back to the normal fast path. */ auditsys: @@ -13904,7 +14239,7 @@ index 6419bb0..00440bf 100644 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 @@ -13926,7 +14261,7 @@ index 6419bb0..00440bf 100644 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 @@ -13935,7 +14270,15 @@ index 6419bb0..00440bf 100644 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 @@ -13944,7 +14287,7 @@ index 6419bb0..00440bf 100644 /* * 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 @@ -13953,7 +14296,7 @@ index 6419bb0..00440bf 100644 .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 @@ -13965,7 +14308,7 @@ index 6419bb0..00440bf 100644 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 @@ -13974,7 +14317,7 @@ index 6419bb0..00440bf 100644 /* * 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 @@ -13983,7 +14326,7 @@ index 6419bb0..00440bf 100644 /* * 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 @@ -13992,10 +14335,10 @@ index 6419bb0..00440bf 100644 .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 - PARTIAL_FRAME 0 +#ifdef CONFIG_PAX_MEMORY_UDEREF + testb $3, CS(%rdi) + jnz 1f @@ -14009,7 +14352,7 @@ index 6419bb0..00440bf 100644 call \func .endm -@@ -820,7 +1128,7 @@ ret_from_intr: +@@ -824,7 +1133,7 @@ ret_from_intr: exit_intr: GET_THREAD_INFO(%rcx) @@ -14018,12 +14361,11 @@ index 6419bb0..00440bf 100644 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 -+ pax_erase_kstack TRACE_IRQS_IRETQ SWAPGS jmp restore_args @@ -14035,7 +14377,7 @@ index 6419bb0..00440bf 100644 /* * The iretq could re-enable interrupts: */ -@@ -936,7 +1248,7 @@ ENTRY(retint_kernel) +@@ -940,7 +1252,7 @@ ENTRY(retint_kernel) #endif CFI_ENDPROC @@ -14044,7 +14386,7 @@ index 6419bb0..00440bf 100644 /* * 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 @@ -14053,7 +14395,7 @@ index 6419bb0..00440bf 100644 .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 @@ -14077,7 +14419,7 @@ index 6419bb0..00440bf 100644 .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 @@ -14105,7 +14447,7 @@ index 6419bb0..00440bf 100644 .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 @@ -14137,7 +14479,7 @@ index 6419bb0..00440bf 100644 .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 @@ -14162,7 +14504,7 @@ index 6419bb0..00440bf 100644 .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 @@ -14187,7 +14529,7 @@ index 6419bb0..00440bf 100644 .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 @@ -14199,7 +14541,7 @@ index 6419bb0..00440bf 100644 .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. */ @@ -14215,7 +14557,7 @@ index 6419bb0..00440bf 100644 /* * 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 @@ -14229,7 +14571,7 @@ index 6419bb0..00440bf 100644 /* 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) @@ -14241,7 +14583,7 @@ index 6419bb0..00440bf 100644 #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 @@ -14250,7 +14592,7 @@ index 6419bb0..00440bf 100644 /* * 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 @@ -14259,7 +14601,7 @@ index 6419bb0..00440bf 100644 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 @@ -14292,7 +14634,7 @@ index 6419bb0..00440bf 100644 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 @@ -14301,7 +14643,7 @@ index 6419bb0..00440bf 100644 /* * 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 @@ -14316,7 +14658,7 @@ index 6419bb0..00440bf 100644 ret /* -@@ -1449,7 +1836,7 @@ bstep_iret: +@@ -1453,7 +1840,7 @@ bstep_iret: movq %rcx,RIP+8(%rsp) jmp error_swapgs CFI_ENDPROC @@ -14325,7 +14667,7 @@ index 6419bb0..00440bf 100644 /* 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 @@ -14334,7 +14676,7 @@ index 6419bb0..00440bf 100644 /* 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 @@ -14351,7 +14693,7 @@ index 6419bb0..00440bf 100644 /* 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 @@ -14381,7 +14723,7 @@ index 6419bb0..00440bf 100644 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 @@ -15319,10 +15661,10 @@ index 8c96897..be66bfa 100644 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 -@@ -17,7 +17,7 @@ +@@ -18,7 +18,7 @@ #include #include @@ -15331,7 +15673,7 @@ index 6c0802e..bea25ae 100644 /* 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 @@ -15343,7 +15685,7 @@ index 6c0802e..bea25ae 100644 #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) { @@ -15499,8 +15841,21 @@ index 7209070..cbcd71a 100644 /* * 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 -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) @@ -15532,9 +15887,9 @@ index 00354d4..187ae44 100644 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) { @@ -15542,10 +15897,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 -index 794bc95..c6e29e9 100644 +index 7da647d..56fe348 100644 --- 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; @@ -15557,7 +15912,7 @@ index 794bc95..c6e29e9 100644 } /* 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; @@ -15566,7 +15921,7 @@ index 794bc95..c6e29e9 100644 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); @@ -15576,7 +15931,7 @@ index 794bc95..c6e29e9 100644 #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); @@ -15586,7 +15941,7 @@ index 794bc95..c6e29e9 100644 } #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); @@ -15601,7 +15956,7 @@ index 794bc95..c6e29e9 100644 } 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. */ @@ -15610,7 +15965,7 @@ index 794bc95..c6e29e9 100644 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 @@ -15619,7 +15974,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; } @@ -15628,17 +15983,17 @@ index 794bc95..c6e29e9 100644 /* * 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" -+#ifdef CONFIG_PAX_KERNEXEC_PLUGIN ++#ifdef KERNEXEC_PLUGIN + " 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); @@ -15647,7 +16002,7 @@ index 794bc95..c6e29e9 100644 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; @@ -15656,7 +16011,7 @@ index 794bc95..c6e29e9 100644 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. */ @@ -15665,7 +16020,7 @@ index 794bc95..c6e29e9 100644 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 */ @@ -15679,7 +16034,7 @@ index 794bc95..c6e29e9 100644 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 */ @@ -15800,10 +16155,10 @@ 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 -index 1a1b606..5c89b55 100644 +index 3ca42d0..7cff8cc 100644 --- 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) +@@ -436,13 +436,13 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device) static int get_ucode_user(void *to, const void *from, size_t n) { @@ -15820,7 +16175,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 -index 925179f..85bec6c 100644 +index 925179f..267ac7a 100644 --- a/arch/x86/kernel/module.c +++ b/arch/x86/kernel/module.c @@ -36,15 +36,60 @@ @@ -15830,7 +16185,8 @@ index 925179f..85bec6c 100644 -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, @@ -15955,6 +16311,28 @@ index 925179f..85bec6c 100644 #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 @@ -15969,7 +16347,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 -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) @@ -15982,17 +16360,7 @@ index d90272e..2d54e8e 100644 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)); @@ -16015,7 +16383,7 @@ index d90272e..2d54e8e 100644 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 @@ -16024,7 +16392,7 @@ index d90272e..2d54e8e 100644 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(); } @@ -16033,7 +16401,7 @@ index d90272e..2d54e8e 100644 .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 }; @@ -16053,7 +16421,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), -@@ -334,7 +344,7 @@ struct pv_irq_ops pv_irq_ops = { +@@ -334,7 +341,7 @@ struct pv_irq_ops pv_irq_ops = { #endif }; @@ -16062,7 +16430,7 @@ index d90272e..2d54e8e 100644 .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, }; @@ -16092,7 +16460,7 @@ index d90272e..2d54e8e 100644 .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, @@ -16100,7 +16468,7 @@ index d90272e..2d54e8e 100644 #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, @@ -16114,7 +16482,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 -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 @@ @@ -16126,17 +16494,8 @@ index 35ccf75..67e7d4d 100644 #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 -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) @@ -16144,7 +16503,7 @@ index e7e3b01..43c5af3 100644 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; @@ -16219,16 +16578,16 @@ index e7e3b01..43c5af3 100644 #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(); /* -@@ -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); @@ -16277,10 +16636,10 @@ index e7e3b01..43c5af3 100644 +} +#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 -@@ -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]; @@ -16288,7 +16647,7 @@ index 7a3b651..5a946f6 100644 } #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; @@ -16306,7 +16665,7 @@ index 7a3b651..5a946f6 100644 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; @@ -16322,16 +16681,16 @@ index 7a3b651..5a946f6 100644 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; - bool preload_fpu; + fpu_switch_t fpu; /* 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); @@ -16342,35 +16701,35 @@ index 7a3b651..5a946f6 100644 /* * 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); + - 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; } -@@ -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 -index f693e44..3c979b2 100644 +index 6a364a6..b147d11 100644 --- 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 */ @@ -16379,7 +16738,7 @@ index f693e44..3c979b2 100644 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; @@ -16389,7 +16748,7 @@ index f693e44..3c979b2 100644 *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; @@ -16397,16 +16756,16 @@ index f693e44..3c979b2 100644 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; - 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); @@ -16419,7 +16778,7 @@ index f693e44..3c979b2 100644 /* * 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); @@ -16506,7 +16865,7 @@ index 42eb330..139955c 100644 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); @@ -16589,7 +16948,7 @@ index d4a705f..ef8f1a9 100644 } #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 */ @@ -16598,7 +16957,7 @@ index d4a705f..ef8f1a9 100644 { int i; int attempt = 0; -@@ -656,13 +686,13 @@ void native_machine_shutdown(void) +@@ -664,13 +694,13 @@ void native_machine_shutdown(void) #endif } @@ -16614,7 +16973,7 @@ index d4a705f..ef8f1a9 100644 { 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); } @@ -16623,7 +16982,7 @@ index d4a705f..ef8f1a9 100644 { /* 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); } @@ -16632,7 +16991,7 @@ index d4a705f..ef8f1a9 100644 { 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); @@ -16669,7 +17028,7 @@ index 7a6f3b3..bed145d7 100644 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) @@ -16778,7 +17137,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 -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) @@ -16846,16 +17205,7 @@ index 54ddaeb2..a6aa4d2 100644 } 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. */ @@ -17184,10 +17534,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 -index ff14a50..35626c3 100644 +index 0514890..3dbebce 100644 --- 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; } @@ -17198,7 +17548,7 @@ index ff14a50..35626c3 100644 { 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 { @@ -17207,7 +17557,7 @@ index ff14a50..35626c3 100644 *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; @@ -17230,7 +17580,7 @@ index ff14a50..35626c3 100644 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; } @@ -17239,7 +17589,7 @@ index ff14a50..35626c3 100644 /* * 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; @@ -17248,7 +17598,7 @@ index ff14a50..35626c3 100644 /* 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; @@ -17271,16 +17621,16 @@ index ff14a50..35626c3 100644 } /* 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 */ - 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); @@ -17289,7 +17639,7 @@ index ff14a50..35626c3 100644 /* 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 */ @@ -17300,7 +17650,7 @@ index ff14a50..35626c3 100644 bottomup: /* -@@ -198,13 +206,21 @@ bottomup: +@@ -270,13 +278,21 @@ bottomup: * can happen with large stack limits and large mmap() * allocations. */ @@ -17325,7 +17675,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 -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 @@ @@ -17334,10 +17684,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 -index e07a2fc..db0369d 100644 +index e2410e2..4fe3fbc 100644 --- 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) { @@ -17346,7 +17696,7 @@ index e07a2fc..db0369d 100644 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(); @@ -17355,7 +17705,7 @@ index e07a2fc..db0369d 100644 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]); } @@ -17364,7 +17714,7 @@ index e07a2fc..db0369d 100644 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: @@ -17376,7 +17726,7 @@ index e07a2fc..db0369d 100644 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(); @@ -17386,10 +17736,10 @@ index e07a2fc..db0369d 100644 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 -@@ -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); @@ -17401,7 +17751,7 @@ index 5a64d05..804587b 100644 #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. */ @@ -17484,7 +17834,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 -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); @@ -17500,7 +17850,7 @@ index 6913369..7e7dff6 100644 #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 @@ -17516,7 +17866,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. -@@ -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 @@ -17525,7 +17875,7 @@ index 6913369..7e7dff6 100644 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", @@ -17534,7 +17884,7 @@ index 6913369..7e7dff6 100644 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; @@ -17555,7 +17905,7 @@ index 6913369..7e7dff6 100644 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 @@ -17588,7 +17938,7 @@ index 6913369..7e7dff6 100644 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; @@ -17602,25 +17952,7 @@ index 6913369..7e7dff6 100644 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); @@ -17629,7 +17961,7 @@ index 6913369..7e7dff6 100644 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. */ @@ -17638,7 +17970,7 @@ index 6913369..7e7dff6 100644 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); @@ -17647,25 +17979,17 @@ index 6913369..7e7dff6 100644 { 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 @@ -18011,10 +18335,10 @@ index 0f703f1..9e15f64 100644 #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 -@@ -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), }; @@ -18031,7 +18355,7 @@ index b56c65de..561a55b 100644 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)) @@ -18040,7 +18364,7 @@ index b56c65de..561a55b 100644 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: @@ -18050,7 +18374,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); @@ -18076,7 +18400,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 -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, @@ -18088,7 +18412,7 @@ index a391134..d0b63b6e 100644 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); @@ -18097,7 +18421,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 @@ -18107,45 +18431,36 @@ index a391134..d0b63b6e 100644 if (unlikely(err)) { /* diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 8b4cc5f..f086b5b 100644 +index f1e3be1..588efc8 100644 --- 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; " \ -@@ -220,8 +221,6 @@ struct gprefix { +@@ -263,8 +264,6 @@ struct gprefix { /* 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; \ - \ - switch ((_dst).bytes) { \ + switch ((ctxt)->dst.bytes) { \ 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; \ - switch ((_dst).bytes) { \ + switch ((ctxt)->dst.bytes) { \ 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 -index 57dcbd4..79aba9b 100644 +index 54abb40..a192606 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -53,7 +53,7 @@ @@ -18158,10 +18473,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 -index 8e8da79..13bc641 100644 +index f1b36cf..af8a124 100644 --- 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); @@ -18170,7 +18485,7 @@ index 8e8da79..13bc641 100644 /* * 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); @@ -18180,7 +18495,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 -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: @@ -18192,16 +18507,7 @@ index 507e2b8..fc55f89 100644 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); @@ -18211,10 +18517,10 @@ index 507e2b8..fc55f89 100644 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 e32243e..a6e6172 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c -@@ -3381,7 +3381,11 @@ static void reload_tss(struct kvm_vcpu *vcpu) +@@ -3400,7 +3400,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); @@ -18226,7 +18532,7 @@ index 475d1c9..33658ff 100644 load_TR_desc(); } -@@ -3759,6 +3763,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) +@@ -3778,6 +3782,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) #endif #endif @@ -18238,10 +18544,10 @@ index 475d1c9..33658ff 100644 local_irq_disable(); diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c -index e65a158..656dc24 100644 +index 4ea7678..b3a7084 100644 --- 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; @@ -18253,7 +18559,7 @@ index e65a158..656dc24 100644 load_TR_desc(); } -@@ -2520,8 +2524,11 @@ static __init int hardware_setup(void) +@@ -2633,8 +2637,11 @@ static __init int hardware_setup(void) if (!cpu_has_vmx_flexpriority()) flexpriority_enabled = 0; @@ -18267,7 +18573,7 @@ index e65a158..656dc24 100644 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 +3655,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)); @@ -18276,7 +18582,7 @@ index e65a158..656dc24 100644 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 +6176,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: " @@ -18289,7 +18595,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" -@@ -6069,6 +6082,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -6217,6 +6230,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)) @@ -18301,7 +18607,7 @@ index e65a158..656dc24 100644 : "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 +6263,16 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) } } @@ -18320,10 +18626,10 @@ 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 -index 84a28ea..9326501 100644 +index 4c938da..4ddef65 100644 --- 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) +@@ -1345,8 +1345,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) { struct kvm *kvm = vcpu->kvm; int lm = is_long_mode(vcpu); @@ -18334,7 +18640,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; -@@ -2137,6 +2137,8 @@ long kvm_arch_dev_ioctl(struct file *filp, +@@ -2165,6 +2165,8 @@ long kvm_arch_dev_ioctl(struct file *filp, if (n < msr_list.nmsrs) goto out; r = -EFAULT; @@ -18343,7 +18649,7 @@ index 84a28ea..9326501 100644 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 +2342,20 @@ static int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, struct kvm_cpuid_entry2 __user *entries) { @@ -18367,7 +18673,7 @@ index 84a28ea..9326501 100644 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 +2370,19 @@ static int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, struct kvm_cpuid_entry2 __user *entries) { @@ -18390,7 +18696,7 @@ index 84a28ea..9326501 100644 return 0; out: -@@ -2718,7 +2729,7 @@ static int kvm_vcpu_ioctl_set_lapic(struct kvm_vcpu *vcpu, +@@ -2746,7 +2757,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) { @@ -18399,7 +18705,7 @@ index 84a28ea..9326501 100644 return -EINVAL; if (irqchip_in_kernel(vcpu->kvm)) return -ENXIO; -@@ -5089,7 +5100,7 @@ static void kvm_set_mmio_spte_mask(void) +@@ -5162,7 +5173,7 @@ static void kvm_set_mmio_spte_mask(void) kvm_mmu_set_mmio_spte_mask(mask); } @@ -18409,10 +18715,10 @@ index 84a28ea..9326501 100644 int r; struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque; 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 -@@ -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. */ @@ -19727,7 +20033,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 -index 9f33b98..dfc7678 100644 +index 374562e..a75830b 100644 --- a/arch/x86/lib/insn.c +++ b/arch/x86/lib/insn.c @@ -21,6 +21,11 @@ @@ -19740,9 +20046,9 @@ index 9f33b98..dfc7678 100644 +#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)); @@ -21386,7 +21692,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 -index 0d17c8c..4f4764f 100644 +index 5db0490..2ddce45 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -13,11 +13,18 @@ @@ -21399,7 +21705,7 @@ index 0d17c8c..4f4764f 100644 #include /* dotraplinkage, ... */ #include /* pgd_*(), ... */ #include /* kmemcheck_*(), ... */ - #include + #include /* VSYSCALL_START */ +#include + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) @@ -21490,7 +21796,7 @@ index 0d17c8c..4f4764f 100644 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 @@ -21541,7 +21847,7 @@ index 0d17c8c..4f4764f 100644 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 @@ -21550,7 +21856,7 @@ index 0d17c8c..4f4764f 100644 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 @@ -21559,7 +21865,7 @@ index 0d17c8c..4f4764f 100644 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; @@ -21588,7 +21894,7 @@ index 0d17c8c..4f4764f 100644 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 @@ -21610,7 +21916,7 @@ index 0d17c8c..4f4764f 100644 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", @@ -21619,7 +21925,7 @@ index 0d17c8c..4f4764f 100644 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; } @@ -21719,7 +22025,7 @@ index 0d17c8c..4f4764f 100644 /* * 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) { @@ -21729,7 +22035,7 @@ index 0d17c8c..4f4764f 100644 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; @@ -21767,7 +22073,7 @@ index 0d17c8c..4f4764f 100644 /* * 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: */ @@ -21776,7 +22082,7 @@ index 0d17c8c..4f4764f 100644 local_irq_enable(); error_code |= PF_USER; } else { -@@ -1116,6 +1322,11 @@ retry: +@@ -1122,6 +1328,11 @@ retry: might_sleep(); } @@ -21788,7 +22094,7 @@ index 0d17c8c..4f4764f 100644 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; } @@ -21824,7 +22130,7 @@ index 0d17c8c..4f4764f 100644 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); } @@ -21865,6 +22171,30 @@ index 0d17c8c..4f4764f 100644 +{ + 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; @@ -21924,6 +22254,34 @@ index 0d17c8c..4f4764f 100644 +{ + 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; @@ -22066,19 +22424,10 @@ index 0d17c8c..4f4764f 100644 + 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 -@@ -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; @@ -22315,10 +22664,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 -index 87488b9..7129f32 100644 +index 87488b9..399f416 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c -@@ -31,7 +31,7 @@ int direct_gbpages +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + + 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) { @@ -22327,7 +22684,7 @@ index 87488b9..7129f32 100644 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) { @@ -22358,7 +22715,7 @@ index 87488b9..7129f32 100644 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) { @@ -22374,7 +22731,7 @@ index 87488b9..7129f32 100644 + 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); + } @@ -22724,7 +23081,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 -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); @@ -22753,7 +23110,7 @@ index bbaaa00..16dffad 100644 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) { @@ -22873,7 +23230,7 @@ index 7b179b4..6bd1777 100644 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, @@ -22885,7 +23242,17 @@ index be1ef57..9680edc 100644 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; @@ -22894,7 +23261,7 @@ index be1ef57..9680edc 100644 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)); @@ -22921,19 +23288,19 @@ index d87dd6d..bf3fa66 100644 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 -@@ -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) - /* - * 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; } @@ -22979,7 +23346,7 @@ index 1dab519..60a7e5f 100644 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()) { @@ -23006,10 +23373,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 -index 67421f3..8d6b107 100644 +index de54b9b..799051e 100644 --- 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: { @@ -23018,7 +23385,7 @@ index 67421f3..8d6b107 100644 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) { @@ -23027,7 +23394,7 @@ index 67421f3..8d6b107 100644 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, @@ -23050,7 +23417,7 @@ index b008656..773eac2 100644 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, @@ -23114,7 +23481,7 @@ index f9e5267..6f6e27f 100644 +#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) { @@ -23238,7 +23605,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 -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) @@ -23277,7 +23644,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 pyd_offset(mm ,address) pgd_offset((mm), (address)) ++#define pyd_offset(mm, address) pgd_offset((mm), (address)) +#define PYD_SIZE PGDIR_SIZE +#else +#define pxd_t pmd_t @@ -23285,7 +23652,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 pyd_offset(mm ,address) pud_offset((mm), (address)) ++#define pyd_offset(mm, address) pud_offset((mm), (address)) +#define PYD_SIZE PUD_SIZE +#endif + @@ -23635,7 +24002,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 -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) @@ -23660,7 +24027,23 @@ index bfab3fa..05aac3a 100644 /* 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"); @@ -23668,7 +24051,7 @@ index bfab3fa..05aac3a 100644 - module_free(NULL, image); - return; + module_free_exec(NULL, image); -+ goto out; ++ goto error; } + pax_open_kernel(); memcpy(image + proglen, temp, ilen); @@ -23676,28 +24059,38 @@ index bfab3fa..05aac3a 100644 } 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, -+ 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) -@@ -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: -+ kfree(fp->work); kfree(addrs); return; - } +@@ -645,18 +655,20 @@ out: 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); } @@ -23768,7 +24161,7 @@ index cb29191..036766d 100644 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 { @@ -23849,7 +24242,7 @@ index f685535..2b76a81 100644 + 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); @@ -24076,21 +24469,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 -index 5cab48e..b025f9b 100644 +index 40e4469..1ab536e 100644 --- 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 @@ -24099,36 +24482,7 @@ index 5cab48e..b025f9b 100644 + 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 @@ -24141,12 +24495,8 @@ index 5cab48e..b025f9b 100644 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 @@ -24160,22 +24510,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); - -- 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 @@ -24356,46 +24690,37 @@ index 4c07cca..2c8427d 100644 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 -@@ -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) { - 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) { - 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(); } - /* -diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c -index 5b55219..b326540 100644 ---- 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 */ + /* parse all the mtimer info to a static mtimer array */ 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 -@@ -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(); @@ -24404,7 +24729,7 @@ index 87bb35e..eff2da8 100644 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 @@ -24514,7 +24839,7 @@ index 468d591..8e80a0a 100644 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 @@ @@ -24526,7 +24851,15 @@ index 316fbca..4638633 100644 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; @@ -24544,9 +24877,10 @@ index 316fbca..4638633 100644 +#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)) { -@@ -111,26 +111,18 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) + ret = addr; goto up_fail; } @@ -24578,7 +24912,7 @@ index 316fbca..4638633 100644 -} -__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); @@ -24590,7 +24924,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); -@@ -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 }; @@ -24599,7 +24933,7 @@ index 46c8069..6330d3c 100644 { 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(); } @@ -24620,7 +24954,7 @@ index 46c8069..6330d3c 100644 { 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 */ @@ -24639,7 +24973,7 @@ index 46c8069..6330d3c 100644 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; @@ -24654,10 +24988,10 @@ index 46c8069..6330d3c 100644 #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 -@@ -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); @@ -24667,7 +25001,7 @@ index 3dd53f9..5aa5df3 100644 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); @@ -24679,7 +25013,7 @@ index 3dd53f9..5aa5df3 100644 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; @@ -24687,7 +25021,7 @@ index 3dd53f9..5aa5df3 100644 #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, @@ -24817,7 +25151,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 -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, @@ -24887,10 +25221,10 @@ index 7b72502..646105c 100644 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 -@@ -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) { @@ -24912,7 +25246,7 @@ index 4f4230b..0feae9a 100644 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]; @@ -24921,7 +25255,7 @@ index 4f4230b..0feae9a 100644 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; @@ -24963,19 +25297,6 @@ index 671d4d6..5f24030 100644 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 @@ -24998,18 +25319,18 @@ index 5d41894..22021e4 100644 EXPORT_SYMBOL_GPL(cper_next_record_id); 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 -@@ -11,6 +11,7 @@ - #include +@@ -12,6 +12,7 @@ #include #include -+#include + #include ++#include #include "internal.h" MODULE_AUTHOR("Thomas Renninger "); -@@ -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; @@ -25018,7 +25339,7 @@ index 22f918b..9fafb84 100644 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) { @@ -25031,7 +25352,7 @@ index 22f918b..9fafb84 100644 *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; @@ -25039,7 +25360,7 @@ index 22f918b..9fafb84 100644 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) { @@ -25051,10 +25372,10 @@ index 22f918b..9fafb84 100644 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 -@@ -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; @@ -25079,7 +25400,7 @@ index f5f9869..da87aeb 100644 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; @@ -25089,7 +25410,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 -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) @@ -25102,7 +25423,7 @@ index a4e0f1b..9793b28 100644 /* * Buggy BIOS check 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) @@ -25142,21 +25463,8 @@ index 4a3a5ae..cbee192 100644 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 -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) @@ -25277,7 +25585,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 -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) @@ -25316,7 +25624,7 @@ index 9307141..d8521bf 100644 } 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); @@ -25325,7 +25633,7 @@ index 9307141..d8521bf 100644 wake_up(&eni_dev->tx_wait); dma_complete++; } -@@ -1568,7 +1568,7 @@ tx_complete++; +@@ -1569,7 +1569,7 @@ tx_complete++; /*--------------------------------- entries ---------------------------------*/ @@ -25335,7 +25643,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 -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) @@ -25539,7 +25847,7 @@ index b812103..e391a49 100644 // 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) @@ -25697,10 +26005,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 -index cb90f7a..bd33566 100644 +index 3d0c2b0..45441fa 100644 --- 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)) { @@ -25709,7 +26017,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");) -@@ -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); @@ -25718,7 +26026,7 @@ index cb90f7a..bd33566 100644 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) { @@ -25727,7 +26035,7 @@ index cb90f7a..bd33566 100644 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)))) { @@ -25736,7 +26044,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); -@@ -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); @@ -25745,7 +26053,7 @@ index cb90f7a..bd33566 100644 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; @@ -25770,7 +26078,7 @@ index cb90f7a..bd33566 100644 } 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);) @@ -25779,7 +26087,7 @@ index cb90f7a..bd33566 100644 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); @@ -25797,7 +26105,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 -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, @@ -25818,7 +26126,7 @@ index e828c54..ae83976 100644 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++; @@ -25827,7 +26135,7 @@ index e828c54..ae83976 100644 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); @@ -25836,7 +26144,7 @@ index e828c54..ae83976 100644 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); @@ -25845,7 +26153,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); -@@ -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); @@ -26060,7 +26368,7 @@ index 1c70c45..300718d 100644 } 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) @@ -26072,16 +26380,7 @@ index 5d1d076..4f31f42 100644 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) { @@ -26198,10 +26497,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 -index 84f7c7d..37cfd87 100644 +index caf995f..6f76697 100644 --- 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. */ @@ -26218,7 +26517,7 @@ index 84f7c7d..37cfd87 100644 *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. */ @@ -26227,7 +26526,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. */ @@ -26236,24 +26535,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 -index c2f9b3e..5911988 100644 +index b0f553b..77b928b 100644 --- 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; @@ -26262,7 +26548,7 @@ index c2f9b3e..5911988 100644 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 */ @@ -26271,7 +26557,7 @@ index c2f9b3e..5911988 100644 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 */ @@ -26280,7 +26566,7 @@ index c2f9b3e..5911988 100644 /* 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) { @@ -26301,7 +26587,7 @@ index c2f9b3e..5911988 100644 (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))) @@ -26310,7 +26596,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 */ -@@ -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 */ @@ -26319,7 +26605,7 @@ index c2f9b3e..5911988 100644 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; @@ -26328,7 +26614,7 @@ index c2f9b3e..5911988 100644 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 */ @@ -26337,16 +26623,16 @@ index c2f9b3e..5911988 100644 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); - 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, -@@ -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"); @@ -26358,7 +26644,7 @@ index c2f9b3e..5911988 100644 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 */ @@ -26367,20 +26653,20 @@ index c2f9b3e..5911988 100644 /* 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); - 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 -index c049548..a09cb6e 100644 +index 7fda30e..eb5dfe0 100644 --- 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]; @@ -26390,7 +26676,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 -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) @@ -26429,16 +26715,7 @@ index b2fceb5..87fec83 100644 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 */ @@ -26447,7 +26724,7 @@ index b2fceb5..87fec83 100644 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 */ @@ -26456,7 +26733,7 @@ index b2fceb5..87fec83 100644 /* 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; @@ -26465,7 +26742,7 @@ index b2fceb5..87fec83 100644 /* 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) { @@ -26474,7 +26751,7 @@ index b2fceb5..87fec83 100644 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 */ @@ -26488,7 +26765,7 @@ index b2fceb5..87fec83 100644 if (temp != 0) { break; } -@@ -1466,7 +1468,7 @@ DBG( +@@ -1466,7 +1466,7 @@ DBG( /* * Send the cmd */ @@ -26497,7 +26774,7 @@ index b2fceb5..87fec83 100644 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. */ @@ -26509,7 +26786,7 @@ index b2fceb5..87fec83 100644 for(i=0; i 0; i--) { @@ -26532,10 +26809,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 -index ef2ceed..c9cb18e 100644 +index 9cf2035..bffca95 100644 --- 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; @@ -26544,7 +26821,7 @@ index ef2ceed..c9cb18e 100644 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; @@ -26553,7 +26830,7 @@ index ef2ceed..c9cb18e 100644 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) { @@ -26635,7 +26912,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 -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 @@ -26773,10 +27050,10 @@ index 43beaca..4a5b1dd 100644 } 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 -@@ -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()); @@ -26785,30 +27062,8 @@ index 4720c7a..2c49af1 100644 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 -index 423fd56..06d3be0 100644 +index 4364303..9adf4ee 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -8,7 +8,8 @@ source "drivers/tty/Kconfig" @@ -26913,7 +27168,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 -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 { @@ -26946,15 +27201,6 @@ index 58c0e63..25aed94 100644 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 @@ -27003,7 +27249,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 -index 8fc04b4..cebdeec 100644 +index 1451790..f705c30 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -18,6 +18,7 @@ @@ -27014,7 +27260,7 @@ index 8fc04b4..cebdeec 100644 #include #include #include -@@ -34,6 +35,10 @@ +@@ -35,6 +36,10 @@ # include #endif @@ -27025,7 +27271,7 @@ index 8fc04b4..cebdeec 100644 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)) { @@ -27039,7 +27285,7 @@ index 8fc04b4..cebdeec 100644 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; } @@ -27051,7 +27297,7 @@ index 8fc04b4..cebdeec 100644 #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; @@ -27059,7 +27305,7 @@ index 8fc04b4..cebdeec 100644 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; @@ -27084,7 +27330,7 @@ index 8fc04b4..cebdeec 100644 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; @@ -27095,7 +27341,7 @@ index 8fc04b4..cebdeec 100644 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) { @@ -27104,7 +27350,7 @@ index 8fc04b4..cebdeec 100644 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); @@ -27128,7 +27374,7 @@ index 8fc04b4..cebdeec 100644 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 @@ -27152,7 +27398,7 @@ index da3cfee..a5a6606 100644 *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 @@ @@ -27196,7 +27442,7 @@ index c35a785..6d82202 100644 ret = -EFAULT; break; } -@@ -1214,7 +1226,7 @@ EXPORT_SYMBOL(generate_random_uuid); +@@ -1228,7 +1240,7 @@ EXPORT_SYMBOL(generate_random_uuid); #include static int min_read_thresh = 8, min_write_thresh; @@ -27248,7 +27494,7 @@ index 1ee8ce7..b778bef 100644 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, @@ -27260,15 +27506,6 @@ index 9ca5c02..7ce352c 100644 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 @@ -27317,10 +27554,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 -index fb68b12..0f6c6ca 100644 +index 8e3c46d..c139b99 100644 --- 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; @@ -27329,7 +27566,7 @@ index fb68b12..0f6c6ca 100644 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; @@ -27338,37 +27575,24 @@ index fb68b12..0f6c6ca 100644 } 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 -index 9a8bebc..b1e4989 100644 +index c9eee6d..f9d5280 100644 --- 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. */ @@ -27569,10 +27793,10 @@ index 74d6ec34..baff517 100644 {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 -@@ -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 */ @@ -27582,10 +27806,10 @@ index a76fe83..15479e6 100644 {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 -@@ -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 */ @@ -27647,7 +27871,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 -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 { @@ -27658,7 +27882,7 @@ index 795a320..3bbc3d3 100644 +} __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 @@ -27672,6 +27896,19 @@ index b153674..ad2ba9b 100644 { 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 @@ -27713,7 +27950,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 -index 334b82a..ea5261d 100644 +index 855ab3f..11f4bbd 100644 --- a/drivers/firewire/core-transaction.c +++ b/drivers/firewire/core-transaction.c @@ -37,6 +37,7 @@ @@ -27724,15 +27961,6 @@ index 334b82a..ea5261d 100644 #include -@@ -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 @@ -27746,7 +27974,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 -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) @@ -27761,7 +27989,7 @@ index bcb1126..2cc2121 100644 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; @@ -27784,10 +28012,10 @@ index 98723cb..10ca85b 100644 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 -@@ -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; @@ -27796,7 +28024,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, -@@ -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; @@ -27807,7 +28035,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], -@@ -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; @@ -27816,7 +28044,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], -@@ -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++) { @@ -27825,7 +28053,7 @@ index 2410c40..2d03563 100644 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; @@ -27834,7 +28062,7 @@ index 2410c40..2d03563 100644 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) { @@ -27843,7 +28071,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; -@@ -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; @@ -27852,7 +28080,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))) { -@@ -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; @@ -27861,7 +28089,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)) { -@@ -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; @@ -27870,7 +28098,7 @@ index 2410c40..2d03563 100644 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) { @@ -27880,10 +28108,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 -index f88a9b2..8f4078f 100644 +index d2619d7..bd6bd00 100644 --- 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; @@ -27892,20 +28120,11 @@ index f88a9b2..8f4078f 100644 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 -index 93a112d..c8b065d 100644 +index 40c187c..5746164 100644 --- 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 */ @@ -27914,7 +28133,7 @@ index 93a112d..c8b065d 100644 { 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); @@ -27924,10 +28143,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 -index 2ec7d48..be14bb1 100644 +index 828bf65..cdaa0e9 100644 --- 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++) @@ -27936,7 +28155,7 @@ index 2ec7d48..be14bb1 100644 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) { @@ -27947,7 +28166,7 @@ index 2ec7d48..be14bb1 100644 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); @@ -27956,16 +28175,16 @@ index 2ec7d48..be14bb1 100644 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)); - /* 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 */ @@ -28082,10 +28301,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 -index 4a058c7..b42cd92 100644 +index ddd70db..40321e6 100644 --- 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; @@ -28094,7 +28313,7 @@ index 4a058c7..b42cd92 100644 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; @@ -28180,10 +28399,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 -index 3c395a5..02889c2 100644 +index b2e3c97..58cf079 100644 --- 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", @@ -28192,7 +28411,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", -@@ -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) @@ -28202,10 +28421,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 -index 8a3942c..1b73bf1 100644 +index c4da951..3c59c5c 100644 --- 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); @@ -28215,10 +28434,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 -index 7916bd9..7c17a0f 100644 +index ae294a0..1755461 100644 --- 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 */ @@ -28227,7 +28446,7 @@ index 7916bd9..7c17a0f 100644 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; @@ -28236,7 +28455,7 @@ index 7916bd9..7c17a0f 100644 /* 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. */ @@ -28245,7 +28464,7 @@ index 7916bd9..7c17a0f 100644 }; #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); @@ -28255,10 +28474,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 -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 -@@ -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) @@ -28267,7 +28486,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 -@@ -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, @@ -28280,7 +28499,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 -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) @@ -28292,7 +28511,7 @@ index 73248d0..f7bac29 100644 /* 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; @@ -28301,7 +28520,7 @@ index 73248d0..f7bac29 100644 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; @@ -28310,7 +28529,7 @@ index 73248d0..f7bac29 100644 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; @@ -28319,7 +28538,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); -@@ -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; @@ -28329,10 +28548,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 -index 07e7cf3..c75f312 100644 +index daa5743..c0757a9 100644 --- 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) || @@ -28341,7 +28560,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 -@@ -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, @@ -28350,7 +28569,7 @@ index 07e7cf3..c75f312 100644 } 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); @@ -28359,7 +28578,7 @@ index 07e7cf3..c75f312 100644 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. */ @@ -28368,15 +28587,15 @@ index 07e7cf3..c75f312 100644 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); - cleanup_objs: 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 @@ -28434,7 +28653,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 -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 { @@ -28446,7 +28665,7 @@ index b311fab..dc11d6a 100644 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 *); @@ -28456,7 +28675,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 -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 { @@ -28493,7 +28712,7 @@ index d7d51de..7c6a7f1 100644 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); @@ -28502,7 +28721,7 @@ index d7d51de..7c6a7f1 100644 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; @@ -28512,7 +28731,7 @@ index d7d51de..7c6a7f1 100644 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) @@ -28534,7 +28753,7 @@ index ae22dfa..4f09960 100644 } 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, @@ -28547,10 +28766,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 -index 10656e4..59bf2a4 100644 +index d8831ab..0ba8356 100644 --- 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); @@ -28573,10 +28792,10 @@ index dbdea8e..cd6eeeb 100644 } 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 -@@ -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. */ @@ -28645,19 +28864,6 @@ index a9e33ce..09edd4b 100644 } #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 @@ -28679,8 +28885,20 @@ index 5a82b6b..9e69c73 100644 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 -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); @@ -28692,7 +28910,16 @@ index 184628c..30e1725 100644 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); @@ -28701,24 +28928,11 @@ index 184628c..30e1725 100644 /* * 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 -index b51e157..8f14fb9 100644 +index 9231564..78b00fd 100644 --- 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); @@ -28727,19 +28941,6 @@ index b51e157..8f14fb9 100644 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 @@ -28754,7 +28955,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 -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) @@ -28789,7 +28990,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 -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) @@ -28813,7 +29014,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 -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 * @@ -28981,58 +29182,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 -index 10fc01f..b4e9822 100644 +index dc27970..f18b008 100644 --- 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. */ -- 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; - 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 -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); -- 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); -@@ -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); @@ -29041,82 +29216,64 @@ index 635c0ff..2641bbb 100644 } 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)) { -- *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; - (void)vmw_fallback_wait(dev_priv, false, true, *sequence, + (void)vmw_fallback_wait(dev_priv, false, true, *seqno, 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 { -- *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 -index e92298a..f68f2d6 100644 +index cabc95f..14b3d77 100644 --- 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. */ -- 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; -@@ -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); -- 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 (;;) { -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 -index f26ae31..721fe1b 100644 +index bb656d8..4169fca 100644 --- 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) { @@ -29125,7 +29282,7 @@ index f26ae31..721fe1b 100644 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, @@ -29135,7 +29292,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 -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) @@ -29147,6 +29304,64 @@ index 7c1188b..5a64357 100644 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 @@ -29161,7 +29376,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 -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 { @@ -29356,7 +29571,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 -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 = { @@ -29481,10 +29696,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 -index 04b0956..f5b47dc 100644 +index 8126824..55a2798 100644 --- 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 @@ -29493,19 +29708,6 @@ index 04b0956..f5b47dc 100644 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 @@ -29624,7 +29826,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 -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 = { @@ -29688,19 +29890,6 @@ index 35fb8da..24d72ef 100644 { /* 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 @@ -29754,10 +29943,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 -index e444d24..ba577de 100644 +index 4799d5c..1794678 100644 --- 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, }; @@ -29767,7 +29956,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 -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 = { @@ -29805,11 +29994,24 @@ index f46f49c..eb77678 100644 .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 -index fc0f2bd..ac2f8a5 100644 +index 8b72f39..55df4c8 100644 --- 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; @@ -29818,7 +30020,7 @@ index fc0f2bd..ac2f8a5 100644 }; 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; @@ -29827,7 +30029,7 @@ index fc0f2bd..ac2f8a5 100644 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; @@ -29836,7 +30038,7 @@ index fc0f2bd..ac2f8a5 100644 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); @@ -29845,7 +30047,7 @@ index fc0f2bd..ac2f8a5 100644 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) { @@ -29854,7 +30056,7 @@ index fc0f2bd..ac2f8a5 100644 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: @@ -29863,7 +30065,7 @@ index fc0f2bd..ac2f8a5 100644 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: @@ -29872,7 +30074,7 @@ index fc0f2bd..ac2f8a5 100644 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) @@ -29881,7 +30083,7 @@ index fc0f2bd..ac2f8a5 100644 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: @@ -29890,7 +30092,7 @@ index fc0f2bd..ac2f8a5 100644 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: @@ -29899,7 +30101,7 @@ index fc0f2bd..ac2f8a5 100644 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: @@ -29908,7 +30110,7 @@ index fc0f2bd..ac2f8a5 100644 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); @@ -29917,7 +30119,7 @@ index fc0f2bd..ac2f8a5 100644 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; @@ -29930,7 +30132,7 @@ index fc0f2bd..ac2f8a5 100644 &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); @@ -29939,7 +30141,7 @@ index fc0f2bd..ac2f8a5 100644 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", @@ -29949,10 +30151,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 -index 4507043..14ad522 100644 +index 176c8f9..2627b62 100644 --- 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; @@ -29963,7 +30165,7 @@ index 4507043..14ad522 100644 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 { @@ -29976,7 +30178,7 @@ index 4507043..14ad522 100644 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); @@ -29985,7 +30187,7 @@ index 4507043..14ad522 100644 !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); @@ -29996,7 +30198,7 @@ index 4507043..14ad522 100644 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); @@ -30010,7 +30212,7 @@ index 4507043..14ad522 100644 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) { @@ -30041,19 +30243,6 @@ 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 -index 31ae1b1..2f5b038 100644 ---- 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); - 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 +30298,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 -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"); @@ -30121,7 +30310,7 @@ index 2d668c6..3312bb7 100644 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; @@ -30131,10 +30320,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 -index 6fe7987..68637b5 100644 +index 568b4f1..5ea3eff 100644 --- 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; @@ -30163,7 +30352,7 @@ index 6fe7987..68637b5 100644 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; @@ -30177,16 +30366,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 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 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 -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; @@ -30209,9 +30402,9 @@ index a237547..28a9819 100644 +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; @@ -30230,9 +30423,9 @@ index a237547..28a9819 100644 +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; @@ -30241,7 +30434,7 @@ index a237547..28a9819 100644 } 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); @@ -30250,7 +30443,7 @@ index a237547..28a9819 100644 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); @@ -30259,7 +30452,7 @@ index a237547..28a9819 100644 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) { @@ -30268,7 +30461,7 @@ index a237547..28a9819 100644 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.. */ @@ -30277,7 +30470,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)); -@@ -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; } @@ -30286,16 +30479,16 @@ index a237547..28a9819 100644 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; - } -@@ -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) { @@ -30304,7 +30497,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; -@@ -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) { @@ -30313,7 +30506,7 @@ index a237547..28a9819 100644 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); @@ -30322,25 +30515,25 @@ index a237547..28a9819 100644 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; + u8 *start_buff; - 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; -@@ -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 */ -@@ -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; } @@ -30349,16 +30542,16 @@ index a237547..28a9819 100644 } 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; - } - 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); @@ -30367,29 +30560,62 @@ index a237547..28a9819 100644 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", - 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", - 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 -index 9d7ffeb..a95dd7d 100644 +index c00d2f3..8834298 100644 --- 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; @@ -30439,8 +30665,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] = 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 -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 @@ @@ -30467,7 +30703,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; - int ret; + int ret = 0; - atomic_inc(&sw_qps_destroyed); + atomic_inc_unchecked(&sw_qps_destroyed); @@ -30475,7 +30711,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 -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 @@ @@ -30530,7 +30766,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 -index b8d8611..15f8d2c 100644 +index b8d8611..7a4a04b 100644 --- a/drivers/input/joystick/sidewinder.c +++ b/drivers/input/joystick/sidewinder.c @@ -30,6 +30,7 @@ @@ -30541,15 +30777,6 @@ index b8d8611..15f8d2c 100644 #include #include #include -@@ -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 @@ -30683,10 +30910,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 -index e35058b..5898a8b 100644 +index ee0a549..a7c9798 100644 --- 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; @@ -30697,7 +30924,7 @@ index e35058b..5898a8b 100644 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 */ @@ -30710,7 +30937,7 @@ index e35058b..5898a8b 100644 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; @@ -30719,7 +30946,7 @@ index e35058b..5898a8b 100644 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; } @@ -30728,7 +30955,7 @@ index e35058b..5898a8b 100644 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; @@ -30737,7 +30964,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"); -@@ -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"); @@ -30746,7 +30973,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"); -@@ -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 */ @@ -30755,7 +30982,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__); -@@ -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 */ @@ -30764,7 +30991,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__); -@@ -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; } @@ -30795,57 +31022,6 @@ index 2a57da59..e7a12ed 100644 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 @@ -30859,72 +31035,6 @@ index 85784a7..a19ca98 100644 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 @@ -30938,19 +31048,19 @@ index a3bd163..8956575 100644 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..802ab87 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 @@ -30965,7 +31075,7 @@ index 1f355bb..43f1fea 100644 } 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) @@ -31116,10 +31226,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 -index 2e9a3ca..c2fb229 100644 +index 31c2dc2..a2de7a6 100644 --- 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; @@ -31247,10 +31357,10 @@ index 3d80cf0..b77cc47 100644 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 -@@ -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; @@ -31259,11 +31369,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), +diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c +index 59c4f04..4c7b661 100644 +--- a/drivers/md/dm-thin-metadata.c ++++ b/drivers/md/dm-thin-metadata.c +@@ -431,7 +431,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; +@@ -450,7 +450,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 -index 52b39f3..83a8b6b 100644 +index 4720f68..78d1df7 100644 --- 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. */ @@ -31275,7 +31407,7 @@ index 52b39f3..83a8b6b 100644 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); @@ -31286,7 +31418,7 @@ index 52b39f3..83a8b6b 100644 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); @@ -31295,7 +31427,7 @@ index 52b39f3..83a8b6b 100644 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) { @@ -31318,32 +31450,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 -index 5c95ccb..217fa57 100644 +index f47f1f8..b7f559e 100644 --- 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; - 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); -@@ -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); } -@@ -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); @@ -31352,7 +31484,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; -@@ -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); @@ -31361,16 +31493,16 @@ index 5c95ccb..217fa57 100644 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 - 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 -@@ -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')) { @@ -31379,7 +31511,7 @@ index 5c95ccb..217fa57 100644 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); @@ -31390,7 +31522,7 @@ index 5c95ccb..217fa57 100644 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"); @@ -31399,7 +31531,7 @@ index 5c95ccb..217fa57 100644 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: "); @@ -31408,7 +31540,7 @@ index 5c95ccb..217fa57 100644 } 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; @@ -31417,7 +31549,7 @@ index 5c95ccb..217fa57 100644 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; @@ -31426,7 +31558,7 @@ index 5c95ccb..217fa57 100644 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]) - @@ -31436,10 +31568,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 -index 0a309dc..7e01d7f 100644 +index cf742d9..7c7c745 100644 --- 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 */ @@ -31455,7 +31587,7 @@ index 0a309dc..7e01d7f 100644 * 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) { @@ -31463,12 +31595,63 @@ index 0a309dc..7e01d7f 100644 + 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 -index d9587df..83a0dc3 100644 +index 7d9e071..015b1d5 100644 --- 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) @@ -31477,7 +31660,7 @@ index d9587df..83a0dc3 100644 } 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)) { @@ -31487,10 +31670,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 -index 1d44228..98db57d 100644 +index 685ddf3..955b087 100644 --- 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 */ @@ -31499,7 +31682,7 @@ index 1d44228..98db57d 100644 &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; @@ -31508,7 +31691,7 @@ index 1d44228..98db57d 100644 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)) @@ -31519,8 +31702,8 @@ index 1d44228..98db57d 100644 + 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); @@ -31531,7 +31714,7 @@ index 1d44228..98db57d 100644 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, @@ -31540,7 +31723,7 @@ index 1d44228..98db57d 100644 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)); @@ -31550,10 +31733,10 @@ index 1d44228..98db57d 100644 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 -@@ -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)); @@ -31577,7 +31760,7 @@ index b6200c3..02e8702 100644 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); @@ -31586,32 +31769,11 @@ index b6200c3..02e8702 100644 > 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 -index 573d540..16f78f3 100644 +index ba9a643..e474ab5 100644 --- 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 } @@ -31620,28 +31782,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), -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 @@ -31669,10 +31809,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 -index acb5fb2..2413f1d 100644 +index 9f2a02c..5920f88 100644 --- 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 *); @@ -31681,21 +31821,8 @@ index acb5fb2..2413f1d 100644 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 -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 { @@ -31707,29 +31834,8 @@ index 058b231..183d2b3 100644 /* 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 -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 @@ -31741,32 +31847,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, -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 @@ -31793,6 +31886,19 @@ index 16a089f..ab1667d 100644 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 @@ -31806,32 +31912,6 @@ index 9cde353..8c6a1c3 100644 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 @@ -31845,19 +31925,6 @@ 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, } -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; - -+ pax_track_stack(); -+ - memset(&tvdata,0,sizeof(tvdata)); - - eeprom = pvr2_eeprom_fetch(hdw); 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 +31938,11 @@ index 305e6aa..0143317 100644 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__); - -+ pax_track_stack(); -+ - while (loop) { - - struct tmComResInfo tRsp = { 0, 0, 0, 0, 0, 0 }; 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 -@@ -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 */ @@ -31919,7 +31951,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, -@@ -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, }; @@ -31928,37 +31960,11 @@ index 84cd1b6..f741e07 100644 .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 -index 7956a10..f39232f 100644 +index e9c6a60..daf6a33 100644 --- 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); @@ -31973,10 +31979,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 -index 7596aec..f7ae9aa 100644 +index 9d95042..b808101 100644 --- 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; } @@ -32000,7 +32006,7 @@ index 7596aec..f7ae9aa 100644 /* 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; } @@ -32025,10 +32031,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 -index ce61a57..3da8862 100644 +index 0c3ced7..1fe34ec 100644 --- 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); @@ -32053,19 +32059,6 @@ index ce61a57..3da8862 100644 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 @@ -32183,24 +32176,11 @@ index a8c08f3..155fe3d 100644 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 -index f12720d..3c251fd 100644 +index 7ce65f4..e66e9bc 100644 --- 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; @@ -32221,64 +32201,51 @@ index 5c2a06a..8fa077c 100644 #include #include #include -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 -index 8b51cd6..f628f8d 100644 +index 29d12a7..f900ba4 100644 --- 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. */ -- 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; } -@@ -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); -- 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; -@@ -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 -index a193958..4d7ecd2 100644 +index 2b1482a..5d33616 100644 --- 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]; @@ -32558,10 +32525,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 -index 26c5286..292d261 100644 +index 6878a94..fe5c5f1 100644 --- 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, }; @@ -32570,91 +32537,11 @@ index 26c5286..292d261 100644 { .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 -index f7fbf60..9866457 100644 +index e9fad91..0a7a16a 100644 --- 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- @@ -32664,10 +32551,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 -index 241192f..d0c35a3 100644 +index a3f7a27..234016e 100644 --- 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 */ @@ -32676,73 +32563,8 @@ index 241192f..d0c35a3 100644 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 -index d527621..2491fab 100644 +index 3984d48..28aa897 100644 --- a/drivers/mtd/nand/denali.c +++ b/drivers/mtd/nand/denali.c @@ -26,6 +26,7 @@ @@ -32753,21 +32575,8 @@ index d527621..2491fab 100644 #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 -index e3cd1ff..0ea79a3 100644 +index ac40925..483b753 100644 --- a/drivers/mtd/nftlmount.c +++ b/drivers/mtd/nftlmount.c @@ -24,6 +24,7 @@ @@ -32778,15 +32587,6 @@ index e3cd1ff..0ea79a3 100644 #include #include #include -@@ -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 index 6c3fb5a..c542a81 100644 --- a/drivers/mtd/ubi/build.c @@ -32830,10 +32630,10 @@ 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/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) */ @@ -32843,149 +32643,10 @@ index d4f7dda..d627d46 100644 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 ---- 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, @@ -32995,10 +32656,22 @@ index 9a517c2..a50cfcb 100644 /********************** 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 ---- 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 { @@ -33008,62 +32681,123 @@ index c5f5479..2e8c260 100644 #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/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; idev_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; + + 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}}; -+ pax_track_stack(); -+ - for (i = 0; i < ARRAY_SIZE(entries); ++i) - entries[i].entry = i; -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; +-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. */ + }; -+ 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 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/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; - 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; - - /* 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 ---- 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 *); @@ -33110,36 +32844,10 @@ index 2967039..ca8c40c 100644 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 ---- 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 *); @@ -33208,10 +32916,10 @@ index 4519a13..f97fcd0 100644 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 ---- 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); @@ -33241,38 +32949,11 @@ index d7ed58f..64cde36 100644 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 *); }; @@ -33280,7 +32961,7 @@ index e0d970e..1cfdea5 100644 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); }; @@ -33288,7 +32969,7 @@ index e0d970e..1cfdea5 100644 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 *); }; @@ -33300,7 +32981,7 @@ index e0d970e..1cfdea5 100644 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 { @@ -33309,7 +32990,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]; -@@ -2762,7 +2765,7 @@ struct ixgbe_mac_info { +@@ -2828,7 +2831,7 @@ struct ixgbe_mac_info { }; struct ixgbe_phy_info { @@ -33318,7 +32999,7 @@ index e0d970e..1cfdea5 100644 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); }; @@ -33326,7 +33007,7 @@ index e0d970e..1cfdea5 100644 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 { @@ -33335,10 +33016,10 @@ index e0d970e..1cfdea5 100644 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 ---- 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); @@ -33373,23 +33054,10 @@ index 10306b4..28df758 100644 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 #include @@ -33398,672 +33066,37 @@ index f0ee35d..3831c8a 100644 #include #include -@@ -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) - - /* 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); - - 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 */ - - /* 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) - } - } - -- 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); - -@@ -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 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); - - 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; - -- 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); - } - - 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 -@@ -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; - struct ppp_comp_stats cstats; -- char *vers; +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; - switch (cmd) { - case SIOCGPPPSTATS: -@@ -1009,8 +1008,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) - break; + /* + * 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; - case SIOCGPPPVER: -- vers = PPP_VERSION; -- if (copy_to_user(addr, vers, strlen(vers) + 1)) -+ if (copy_to_user(addr, PPP_VERSION, sizeof(PPP_VERSION))) - 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 { + #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 c8f47f1..5da9840 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); @@ -34076,12 +33109,18 @@ index 6d657ca..d1be94b 100644 - } pll_power_ops; + } __no_const pll_power_ops; + struct jumbo_ops { + void (*enable)(struct rtl8169_private *); + void (*disable)(struct rtl8169_private *); +- } jumbo_ops; ++ } __no_const jumbo_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 +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) @@ -34091,31 +33130,28 @@ index 3c0f131..17f8b02 100644 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/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c +index edfa15d..002bfa9 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; + struct ppp_comp_stats cstats; +- char *vers; + + switch (cmd) { + case SIOCGPPPSTATS: +@@ -1009,8 +1008,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) + break; + + case SIOCGPPPVER: +- vers = PPP_VERSION; +- if (copy_to_user(addr, vers, strlen(vers) + 1)) ++ if (copy_to_user(addr, PPP_VERSION, sizeof(PPP_VERSION))) + break; + err = 0; + break; 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 +33229,6 @@ index 46db5c5..37c1536 100644 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; idev_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; - - 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}}; - - --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 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/usb/hso.c b/drivers/net/usb/hso.c index 304fe78..db112fa 100644 --- a/drivers/net/usb/hso.c @@ -34355,7 +33330,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 -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, @@ -34368,159 +33343,11 @@ index 27400ed..c796e05 100644 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 -index 17c4b56..00d836f 100644 +index 0f9ee46..e2d6e65 100644 --- 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); }; @@ -34528,175 +33355,216 @@ 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 -index ccca724..7afbadc 100644 ---- 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; +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; - -+ 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; - -+ 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; +@@ -242,7 +242,7 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i) + break; + } -+ pax_track_stack(); -+ - memset(&cmd_rsp, 0, sizeof(cmd_rsp)); +- 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)); - 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_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); -@@ -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->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); -@@ -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->ctl12) = ctl12; +- ACCESS_ONCE(ads->ctl17) = ctl17; ++ ACCESS_ONCE_RW(ads->ctl12) = ctl12; ++ ACCESS_ONCE_RW(ads->ctl17) = ctl17; -+ 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->ctl15) = set11nPktDurRTSCTS(i->rates, 0) ++ ACCESS_ONCE_RW(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0) + | set11nPktDurRTSCTS(i->rates, 1); -+ pax_track_stack(); -+ - spin_lock_bh(&priv->tx.tx_lock); +- ACCESS_ONCE(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2) ++ ACCESS_ONCE_RW(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2) + | set11nPktDurRTSCTS(i->rates, 3); - 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; +- 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(); -+ - len += snprintf(buf + len, sizeof(buf) - len, "%20s : %10u\n", - "Mgmt endpoint", skb_queue_len(&priv->tx.mgmt_ep_queue)); +- ACCESS_ONCE(ads->ctl19) = AR_Not_Sounding; ++ ACCESS_ONCE_RW(ads->ctl19) = AR_Not_Sounding; + } + static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads) diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h -index c798890..c19a8fb 100644 +index f389b3c..7359e18 100644 --- 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); @@ -34705,7 +33573,7 @@ index c798890..c19a8fb 100644 /** * 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); @@ -34714,8 +33582,8 @@ index c798890..c19a8fb 100644 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; @@ -34723,46 +33591,24 @@ index c798890..c19a8fb 100644 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 -index 66ee1562..b90412b 100644 +index 05f2ad1..ae00eea 100644 --- 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"); @@ -34773,83 +33619,26 @@ index 66ee1562..b90412b 100644 } 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 -index f9a407e..a6f2bb7 100644 +index 69a77e2..552b42c 100644 --- 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 --#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 -index 031cd89..bdc8435 100644 +index 523ad55..f8c5dc5 100644 --- 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) { @@ -34865,23 +33654,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 -index 2215c3c..64e6a47 100644 +index 30f138b..c904585 100644 --- 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 *); + int (*cmdrsp_complete) (struct mwifiex_adapter *, struct sk_buff *); + int (*event_complete) (struct mwifiex_adapter *, struct sk_buff *); -}; +} __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 -index 29f9389..f6d2ce0 100644 +index 0c13840..a5c3ed6 100644 --- 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); @@ -34890,19 +33679,6 @@ index 29f9389..f6d2ce0 100644 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 @@ -34916,19 +33692,6 @@ index a77f1bb..c608b2b 100644 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 @@ -34969,7 +33732,7 @@ index f34b5b2..b5abb9f 100644 } 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) @@ -35037,10 +33800,10 @@ index 38b6fc0..b5cbfce 100644 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..90fab02 100644 --- a/drivers/oprofile/oprofilefs.c +++ b/drivers/oprofile/oprofilefs.c -@@ -186,7 +186,7 @@ static const struct file_operations atomic_ro_fops = { +@@ -193,7 +193,7 @@ static const struct file_operations atomic_ro_fops = { int oprofilefs_create_ro_atomic(struct super_block *sb, struct dentry *root, @@ -35103,7 +33866,7 @@ index 76ba8a1..20ca857 100644 /* initialize our int15 lock */ diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c -index cbfbab1..6a9fced 100644 +index 1cfbf22..be96487 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -27,9 +27,9 @@ @@ -35120,7 +33883,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 -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, @@ -35153,57 +33916,8 @@ index 27911b5..5b6db88 100644 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/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) @@ -35447,10 +34161,10 @@ index 33f5d9a..d957d3f 100644 /* 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 -@@ -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); @@ -35486,19 +34200,6 @@ index cace6d3..f623fda 100644 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 @@ -35512,20 +34213,8 @@ index ffb5878..e6d785c 100644 /* * 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 -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) = { @@ -35564,9 +34253,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 -index e07bd47..dbd260a 100644 +index e07bd47..cd1bbbb 100644 --- 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)) { @@ -35597,41 +34295,6 @@ index 1080bcb..a3b39e3 100644 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 @@ -35654,131 +34317,6 @@ index 546d46b..642fa5b 100644 /* * 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 @@ -35802,10 +34340,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 -index 418ce83..7ee1225 100644 +index 865d452..e9b7fa7 100644 --- 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))) @@ -35814,7 +34352,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 */ -@@ -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 */ @@ -35823,7 +34361,7 @@ index 418ce83..7ee1225 100644 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 */ @@ -35832,7 +34370,7 @@ index 418ce83..7ee1225 100644 /* 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) { @@ -35853,7 +34391,7 @@ index 418ce83..7ee1225 100644 (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; @@ -35862,7 +34400,16 @@ index 418ce83..7ee1225 100644 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 */ @@ -35871,7 +34418,7 @@ index 418ce83..7ee1225 100644 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); @@ -35880,7 +34427,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, -@@ -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"); @@ -35892,7 +34439,7 @@ index 418ce83..7ee1225 100644 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 */ @@ -35901,7 +34448,7 @@ index 418ce83..7ee1225 100644 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); @@ -35910,7 +34457,7 @@ index 418ce83..7ee1225 100644 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 */ @@ -35920,7 +34467,7 @@ index 418ce83..7ee1225 100644 } 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 { @@ -35946,7 +34493,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 -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 { @@ -35968,7 +34515,7 @@ index d261e98..1e00f35 100644 } 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) { @@ -35977,7 +34524,7 @@ index d261e98..1e00f35 100644 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); @@ -35986,7 +34533,7 @@ index d261e98..1e00f35 100644 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) { @@ -35995,7 +34542,7 @@ index d261e98..1e00f35 100644 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) { @@ -36004,7 +34551,7 @@ index d261e98..1e00f35 100644 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) { @@ -36013,7 +34560,7 @@ index d261e98..1e00f35 100644 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) { @@ -36022,7 +34569,7 @@ index d261e98..1e00f35 100644 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) { @@ -36049,7 +34596,7 @@ index d261e98..1e00f35 100644 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) { @@ -36058,7 +34605,7 @@ index d261e98..1e00f35 100644 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) @@ -36084,7 +34631,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 -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 { @@ -36107,8 +34654,8 @@ index c088a36..01c73b0 100644 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; @@ -36117,10 +34664,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 -index a0424dd..2499b6b 100644 +index 2838259..a07cfb5 100644 --- 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 @@ -36129,7 +34676,7 @@ index a0424dd..2499b6b 100644 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; @@ -36138,7 +34685,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; -@@ -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; @@ -36147,7 +34694,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; -@@ -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; @@ -36164,7 +34711,7 @@ index a0424dd..2499b6b 100644 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; @@ -36181,7 +34728,7 @@ index a0424dd..2499b6b 100644 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; } @@ -36190,7 +34737,7 @@ index a0424dd..2499b6b 100644 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; } @@ -36200,10 +34747,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 -index a3c8200..31e562e 100644 +index 55bc4fc..a2a109c 100644 --- 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) { @@ -36217,10 +34764,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 -index eadd241..26c8e0f 100644 +index 2e1e54e..1af0a0d 100644 --- 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); @@ -36229,7 +34776,7 @@ index eadd241..26c8e0f 100644 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; @@ -36238,7 +34785,7 @@ index eadd241..26c8e0f 100644 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; @@ -36249,7 +34796,7 @@ index eadd241..26c8e0f 100644 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); @@ -36260,7 +34807,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); @@ -36271,37 +34818,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 -index d079f9a..d26072c 100644 +index 5163edb..7b142bc 100644 --- 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; @@ -36312,7 +34833,7 @@ index d079f9a..d26072c 100644 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) @@ -36324,7 +34845,7 @@ index d079f9a..d26072c 100644 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 */ @@ -36333,7 +34854,7 @@ index d079f9a..d26072c 100644 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 */ @@ -36342,7 +34863,7 @@ index d079f9a..d26072c 100644 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 */ @@ -36351,7 +34872,7 @@ index d079f9a..d26072c 100644 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); @@ -36362,7 +34883,7 @@ index d079f9a..d26072c 100644 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 */ @@ -36372,10 +34893,10 @@ index d079f9a..d26072c 100644 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 -@@ -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 */ @@ -36384,7 +34905,7 @@ index f920baf..4417389 100644 /* 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 ?*/ @@ -36393,7 +34914,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 */ @@ -36405,7 +34926,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 -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 { @@ -36418,60 +34939,46 @@ index a03eaf4..a6b3fd9 100644 /* 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 -@@ -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->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 @@ -36485,33 +34992,11 @@ index 2aeb2e9..46e3925 100644 /* 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 -index 6d219e4..eb3ded3 100644 +index f85cfa6..a57c9e8 100644 --- 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; @@ -36520,7 +35005,7 @@ index 6d219e4..eb3ded3 100644 /* * 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); @@ -36533,10 +35018,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 -index e0bd3f7..816b8a6 100644 +index 04c2a27..9d8bd66 100644 --- 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); \ @@ -36599,28 +35084,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 -index 3fd16d7..ba0871f 100644 +index 96029e6..4d77fa0 100644 --- 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; - /* -@@ -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); - 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); @@ -36661,10 +35146,10 @@ index 21a045e..ec89e03 100644 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 -@@ -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, @@ -36673,7 +35158,7 @@ index 909ed9e..1ae290a 100644 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; }; @@ -36682,7 +35167,7 @@ index 909ed9e..1ae290a 100644 {"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); @@ -36691,37 +35176,11 @@ index 909ed9e..1ae290a 100644 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 -index c5f37f0..898d202 100644 +index f64250e..1ee3049 100644 --- 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 @@ -36731,10 +35190,10 @@ index c5f37f0..898d202 100644 { 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 -@@ -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 */ @@ -36743,216 +35202,33 @@ index 4d1b9f5..8408fe3 100644 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 -index dbb5201..d6047c6 100644 +index bafccb3..e3ac78d 100644 --- 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; - 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; -@@ -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; @@ -36961,7 +35237,7 @@ index dbb5201..d6047c6 100644 /* 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; @@ -36970,59 +35246,19 @@ index dbb5201..d6047c6 100644 /* 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; - 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 @@ -37056,7 +35292,7 @@ index 8b307b4..a97ac91 100644 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) @@ -37076,7 +35312,7 @@ index a8f780e..aef1098 100644 } 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) @@ -37132,7 +35368,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 -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) @@ -37145,10 +35381,10 @@ index 36a2535..0591bf4 100644 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/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 -@@ -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); @@ -37184,10 +35420,10 @@ index be21617..0954e45 100644 #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 -@@ -85,7 +85,7 @@ struct vhci_hcd { +@@ -88,7 +88,7 @@ struct vhci_hcd { unsigned resuming:1; unsigned long re_timeout; @@ -37356,10 +35592,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 -index 26a5d8b..74434f8 100644 +index 0c1d5c73..88e90a8 100644 --- 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. */ @@ -37368,90 +35604,11 @@ index 26a5d8b..74434f8 100644 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 -index 5c1b8c5..0cb7d0e 100644 +index 6845228..df77141 100644 --- 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), @@ -37460,7 +35617,7 @@ index 5c1b8c5..0cb7d0e 100644 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); @@ -37469,7 +35626,7 @@ index 5c1b8c5..0cb7d0e 100644 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); @@ -37479,10 +35636,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 -index 013c100..8fd2e57 100644 +index e4ddb93..2fc6e0f 100644 --- 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); @@ -37491,7 +35648,7 @@ index 013c100..8fd2e57 100644 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. */ @@ -37500,7 +35657,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, -@@ -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), @@ -37509,28 +35666,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), -@@ -2460,9 +2460,9 @@ check_depth: +@@ -2089,9 +2089,9 @@ check_depth: + 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_set(&cmd->transport_sent, 1); + atomic_set(&cmd->t_transport_sent, 1); -@@ -4665,7 +4665,7 @@ static void transport_generic_wait_for_tasks( +@@ -4296,7 +4296,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_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; + } +@@ -4545,7 +4545,7 @@ int transport_check_aborted_status(struct se_cmd *cmd, int send_status) { int ret = 0; @@ -37539,39 +35696,17 @@ index 013c100..8fd2e57 100644 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) +@@ -4582,7 +4582,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(); - 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 -index 4c8b665..1d931eb 100644 +index b9040be..e3f5aab 100644 --- a/drivers/tty/hvc/hvcs.c +++ b/drivers/tty/hvc/hvcs.c @@ -83,6 +83,7 @@ @@ -37803,10 +35938,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 -index 8a50e4e..7d9ca3d 100644 +index fc7bbba..9527e93 100644 --- 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; @@ -37844,24 +35979,11 @@ index e18604b..a7d5a11 100644 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 -index 87e7e6c..89744e0 100644 +index 2b42a01..32a2ed3 100644 --- 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; @@ -37872,7 +35994,7 @@ index 87e7e6c..89744e0 100644 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); @@ -37881,7 +36003,7 @@ index 87e7e6c..89744e0 100644 } 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; @@ -37896,7 +36018,7 @@ index 87e7e6c..89744e0 100644 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) { @@ -37905,7 +36027,7 @@ index 87e7e6c..89744e0 100644 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: @@ -37925,7 +36047,7 @@ index 87e7e6c..89744e0 100644 return 0; noconfig: -@@ -212,7 +219,7 @@ noconfig: +@@ -213,7 +220,7 @@ noconfig: static int __init init_kgdboc(void) { /* Already configured? */ @@ -37934,7 +36056,7 @@ index 87e7e6c..89744e0 100644 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'; @@ -37943,7 +36065,7 @@ index 87e7e6c..89744e0 100644 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, }; @@ -37959,37 +36081,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) -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 -index 1a890e2..1d8139c 100644 +index 05085be..67eadb0 100644 --- 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) { @@ -37999,7 +36095,7 @@ index 1a890e2..1d8139c 100644 /* 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) @@ -38048,10 +36144,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 -index 3761ccf..2c613b3 100644 +index a605549..6bd3c96 100644 --- 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 */ @@ -38068,21 +36164,8 @@ index 3761ccf..2c613b3 100644 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, ¶m); - } - 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 @@ -38126,7 +36209,7 @@ index 5e096f4..0da1363 100644 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 @@ @@ -38211,7 +36294,7 @@ index d2efe82..9440ab6 100644 } 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); @@ -38317,7 +36400,7 @@ index d3448ca..d2864ca 100644 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[] = @@ -38348,7 +36431,7 @@ index 0149c09..f108812 100644 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 +index b3bdfed..a9460e0 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) @@ -38403,19 +36486,6 @@ index 1fc8f12..20647c1 100644 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 @@ -38439,10 +36509,10 @@ index d6bea3e..60b250e 100644 /** 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 -@@ -295,7 +295,7 @@ out: +@@ -296,7 +296,7 @@ out: */ static void wa_xfer_id_init(struct wa_xfer *xfer) { @@ -38492,7 +36562,7 @@ index 5c3960d..15cf8fc 100644 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, @@ -38513,25 +36583,7 @@ index ad93629..ca6a218 100644 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; @@ -38554,7 +36606,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 -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 { @@ -41343,10 +39395,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 -index 087fc99..f85ed76 100644 +index 3473e75..c930142 100644 --- 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: @@ -41362,7 +39414,7 @@ index 087fc99..f85ed76 100644 >> 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: @@ -41378,7 +39430,7 @@ index 087fc99..f85ed76 100644 >> 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", @@ -41387,7 +39439,7 @@ index 087fc99..f85ed76 100644 } 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", @@ -41396,7 +39448,7 @@ index 087fc99..f85ed76 100644 } 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", @@ -41405,7 +39457,7 @@ index 087fc99..f85ed76 100644 } 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", @@ -41414,7 +39466,7 @@ index 087fc99..f85ed76 100644 } 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; @@ -41627,19 +39679,6 @@ index 88714ae..16c2e11 100644 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 @@ -41664,10 +39703,10 @@ index e56c934..fc22f4b 100644 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 -@@ -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) { @@ -41690,7 +39729,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 -index e29ec48..f083e5e 100644 +index 969beb0..09fab51 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -119,7 +119,7 @@ static int aio_setup_ring(struct kioctx *ctx) @@ -41702,16 +39741,7 @@ index e29ec48..f083e5e 100644 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; @@ -41723,14 +39753,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, - &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, - &kiocb->ki_iovec); + &kiocb->ki_iovec, 1); if (ret < 0) goto out; @@ -41742,10 +39772,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 -index 538e279..046cc6d 100644 +index 7ee7ba4..0c61a60 100644 --- 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); @@ -41767,7 +39797,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 -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) @@ -41780,7 +39810,7 @@ index 720d885..012e7f0 100644 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 @@ @@ -41822,7 +39852,17 @@ index a6395bd..a5b24c4 100644 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; @@ -41850,7 +39890,7 @@ index a6395bd..a5b24c4 100644 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(¤t->mm->mmap_sem); error = do_mmap(bprm->file, N_DATADDR(ex), ex.a_data, @@ -41859,11 +39899,33 @@ index a6395bd..a5b24c4 100644 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE, fd_offset + ex.a_text); up_write(¤t->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 -index 21ac5ee..171b1d0 100644 +index 21ac5ee..dbf63ee 100644 --- 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 + #include + #include ++#include + #include + #include + #include +@@ -51,6 +52,10 @@ static int elf_core_dump(struct coredump_params *cprm); #define elf_core_dump NULL #endif @@ -41874,19 +39936,19 @@ index 21ac5ee..171b1d0 100644 #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 -+ .handle_mprotect= elf_handle_mprotect, ++ .handle_mprotect= elf_handle_mprotect, +#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) { @@ -41895,7 +39957,7 @@ index 21ac5ee..171b1d0 100644 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; } @@ -41904,7 +39966,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -41916,12 +39978,10 @@ index 21ac5ee..171b1d0 100644 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 -@@ -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)); @@ -41936,7 +39996,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -41949,7 +40009,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -41962,7 +40022,7 @@ index 21ac5ee..171b1d0 100644 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; } @@ -41974,7 +40034,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) { -@@ -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 || @@ -41985,15 +40045,17 @@ index 21ac5ee..171b1d0 100644 error = -ENOMEM; goto out_close; } -@@ -528,6 +553,193 @@ out: +@@ -528,6 +552,351 @@ out: 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; + ++#ifdef CONFIG_PAX_PT_PAX_FLAGS ++ +#ifdef CONFIG_PAX_PAGEEXEC + if (elf_phdata->p_flags & PF_PAGEEXEC) + pax_flags |= MF_PAX_PAGEEXEC; @@ -42028,15 +40090,17 @@ index 21ac5ee..171b1d0 100644 + pax_flags |= MF_PAX_RANDMMAP; +#endif + ++#endif ++ + 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; + ++#ifdef CONFIG_PAX_PT_PAX_FLAGS ++ +#ifdef CONFIG_PAX_PAGEEXEC + if (!(elf_phdata->p_flags & PF_NOPAGEEXEC)) + pax_flags |= MF_PAX_PAGEEXEC; @@ -42071,15 +40135,17 @@ index 21ac5ee..171b1d0 100644 + pax_flags |= MF_PAX_RANDMMAP; +#endif + ++#endif ++ + 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; + ++#ifdef CONFIG_PAX_EI_PAX ++ +#ifdef CONFIG_PAX_PAGEEXEC + if (!(elf_ex->e_ident[EI_PAX] & EF_PAX_PAGEEXEC)) + pax_flags |= MF_PAX_PAGEEXEC; @@ -42114,25 +40180,38 @@ index 21ac5ee..171b1d0 100644 + pax_flags |= MF_PAX_RANDMMAP; +#endif + -+ return pax_flags; -+} ++#else ++ ++#ifdef CONFIG_PAX_PAGEEXEC ++ pax_flags |= MF_PAX_PAGEEXEC; +#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 ++ ++#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 + -+#ifdef CONFIG_PAX_EI_PAX -+ pax_flags = pax_parse_ei_pax(elf_ex); +#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 ++ 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)) || @@ -42140,34 +40219,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))) -+ return -EINVAL; ++ return ~0UL; + +#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 + -+ pax_flags = pax_parse_hardmode(&elf_phdata[i]); -+ found_flags = 1; ++ return pax_parse_pt_pax_hardmode(&elf_phdata[i]); + 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 ++ pax_flags &= ~MF_PAX_PAGEEXEC; ++ } ++#endif ++ ++#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 -+ pax_flags = pax_parse_hardmode(&phdr); ++ ++#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 + ++#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; + @@ -42179,7 +40397,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. -@@ -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; @@ -42191,7 +40409,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -42200,7 +40418,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -42213,7 +40431,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -42238,8 +40456,8 @@ index 21ac5ee..171b1d0 100644 + + 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; + } @@ -42296,7 +40514,7 @@ index 21ac5ee..171b1d0 100644 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 @@ -42317,7 +40535,7 @@ index 21ac5ee..171b1d0 100644 } 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. */ @@ -42330,7 +40548,7 @@ index 21ac5ee..171b1d0 100644 /* 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; @@ -42342,7 +40560,7 @@ index 21ac5ee..171b1d0 100644 /* 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))) { @@ -42357,7 +40575,7 @@ index 21ac5ee..171b1d0 100644 } 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, @@ -42366,7 +40584,7 @@ index 21ac5ee..171b1d0 100644 { #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; @@ -42375,7 +40593,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -42387,7 +40605,16 @@ index 21ac5ee..171b1d0 100644 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, +@@ -1421,7 +1886,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t, + for (i = 1; i < view->n; ++i) { + const struct user_regset *regset = &view->regsets[i]; + do_thread_regset_writeback(t->task, regset); +- if (regset->core_note_type && ++ if (regset->core_note_type && regset->get && + (!regset->active || regset->active(t->task, regset))) { + int ret; + size_t size = regset->n * regset->size; +@@ -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, @@ -42404,7 +40631,7 @@ index 21ac5ee..171b1d0 100644 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); @@ -42413,7 +40640,7 @@ index 21ac5ee..171b1d0 100644 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); @@ -42426,7 +40653,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -42435,7 +40662,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; -@@ -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); @@ -42443,7 +40670,7 @@ index 21ac5ee..171b1d0 100644 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; @@ -42452,7 +40679,7 @@ index 21ac5ee..171b1d0 100644 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); @@ -42460,7 +40687,7 @@ index 21ac5ee..171b1d0 100644 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); @@ -42468,7 +40695,7 @@ index 21ac5ee..171b1d0 100644 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 */ @@ -42603,7 +40830,7 @@ index 1bffbe0..c8c283e 100644 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) @@ -42616,7 +40843,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 -index 1c44b8d..e2507b4 100644 +index b07f1da..9efcb92 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, @@ -42629,7 +40856,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 -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, @@ -42649,10 +40876,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 -index b2d004a..6bb543d 100644 +index fd1a06d..6e9033d 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c -@@ -6922,7 +6922,7 @@ fail: +@@ -6895,7 +6895,7 @@ fail: return -ENOMEM; } @@ -42661,7 +40888,7 @@ index b2d004a..6bb543d 100644 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; } @@ -42677,10 +40904,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 -index dae5dfe..6aa01b1 100644 +index c04f02c..f5c9e2e 100644 --- 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; @@ -42693,7 +40920,7 @@ index dae5dfe..6aa01b1 100644 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++; @@ -42711,10 +40938,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 -index 59bb176..be9977d 100644 +index cfb5543..1ae7347 100644 --- 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); @@ -42878,7 +41105,7 @@ index 0e3c092..818480e 100644 kunmap(page); if (ret != len) diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c -index 382abc9..bd89646 100644 +index 9895400..fa40a7d 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) @@ -42891,7 +41118,7 @@ index 382abc9..bd89646 100644 u32 ftype; struct ceph_mds_reply_info_parsed *rinfo; 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, @@ -43024,10 +41251,10 @@ index 6d40656..bc1f825 100644 } } 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 -@@ -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, @@ -43036,7 +41263,7 @@ index 54b8f1e..f6a4c00 100644 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", @@ -43045,7 +41272,7 @@ index 54b8f1e..f6a4c00 100644 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 @@ -43057,10 +41284,10 @@ index 54b8f1e..f6a4c00 100644 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 -@@ -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 @@ -43111,7 +41338,7 @@ index 95dad9d..fe7af1a 100644 #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 @@ -43120,7 +41347,7 @@ index 95dad9d..fe7af1a 100644 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 @@ -43132,10 +41359,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 -index db3f18c..1f5955e 100644 +index 6b0e064..94e6c3c 100644 --- 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) { @@ -43145,7 +41372,7 @@ index db3f18c..1f5955e 100644 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) @@ -43215,10 +41442,10 @@ index 6901578..d402eb5 100644 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 -@@ -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; @@ -43229,7 +41456,7 @@ index 58b1da4..afcd9b8 100644 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() */ @@ -43238,7 +41465,7 @@ index 58b1da4..afcd9b8 100644 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; @@ -43247,7 +41474,7 @@ index 58b1da4..afcd9b8 100644 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; @@ -43255,7 +41482,7 @@ index 58b1da4..afcd9b8 100644 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; } @@ -43266,7 +41493,7 @@ index 58b1da4..afcd9b8 100644 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; @@ -43274,7 +41501,7 @@ index 58b1da4..afcd9b8 100644 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; @@ -43282,7 +41509,7 @@ index 58b1da4..afcd9b8 100644 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; } @@ -43293,7 +41520,7 @@ index 58b1da4..afcd9b8 100644 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; @@ -43301,7 +41528,7 @@ index 58b1da4..afcd9b8 100644 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; @@ -43309,7 +41536,7 @@ index 58b1da4..afcd9b8 100644 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; @@ -43320,7 +41547,7 @@ index 58b1da4..afcd9b8 100644 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; @@ -43336,15 +41563,6 @@ index 58b1da4..afcd9b8 100644 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 @@ -43434,10 +41652,10 @@ index 9a37a9b..35792b6 100644 /* * 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 -@@ -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, @@ -43446,8 +41664,24 @@ index a88948b..1e32160 100644 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 -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, @@ -43478,7 +41712,7 @@ index 528da01..bd8c23d 100644 /* 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: @@ -43491,7 +41725,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 -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, @@ -43503,7 +41737,7 @@ index 3745f7c..89cc7a3 100644 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()); @@ -43513,10 +41747,10 @@ index 3745f7c..89cc7a3 100644 return rc; } diff --git a/fs/exec.c b/fs/exec.c -index 25dcbe5..4ffaa78 100644 +index 3625464..04855f9 100644 --- a/fs/exec.c +++ b/fs/exec.c -@@ -55,12 +55,24 @@ +@@ -55,12 +55,28 @@ #include #include #include @@ -43533,6 +41767,10 @@ index 25dcbe5..4ffaa78 100644 #include #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); @@ -43541,7 +41779,7 @@ index 25dcbe5..4ffaa78 100644 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; }; @@ -43550,7 +41788,7 @@ index 25dcbe5..4ffaa78 100644 /* 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; @@ -43572,7 +41810,25 @@ index 25dcbe5..4ffaa78 100644 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 1MB for argv+env on suid/sgid binaries ++ // to prevent easy ASLR exhaustion ++ if (((bprm->cred->euid != current_euid()) || ++ (bprm->cred->egid != current_egid())) && ++ (size > (1024 * 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; @@ -43584,7 +41840,7 @@ index 25dcbe5..4ffaa78 100644 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 *); @@ -43597,7 +41853,7 @@ index 25dcbe5..4ffaa78 100644 return 0; err: up_write(&mm->mmap_sem); -@@ -396,19 +411,7 @@ err: +@@ -396,19 +426,7 @@ err: return err; } @@ -43618,7 +41874,7 @@ index 25dcbe5..4ffaa78 100644 { 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)) @@ -43635,7 +41891,7 @@ index 25dcbe5..4ffaa78 100644 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; @@ -43644,7 +41900,7 @@ index 25dcbe5..4ffaa78 100644 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); @@ -43653,7 +41909,7 @@ index 25dcbe5..4ffaa78 100644 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 = { @@ -43662,7 +41918,7 @@ index 25dcbe5..4ffaa78 100644 }; 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; @@ -43672,7 +41928,7 @@ index 25dcbe5..4ffaa78 100644 /* * 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; @@ -43683,7 +41939,7 @@ index 25dcbe5..4ffaa78 100644 /* * 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); @@ -43694,7 +41950,7 @@ index 25dcbe5..4ffaa78 100644 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); @@ -43723,7 +41979,7 @@ index 25dcbe5..4ffaa78 100644 /* * 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); @@ -43737,7 +41993,7 @@ index 25dcbe5..4ffaa78 100644 /* 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() */ @@ -43746,7 +42002,68 @@ index 25dcbe5..4ffaa78 100644 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(); @@ -43755,7 +42072,18 @@ index 25dcbe5..4ffaa78 100644 bprm->unsafe |= LSM_UNSAFE_SHARE; } else { res = -EAGAIN; -@@ -1454,6 +1471,11 @@ static int do_execve_common(const char *filename, +@@ -1442,6 +1475,10 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) + + EXPORT_SYMBOL(search_binary_handler); + ++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP ++static atomic64_unchecked_t global_exec_counter = ATOMIC64_INIT(0); ++#endif ++ + /* + * sys_execve() executes a new program. + */ +@@ -1450,6 +1487,11 @@ static int do_execve_common(const char *filename, struct user_arg_ptr envp, struct pt_regs *regs) { @@ -43767,7 +42095,7 @@ index 25dcbe5..4ffaa78 100644 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 +1499,8 @@ static int do_execve_common(const char *filename, int retval; const struct cred *cred = current_cred(); @@ -43776,7 +42104,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 -@@ -1507,6 +1531,16 @@ static int do_execve_common(const char *filename, +@@ -1497,12 +1541,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; @@ -43793,7 +42132,7 @@ index 25dcbe5..4ffaa78 100644 retval = bprm_mm_init(bprm); if (retval) goto out_file; -@@ -1536,9 +1570,40 @@ static int do_execve_common(const char *filename, +@@ -1532,11 +1591,46 @@ static int do_execve_common(const char *filename, if (retval < 0) goto out; @@ -43820,7 +42159,7 @@ index 25dcbe5..4ffaa78 100644 +#endif + + retval = gr_set_proc_label(file->f_dentry, file->f_vfsmnt, -+ bprm->unsafe & LSM_UNSAFE_SHARE); ++ bprm->unsafe); + if (retval < 0) + goto out_fail; + @@ -43834,8 +42173,14 @@ index 25dcbe5..4ffaa78 100644 +#endif /* execve succeeded */ ++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP ++ current->exec_id = atomic64_inc_return_unchecked(&global_exec_counter); ++#endif ++ 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 +1639,14 @@ static int do_execve_common(const char *filename, put_files_struct(displaced); return retval; @@ -43850,7 +42195,7 @@ index 25dcbe5..4ffaa78 100644 out: if (bprm->mm) { acct_arg_size(bprm, 0); -@@ -1622,7 +1695,7 @@ static int expand_corename(struct core_name *cn) +@@ -1618,7 +1720,7 @@ static int expand_corename(struct core_name *cn) { char *old_corename = cn->corename; @@ -43859,7 +42204,7 @@ index 25dcbe5..4ffaa78 100644 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 +1817,7 @@ static int format_corename(struct core_name *cn, long signr) int pid_in_pattern = 0; int err = 0; @@ -43868,7 +42213,7 @@ index 25dcbe5..4ffaa78 100644 cn->corename = kmalloc(cn->size, GFP_KERNEL); cn->used = 0; -@@ -1816,6 +1889,218 @@ out: +@@ -1812,6 +1914,218 @@ out: return ispipe; } @@ -44087,7 +42432,7 @@ index 25dcbe5..4ffaa78 100644 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 +2337,17 @@ static void wait_for_dump_helpers(struct file *file) pipe = file->f_path.dentry->d_inode->i_pipe; pipe_lock(pipe); @@ -44110,7 +42455,7 @@ index 25dcbe5..4ffaa78 100644 pipe_unlock(pipe); } -@@ -2098,7 +2383,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) +@@ -2094,7 +2408,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) int retval = 0; int flag = 0; int ispipe; @@ -44119,7 +42464,7 @@ index 25dcbe5..4ffaa78 100644 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 +2423,9 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) audit_core_dumps(signr); @@ -44129,7 +42474,7 @@ index 25dcbe5..4ffaa78 100644 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 +2493,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) } cprm.limit = RLIM_INFINITY; @@ -44138,7 +42483,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); -@@ -2207,6 +2495,8 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) +@@ -2203,6 +2520,8 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) } else { struct inode *inode; @@ -44147,7 +42492,7 @@ index 25dcbe5..4ffaa78 100644 if (cprm.limit < binfmt->min_coredump) goto fail_unlock; -@@ -2250,7 +2540,7 @@ close_fail: +@@ -2246,7 +2565,7 @@ close_fail: filp_close(cprm.file, NULL); fail_dropcount: if (ispipe) @@ -44156,7 +42501,7 @@ index 25dcbe5..4ffaa78 100644 fail_unlock: kfree(cn.corename); fail_corename: -@@ -2269,7 +2559,7 @@ fail: +@@ -2265,7 +2584,7 @@ fail: */ int dump_write(struct file *file, const void *addr, int nr) { @@ -44166,7 +42511,7 @@ index 25dcbe5..4ffaa78 100644 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) @@ -44179,38 +42524,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 -index 6386d76..0a266b1 100644 +index a203892..4e64db5 100644 --- 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) && -+ 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 1; 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 -@@ -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)) { -+ (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 -index 5c38120..2291d18 100644 +index 5b0e26a..0aa002d 100644 --- 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 */ @@ -44240,48 +42589,11 @@ index 5c38120..2291d18 100644 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 -index 17a5a57..b6be3c5 100644 +index e2d8be8..c7f0ce9 100644 --- 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) @@ -44290,7 +42602,7 @@ index 17a5a57..b6be3c5 100644 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; @@ -44299,16 +42611,7 @@ index 17a5a57..b6be3c5 100644 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)", @@ -44344,7 +42647,7 @@ index 17a5a57..b6be3c5 100644 } 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) { @@ -44367,16 +42670,16 @@ index 17a5a57..b6be3c5 100644 } 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); -- 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); -@@ -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); @@ -44385,7 +42688,7 @@ index 17a5a57..b6be3c5 100644 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. */ } @@ -44394,7 +42697,7 @@ index 17a5a57..b6be3c5 100644 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); @@ -44557,7 +42860,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 -index 78b519c..212c0d0 100644 +index 78b519c..a8b4979 100644 --- a/fs/fs_struct.c +++ b/fs/fs_struct.c @@ -4,6 +4,7 @@ @@ -44624,7 +42927,14 @@ index 78b519c..212c0d0 100644 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 = { @@ -45955,10 +44265,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 -index b6cca47..ec782c3 100644 +index 3426521..3b75162 100644 --- 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 */ @@ -45976,7 +44286,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 -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, @@ -46002,10 +44312,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 -index 900cf98..3896726 100644 +index cfd4959..a780959 100644 --- 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) { @@ -46014,153 +44324,8 @@ index 900cf98..3896726 100644 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 -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 = { @@ -46173,7 +44338,7 @@ index ec88953..cb5e98e 100644 static int can_do_hugetlb_shm(void) { diff --git a/fs/inode.c b/fs/inode.c -index ec79246..054c36a 100644 +index ee4e66b..0451521 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -787,8 +787,8 @@ unsigned int get_next_ino(void) @@ -46187,54 +44352,6 @@ index ec79246..054c36a 100644 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 (outposflags & 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 -index 06c8a67..589dbbd 100644 +index a44eff0..462e07d 100644 --- 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, @@ -46290,7 +44394,7 @@ index 06c8a67..589dbbd 100644 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) @@ -46318,7 +44422,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 -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; @@ -46335,20 +44439,11 @@ index 8392cb8..ae8ed40 100644 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 -index 703f545..150a552 100644 +index 637694b..f84a121 100644 --- 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) { @@ -46369,144 +44464,11 @@ index 703f545..150a552 100644 } 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; is_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 -index 3d15072..c1ddf9c 100644 +index 744e942..24ef47f 100644 --- 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; @@ -46542,7 +44504,7 @@ index 3d15072..c1ddf9c 100644 * 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; @@ -46578,7 +44540,7 @@ index 3d15072..c1ddf9c 100644 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); @@ -46600,7 +44562,7 @@ index 3d15072..c1ddf9c 100644 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)) { @@ -46616,36 +44578,21 @@ index 3d15072..c1ddf9c 100644 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); @@ -46662,7 +44609,7 @@ index 3d15072..c1ddf9c 100644 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); @@ -46679,7 +44626,7 @@ index 3d15072..c1ddf9c 100644 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) return ERR_PTR(-ECHILD); @@ -46696,7 +44643,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46709,7 +44656,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46718,7 +44665,7 @@ index 3d15072..c1ddf9c 100644 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. */ @@ -46738,7 +44685,7 @@ index 3d15072..c1ddf9c 100644 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: @@ -46750,7 +44697,7 @@ index 3d15072..c1ddf9c 100644 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); @@ -46771,7 +44718,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); -@@ -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; @@ -46789,7 +44736,7 @@ index 3d15072..c1ddf9c 100644 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); @@ -46799,7 +44746,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46821,7 +44768,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46830,7 +44777,7 @@ index 3d15072..c1ddf9c 100644 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; } @@ -46846,7 +44793,7 @@ index 3d15072..c1ddf9c 100644 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); @@ -46855,7 +44802,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46864,7 +44811,7 @@ index 3d15072..c1ddf9c 100644 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); @@ -46881,7 +44828,7 @@ index 3d15072..c1ddf9c 100644 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); @@ -46890,7 +44837,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46909,7 +44856,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46917,7 +44864,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46926,7 +44873,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46957,16 +44904,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -46979,7 +44917,7 @@ index 3d15072..c1ddf9c 100644 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); @@ -46989,7 +44927,7 @@ index 3d15072..c1ddf9c 100644 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) { @@ -46998,7 +44936,7 @@ index 3d15072..c1ddf9c 100644 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; @@ -47015,10 +44953,10 @@ index 3d15072..c1ddf9c 100644 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 -@@ -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); @@ -47028,7 +44966,7 @@ index e5e1c7d..019609e 100644 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); @@ -47038,7 +44976,7 @@ index e5e1c7d..019609e 100644 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); @@ -47055,7 +44993,7 @@ index e5e1c7d..019609e 100644 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); @@ -47065,7 +45003,7 @@ index e5e1c7d..019609e 100644 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; @@ -47077,70 +45015,8 @@ index e5e1c7d..019609e 100644 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/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) @@ -47153,7 +45029,7 @@ index 281ae95..dd895b9 100644 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) @@ -47185,37 +45061,11 @@ index 679d2f5..ef1ffec 100644 } 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 -index acf88ae..4fd6245 100644 +index 7a2e442..8e544cc 100644 --- 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); @@ -47224,7 +45074,7 @@ index acf88ae..4fd6245 100644 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); @@ -47233,7 +45083,7 @@ index acf88ae..4fd6245 100644 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); @@ -47317,21 +45167,8 @@ index 210c352..a174f83 100644 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 -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 @@ -47410,10 +45247,10 @@ index ba5d97e..c77db25 100644 } } 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 -@@ -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", @@ -47430,7 +45267,7 @@ index 56f6102..1433c29 100644 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); @@ -47461,7 +45298,7 @@ index 5d22872..523db20 100644 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) @@ -47527,7 +45364,7 @@ index f711921..28d5958 100644 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; + } @@ -47575,10 +45412,10 @@ index 6296b40..417c00f 100644 (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 -@@ -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; } @@ -47588,7 +45425,7 @@ index af9fdf0..75b15c3 100644 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: @@ -47746,7 +45583,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 -index 3a1dafd..c7fed72 100644 +index 3a1dafd..bf1bd84 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -60,6 +60,7 @@ @@ -47804,16 +45641,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) { -@@ -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; -+ 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); -@@ -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; } @@ -47833,7 +45675,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); -@@ -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, @@ -47849,7 +45691,24 @@ index 3a1dafd..c7fed72 100644 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; } @@ -47869,7 +45728,7 @@ index 3a1dafd..c7fed72 100644 +} +#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 { @@ -47895,17 +45754,34 @@ index 5eb0206..fe01db4 100644 #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 */ @@ -47915,7 +45791,7 @@ index 5eb0206..fe01db4 100644 len = mm->arg_end - mm->arg_start; if (len > PAGE_SIZE) -@@ -309,12 +331,28 @@ out: +@@ -256,12 +255,28 @@ out: return res; } @@ -47944,7 +45820,7 @@ index 5eb0206..fe01db4 100644 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 +45829,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. -@@ -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); } @@ -47962,7 +45838,7 @@ index 5eb0206..fe01db4 100644 #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; } @@ -47971,7 +45847,7 @@ index 5eb0206..fe01db4 100644 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 */ @@ -47980,7 +45856,7 @@ index 5eb0206..fe01db4 100644 { 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) { @@ -47992,7 +45868,36 @@ index 5eb0206..fe01db4 100644 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; @@ -48002,7 +45907,7 @@ index 5eb0206..fe01db4 100644 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? */ @@ -48011,7 +45916,7 @@ index 5eb0206..fe01db4 100644 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? */ @@ -48032,7 +45937,7 @@ index 5eb0206..fe01db4 100644 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; @@ -48044,7 +45949,7 @@ index 5eb0206..fe01db4 100644 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; @@ -48054,7 +45959,7 @@ index 5eb0206..fe01db4 100644 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); @@ -48097,7 +46002,7 @@ index 5eb0206..fe01db4 100644 } 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)) || @@ -48118,7 +46023,7 @@ index 5eb0206..fe01db4 100644 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) { @@ -48128,7 +46033,7 @@ index 5eb0206..fe01db4 100644 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) { @@ -48152,7 +46057,7 @@ index 5eb0206..fe01db4 100644 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; @@ -48162,7 +46067,7 @@ index 5eb0206..fe01db4 100644 /* * Yes, it does not scale. And it should not. Don't add * new entries into /proc// 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; @@ -48172,7 +46077,7 @@ index 5eb0206..fe01db4 100644 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) { @@ -48181,7 +46086,7 @@ index 5eb0206..fe01db4 100644 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), @@ -48190,7 +46095,7 @@ index 5eb0206..fe01db4 100644 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 @@ -48203,7 +46108,7 @@ index 5eb0206..fe01db4 100644 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 @@ -48213,7 +46118,7 @@ index 5eb0206..fe01db4 100644 }; 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; @@ -48228,7 +46133,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; -@@ -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; @@ -48240,7 +46145,7 @@ index 5eb0206..fe01db4 100644 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; @@ -48252,7 +46157,7 @@ index 5eb0206..fe01db4 100644 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)) { @@ -48281,7 +46186,7 @@ index 5eb0206..fe01db4 100644 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), @@ -48290,7 +46195,7 @@ index 5eb0206..fe01db4 100644 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 @@ -48336,7 +46241,7 @@ index b143471..bb105e5 100644 } 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 @@ @@ -48399,19 +46304,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 -index d245cb2..7e645bd 100644 +index d245cb2..f4e8498 100644 --- 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); @@ -48424,7 +46320,7 @@ index d245cb2..7e645bd 100644 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)) { @@ -48459,7 +46355,7 @@ index d245cb2..7e645bd 100644 } 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) { @@ -48470,19 +46366,10 @@ index d245cb2..7e645bd 100644 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 -@@ -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 @@ -48527,10 +46414,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 -index 1a77dbe..56ec911 100644 +index a6b6217..1e0579d 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c -@@ -8,11 +8,13 @@ +@@ -9,11 +9,13 @@ #include #include "internal.h" @@ -48544,9 +46431,9 @@ index 1a77dbe..56ec911 100644 -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); @@ -48561,7 +46448,20 @@ index 1a77dbe..56ec911 100644 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); @@ -48571,7 +46471,7 @@ index 1a77dbe..56ec911 100644 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; @@ -48581,7 +46481,7 @@ index 1a77dbe..56ec911 100644 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); @@ -48591,12 +46491,7 @@ index 1a77dbe..56ec911 100644 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, }; @@ -48613,10 +46508,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 -index 9a8a2b7..3018df6 100644 +index 03102d9..4ae347e 100644 --- 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 @@ -48633,10 +46528,18 @@ index 9a8a2b7..3018df6 100644 } 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 -@@ -51,8 +51,13 @@ void task_mem(struct seq_file *m, struct mm_struct *mm) +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -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" @@ -48651,8 +46554,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_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, @@ -48667,7 +46570,7 @@ index c7d4ee6..41c5564 100644 } 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; } @@ -48680,7 +46583,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; -@@ -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; } @@ -48699,7 +46602,7 @@ index c7d4ee6..41c5564 100644 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', @@ -48711,7 +46614,7 @@ index c7d4ee6..41c5564 100644 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); @@ -48720,7 +46623,7 @@ index c7d4ee6..41c5564 100644 } 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]"; @@ -48732,9 +46635,30 @@ index c7d4ee6..41c5564 100644 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 */ @@ -48754,7 +46678,7 @@ index c7d4ee6..41c5564 100644 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", @@ -48766,7 +46690,29 @@ index c7d4ee6..41c5564 100644 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="); @@ -48921,19 +46867,6 @@ index 356f715..c918d38 100644 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 @@ -48947,34 +46880,8 @@ index 60c0804..d814f98 100644 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 -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) @@ -48986,79 +46893,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), -@@ -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 -index d33418f..f8e06bc 100644 +index d33418f..2a5345e 100644 --- a/fs/select.c +++ b/fs/select.c @@ -20,6 +20,7 @@ @@ -49069,39 +46905,37 @@ index d33418f..f8e06bc 100644 #include /* for STICKY_TIMEOUTS */ #include #include -@@ -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; -+ 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 -index 05d6b0e..ee96362 100644 +index dba43c3..9fb8511 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c -@@ -76,7 +76,8 @@ static int traverse(struct seq_file *m, loff_t offset) +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -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 +@@ -76,7 +80,8 @@ static int traverse(struct seq_file *m, loff_t offset) return 0; } if (!m->buf) { @@ -49111,7 +46945,7 @@ index 05d6b0e..ee96362 100644 if (!m->buf) return -ENOMEM; } -@@ -116,7 +117,8 @@ static int traverse(struct seq_file *m, loff_t offset) +@@ -116,7 +121,8 @@ static int traverse(struct seq_file *m, loff_t offset) Eoverflow: m->op->stop(m, p); kfree(m->buf); @@ -49121,7 +46955,7 @@ index 05d6b0e..ee96362 100644 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) +@@ -169,7 +175,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) { @@ -49131,7 +46965,7 @@ index 05d6b0e..ee96362 100644 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) +@@ -210,7 +217,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); @@ -49141,7 +46975,7 @@ index 05d6b0e..ee96362 100644 if (!m->buf) goto Enomem; m->count = 0; -@@ -549,7 +553,7 @@ static void single_stop(struct seq_file *p, void *v) +@@ -549,7 +557,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 +46985,7 @@ index 05d6b0e..ee96362 100644 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, @@ -49175,16 +47009,7 @@ index fa2defa..9a697a5 100644 } 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() */ @@ -49193,7 +47018,7 @@ index fa2defa..9a697a5 100644 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() */ @@ -49202,16 +47027,7 @@ index fa2defa..9a697a5 100644 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); @@ -49220,7 +47036,7 @@ index fa2defa..9a697a5 100644 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) { @@ -49233,7 +47049,7 @@ index fa2defa..9a697a5 100644 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. */ @@ -49242,16 +47058,7 @@ index fa2defa..9a697a5 100644 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; } @@ -49263,7 +47070,7 @@ index fa2defa..9a697a5 100644 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) { @@ -49272,7 +47079,7 @@ index fa2defa..9a697a5 100644 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; } @@ -49284,7 +47091,7 @@ index fa2defa..9a697a5 100644 } pipe_unlock(pipe); -@@ -1819,14 +1825,14 @@ retry: +@@ -1819,14 +1819,14 @@ retry: pipe_double_lock(ipipe, opipe); do { @@ -49301,7 +47108,7 @@ index fa2defa..9a697a5 100644 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 { @@ -49310,7 +47117,7 @@ index fa2defa..9a697a5 100644 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 */ @@ -49319,8 +47126,31 @@ index fa2defa..9a697a5 100644 ret = -EAGAIN; pipe_unlock(ipipe); +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 -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); @@ -49368,22 +47198,6 @@ index 1ad8c93..6633545 100644 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 @@ -49397,24 +47211,11 @@ index a7ac78f..02158e1 100644 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/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 -@@ -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) { @@ -49449,10 +47250,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 -index f060663..def7007 100644 +index 67583de..c5aad14 100644 --- 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 @@ -49461,7 +47262,7 @@ index f060663..def7007 100644 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); } @@ -49476,7 +47277,7 @@ index f060663..def7007 100644 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) { @@ -49485,7 +47286,7 @@ index f060663..def7007 100644 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) { @@ -49494,7 +47295,7 @@ index f060663..def7007 100644 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; @@ -49530,10 +47331,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 -index 452a291..91a95f3b 100644 +index d0ab788..827999b 100644 --- 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 @@ -49564,7 +47365,7 @@ index 79d05e8..e3e5861 100644 *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( @@ -49577,10 +47378,10 @@ index f7ce7de..e1a5db0 100644 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 -@@ -446,7 +446,7 @@ xfs_vn_put_link( +@@ -447,7 +447,7 @@ xfs_vn_put_link( struct nameidata *nd, void *p) { @@ -49591,10 +47392,10 @@ index 474920b..97169a9 100644 kfree(s); diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig new file mode 100644 -index 0000000..9629731 +index 0000000..41df561 --- /dev/null +++ b/grsecurity/Kconfig -@@ -0,0 +1,1037 @@ +@@ -0,0 +1,1075 @@ +# +# grecurity configuration +# @@ -49729,9 +47530,11 @@ index 0000000..9629731 + 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_PTRACE_READEXEC + select GRKERNSEC_VM86 if (X86_32) + select GRKERNSEC_KERN_LOCKOUT if (X86 || ARM || PPC || SPARC) + select PAX @@ -49799,7 +47602,7 @@ index 0000000..9629731 + +endchoice + -+menu "Address Space Protection" ++menu "Memory Protections" +depends on GRKERNSEC + +config GRKERNSEC_KMEM @@ -49856,16 +47659,22 @@ index 0000000..9629731 + protect your kernel against modification, use the RBAC system. + +config GRKERNSEC_PROC_MEMMAP -+ bool "Remove addresses from /proc//[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//maps and /proc//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/ entries where the file descriptor was opened in a different ++ task than the one performing the read. Such attempts are logged. ++ Finally, this option limits argv/env strings for suid/sgid binaries ++ to 1MB to prevent a complete exhaustion of the stack entropy provided ++ by ASLR. ++ If you use PaX it is essential that you say Y here as it closes up ++ several holes that make full ASLR useless for suid/sgid binaries. + +config GRKERNSEC_BRUTE + bool "Deter exploit bruteforcing" @@ -50063,15 +47872,19 @@ index 0000000..9629731 + 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. -+ 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" @@ -50394,6 +48207,32 @@ index 0000000..9629731 + 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 @@ -50634,10 +48473,10 @@ index 0000000..9629731 +endmenu diff --git a/grsecurity/Makefile b/grsecurity/Makefile new file mode 100644 -index 0000000..be9ae3a +index 0000000..496e60d --- /dev/null +++ b/grsecurity/Makefile -@@ -0,0 +1,36 @@ +@@ -0,0 +1,40 @@ +# 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 +48485,10 @@ index 0000000..be9ae3a +# are copyright Brad Spengler - Open Source Security, Inc., and released +# under the GPL v2 or higher + ++ifndef CONFIG_IA64 ++KBUILD_CFLAGS += -Werror ++endif ++ +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 +48519,10 @@ index 0000000..be9ae3a +endif diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c new file mode 100644 -index 0000000..09258e0 +index 0000000..2733872 --- /dev/null +++ b/grsecurity/gracl.c -@@ -0,0 +1,4156 @@ +@@ -0,0 +1,4163 @@ +#include +#include +#include @@ -50699,7 +48542,7 @@ index 0000000..09258e0 +#include +#include +#include -+#include ++#include +#include +#include +#include @@ -52455,7 +50298,7 @@ index 0000000..09258e0 + +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; + @@ -52488,8 +50331,7 @@ index 0000000..09258e0 + 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; + } @@ -52951,17 +50793,18 @@ index 0000000..09258e0 +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->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->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; @@ -53148,6 +50991,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) +{ @@ -53169,6 +51014,12 @@ index 0000000..09258e0 + } 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 + */ @@ -53208,7 +51059,7 @@ index 0000000..09258e0 + +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; @@ -53221,13 +51072,12 @@ index 0000000..09258e0 + 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->acl->mode & (GR_LEARN | GR_INHERITLEARN)))) { ++ !(task->acl->mode & (GR_LEARN | GR_INHERITLEARN))) { + 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); @@ -55056,10 +52906,10 @@ index 0000000..955ddfb + 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 -@@ -0,0 +1,433 @@ +@@ -0,0 +1,435 @@ +#include +#include +#include @@ -55070,6 +52920,15 @@ index 0000000..4eda5c3 +#include +#include + ++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) @@ -55258,25 +53117,18 @@ index 0000000..4eda5c3 +} + +__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((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 { @@ -56902,10 +54754,10 @@ index 0000000..a2dc675 +} 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 -@@ -0,0 +1,439 @@ +@@ -0,0 +1,437 @@ +#include +#include +#include @@ -57145,15 +54997,8 @@ index 0000000..d81a586 +} + +__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, -+ mode_t mode) ++ umode_t *mode) +{ + return 1; +} @@ -57176,6 +55021,11 @@ index 0000000..d81a586 + return; +} + ++umode_t gr_acl_umask(void) ++{ ++ return 0; ++} ++ +__u32 +gr_acl_handle_mknod(const struct dentry * new_dentry, + const struct dentry * parent_dentry, @@ -57558,10 +55408,10 @@ index 0000000..8ca18bf +} 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 -@@ -0,0 +1,269 @@ +@@ -0,0 +1,277 @@ +#include +#include +#include @@ -57571,6 +55421,8 @@ index 0000000..356ef00 +#include +#include + ++int grsec_enable_ptrace_readexec; ++int grsec_enable_setxid; +int grsec_enable_brute; +int grsec_enable_link; +int grsec_enable_dmesg; @@ -57723,6 +55575,9 @@ index 0000000..356ef00 + 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 @@ -57751,6 +55606,9 @@ index 0000000..356ef00 +#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 @@ -58210,10 +56068,10 @@ index 0000000..a45d2e9 +} 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 -@@ -0,0 +1,33 @@ +@@ -0,0 +1,40 @@ +#include +#include +#include @@ -58247,6 +56105,13 @@ index 0000000..6c0416b + 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 @@ -58359,14 +56224,14 @@ index 0000000..a3b12a0 +} 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 -@@ -0,0 +1,14 @@ +@@ -0,0 +1,30 @@ +#include +#include +#include -+#include ++#include + +void +gr_audit_ptrace(struct task_struct *task) @@ -58377,12 +56242,28 @@ index 0000000..472c1d6 +#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 -index 0000000..cf090b3 +index 0000000..7a5b2de --- /dev/null +++ b/grsecurity/grsec_sig.c -@@ -0,0 +1,206 @@ +@@ -0,0 +1,207 @@ +#include +#include +#include @@ -58417,7 +56298,8 @@ index 0000000..cf090b3 +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)) { @@ -58841,10 +56723,10 @@ index 0000000..4030d57 +} 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 -@@ -0,0 +1,433 @@ +@@ -0,0 +1,451 @@ +#include +#include +#include @@ -58908,6 +56790,24 @@ index 0000000..174668f + .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", @@ -59302,10 +57202,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 -index 0000000..4a78774 +index 0000000..07e0dc0 --- /dev/null +++ b/grsecurity/grsec_tpe.c -@@ -0,0 +1,39 @@ +@@ -0,0 +1,73 @@ +#include +#include +#include @@ -59320,25 +57220,59 @@ index 0000000..4a78774 +#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 -+ ((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 -+ in_group_p(grsec_tpe_gid) ++ if (in_group_p(grsec_tpe_gid)) ++ msg = "being in untrusted group"; +#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; + } ++ msg = NULL; ++next_check: +#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 @@ -59908,7 +57842,7 @@ index 76bff2b..c7a14e2 100644 #endif /* _ASM_GENERIC_PGTABLE_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 @@ @@ -59919,7 +57853,7 @@ index db22d13..1f2e3e1 100644 *(__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. * @@ -59943,10 +57877,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 -index 9b7c2bb..76b7d1e 100644 +index bf4b2dc..2d0762f 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h -@@ -73,6 +73,7 @@ +@@ -72,6 +72,7 @@ #include #include #include @@ -59954,7 +57888,7 @@ index 9b7c2bb..76b7d1e 100644 #include "drm.h" #include -@@ -1035,7 +1036,7 @@ struct drm_device { +@@ -1038,7 +1039,7 @@ struct drm_device { /** \name Usage Counters */ /*@{ */ @@ -59963,7 +57897,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 */ -@@ -1046,7 +1047,7 @@ struct drm_device { +@@ -1049,7 +1050,7 @@ struct drm_device { /*@{ */ unsigned long counters; enum drm_stat_type types[15]; @@ -60040,10 +57974,27 @@ index 49a83ca..df96b54 100644 #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 -@@ -88,6 +88,7 @@ struct linux_binfmt { +@@ -18,7 +18,7 @@ struct pt_regs; + #define BINPRM_BUF_SIZE 128 + + #ifdef __KERNEL__ +-#include ++#include + + #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); @@ -60052,10 +58003,10 @@ index fd88a39..f4d0bad 100644 }; 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 -@@ -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; @@ -60065,7 +58016,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 -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 { @@ -60161,10 +58112,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 -index c421123..e343179 100644 +index a63d13d..069bfd5 100644 --- 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); @@ -60353,11 +58304,25 @@ index e9eaec5..bfeb9bb 100644 } static inline void set_mems_allowed(nodemask_t nodemask) +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 -index e5e468e..f079672 100644 +index 8a94217..15d49e3 100644 --- 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); @@ -60366,7 +58331,7 @@ index e5e468e..f079672 100644 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); @@ -60396,12 +58361,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 -index 347fdc3..cd01657 100644 +index e13117c..e9fc938 100644 --- 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; @@ -60422,7 +58387,7 @@ index 2362a0b..cfaf8fcc 100644 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; @@ -60481,7 +58446,7 @@ index 110821c..cb14c08 100644 #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 @@ -60489,7 +58454,7 @@ index 110821c..cb14c08 100644 #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 @@ -60498,7 +58463,7 @@ index 110821c..cb14c08 100644 #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. */ @@ -60533,10 +58498,10 @@ index 84ccf8e..2e9b14c 100644 }; 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 -@@ -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); @@ -60560,7 +58525,7 @@ index 003dc0f..3c4ea97 100644 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 { @@ -60594,8 +58559,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 -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 { @@ -60607,7 +58584,7 @@ index 96efa67..1261547 100644 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); @@ -60617,10 +58594,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 -index 02fa469..a15f279 100644 +index 6d18f35..ab71e2c 100644 --- 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; @@ -60631,10 +58608,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 -index 0000000..0dc3943 +index 0000000..8a130b6 --- /dev/null +++ b/include/linux/gracl.h -@@ -0,0 +1,317 @@ +@@ -0,0 +1,319 @@ +#ifndef GR_ACL_H +#define GR_ACL_H + @@ -60646,8 +58623,8 @@ index 0000000..0dc3943 + +/* 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, @@ -60810,6 +58787,8 @@ index 0000000..0dc3943 + uid_t *domain_children; + __u16 domain_child_num; + ++ umode_t umask; ++ + struct acl_subject_label **subj_hash; + __u32 subj_hash_size; +}; @@ -61115,10 +59094,10 @@ index 0000000..b30e9bc +#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 -@@ -0,0 +1,220 @@ +@@ -0,0 +1,221 @@ +#ifndef __GRINTERNAL_H +#define __GRINTERNAL_H + @@ -61155,6 +59134,7 @@ index 0000000..60cda84 +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; @@ -61341,10 +59321,10 @@ index 0000000..60cda84 +#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 -@@ -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 " @@ -61379,7 +59359,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_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 " @@ -61388,7 +59368,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_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 " @@ -61397,7 +59376,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 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 " @@ -61452,13 +59431,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_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_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 -index 0000000..bd25f72 +index 0000000..2ccf677 --- /dev/null +++ b/include/linux/grsecurity.h -@@ -0,0 +1,228 @@ +@@ -0,0 +1,229 @@ +#ifndef GR_SECURITY_H +#define GR_SECURITY_H +#include @@ -61473,12 +59454,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_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 @@ -61539,6 +59514,8 @@ index 0000000..bd25f72 +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); @@ -61593,10 +59570,8 @@ index 0000000..bd25f72 + 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, -+ 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, @@ -61612,7 +59587,7 @@ index 0000000..bd25f72 + 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, @@ -61674,16 +59649,23 @@ index 0000000..bd25f72 +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); + ++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 ++#ifdef CONFIG_GRKERNSEC_SETXID ++extern int grsec_enable_setxid; ++#endif +#endif + +#endif @@ -61713,10 +59695,10 @@ index 0000000..e7ffaaf + +#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 -@@ -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); @@ -61749,10 +59731,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 -index a6c652e..1f5878f 100644 +index 07d103a..04ec65b 100644 --- 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 *); }; @@ -61794,12 +59776,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 -index d14e058..4162929 100644 +index 32574ee..00d4ef1 100644 --- 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, @@ -61810,16 +59792,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) -@@ -164,6 +170,7 @@ extern struct cred init_cred; +@@ -166,6 +172,7 @@ extern struct 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 -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 { @@ -61832,10 +59814,10 @@ index 9310c69..6ebb244 100644 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 -@@ -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. */ @@ -61844,7 +59826,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 -@@ -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 { @@ -61860,7 +59842,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 -index 0df513b..fe901a2 100644 +index 3875719..4cd454c 100644 --- a/include/linux/kallsyms.h +++ b/include/linux/kallsyms.h @@ -15,7 +15,8 @@ @@ -61878,7 +59860,7 @@ index 0df513b..fe901a2 100644 #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); @@ -61889,7 +59871,7 @@ index 0df513b..fe901a2 100644 +#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 @@ -61922,20 +59904,20 @@ index fa39183..40160be 100644 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. */ - 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 -index eabb21a..3f030f4 100644 +index d526231..086e89b 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); @@ -61957,7 +59939,7 @@ index eabb21a..3f030f4 100644 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu); 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 { @@ -61996,10 +59978,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 -index 896b5e4..1159ad0 100644 +index 9970337..9444122 100644 --- 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); }; @@ -62008,10 +59990,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 -index fedc5f0..7cedb6d 100644 +index 4baadd1..2e0b45e 100644 --- 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 */ @@ -62026,7 +60008,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 */ -@@ -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); @@ -62061,7 +60043,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); -@@ -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 @@ -62077,7 +60059,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, -@@ -1417,6 +1405,7 @@ out: +@@ -1419,6 +1407,7 @@ out: } extern int do_munmap(struct mm_struct *, unsigned long, size_t); @@ -62085,7 +60067,7 @@ index fedc5f0..7cedb6d 100644 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); @@ -62096,7 +60078,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) -@@ -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; } @@ -62112,7 +60094,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); -@@ -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); @@ -62121,7 +60103,7 @@ index fedc5f0..7cedb6d 100644 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 */ @@ -62134,10 +60116,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 -index 10a2f62..c8fa287 100644 +index 5b42f1b..759e4b4 100644 --- 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 @@ -62146,12 +60128,12 @@ index 10a2f62..c8fa287 100644 }; 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 + -+#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 + @@ -62192,10 +60174,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 -index be1ac8d..26868ce 100644 +index 188cb2f..d78409b 100644 --- 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 */ @@ -62205,7 +60187,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 -index ae28e93..1ac2233 100644 +index 468819c..17b9db3 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -12,7 +12,7 @@ @@ -62227,18 +60209,18 @@ index ae28e93..1ac2233 100644 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 -@@ -16,6 +16,7 @@ - #include +@@ -17,6 +17,7 @@ #include #include + #include +#include #include #include -@@ -327,19 +328,16 @@ struct module +@@ -261,19 +262,16 @@ struct module int (*init)(void); /* If this is non-NULL, vfree after init() returns */ @@ -62262,7 +60244,7 @@ index 1c30087..fc2a442 100644 /* 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; @@ -62273,7 +60255,7 @@ index 1c30087..fc2a442 100644 #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); @@ -62351,10 +60333,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 -index ddaae98..3c70938 100644 +index 7939f63..ec6df57 100644 --- 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) \ @@ -62363,7 +60345,7 @@ index ddaae98..3c70938 100644 = { len, string }; \ __module_param_call(MODULE_PARAM_PREFIX, name, \ ¶m_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) \ @@ -62401,10 +60383,10 @@ index ffc0213..2c1f2cb 100644 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 -@@ -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); }; @@ -62412,6 +60394,15 @@ index ddee79b..67af106 100644 /* * 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 @@ -62441,7 +60432,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 -index 49c8727..34d2ae1 100644 +index a4c5624..79d6d88 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, @@ -62470,10 +60461,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 -index c816075..cd28c4d 100644 +index b1f8912..c955bff 100644 --- 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; @@ -62484,7 +60475,7 @@ index c816075..cd28c4d 100644 /* * 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. */ @@ -62513,10 +60504,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 -index daac05d..c6802ce 100644 +index d3085e7..fd01052 100644 --- 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) { @@ -62587,10 +60578,10 @@ index 643b96c..ef55a9c 100644 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 -@@ -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 @@ -62600,11 +60591,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); ++/* 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 -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); @@ -62665,6 +60658,30 @@ index e0879a7..a12f962 100644 #include #endif +diff --git a/include/linux/regset.h b/include/linux/regset.h +index 8abee65..5150fd1 100644 +--- a/include/linux/regset.h ++++ b/include/linux/regset.h +@@ -335,6 +335,9 @@ static inline int copy_regset_to_user(struct task_struct *target, + { + const struct user_regset *regset = &view->regsets[setno]; + ++ if (!regset->get) ++ return -EOPNOTSUPP; ++ + if (!access_ok(VERIFY_WRITE, data, size)) + return -EIO; + +@@ -358,6 +361,9 @@ static inline int copy_regset_from_user(struct task_struct *target, + { + const struct user_regset *regset = &view->regsets[setno]; + ++ if (!regset->set) ++ return -EOPNOTSUPP; ++ + if (!access_ok(VERIFY_READ, data, size)) + return -EIO; + diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h index 96d465f..b084e05 100644 --- a/include/linux/reiserfs_fs.h @@ -62716,6 +60733,19 @@ index c6c6084..5bf1212 100644 #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 @@ -62732,10 +60762,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 -index 41d0237..5a64056 100644 +index 1c4f3e9..b4e4851 100644 --- 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; @@ -62787,7 +60817,7 @@ index 41d0237..5a64056 100644 /* 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() */ @@ -62798,7 +60828,7 @@ index 41d0237..5a64056 100644 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]; @@ -62812,7 +60842,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()) -@@ -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; @@ -62829,7 +60859,7 @@ index 41d0237..5a64056 100644 /* 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 @@ -62841,13 +60871,19 @@ index 41d0237..5a64056 100644 #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 */ ++#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; @@ -62863,7 +60899,7 @@ index 41d0237..5a64056 100644 #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 }; @@ -62911,17 +60947,11 @@ index 41d0237..5a64056 100644 +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 + /* 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 { @@ -62931,7 +60961,7 @@ index 41d0237..5a64056 100644 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); @@ -62939,7 +60969,20 @@ index 41d0237..5a64056 100644 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); @@ -62948,7 +60991,7 @@ index 41d0237..5a64056 100644 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 @@ -62983,22 +61026,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 -index ebd2a53..2d949ae 100644 +index e8c619d..e0cbd1c 100644 --- a/include/linux/security.h +++ b/include/linux/security.h -@@ -36,6 +36,7 @@ - #include +@@ -37,6 +37,7 @@ #include #include + #include +#include #include /* 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 -@@ -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); }; @@ -63022,10 +61075,10 @@ index 92808b8..c28cac4 100644 /* shm_mode upper byte flags */ diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index 0f96646..cfb757a 100644 +index fe86488..1563c1c 100644 --- 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) { @@ -63034,7 +61087,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) { @@ -63043,7 +61096,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) { @@ -63052,7 +61105,7 @@ index 0f96646..cfb757a 100644 } /** -@@ -1458,7 +1458,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) +@@ -1523,7 +1523,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 @@ -63191,10 +61244,10 @@ index d00e0ba..1b3bf7b 100644 /* * If debugging is enabled, then the allocator can add additional diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h -index f58d641..c56bf9c 100644 +index a32bcfd..53b71f4 100644 --- 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 */ @@ -63203,7 +61256,7 @@ index f58d641..c56bf9c 100644 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) +@@ -215,7 +215,7 @@ static __always_inline struct kmem_cache *kmalloc_slab(size_t size) } void *kmem_cache_alloc(struct kmem_cache *, gfp_t); @@ -63226,10 +61279,10 @@ index de8832d..0147b46 100644 #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 -@@ -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: @@ -63241,7 +61294,7 @@ index db7bcaf..1aca77e 100644 } 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) { @@ -63250,7 +61303,7 @@ index db7bcaf..1aca77e 100644 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; @@ -63301,7 +61354,7 @@ index c14fe86..393245e 100644 #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 @@ -63317,7 +61370,7 @@ index 11684d9..0d245eb 100644 /* 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 *); @@ -63326,6 +61379,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, +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 @@ -63340,7 +61431,7 @@ index ff7dc08..893e1bd 100644 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 { @@ -63432,11 +61523,33 @@ index 99c1b4d..bb94261 100644 } 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 -index cf97b5b..40ebc87 100644 +index 6f8fbcf..8259001 100644 --- a/include/linux/vermagic.h +++ b/include/linux/vermagic.h -@@ -26,9 +26,35 @@ +@@ -25,9 +25,35 @@ #define MODULE_ARCH_VERMAGIC "" #endif @@ -63474,7 +61587,7 @@ index cf97b5b..40ebc87 100644 + MODULE_GRSEC diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h -index 687fb11..b342358 100644 +index 4bde182..aec92c1 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 */ @@ -63660,6 +61773,22 @@ index 65efb92..137adbb 100644 } 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 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 +61824,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 -index dd9f1e7..8c4dd86 100644 +index 4d1c74a..65e1221 100644 --- 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); }; @@ -63708,10 +61837,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 -index c5dedd8..a93b07b 100644 +index 8d55251..dfe5b0a 100644 --- 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); @@ -63745,13 +61874,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 -index a094477..bc91db1 100644 +index 2a7eefd..3250f3b 100644 --- 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_deferred(void); -extern atomic_t flow_cache_genid; +extern atomic_unchecked_t flow_cache_genid; @@ -63799,7 +61928,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 -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 { @@ -63857,10 +61986,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 -index f82a1e8..82d81e8 100644 +index f2419cf..473679f 100644 --- 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; @@ -63869,19 +61998,6 @@ index f82a1e8..82d81e8 100644 }; 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 @@ -63896,10 +62012,10 @@ index 2720884..3aa5c25 100644 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 -@@ -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) @@ -63941,10 +62057,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 -index 8e4062f..77b041e 100644 +index 32e3937..87a1dbc 100644 --- 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 @@ -63953,7 +62069,7 @@ index 8e4062f..77b041e 100644 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, @@ -63963,32 +62079,28 @@ index 8e4062f..77b041e 100644 { 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 -@@ -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 -index 67ea6fc..e42aee8 100644 +index 3b285f4..0219639 100644 --- 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 { @@ -64006,10 +62118,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 -index 2d0191c..a55797d 100644 +index 1a046b1..ee0bef0 100644 --- 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); @@ -64019,10 +62131,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 -index 7d96829..4ba78d3 100644 +index 5d1a758..1dbf795 100644 --- 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 *); }; @@ -64030,7 +62142,7 @@ index 7d96829..4ba78d3 100644 /** * 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 */ @@ -64040,7 +62152,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 -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 { @@ -64096,7 +62208,7 @@ index 8c05e47..2b5df97 100644 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 { @@ -64109,7 +62221,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 -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 { @@ -64134,10 +62246,10 @@ index af1b49e..a5d55a5 100644 /* * 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 -@@ -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); @@ -64160,10 +62272,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 -index 2704065..e10f3ef 100644 +index 94bbec3..3a8c6b0 100644 --- 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 *); @@ -64172,10 +62284,10 @@ index 2704065..e10f3ef 100644 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_timeout_left; - atomic_t t_task_cdbs_sent; - atomic_t t_transport_aborted; + atomic_unchecked_t t_task_cdbs_sent; @@ -64183,15 +62295,15 @@ index 2704065..e10f3ef 100644 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 dev_tur_active; 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 @@ -64215,12 +62327,12 @@ index 1c09820..7f5ec79 100644 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 -@@ -51,10 +51,10 @@ struct dlfb_data { - int base8; +@@ -52,10 +52,10 @@ struct dlfb_data { 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 */ @@ -64246,10 +62358,10 @@ index 0993a22..32ba2fe 100644 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 -@@ -1202,7 +1202,7 @@ config SLUB_DEBUG +@@ -1214,7 +1214,7 @@ config SLUB_DEBUG config COMPAT_BRK bool "Disable heap randomization" @@ -64259,10 +62371,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 -index c0851a8..4f8977d 100644 +index db6e5ee..7677ff7 100644 --- 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) { @@ -64276,7 +62388,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", -@@ -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); @@ -64298,7 +62410,7 @@ index c0851a8..4f8977d 100644 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"); @@ -64561,7 +62673,7 @@ index 2531811..040d4d4 100644 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) { } @@ -64590,7 +62702,7 @@ index 03b408d..5777f59 100644 + 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; @@ -64623,7 +62735,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; -@@ -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; @@ -64631,7 +62743,7 @@ index 03b408d..5777f59 100644 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) { @@ -64651,7 +62763,7 @@ index 03b408d..5777f59 100644 } 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 */ @@ -64660,7 +62772,7 @@ index 03b408d..5777f59 100644 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"; @@ -64676,7 +62788,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 -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, @@ -64688,7 +62800,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 -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) @@ -64717,10 +62829,10 @@ index 7385de2..a8180e0 100644 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 -@@ -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; } @@ -64737,7 +62849,7 @@ index c8e00f8..1135c4e 100644 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; @@ -64748,26 +62860,8 @@ index c8e00f8..1135c4e 100644 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 -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); @@ -64825,16 +62919,20 @@ index 02ecf2c..c8f5627 100644 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; @@ -64870,7 +62968,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 -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; @@ -64909,10 +63007,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)); +@@ -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 -index ce4b054..8139ed7 100644 +index 47b7fc1..c003c33 100644 --- 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, } @@ -64932,7 +63057,7 @@ index ce4b054..8139ed7 100644 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) @@ -64995,21 +63120,8 @@ index 283c529..36ac81e 100644 /** * 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 -index e2435ee..8e82199 100644 +index f346ced..aa2b1f4 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -13,6 +13,7 @@ @@ -65020,7 +63132,7 @@ index e2435ee..8e82199 100644 #include #include #include -@@ -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; @@ -65029,7 +63141,7 @@ index e2435ee..8e82199 100644 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, @@ -65038,7 +63150,7 @@ index e2435ee..8e82199 100644 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); @@ -65047,7 +63159,7 @@ index e2435ee..8e82199 100644 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, @@ -65058,7 +63170,7 @@ index e2435ee..8e82199 100644 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); @@ -65067,7 +63179,7 @@ index e2435ee..8e82199 100644 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); @@ -65076,7 +63188,7 @@ index e2435ee..8e82199 100644 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 ? @@ -65087,7 +63199,7 @@ index e2435ee..8e82199 100644 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); @@ -65098,7 +63210,7 @@ index e2435ee..8e82199 100644 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, @@ -65109,7 +63221,7 @@ index e2435ee..8e82199 100644 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, @@ -65118,7 +63230,7 @@ index e2435ee..8e82199 100644 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, @@ -65127,7 +63239,7 @@ index e2435ee..8e82199 100644 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, @@ -65136,7 +63248,7 @@ index e2435ee..8e82199 100644 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); @@ -65145,7 +63257,7 @@ index e2435ee..8e82199 100644 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, @@ -65154,7 +63266,7 @@ index e2435ee..8e82199 100644 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; @@ -65166,7 +63278,7 @@ index e2435ee..8e82199 100644 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, @@ -65202,82 +63314,35 @@ index 42e8fa0..9e7406b 100644 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 -@@ -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; - -+ 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 */ @@ -65286,60 +63351,99 @@ index 8ef31f5..f63d997 100644 /* 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 @@ -65427,10 +63531,10 @@ index 63786e7..0780cac 100644 #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 -@@ -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; } @@ -65439,7 +63543,7 @@ index 0f85778..0d43716 100644 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) { @@ -65448,7 +63552,7 @@ index 0f85778..0d43716 100644 } 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 + @@ -65460,7 +63564,7 @@ index 0f85778..0d43716 100644 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 + @@ -65473,7 +63577,7 @@ index 0f85778..0d43716 100644 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 + @@ -65487,7 +63591,7 @@ index 0f85778..0d43716 100644 } 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. */ @@ -65502,7 +63606,7 @@ index 0f85778..0d43716 100644 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); @@ -65511,7 +63615,7 @@ index 0f85778..0d43716 100644 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: */ @@ -65526,7 +63630,7 @@ index 0f85778..0d43716 100644 /* diff --git a/kernel/exit.c b/kernel/exit.c -index 2913b35..4465c81 100644 +index e6e01b9..619f837 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -57,6 +57,10 @@ @@ -65578,7 +63682,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 -@@ -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; @@ -65587,7 +63691,7 @@ index 2913b35..4465c81 100644 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. */ @@ -65595,7 +63699,7 @@ index 2913b35..4465c81 100644 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); @@ -65606,10 +63710,10 @@ index 2913b35..4465c81 100644 if (group_dead) 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 -@@ -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 @@ -65618,7 +63722,7 @@ index 8e6b6f4..9dccf00 100644 #endif /* -@@ -309,13 +309,77 @@ out: +@@ -305,13 +305,77 @@ out: } #ifdef CONFIG_MMU @@ -65698,7 +63802,7 @@ index 8e6b6f4..9dccf00 100644 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; @@ -65709,7 +63813,7 @@ index 8e6b6f4..9dccf00 100644 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) { @@ -65718,7 +63822,7 @@ index 8e6b6f4..9dccf00 100644 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; } @@ -65776,7 +63880,7 @@ index 8e6b6f4..9dccf00 100644 /* * 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; } @@ -65808,7 +63912,7 @@ index 8e6b6f4..9dccf00 100644 /* 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; @@ -65823,7 +63927,34 @@ index 8e6b6f4..9dccf00 100644 } 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; } @@ -65839,7 +63970,7 @@ index 8e6b6f4..9dccf00 100644 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; @@ -65849,7 +63980,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) && -@@ -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; @@ -65858,7 +63989,7 @@ index 8e6b6f4..9dccf00 100644 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: @@ -65867,7 +63998,7 @@ index 8e6b6f4..9dccf00 100644 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); @@ -65876,7 +64007,7 @@ index 8e6b6f4..9dccf00 100644 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 */ @@ -65885,7 +64016,7 @@ index 8e6b6f4..9dccf00 100644 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; @@ -65896,7 +64027,7 @@ index 8e6b6f4..9dccf00 100644 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 @@ @@ -65905,7 +64036,7 @@ index 11cbe05..9ff191b 100644 #include +#include #include - #include + #include #include @@ -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 +64050,18 @@ index 11cbe05..9ff191b 100644 /* * 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; -+#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 */ -@@ -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; @@ -65974,7 +64069,7 @@ index 11cbe05..9ff191b 100644 /* * 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. */ @@ -65987,7 +64082,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 -index 5f9e689..03afa21 100644 +index 5f9e689..582d46d 100644 --- a/kernel/futex_compat.c +++ b/kernel/futex_compat.c @@ -10,6 +10,7 @@ @@ -65998,37 +64093,27 @@ index 5f9e689..03afa21 100644 #include -@@ -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; -+#ifndef CONFIG_GRKERNSEC_PROC_MEMMAP + const struct cred *cred = current_cred(); + const struct cred *pcred; -+#endif 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; -+#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 */ -@@ -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 @@ -66055,7 +64140,7 @@ index 9b22d03..6295b62 100644 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) @@ -66068,7 +64153,7 @@ index 2043c08..ec81a69 100644 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) @@ -66081,7 +64166,7 @@ index e6f1f24..6c19597 100644 } 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; @@ -66201,10 +64286,10 @@ index 079f1d3..a407562 100644 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 -@@ -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; @@ -66324,7 +64409,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 -index b30fd54..11821ec 100644 +index faa39d1..d7ad37e 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) @@ -66345,7 +64430,7 @@ index b30fd54..11821ec 100644 kfree(kip); } return 1; -@@ -1949,7 +1949,7 @@ static int __init init_kprobes(void) +@@ -1953,7 +1953,7 @@ static int __init init_kprobes(void) { int i, err = 0; unsigned long offset = 0, size = 0; @@ -66354,7 +64439,7 @@ index b30fd54..11821ec 100644 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) +@@ -2079,7 +2079,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; @@ -66364,10 +64449,10 @@ index b30fd54..11821ec 100644 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 -@@ -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; @@ -66378,7 +64463,7 @@ index 91d67ce..ac259df 100644 /* * 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"); @@ -66386,7 +64471,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(); -@@ -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; } @@ -66396,7 +64481,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 -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) @@ -66409,7 +64494,7 @@ index 71edd2f..e0542a5 100644 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 @@ @@ -66797,7 +64882,7 @@ index 04379f92..fba2faf 100644 /* 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 */ @@ -66806,7 +64891,7 @@ index 04379f92..fba2faf 100644 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. */ @@ -66815,7 +64900,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 -@@ -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; @@ -66874,7 +64959,7 @@ index 04379f92..fba2faf 100644 /* 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; @@ -66927,7 +65012,7 @@ index 04379f92..fba2faf 100644 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. */ @@ -66946,7 +65031,7 @@ index 04379f92..fba2faf 100644 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); @@ -66959,7 +65044,7 @@ index 04379f92..fba2faf 100644 } 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; @@ -66998,7 +65083,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) -@@ -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); @@ -67012,7 +65097,7 @@ index 04379f92..fba2faf 100644 /* 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(); @@ -67025,7 +65110,7 @@ index 04379f92..fba2faf 100644 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 */ @@ -67050,7 +65135,7 @@ index 04379f92..fba2faf 100644 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); @@ -67068,7 +65153,7 @@ index 04379f92..fba2faf 100644 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 */ @@ -67088,7 +65173,7 @@ index 04379f92..fba2faf 100644 /* 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", @@ -67097,7 +65182,7 @@ index 04379f92..fba2faf 100644 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. */ @@ -67106,7 +65191,7 @@ index 04379f92..fba2faf 100644 /* 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) { @@ -67124,7 +65209,7 @@ index 04379f92..fba2faf 100644 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; @@ -67140,7 +65225,7 @@ index 04379f92..fba2faf 100644 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) { @@ -67165,7 +65250,7 @@ index 04379f92..fba2faf 100644 } 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) @@ -67213,7 +65298,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 -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, @@ -67245,7 +65330,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 -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, @@ -67272,10 +65357,23 @@ index b91941d..0871d60 100644 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 -@@ -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"); @@ -67284,7 +65382,7 @@ index d7bb697..9ef9f19 100644 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) { @@ -67295,7 +65393,7 @@ index d7bb697..9ef9f19 100644 } 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 @@ @@ -67315,14 +65413,17 @@ index e432057..a2b2ac5 100644 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; + - 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); ++ + task = pid_task(find_pid_ns(nr, ns), PIDTYPE_PID); + + if (gr_pid_is_chrooted(task)) @@ -67332,13 +65433,15 @@ index e432057..a2b2ac5 100644 } 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) +{ -+ 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); +} + @@ -67346,7 +65449,7 @@ index e432057..a2b2ac5 100644 { 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 @@ @@ -67375,7 +65478,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 -index 4556182..9335419 100644 +index 69185ae..cc2847a 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c @@ -43,6 +43,7 @@ @@ -67437,16 +65540,7 @@ index 4556182..9335419 100644 .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; } @@ -67455,7 +65549,7 @@ index 4556182..9335419 100644 } 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; @@ -67467,7 +65561,7 @@ index 4556182..9335419 100644 } 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; @@ -67495,7 +65589,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 -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) @@ -67541,7 +65635,7 @@ index 0cf3a27..5481be4 100644 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) @@ -67557,7 +65651,7 @@ index 28a40d8..2411bec 100644 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 { @@ -67618,10 +65712,10 @@ index 961b389..c451353 100644 } 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 -@@ -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; } @@ -67631,7 +65725,7 @@ index a70d2a5..cbd4b4f 100644 { 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; @@ -67641,7 +65735,7 @@ index a70d2a5..cbd4b4f 100644 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); @@ -67652,7 +65746,7 @@ index a70d2a5..cbd4b4f 100644 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); @@ -67662,6 +65756,11 @@ index a70d2a5..cbd4b4f 100644 + 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; @@ -67670,7 +65769,7 @@ index a70d2a5..cbd4b4f 100644 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); @@ -67679,7 +65778,7 @@ index a70d2a5..cbd4b4f 100644 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; @@ -67688,16 +65787,7 @@ index a70d2a5..cbd4b4f 100644 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; } @@ -67706,16 +65796,7 @@ index a70d2a5..cbd4b4f 100644 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; @@ -67724,12 +65805,7 @@ index a70d2a5..cbd4b4f 100644 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; } @@ -67752,7 +65828,7 @@ index a70d2a5..cbd4b4f 100644 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; @@ -67761,16 +65837,7 @@ index a70d2a5..cbd4b4f 100644 } 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; } @@ -67794,7 +65861,7 @@ index a70d2a5..cbd4b4f 100644 } 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) = @@ -67857,7 +65924,7 @@ index 98f51b1..30b950c 100644 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; @@ -67866,7 +65933,7 @@ index 98f51b1..30b950c 100644 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) @@ -67875,7 +65942,7 @@ index 98f51b1..30b950c 100644 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) @@ -67884,7 +65951,7 @@ index 98f51b1..30b950c 100644 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), @@ -67906,7 +65973,7 @@ index 98f51b1..30b950c 100644 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], "!!! "); @@ -67915,7 +65982,7 @@ index 98f51b1..30b950c 100644 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", @@ -67924,7 +65991,7 @@ index 98f51b1..30b950c 100644 } 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(); @@ -67933,7 +66000,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"); -@@ -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; @@ -67958,11 +66025,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 -index ba06207..85d8ba8 100644 +index 6b76d81..7afc1b3 100644 --- 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); @@ -67971,9 +66038,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); + } - /* 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. */ @@ -67983,10 +66050,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)); + trace_rcu_dyntick("End"); 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 && @@ -68004,7 +66071,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. */ @@ -68016,7 +66083,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) { @@ -68025,26 +66092,26 @@ index ba06207..85d8ba8 100644 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) { + trace_rcu_utilization("Start RCU core"); __rcu_process_callbacks(&rcu_sched_state, - &__get_cpu_var(rcu_sched_data)); 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 @@ @@ -68057,10 +66124,10 @@ index 01b2ccd..4f5d80a 100644 /* 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 -@@ -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. */ @@ -68069,7 +66136,7 @@ index 8aafbb8..2fca109 100644 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 */ @@ -68080,7 +66147,7 @@ index 8aafbb8..2fca109 100644 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. */ @@ -68089,7 +66156,7 @@ index 8aafbb8..2fca109 100644 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. */ @@ -68098,7 +66165,7 @@ index 8aafbb8..2fca109 100644 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(); @@ -68107,7 +66174,7 @@ index 8aafbb8..2fca109 100644 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 { @@ -68122,7 +66189,7 @@ index 8aafbb8..2fca109 100644 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; @@ -68132,10 +66199,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 -index 3b0c098..43ba2d8 100644 +index 9feffa4..54058df 100644 --- 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", @@ -68144,7 +66211,7 @@ index 3b0c098..43ba2d8 100644 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", @@ -68153,21 +66220,8 @@ index 3b0c098..43ba2d8 100644 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 -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 = { @@ -68190,7 +66244,7 @@ index c8dc249..f1e2359 100644 } __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 @@ @@ -68284,19 +66338,39 @@ index 5c9ccd3..a35e22b 100644 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 -@@ -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 */ + } -+ pax_track_stack(); ++#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 + - need_resched: - preempt_disable(); - cpu = smp_processor_id(); -@@ -4950,6 +4952,8 @@ int can_nice(const struct task_struct *p, const int nice) + /* + * __schedule() is the main scheduler function. + */ +@@ -4408,6 +4421,8 @@ need_resched: + + schedule_debug(prev); + ++ gr_cred_schedule(); ++ + 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; @@ -68305,7 +66379,7 @@ index b50b0f0..1c6c591 100644 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; @@ -68315,7 +66389,7 @@ index b50b0f0..1c6c591 100644 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); @@ -68346,10 +66420,10 @@ index 429242f..d7cca82 100644 #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 -@@ -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). */ @@ -68359,7 +66433,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 -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; @@ -68468,16 +66542,7 @@ index 291c970..304bd03 100644 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(); @@ -68495,7 +66560,7 @@ index 291c970..304bd03 100644 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) @@ -68526,7 +66591,7 @@ index fb67dfa..f819e2e 100644 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 @@ -68580,10 +66645,10 @@ index fca82c3..1db9690 100644 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 -@@ -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; } @@ -68596,7 +66661,7 @@ index 1dbbe69..e96e1dd 100644 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; } @@ -68606,7 +66671,7 @@ index 1dbbe69..e96e1dd 100644 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; @@ -68617,7 +66682,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) -@@ -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; } @@ -68627,7 +66701,7 @@ index 1dbbe69..e96e1dd 100644 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; @@ -68640,7 +66714,7 @@ index 1dbbe69..e96e1dd 100644 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; } @@ -68650,7 +66724,7 @@ index 1dbbe69..e96e1dd 100644 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; } @@ -68660,7 +66734,7 @@ index 1dbbe69..e96e1dd 100644 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; @@ -68670,7 +66744,7 @@ index 1dbbe69..e96e1dd 100644 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 +66752,7 @@ index 1dbbe69..e96e1dd 100644 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)) { @@ -68695,7 +66769,7 @@ index 1dbbe69..e96e1dd 100644 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); @@ -68707,7 +66781,7 @@ index 1dbbe69..e96e1dd 100644 } 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); @@ -68732,7 +66806,7 @@ index 1dbbe69..e96e1dd 100644 __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: @@ -68742,10 +66816,10 @@ index 1dbbe69..e96e1dd 100644 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 -@@ -85,6 +85,13 @@ +@@ -86,6 +86,13 @@ #if defined(CONFIG_SYSCTL) @@ -68759,7 +66833,7 @@ index 11d65b5..6957b37 100644 /* 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 @@ -68767,7 +66841,7 @@ index 11d65b5..6957b37 100644 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 @@ -68788,7 +66862,7 @@ index 11d65b5..6957b37 100644 /* 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[] = { @@ -68811,7 +66885,7 @@ index 11d65b5..6957b37 100644 { .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, @@ -68820,7 +66894,7 @@ index 11d65b5..6957b37 100644 }, { .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, }, @@ -68842,7 +66916,7 @@ index 11d65b5..6957b37 100644 { .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, }, @@ -68856,7 +66930,7 @@ index 11d65b5..6957b37 100644 #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; @@ -68874,7 +66948,7 @@ index 11d65b5..6957b37 100644 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); } @@ -68891,7 +66965,7 @@ index 11d65b5..6957b37 100644 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; @@ -68900,7 +66974,7 @@ index 11d65b5..6957b37 100644 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; @@ -68913,7 +66987,7 @@ index 11d65b5..6957b37 100644 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; } @@ -68926,7 +67000,7 @@ index 11d65b5..6957b37 100644 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); @@ -68935,7 +67009,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 -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, @@ -69041,7 +67115,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 -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) @@ -69057,11 +67131,11 @@ index d776062..fa8d186 100644 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 -@@ -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 = { @@ -69070,7 +67144,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 -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) @@ -69083,7 +67157,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 -index 6f9798b..f8c4087 100644 +index 2378413..be455fd 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -14,6 +14,7 @@ @@ -69149,7 +67223,7 @@ index 3258455..f35227d 100644 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; @@ -69221,7 +67295,7 @@ index a5d0a3a..60c7948 100644 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) @@ -69234,10 +67308,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 -index 7c910a5..8b72104 100644 +index 16fc34a..efd8bb8 100644 --- 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]; @@ -69246,7 +67320,7 @@ index 7c910a5..8b72104 100644 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; @@ -69255,7 +67329,7 @@ index 7c910a5..8b72104 100644 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; @@ -69265,10 +67339,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 -index 48d3762..3b61fce 100644 +index 25b4f4d..6f4772d 100644 --- 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; @@ -69288,7 +67362,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, @@ -69298,28 +67372,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 -index 17a2d44..85907e2 100644 +index f2bd275..adaf3a2 100644 --- 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 @@ -69331,7 +67387,7 @@ index 17a2d44..85907e2 100644 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; } @@ -69531,26 +67587,26 @@ index 209b379..7f76423 100644 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 -@@ -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 - 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 -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; -- 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); @@ -69559,25 +67615,25 @@ index 2f4412e..a557e27 100644 { 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; -- 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; -@@ -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; -- 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); } @@ -69631,10 +67687,10 @@ index 7c0e953..f642b5c 100644 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 -@@ -870,7 +870,7 @@ out: +@@ -925,7 +925,7 @@ out: static void check_for_stack(struct device *dev, void *addr) { @@ -69679,6 +67735,20 @@ index 013a761..c28f3fc 100644 #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 @@ -69693,7 +67763,7 @@ index 3efb882..8492f4c 100644 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 { @@ -69706,7 +67776,7 @@ index a2f9da5..3bcadb6 100644 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 @@ @@ -69719,7 +67789,7 @@ index d7222a9..2172edc 100644 #include #include #include -@@ -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); @@ -69728,7 +67798,7 @@ index d7222a9..2172edc 100644 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); } @@ -69740,7 +67810,7 @@ index d7222a9..2172edc 100644 /* * 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 @@ -69749,7 +67819,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 -@@ -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') { /* @@ -69764,7 +67834,7 @@ index d7222a9..2172edc 100644 } 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': @@ -69778,7 +67848,26 @@ index d7222a9..2172edc 100644 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)); \ @@ -69793,7 +67882,7 @@ index d7222a9..2172edc 100644 } \ 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; @@ -69810,10 +67899,10 @@ index 0000000..7cd6065 @@ -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 -@@ -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 @@ -69828,10 +67917,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 -index 7771871..91bcdb4 100644 +index 03c5b0e..a01e793 100644 --- 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) @@ -69840,7 +67929,7 @@ index 7771871..91bcdb4 100644 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) { @@ -69849,10 +67938,10 @@ index 7771871..91bcdb4 100644 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 -@@ -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); @@ -69865,7 +67954,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 -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) @@ -69894,10 +67983,10 @@ index 5ef672c..d7660f4 100644 set_page_address(page, (void *)vaddr); diff --git a/mm/huge_memory.c b/mm/huge_memory.c -index d819d93..468e18f 100644 +index 33141f5..e56bef9 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c -@@ -702,7 +702,7 @@ out: +@@ -703,7 +703,7 @@ out: * run pte_offset_map on the pmd, if an huge pmd could * materialize from under us from a different thread. */ @@ -69906,28 +67995,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))) -@@ -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 -index bb28a5f..fef0140 100644 +index 2316840..b418671 100644 --- 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; } @@ -69955,7 +68027,7 @@ index bb28a5f..fef0140 100644 /* * 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); @@ -69967,7 +68039,7 @@ index bb28a5f..fef0140 100644 /* 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); @@ -69978,7 +68050,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); -@@ -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); @@ -69989,7 +68061,7 @@ index bb28a5f..fef0140 100644 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); } @@ -70029,7 +68101,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 -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, @@ -70042,7 +68114,7 @@ index d6880f5..ed77913 100644 } 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) @@ -70144,10 +68216,10 @@ index 74bf193..feb6fd3 100644 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 -@@ -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; @@ -70156,7 +68228,7 @@ index 2b43ba0..fc09657 100644 #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; @@ -70165,7 +68237,7 @@ index 2b43ba0..fc09657 100644 #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); @@ -70174,7 +68246,7 @@ index 2b43ba0..fc09657 100644 /* * 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))) { @@ -70183,7 +68255,7 @@ index 2b43ba0..fc09657 100644 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)) @@ -70192,7 +68264,7 @@ index 2b43ba0..fc09657 100644 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)) @@ -70201,7 +68273,7 @@ index 2b43ba0..fc09657 100644 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); @@ -70210,7 +68282,7 @@ index 2b43ba0..fc09657 100644 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)) @@ -70219,7 +68291,7 @@ index 2b43ba0..fc09657 100644 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: @@ -70229,7 +68301,7 @@ index 2b43ba0..fc09657 100644 /* 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, @@ -70796,10 +68868,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 -index 9c51f9f..a9416cf 100644 +index c3fdbcb..2e8ef90 100644 --- 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; @@ -70810,7 +68882,7 @@ index 9c51f9f..a9416cf 100644 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; @@ -70827,7 +68899,7 @@ index 9c51f9f..a9416cf 100644 } 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; @@ -70845,7 +68917,7 @@ index 9c51f9f..a9416cf 100644 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; @@ -70860,7 +68932,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 -@@ -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 && @@ -70871,30 +68943,10 @@ index 9c51f9f..a9416cf 100644 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 -@@ -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; @@ -70909,7 +68961,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 -@@ -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 && @@ -70920,7 +68972,7 @@ index 14d0a6a..0360908 100644 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 @@ @@ -70929,9 +68981,9 @@ index 048260c..57f4a4e 100644 #include +#include #include - #include + #include #include -@@ -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; @@ -70941,7 +68993,7 @@ index 048260c..57f4a4e 100644 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; @@ -70953,7 +69005,7 @@ index 048260c..57f4a4e 100644 /* 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 */ @@ -70961,7 +69013,7 @@ index 048260c..57f4a4e 100644 if ((locked <= lock_limit) || capable(CAP_IPC_LOCK)) error = do_mlock(start, len, 1); up_write(¤t->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; @@ -70988,7 +69040,7 @@ index 048260c..57f4a4e 100644 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; @@ -70997,7 +69049,7 @@ index 048260c..57f4a4e 100644 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 @@ @@ -71331,7 +69383,18 @@ index a65efd4..17d61ff 100644 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; @@ -71351,7 +69414,16 @@ index a65efd4..17d61ff 100644 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; @@ -71363,7 +69435,7 @@ index a65efd4..17d61ff 100644 /* 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); @@ -71371,7 +69443,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); -@@ -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: @@ -71384,7 +69456,7 @@ index a65efd4..17d61ff 100644 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; } @@ -71429,7 +69501,7 @@ index a65efd4..17d61ff 100644 /* 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; @@ -71460,7 +69532,7 @@ index a65efd4..17d61ff 100644 } 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. */ @@ -71512,7 +69584,7 @@ index a65efd4..17d61ff 100644 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; @@ -71521,7 +69593,7 @@ index a65efd4..17d61ff 100644 /* 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; @@ -71544,7 +69616,7 @@ index a65efd4..17d61ff 100644 } /* 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); @@ -71553,7 +69625,7 @@ index a65efd4..17d61ff 100644 /* 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); @@ -71562,7 +69634,7 @@ index a65efd4..17d61ff 100644 /* 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 */ @@ -71573,7 +69645,7 @@ index a65efd4..17d61ff 100644 bottomup: /* -@@ -1507,13 +1717,21 @@ bottomup: +@@ -1507,13 +1720,21 @@ bottomup: * can happen with large stack limits and large mmap() * allocations. */ @@ -71597,7 +69669,7 @@ index a65efd4..17d61ff 100644 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) { @@ -71610,7 +69682,7 @@ index a65efd4..17d61ff 100644 /* * 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 */ @@ -71622,15 +69694,63 @@ index a65efd4..17d61ff 100644 } 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; -+ + +-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); @@ -71645,13 +69765,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; -+} + } +#endif -+ + /* * 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 */ @@ -71659,7 +69778,7 @@ index a65efd4..17d61ff 100644 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; @@ -71667,7 +69786,7 @@ index a65efd4..17d61ff 100644 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. */ @@ -71725,7 +69844,7 @@ index a65efd4..17d61ff 100644 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 +69853,7 @@ index a65efd4..17d61ff 100644 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; @@ -71743,7 +69862,7 @@ index a65efd4..17d61ff 100644 /* * 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; @@ -71759,7 +69878,7 @@ index a65efd4..17d61ff 100644 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 */ @@ -71778,7 +69897,7 @@ index a65efd4..17d61ff 100644 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; @@ -71801,7 +69920,7 @@ index a65efd4..17d61ff 100644 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); @@ -71815,7 +69934,7 @@ index a65efd4..17d61ff 100644 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 { @@ -71832,7 +69951,7 @@ index a65efd4..17d61ff 100644 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; @@ -71866,7 +69985,7 @@ index a65efd4..17d61ff 100644 /* 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); } @@ -71889,7 +70008,7 @@ index a65efd4..17d61ff 100644 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); @@ -71932,7 +70051,7 @@ index a65efd4..17d61ff 100644 /* 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); } @@ -71952,7 +70071,7 @@ index a65efd4..17d61ff 100644 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) { @@ -71968,7 +70087,7 @@ index a65efd4..17d61ff 100644 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 */ @@ -71999,7 +70118,7 @@ index a65efd4..17d61ff 100644 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); @@ -72008,7 +70127,7 @@ index a65efd4..17d61ff 100644 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); @@ -72037,7 +70156,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 -@@ -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; @@ -72045,7 +70164,7 @@ index a65efd4..17d61ff 100644 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; @@ -72077,7 +70196,7 @@ index a65efd4..17d61ff 100644 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 */ @@ -72104,7 +70223,7 @@ index a65efd4..17d61ff 100644 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) { @@ -72113,7 +70232,7 @@ index a65efd4..17d61ff 100644 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); @@ -72128,7 +70247,7 @@ index a65efd4..17d61ff 100644 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. */ @@ -72140,7 +70259,7 @@ index a65efd4..17d61ff 100644 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; @@ -72154,7 +70273,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 -@@ -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; @@ -72177,7 +70296,7 @@ index a65efd4..17d61ff 100644 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; @@ -72186,7 +70305,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. -@@ -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; } @@ -72226,7 +70345,7 @@ index a65efd4..17d61ff 100644 /* * 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; @@ -72235,7 +70354,7 @@ index a65efd4..17d61ff 100644 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; @@ -72489,12 +70608,12 @@ index 5a688a2..27e031c 100644 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 -@@ -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; - 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 @@ -72505,7 +70624,7 @@ index 506fa44..ccc0ba9 100644 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; @@ -72517,7 +70636,7 @@ index 506fa44..ccc0ba9 100644 /* 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; @@ -72548,7 +70667,7 @@ index 506fa44..ccc0ba9 100644 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; @@ -72556,7 +70675,7 @@ index 506fa44..ccc0ba9 100644 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; @@ -72574,7 +70693,7 @@ index 506fa44..ccc0ba9 100644 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; @@ -72582,7 +70701,7 @@ index 506fa44..ccc0ba9 100644 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; @@ -72597,7 +70716,7 @@ index 506fa44..ccc0ba9 100644 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) @@ -72634,7 +70753,7 @@ index 6e93dc7..c98df0c 100644 return count; } diff --git a/mm/nommu.c b/mm/nommu.c -index 4358032..e79b99f 100644 +index ee7e57e..cae4e40 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -62,7 +62,6 @@ int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */ @@ -72645,7 +70764,7 @@ index 4358032..e79b99f 100644 atomic_long_t mmap_pages_allocated; -@@ -825,15 +824,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr) +@@ -829,15 +828,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr) EXPORT_SYMBOL(find_vma); /* @@ -72661,7 +70780,7 @@ index 4358032..e79b99f 100644 * 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, +@@ -1557,6 +1547,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; @@ -72669,24 +70788,11 @@ index 4358032..e79b99f 100644 *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 -index 6e8ecb6..d9e3d7a 100644 +index 485be89..c059ad3 100644 --- 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. */ @@ -72695,17 +70801,7 @@ index 6e8ecb6..d9e3d7a 100644 { __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; @@ -72716,7 +70812,7 @@ index 6e8ecb6..d9e3d7a 100644 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); } @@ -72729,7 +70825,7 @@ index 6e8ecb6..d9e3d7a 100644 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); @@ -72740,16 +70836,7 @@ index 6e8ecb6..d9e3d7a 100644 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++) { @@ -72763,20 +70850,12 @@ index 6e8ecb6..d9e3d7a 100644 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 -index bf80e55..c7c3f9a 100644 +index 716eb4a..8d10419 100644 --- 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; @@ -72784,8 +70863,81 @@ index bf80e55..c7c3f9a 100644 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 + #include + #include ++#include + #include + #include + #include +@@ -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 -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) @@ -72878,11 +71030,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 -index 32f6763..431c405 100644 +index 6c253f7..367e20a 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -31,7 +31,7 @@ - #include + #include #include -static struct vfsmount *shm_mnt; @@ -72899,16 +71051,7 @@ index 32f6763..431c405 100644 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 */ @@ -72919,7 +71062,7 @@ index 32f6763..431c405 100644 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 @@ @@ -73009,7 +71152,7 @@ index 893c76d..a742de2 100644 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 */ { @@ -73024,21 +71167,12 @@ index 893c76d..a742de2 100644 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); -+ proc_create("slab_allocators", gr_mode, NULL, &proc_slabstats_operations); ++ proc_create("slab_allocators", S_IRUSR, NULL, &proc_slabstats_operations); #endif return 0; } @@ -73098,7 +71232,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 -index bf39181..727f7a3 100644 +index 8105be4..e045f96 100644 --- a/mm/slob.c +++ b/mm/slob.c @@ -29,7 +29,7 @@ @@ -73289,7 +71423,7 @@ index bf39181..727f7a3 100644 + + type = ""; + 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; @@ -73454,7 +71588,7 @@ index bf39181..727f7a3 100644 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 { @@ -73466,7 +71600,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 *); -@@ -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; @@ -73475,7 +71609,7 @@ index 7c54fe8..0bb4ac5 100644 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); @@ -73484,7 +71618,7 @@ index 7c54fe8..0bb4ac5 100644 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.) */ @@ -73493,16 +71627,16 @@ index 7c54fe8..0bb4ac5 100644 /* * 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 -@@ -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); @@ -73510,9 +71644,9 @@ index 7c54fe8..0bb4ac5 100644 - if (!s->refcount) { + if (atomic_dec_and_test(&s->refcount)) { list_del(&s->list); + up_write(&slub_lock); 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 @@ -73563,7 +71697,7 @@ index 7c54fe8..0bb4ac5 100644 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); @@ -73572,7 +71706,7 @@ index 7c54fe8..0bb4ac5 100644 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) { @@ -73593,7 +71727,7 @@ index 7c54fe8..0bb4ac5 100644 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. */ @@ -73602,7 +71736,7 @@ index 7c54fe8..0bb4ac5 100644 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) { @@ -73611,7 +71745,7 @@ index 7c54fe8..0bb4ac5 100644 /* * 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)) { @@ -73620,7 +71754,7 @@ index 7c54fe8..0bb4ac5 100644 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 @@ -73629,7 +71763,7 @@ index 7c54fe8..0bb4ac5 100644 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 @@ -73644,7 +71778,7 @@ index 7c54fe8..0bb4ac5 100644 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) { @@ -73653,7 +71787,7 @@ index 7c54fe8..0bb4ac5 100644 } 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; } @@ -73661,7 +71795,7 @@ index 7c54fe8..0bb4ac5 100644 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); } @@ -73669,7 +71803,7 @@ index 7c54fe8..0bb4ac5 100644 /* * 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; @@ -73677,7 +71811,7 @@ index 7c54fe8..0bb4ac5 100644 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; } @@ -73685,23 +71819,8 @@ index 7c54fe8..0bb4ac5 100644 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 -index 87627f1..8a9eb34 100644 +index 55b266d..a532537 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -31,6 +31,7 @@ @@ -73722,10 +71841,10 @@ index 87627f1..8a9eb34 100644 } 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 -@@ -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 */ @@ -73734,7 +71853,7 @@ index 17bc224..1677059 100644 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; @@ -73743,7 +71862,7 @@ index 17bc224..1677059 100644 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); @@ -73754,7 +71873,7 @@ index 17bc224..1677059 100644 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; @@ -73763,7 +71882,7 @@ index 17bc224..1677059 100644 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); @@ -73773,7 +71892,7 @@ index 17bc224..1677059 100644 if (S_ISREG(inode->i_mode)) diff --git a/mm/util.c b/mm/util.c -index 88ea1bd..0f1dfdb 100644 +index 136ac4f..5117eef 100644 --- a/mm/util.c +++ b/mm/util.c @@ -114,6 +114,7 @@ EXPORT_SYMBOL(memdup_user); @@ -73806,7 +71925,7 @@ index 88ea1bd..0f1dfdb 100644 mm->unmap_area = arch_unmap_area; } diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index 56faf31..862c072 100644 +index 27be2f0..0aef2c2 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) @@ -73943,7 +72062,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) - return NULL; + goto fail; +#if defined(CONFIG_MODULES) && defined(CONFIG_X86) && defined(CONFIG_PAX_KERNEXEC) + if (!(pgprot_val(prot) & _PAGE_NX)) @@ -73954,17 +72073,8 @@ index 56faf31..862c072 100644 + 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, + if (!area) +@@ -1679,6 +1741,7 @@ static void *__vmalloc_node(unsigned long size, unsigned long align, gfp_mask, prot, node, caller); } @@ -73972,7 +72082,7 @@ index 56faf31..862c072 100644 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, +@@ -1702,6 +1765,7 @@ static inline void *__vmalloc_node_flags(unsigned long size, * For tight control over page level allocator and protection flags * use __vmalloc() instead. */ @@ -73980,7 +72090,7 @@ index 56faf31..862c072 100644 void *vmalloc(unsigned long size) { return __vmalloc_node_flags(size, -1, GFP_KERNEL | __GFP_HIGHMEM); -@@ -1711,6 +1777,7 @@ EXPORT_SYMBOL(vmalloc); +@@ -1718,6 +1782,7 @@ EXPORT_SYMBOL(vmalloc); * For tight control over page level allocator and protection flags * use __vmalloc() instead. */ @@ -73988,7 +72098,7 @@ index 56faf31..862c072 100644 void *vzalloc(unsigned long size) { return __vmalloc_node_flags(size, -1, -@@ -1725,6 +1792,7 @@ EXPORT_SYMBOL(vzalloc); +@@ -1732,6 +1797,7 @@ EXPORT_SYMBOL(vzalloc); * The resulting memory area is zeroed so it can be mapped to userspace * without leaking data. */ @@ -73996,7 +72106,7 @@ index 56faf31..862c072 100644 void *vmalloc_user(unsigned long size) { struct vm_struct *area; -@@ -1752,6 +1820,7 @@ EXPORT_SYMBOL(vmalloc_user); +@@ -1759,6 +1825,7 @@ EXPORT_SYMBOL(vmalloc_user); * For tight control over page level allocator and protection flags * use __vmalloc() instead. */ @@ -74004,7 +72114,7 @@ index 56faf31..862c072 100644 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); +@@ -1778,6 +1845,7 @@ EXPORT_SYMBOL(vmalloc_node); * For tight control over page level allocator and protection flags * use __vmalloc_node() instead. */ @@ -74012,7 +72122,7 @@ index 56faf31..862c072 100644 void *vzalloc_node(unsigned long size, int node) { return __vmalloc_node_flags(size, node, -@@ -1793,10 +1863,10 @@ EXPORT_SYMBOL(vzalloc_node); +@@ -1800,10 +1868,10 @@ EXPORT_SYMBOL(vzalloc_node); * For tight control over page level allocator and protection flags * use __vmalloc() instead. */ @@ -74025,7 +72135,7 @@ index 56faf31..862c072 100644 -1, __builtin_return_address(0)); } -@@ -1815,6 +1885,7 @@ void *vmalloc_exec(unsigned long size) +@@ -1822,6 +1890,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. */ @@ -74033,7 +72143,7 @@ index 56faf31..862c072 100644 void *vmalloc_32(unsigned long size) { return __vmalloc_node(size, 1, GFP_VMALLOC32, PAGE_KERNEL, -@@ -1829,6 +1900,7 @@ EXPORT_SYMBOL(vmalloc_32); +@@ -1836,6 +1905,7 @@ EXPORT_SYMBOL(vmalloc_32); * The resulting memory area is 32bit addressable and zeroed so it can be * mapped to userspace without leaking data. */ @@ -74041,7 +72151,7 @@ index 56faf31..862c072 100644 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 +2168,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; @@ -74051,15 +72161,15 @@ index 56faf31..862c072 100644 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 */ --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 @@ -74081,7 +72191,7 @@ index d52b13d..381d1ac 100644 } #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 @@ -74107,7 +72217,7 @@ index d52b13d..381d1ac 100644 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) @@ -74133,28 +72243,6 @@ index fdfdb57..38d368c 100644 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 @@ -74221,19 +72309,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 @@ -74273,11 +72348,42 @@ index 23f45ce..c748f1a 100644 __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 -index db7aacf..991e539 100644 +index 7704df4..beb4e16 100644 --- 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); @@ -74288,46 +72394,11 @@ index db7aacf..991e539 100644 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 -index 05dd351..2ecd19b 100644 +index f9cc957..efd9dae 100644 --- 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 = @@ -74336,7 +72407,7 @@ index 05dd351..2ecd19b 100644 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); @@ -74346,7 +72417,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 -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 { @@ -74360,7 +72431,7 @@ index 51a0db7..b8a62be 100644 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 */ @@ -74368,9 +72439,9 @@ index 51a0db7..b8a62be 100644 + 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 -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, @@ -74383,18 +72454,9 @@ index 32b125f..f1447e0 100644 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 -@@ -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)); @@ -74404,8 +72466,38 @@ index ea7f031..0615edc 100644 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 -index e79ff75..215b57d 100644 +index a5f4e57..910ee6d 100644 --- 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, @@ -74418,7 +72510,7 @@ index e79ff75..215b57d 100644 /* 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..121f3a3 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) @@ -74430,15 +72522,6 @@ index 5864cc4..94cab18 100644 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 @@ -74573,7 +72656,7 @@ index a986280..13444a1 100644 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 @@ @@ -74584,9 +72667,9 @@ index e22671b..6598ea0 100644 #include #include #include -@@ -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; - 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); @@ -74595,7 +72678,7 @@ index e22671b..6598ea0 100644 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); @@ -74606,7 +72689,7 @@ index e22671b..6598ea0 100644 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"); @@ -74615,19 +72698,24 @@ index e22671b..6598ea0 100644 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 -index c578d93..257fab7 100644 +index 6def90e..c6992fa 100644 --- 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; @@ -74640,7 +72728,7 @@ index c578d93..257fab7 100644 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) { @@ -74649,7 +72737,7 @@ index c578d93..257fab7 100644 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, @@ -74658,7 +72746,7 @@ index c578d93..257fab7 100644 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) ? \ @@ -74682,7 +72770,7 @@ index c578d93..257fab7 100644 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]; @@ -74691,7 +72779,7 @@ index c578d93..257fab7 100644 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) { @@ -74700,7 +72788,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; -@@ -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); @@ -74709,7 +72797,7 @@ index c578d93..257fab7 100644 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); @@ -74718,7 +72806,7 @@ index c578d93..257fab7 100644 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: { @@ -74727,7 +72815,7 @@ index c578d93..257fab7 100644 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: { @@ -74736,7 +72824,7 @@ index c578d93..257fab7 100644 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: { @@ -74745,7 +72833,7 @@ index c578d93..257fab7 100644 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 *)) { @@ -74755,7 +72843,7 @@ index c578d93..257fab7 100644 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) @@ -74768,10 +72856,10 @@ index 18ac112..fe95ed9 100644 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 -@@ -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)) { @@ -74786,7 +72874,25 @@ index ae5cf2d..2c950a1 100644 } } 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); @@ -74795,7 +72901,16 @@ index ae5cf2d..2c950a1 100644 #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); @@ -74804,7 +72919,16 @@ index ae5cf2d..2c950a1 100644 { 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); @@ -74813,8 +72937,17 @@ index ae5cf2d..2c950a1 100644 { 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 -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 { @@ -74876,7 +73009,7 @@ index c40f27e..7f49254 100644 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 { @@ -74889,10 +73022,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 -index 811b53f..5d6c343 100644 +index ff52ad0..aff1c0f 100644 --- 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 @@ -74901,7 +73034,7 @@ index 811b53f..5d6c343 100644 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; @@ -74910,7 +73043,7 @@ index 811b53f..5d6c343 100644 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 @@ -74919,7 +73052,7 @@ index 811b53f..5d6c343 100644 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; @@ -74928,33 +73061,20 @@ index 811b53f..5d6c343 100644 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 -index 11d67b3..df26d4b 100644 +index b23f174..b9a0d26 100644 --- 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; } -@@ -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)) { @@ -74963,7 +73083,7 @@ index 11d67b3..df26d4b 100644 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); @@ -74972,7 +73092,7 @@ index 11d67b3..df26d4b 100644 __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)) { @@ -74981,7 +73101,7 @@ index 11d67b3..df26d4b 100644 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); @@ -74990,7 +73110,7 @@ index 11d67b3..df26d4b 100644 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); @@ -74999,7 +73119,7 @@ index 11d67b3..df26d4b 100644 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; @@ -75008,7 +73128,7 @@ index 11d67b3..df26d4b 100644 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; @@ -75017,7 +73137,7 @@ index 11d67b3..df26d4b 100644 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); @@ -75103,7 +73223,7 @@ index 80106d8..232e898 100644 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, @@ -75121,7 +73241,7 @@ index 389a2e6..ac1c1de 100644 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; @@ -75137,7 +73257,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; -@@ -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; @@ -75152,7 +73272,7 @@ index 389a2e6..ac1c1de 100644 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; @@ -75197,19 +73317,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 -index 86f13c67..0bce60f 100644 +index 86f13c67..59a35b5 100644 --- 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); @@ -75221,7 +73332,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 -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) @@ -75234,19 +73345,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 -index 8905e92..0b179fb 100644 +index 09ff51b..d3968eb 100644 --- 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; @@ -75256,7 +73358,7 @@ index 8905e92..0b179fb 100644 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; @@ -75266,10 +73368,10 @@ index 8905e92..0b179fb 100644 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 -@@ -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()); @@ -75278,7 +73380,7 @@ index 472a8c4..6507cd4 100644 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()); @@ -75287,7 +73389,7 @@ index 472a8c4..6507cd4 100644 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()); @@ -75297,7 +73399,7 @@ index 472a8c4..6507cd4 100644 return res; } 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..5c4b40b 100644 --- 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, @@ -75306,14 +73408,14 @@ index 076b7c8..9c8d038 100644 - *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__); + if (*octets == NULL) + return 0; + 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 -@@ -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, @@ -75323,10 +73425,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 -index 61714bd..c9cee6d 100644 +index 007e2eb..85a18a0 100644 --- 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)) { @@ -75335,7 +73437,7 @@ index 61714bd..c9cee6d 100644 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) { @@ -75357,7 +73459,7 @@ index 61714bd..c9cee6d 100644 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; @@ -75368,7 +73470,7 @@ index 61714bd..c9cee6d 100644 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), @@ -75384,10 +73486,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 -index 05ac666c..82384a7 100644 +index 94cdbc5..0cb0063 100644 --- 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) { @@ -75396,7 +73498,7 @@ index 05ac666c..82384a7 100644 } #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)); @@ -75405,7 +73507,7 @@ index 05ac666c..82384a7 100644 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); @@ -75414,30 +73516,8 @@ index 05ac666c..82384a7 100644 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; - -+ pax_track_stack(); -+ - if (get_user(len, optlen)) - return -EFAULT; - diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c -index 7963e03..c44f5d0 100644 +index eb90aa8..22bf114 100644 --- 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 +73530,7 @@ index 7963e03..c44f5d0 100644 #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) +@@ -1632,6 +1635,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -75460,7 +73540,7 @@ index 7963e03..c44f5d0 100644 tcp_v4_send_reset(rsk, skb); discard: kfree_skb(skb); -@@ -1684,12 +1690,19 @@ int tcp_v4_rcv(struct sk_buff *skb) +@@ -1694,12 +1700,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); @@ -75483,7 +73563,7 @@ index 7963e03..c44f5d0 100644 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 +1762,10 @@ no_tcp_socket: bad_packet: TCP_INC_STATS_BH(net, TCP_MIB_INERRS); } else { @@ -75494,7 +73574,7 @@ index 7963e03..c44f5d0 100644 tcp_v4_send_reset(NULL, skb); } -@@ -2403,7 +2420,11 @@ static void get_openreq4(struct sock *sk, struct request_sock *req, +@@ -2409,7 +2426,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), @@ -75506,7 +73586,7 @@ index 7963e03..c44f5d0 100644 len); } -@@ -2453,7 +2474,12 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len) +@@ -2459,7 +2480,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), @@ -75520,7 +73600,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, -@@ -2481,7 +2507,13 @@ static void get_timewait4_sock(struct inet_timewait_sock *tw, +@@ -2487,7 +2513,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, @@ -75536,7 +73616,7 @@ index 7963e03..c44f5d0 100644 #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 @@ @@ -75550,7 +73630,7 @@ index 0ce3d06..e182e59 100644 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); @@ -75561,19 +73641,6 @@ index 0ce3d06..e182e59 100644 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 @@ -75588,7 +73655,7 @@ index 85ee7eb..53277ab 100644 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 @@ @@ -75617,7 +73684,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 -index 1b5a193..bd354b0 100644 +index 5a65eea..bd913a1 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -86,6 +86,7 @@ @@ -75686,9 +73753,9 @@ index 1b5a193..bd354b0 100644 + 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); @@ -75697,7 +73764,7 @@ index 1b5a193..bd354b0 100644 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) { @@ -75706,7 +73773,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, -@@ -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); @@ -75716,7 +73783,7 @@ index 1b5a193..bd354b0 100644 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), @@ -75733,10 +73800,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 -index 12368c5..fbf899f 100644 +index 836c4ea..cbb74dc 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c -@@ -2083,7 +2083,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) +@@ -2149,7 +2149,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) p.iph.ihl = 5; p.iph.protocol = IPPROTO_IPV6; p.iph.ttl = 64; @@ -75746,7 +73813,7 @@ index 12368c5..fbf899f 100644 if (ops->ndo_do_ioctl) { mm_segment_t oldfs = get_fs(); 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, @@ -75768,28 +73835,10 @@ index 8a58e8c..8b5e631 100644 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 -@@ -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; @@ -75799,19 +73848,19 @@ index 2fbda5f..26ed683 100644 msg.msg_flags = flags; 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 -@@ -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; } -@@ -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)) { @@ -75820,7 +73869,7 @@ index 343852e..c92bd15 100644 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)) { @@ -75838,16 +73887,7 @@ index 343852e..c92bd15 100644 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) { @@ -75864,7 +73904,7 @@ index 343852e..c92bd15 100644 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; @@ -75872,7 +73912,7 @@ index 343852e..c92bd15 100644 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; @@ -75882,7 +73922,7 @@ index 343852e..c92bd15 100644 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), @@ -75898,7 +73938,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 -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, @@ -75912,7 +73952,7 @@ index 7b8fc57..c6185da 100644 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: @@ -75922,7 +73962,7 @@ index 7b8fc57..c6185da 100644 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); @@ -75945,7 +73985,7 @@ index 7b8fc57..c6185da 100644 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 { @@ -75956,7 +73996,7 @@ index 7b8fc57..c6185da 100644 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 */ @@ -75971,7 +74011,7 @@ index 7b8fc57..c6185da 100644 } 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), @@ -75985,7 +74025,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, -@@ -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, @@ -76001,7 +74041,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 -index bb95e8e..ae0ee80 100644 +index 8c25419..47a51ae 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -50,6 +50,10 @@ @@ -76015,7 +74055,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; -@@ -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: @@ -76024,7 +74064,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); -@@ -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: @@ -76033,7 +74073,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), -@@ -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); @@ -76043,7 +74083,7 @@ index bb95e8e..ae0ee80 100644 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)) { @@ -76052,7 +74092,7 @@ index bb95e8e..ae0ee80 100644 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), @@ -76069,7 +74109,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 -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, @@ -76195,10 +74235,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 -index e2013e4..edfc1e3 100644 +index 274d150..656a144 100644 --- 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); @@ -76212,19 +74252,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 -index 1e733e9..c84de2f 100644 +index 1e733e9..3d73c9f 100644 --- 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; @@ -76237,97 +74268,8 @@ index 1e733e9..c84de2f 100644 } 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 -index 9fab144..7f0fc14 100644 +index 73495f1..ad51356 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -27,6 +27,7 @@ @@ -76338,7 +74280,7 @@ index 9fab144..7f0fc14 100644 #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; @@ -76348,7 +74290,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 -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) @@ -76387,7 +74329,7 @@ index 556e7e6..120dcaf 100644 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) @@ -76396,7 +74338,7 @@ index 556e7e6..120dcaf 100644 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); @@ -76406,10 +74348,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 -index 3d90dad..36884d5 100644 +index 7d9b21d..0687004 100644 --- 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; } @@ -76418,21 +74360,8 @@ index 3d90dad..36884d5 100644 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 -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) @@ -76463,10 +74392,10 @@ index 6326d34..7225f61 100644 suspend: diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c -index 3d5a2cb..b17ad48 100644 +index 5a5a776..9600b11 100644 --- 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(); @@ -76476,10 +74405,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 -index 4851e9e..d860e05 100644 +index c97a065..ff61928 100644 --- 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); @@ -76489,10 +74418,10 @@ index 4851e9e..d860e05 100644 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 -@@ -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 */ @@ -76502,10 +74431,10 @@ index fd031e8..84fbfcf 100644 /* 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 -@@ -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. @@ -76535,7 +74464,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 -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) @@ -76566,10 +74495,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 -index 4f77bb1..5d0bc26 100644 +index 6dc7d7d..e45913a 100644 --- 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 */ @@ -76578,7 +74507,7 @@ index 4f77bb1..5d0bc26 100644 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 @@ -76588,10 +74517,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 -index e3be48b..d658c8c 100644 +index e1a66cf..0910076 100644 --- 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); } @@ -76600,7 +74529,7 @@ index e3be48b..d658c8c 100644 /* 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), @@ -76609,7 +74538,7 @@ index e3be48b..d658c8c 100644 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), @@ -76618,16 +74547,7 @@ index e3be48b..d658c8c 100644 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; @@ -76636,7 +74556,7 @@ index e3be48b..d658c8c 100644 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, @@ -76646,7 +74566,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 -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: @@ -76668,7 +74588,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 -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, @@ -76690,7 +74610,7 @@ index ee319a4..8a285ee 100644 } 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 { @@ -76702,7 +74622,7 @@ index 2d8158a..5dca296 100644 #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, @@ -76769,11 +74689,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 -index 42ecb71..8d687c0 100644 +index 4fe4fb4..87a89e5 100644 --- a/net/netfilter/xt_statistic.c +++ b/net/netfilter/xt_statistic.c -@@ -18,7 +18,7 @@ - #include +@@ -19,7 +19,7 @@ + #include struct xt_statistic_priv { - atomic_t count; @@ -76781,7 +74701,7 @@ index 42ecb71..8d687c0 100644 } ____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 { @@ -76793,7 +74713,7 @@ index 42ecb71..8d687c0 100644 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; @@ -76803,7 +74723,7 @@ index 42ecb71..8d687c0 100644 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) @@ -76815,7 +74735,7 @@ index 0a4db02..604f748 100644 } 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), @@ -76845,10 +74765,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 -index fabb4fa..e146b73 100644 +index d9d4970..d5a6a68 100644 --- 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++; @@ -76857,7 +74777,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); -@@ -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++; @@ -76866,7 +74786,7 @@ index fabb4fa..e146b73 100644 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); @@ -76875,7 +74795,7 @@ index fabb4fa..e146b73 100644 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; @@ -76885,7 +74805,7 @@ index fabb4fa..e146b73 100644 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) @@ -76907,10 +74827,10 @@ index c6fffd9..a7ffa0c 100644 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 -@@ -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) { @@ -76919,7 +74839,7 @@ index f17fd84..edffce8 100644 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) { @@ -76928,7 +74848,7 @@ index f17fd84..edffce8 100644 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) { @@ -76938,10 +74858,10 @@ index f17fd84..edffce8 100644 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 -@@ -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), @@ -76958,10 +74878,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 -index 6daaa49..fbf6af5 100644 +index e5b65ac..f3b6fb7 100644 --- 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. */ @@ -76970,7 +74890,7 @@ index 6daaa49..fbf6af5 100644 /* * 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); @@ -76979,7 +74899,7 @@ index 6daaa49..fbf6af5 100644 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) { @@ -77002,10 +74922,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 -index cd67026..0b9a54a 100644 +index 51c8689..36c555f 100644 --- 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 @@ -77062,19 +74982,6 @@ index 9556d28..f046d0e 100644 #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 @@ -77098,10 +75005,10 @@ index 5e57347..3916042 100644 #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 -@@ -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); @@ -77137,7 +75044,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 -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) @@ -77176,16 +75083,7 @@ index f99cfce..3682692 100644 _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: @@ -77194,7 +75092,7 @@ index f99cfce..3682692 100644 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); @@ -77203,7 +75101,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), -@@ -1191,7 +1193,7 @@ send_ACK: +@@ -1191,7 +1191,7 @@ send_ACK: send_message: _debug("send message"); @@ -77314,10 +75212,10 @@ index 87f7135..74d3703 100644 } 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 -@@ -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 = @@ -77371,28 +75269,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 -index 7635107..5000b71 100644 +index 7635107..4670276 100644 --- 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; @@ -77401,7 +75281,7 @@ index 7635107..5000b71 100644 _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; @@ -77410,24 +75290,11 @@ index 7635107..5000b71 100644 _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 -index 05a6ce2..c8bf836 100644 +index 1e2eee8..ce3967e 100644 --- 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 ", @@ -77438,10 +75305,10 @@ index 05a6ce2..c8bf836 100644 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 -@@ -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; @@ -77451,7 +75318,7 @@ index 836aa63..d779d7b 100644 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 @@ @@ -77604,16 +75471,7 @@ index ffe92ca..8057b85 100644 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, @@ -77622,7 +75480,7 @@ index ffe92ca..8057b85 100644 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) */ @@ -77631,7 +75489,7 @@ index ffe92ca..8057b85 100644 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); @@ -77640,7 +75498,7 @@ index ffe92ca..8057b85 100644 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, @@ -77657,7 +75515,7 @@ index ffe92ca..8057b85 100644 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, @@ -77674,7 +75532,7 @@ index ffe92ca..8057b85 100644 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, @@ -77683,7 +75541,7 @@ index ffe92ca..8057b85 100644 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); @@ -77692,7 +75550,7 @@ index ffe92ca..8057b85 100644 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); @@ -77701,7 +75559,7 @@ index ffe92ca..8057b85 100644 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; @@ -77712,7 +75570,7 @@ index ffe92ca..8057b85 100644 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; @@ -77722,7 +75580,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 -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) @@ -77738,10 +75596,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 -index 767d494..fe17e9d 100644 +index 71bed1c..5dff36d 100644 --- 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; @@ -77906,10 +75764,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 -index a385430..32254ea 100644 +index ba1296d..0fec1a5 100644 --- 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); @@ -77918,7 +75776,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; -@@ -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) @@ -77927,7 +75785,7 @@ index a385430..32254ea 100644 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); @@ -77936,7 +75794,7 @@ index a385430..32254ea 100644 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) @@ -77945,7 +75803,7 @@ index a385430..32254ea 100644 } 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); @@ -77955,10 +75813,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 -index ca84212..3aa338f 100644 +index e758139..d29ea47 100644 --- 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. */ @@ -77968,10 +75826,10 @@ index ca84212..3aa338f 100644 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 -@@ -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; @@ -77980,7 +75838,7 @@ index f89570c..016cf63 100644 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; @@ -77989,7 +75847,7 @@ index f89570c..016cf63 100644 } 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, @@ -78012,7 +75870,7 @@ index 83d5096..dcba497 100644 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, @@ -78025,7 +75883,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 -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, @@ -78075,7 +75933,7 @@ index ec68e1c..fdd792f 100644 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 { @@ -78088,10 +75946,10 @@ index 8672e02..48782dd 100644 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 -@@ -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 */ @@ -78101,7 +75959,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. -@@ -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 +75983,7 @@ index fdbc23c..212d53e 100644 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) @@ -78182,7 +76040,7 @@ index 552df27..8e7f238 100644 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 && @@ -78191,7 +76049,7 @@ index 552df27..8e7f238 100644 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 */ @@ -78200,30 +76058,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 -index a0fd502..a8e6e83 100644 +index d2b366c..51ff91ebc 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -109,7 +109,7 @@ endif @@ -78270,7 +76106,7 @@ index 1ac414f..a1c1451 100644 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) @@ -78307,7 +76143,7 @@ index 291228e..6c55203 100644 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"; @@ -78325,7 +76161,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 -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, @@ -78382,7 +76218,7 @@ index e26e2fb..f84937b 100644 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) { @@ -78392,7 +76228,7 @@ index e26e2fb..f84937b 100644 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 { @@ -78462,7 +76298,7 @@ index a509ff8..5822633 100644 { 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; @@ -78538,10 +76374,10 @@ index 5c11312..72742b5 100644 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..eeabc9f 100644 --- a/security/Kconfig +++ b/security/Kconfig -@@ -4,6 +4,586 @@ +@@ -4,6 +4,627 @@ menu "Security options" @@ -78581,12 +76417,11 @@ index e0f08b5..7388edd 100644 + +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 -+ 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 @@ -78601,10 +76436,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 -+ has been deprecated in favour of PT_PAX_FLAGS support. ++ has been deprecated in favour of PT_PAX_FLAGS and XATTR_PAX_FLAGS ++ support. ++ ++ 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 marking support as well, -+ the PT_PAX_FLAG marks will override the legacy EI_PAX marks. ++ 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' @@ -78617,12 +76457,49 @@ index e0f08b5..7388edd 100644 + 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. + ++config PAX_XATTR_PAX_FLAGS ++ bool 'Use filesystem extended attributes marking' ++ depends on EXPERT ++ 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 @@ -78654,7 +76531,7 @@ index e0f08b5..7388edd 100644 + +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 @@ -78929,7 +76806,6 @@ index e0f08b5..7388edd 100644 + +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 @@ -79011,6 +76887,7 @@ index e0f08b5..7388edd 100644 + +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 @@ -79049,10 +76926,10 @@ index e0f08b5..7388edd 100644 + 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" @@ -79128,7 +77005,7 @@ index e0f08b5..7388edd 100644 config KEYS bool "Enable access key retention support" help -@@ -167,7 +747,7 @@ config INTEL_TXT +@@ -169,7 +790,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 @@ -79151,7 +77028,7 @@ index 3783202..1852837 100644 .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 @@ @@ -79171,7 +77048,7 @@ index a93b3b7..4410df9 100644 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(); @@ -79182,10 +77059,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 -index 08408bd..67e6e78 100644 +index 3ccf7ac..d73ad64 100644 --- 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 { @@ -79197,7 +77074,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 -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, @@ -79209,8 +77086,27 @@ index da36d2c..e1e1965 100644 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 -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 @@ @@ -79229,10 +77125,10 @@ index ef21b96..d53e674 100644 } 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 -@@ -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); @@ -79242,7 +77138,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 -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( @@ -79255,7 +77151,7 @@ index 338b510..a235861 100644 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) @@ -79295,7 +77191,7 @@ index eca5191..da9c7f0 100644 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, @@ -79317,6 +77213,54 @@ index 30e242f..ec111ab 100644 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 @@ -79338,12 +77282,12 @@ index f728728..6457a0c 100644 /* 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 -@@ -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 = { @@ -79352,7 +77296,7 @@ index d9e1533..91427f2 100644 .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) { @@ -79363,18 +77307,19 @@ index d9e1533..91427f2 100644 /* 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 -@@ -93,7 +93,6 @@ +@@ -94,8 +94,6 @@ + #define NUM_SEL_MNT_OPTS 5 - extern int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm); -extern struct security_operations *security_ops; - +- /* 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 @@ -79396,24 +77341,11 @@ index b43813c..74be837 100644 } #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 -index b9c5e14..20ab779 100644 +index 7db62b4..ee4d949 100644 --- 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; } @@ -79423,10 +77355,10 @@ index b9c5e14..20ab779 100644 .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 -@@ -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. */ @@ -79436,7 +77368,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 -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 { @@ -79480,7 +77412,7 @@ index ffd2025..df062c9 100644 /* 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 @@ -79568,10 +77500,10 @@ index 91cdf94..4085161 100644 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 -@@ -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, @@ -79586,10 +77518,10 @@ index 1c6be91..c761a59 100644 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 -@@ -63,7 +63,7 @@ struct ops_list { +@@ -64,7 +64,7 @@ struct ops_list { int argsize; /* argument size */ /* operators */ @@ -79598,7 +77530,7 @@ index 1f99767..14636533 100644 /* 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 */ @@ -79607,7 +77539,7 @@ index 1f99767..14636533 100644 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; } @@ -79616,7 +77548,7 @@ index 1f99767..14636533 100644 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; } @@ -79626,10 +77558,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 -index 8539ab0..be8a121 100644 +index f24bf9a..1f7b67c 100644 --- a/sound/drivers/mts64.c +++ b/sound/drivers/mts64.c -@@ -28,6 +28,7 @@ +@@ -29,6 +29,7 @@ #include #include #include @@ -79637,7 +77569,7 @@ index 8539ab0..be8a121 100644 #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; @@ -79646,7 +77578,7 @@ index 8539ab0..be8a121 100644 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; @@ -79655,7 +77587,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 */ -@@ -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); } @@ -79664,7 +77596,7 @@ index 8539ab0..be8a121 100644 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; @@ -79674,7 +77606,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); -@@ -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); @@ -79686,10 +77618,10 @@ index 8539ab0..be8a121 100644 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 -@@ -28,7 +28,7 @@ MODULE_AUTHOR("Clemens Ladisch "); +@@ -29,7 +29,7 @@ MODULE_AUTHOR("Clemens Ladisch "); MODULE_DESCRIPTION("OPL4 driver"); MODULE_LICENSE("GPL"); @@ -79699,10 +77631,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 -index f2b0ba2..429efc5 100644 +index f664823..590c745 100644 --- a/sound/drivers/portman2x4.c +++ b/sound/drivers/portman2x4.c -@@ -47,6 +47,7 @@ +@@ -48,6 +48,7 @@ #include #include #include @@ -79710,7 +77642,7 @@ index f2b0ba2..429efc5 100644 #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; @@ -79755,10 +77687,10 @@ index 537a9cb..8e8c8e9 100644 /** 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 -@@ -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; @@ -79767,7 +77699,7 @@ index 4400308..261e9f3 100644 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; @@ -79776,7 +77708,7 @@ index 4400308..261e9f3 100644 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; @@ -79785,7 +77717,7 @@ index 4400308..261e9f3 100644 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: @@ -79799,7 +77731,7 @@ index 4400308..261e9f3 100644 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 { @@ -79863,7 +77795,7 @@ 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 -index 755f2b0..5c12361 100644 +index 5644711..a2aebc1 100644 --- a/sound/pci/hda/hda_codec.h +++ b/sound/pci/hda/hda_codec.h @@ -611,7 +611,7 @@ struct hda_bus_ops { @@ -79924,10 +77856,10 @@ index 0da778a..bc38b84 100644 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 -@@ -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; } @@ -79938,7 +77870,7 @@ index f3260e6..4a285d8 100644 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); @@ -79947,7 +77879,7 @@ index f3260e6..4a285d8 100644 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); @@ -79958,7 +77890,7 @@ index f3260e6..4a285d8 100644 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); @@ -79968,10 +77900,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 -index 2879c88..224159e 100644 +index ee15337..e2187a6 100644 --- 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 */ @@ -79981,7 +77913,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 -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 { @@ -79997,13 +77929,13 @@ index ae4251d..0961361 100644 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 -index 0000000..b044b80 +index 0000000..469b06a --- /dev/null +++ b/tools/gcc/Makefile @@ -0,0 +1,21 @@ @@ -80011,9 +77943,9 @@ index 0000000..b044b80 +#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 + +hostlibs-y := constify_plugin.so +hostlibs-$(CONFIG_PAX_MEMORY_STACKLEAK) += stackleak_plugin.so @@ -80689,10 +78621,10 @@ index 0000000..a5eabce +} 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 -@@ -0,0 +1,348 @@ +@@ -0,0 +1,427 @@ +/* + * Copyright 2011 by the PaX Team + * Licensed under the GPL v2 @@ -80740,13 +78672,32 @@ index 0000000..51f747e + .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 void (*kernexec_instrument_fptr)(gimple_stmt_iterator); ++static void (*kernexec_instrument_fptr)(gimple_stmt_iterator *); +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, @@ -80802,15 +78753,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 + */ -+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; + -+ 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 @@ -80818,14 +78820,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)); -+ 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)); -+ 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 @@ -80833,7 +78835,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)); -+ 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 @@ -80841,14 +78843,14 @@ index 0000000..51f747e + 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; + -+ call_stmt = gsi_stmt(gsi); ++ call_stmt = gsi_stmt(*gsi); + old_fptr = gimple_call_fn(call_stmt); + + // create temporary fptr variable @@ -80865,7 +78867,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); -+ 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 @@ -80879,10 +78881,11 @@ index 0000000..51f747e +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) { ++ 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; @@ -80909,7 +78912,7 @@ index 0000000..51f747e + 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); @@ -80991,6 +78994,12 @@ index 0000000..51f747e + 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", @@ -81036,6 +79045,8 @@ 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_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); + @@ -81043,10 +79054,10 @@ index 0000000..51f747e +} diff --git a/tools/gcc/stackleak_plugin.c b/tools/gcc/stackleak_plugin.c new file mode 100644 -index 0000000..d44f37c +index 0000000..4a9b187 --- /dev/null +++ b/tools/gcc/stackleak_plugin.c -@@ -0,0 +1,291 @@ +@@ -0,0 +1,326 @@ +/* + * Copyright 2011 by the PaX Team + * Licensed under the GPL v2 @@ -81093,10 +79104,12 @@ index 0000000..d44f37c +static int track_frame_size = -1; +static const char track_function[] = "pax_track_stack"; +static const char check_function[] = "pax_check_alloca"; ++static tree pax_check_alloca_decl; ++static tree pax_track_stack_decl; +static bool init_locals; + +static struct plugin_info stackleak_plugin_info = { -+ .version = "201111150100", ++ .version = "201203021600", + .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 +79159,24 @@ index 0000000..d44f37c + 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; -+ tree fndecl, fntype, alloca_size; ++ tree 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 -+ alloca_size = gimple_call_arg(gsi_stmt(gsi), 0); -+ check_alloca = gimple_build_call(fndecl, 1, alloca_size); -+ gsi_insert_before(&gsi, check_alloca, GSI_CONTINUE_LINKING); ++ alloca_size = gimple_call_arg(gsi_stmt(*gsi), 0); ++ check_alloca = gimple_build_call(pax_check_alloca_decl, 1, alloca_size); ++ 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; -+ tree fndecl, fntype; + + // 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 -+ track_stack = gimple_build_call(fndecl, 0); -+ gsi_insert_after(&gsi, track_stack, GSI_CONTINUE_LINKING); ++ track_stack = gimple_build_call(pax_track_stack_decl, 0); ++ gsi_insert_after(gsi, track_stack, GSI_CONTINUE_LINKING); +} + +#if BUILDING_GCC_VERSION == 4005 @@ -81206,34 +79212,52 @@ index 0000000..d44f37c +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; ++ + 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 -+ if (!is_alloca(gsi_stmt(gsi))) ++ if (!is_alloca(stmt)) + 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 -+ stackleak_add_instrumentation(gsi); ++ stackleak_add_instrumentation(&gsi); + if (bb == entry_bb) + prologue_instrumented = true; + } + } + ++ // special case 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; ++ + // 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); -+ stackleak_add_instrumentation(gsi_start_bb(bb)); ++ gsi = gsi_start_bb(bb); ++ stackleak_add_instrumentation(&gsi); + } + + return 0; @@ -81284,6 +79308,27 @@ index 0000000..d44f37c + return 0; +} + ++static void stackleak_start_unit(void *gcc_data, void *user_dat) ++{ ++ tree fntype; ++ ++ // declare void pax_check_alloca(unsigned long size) ++ fntype = build_function_type_list(void_type_node, long_unsigned_type_node, NULL_TREE); ++ pax_check_alloca_decl = build_fn_decl(check_function, fntype); ++ DECL_ASSEMBLER_NAME(pax_check_alloca_decl); // for LTO ++ TREE_PUBLIC(pax_check_alloca_decl) = 1; ++ DECL_EXTERNAL(pax_check_alloca_decl) = 1; ++ DECL_ARTIFICIAL(pax_check_alloca_decl) = 1; ++ ++ // declare void pax_track_stack(void) ++ fntype = build_function_type_list(void_type_node, NULL_TREE); ++ pax_track_stack_decl = build_fn_decl(track_function, fntype); ++ DECL_ASSEMBLER_NAME(pax_track_stack_decl); // for LTO ++ TREE_PUBLIC(pax_track_stack_decl) = 1; ++ DECL_EXTERNAL(pax_track_stack_decl) = 1; ++ DECL_ARTIFICIAL(pax_track_stack_decl) = 1; ++} ++ +int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) +{ + const char * const plugin_name = plugin_info->base_name; @@ -81295,7 +79340,7 @@ index 0000000..d44f37c +// .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, @@ -81333,6 +79378,7 @@ index 0000000..d44f37c + error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + ++ register_callback("start_unit", PLUGIN_START_UNIT, &stackleak_start_unit, NULL); + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &stackleak_tree_instrument_pass_info); + register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &stackleak_final_pass_info); + @@ -81377,10 +79423,10 @@ index af0f22f..9a7d479 100644 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 -@@ -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; @@ -81389,7 +79435,7 @@ index aefdda3..8e8fbb9 100644 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); @@ -81398,7 +79444,7 @@ index aefdda3..8e8fbb9 100644 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) { @@ -81411,7 +79457,7 @@ index aefdda3..8e8fbb9 100644 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); } @@ -81420,7 +79466,7 @@ index aefdda3..8e8fbb9 100644 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, @@ -81429,7 +79475,7 @@ index aefdda3..8e8fbb9 100644 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; 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 index 2e3d3277d..000000000 --- a/kernel/patches/linux-3.1-bridge-master-device-stuck-in-no-carrier-state-forever-when-in-user-stp-mode.patch +++ /dev/null @@ -1,98 +0,0 @@ -From b03b6dd58cef7d15b7c46a6729b83dd535ef08ab Mon Sep 17 00:00:00 2001 -From: Vitalii Demianets -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 -Acked-by: Stephen Hemminger -Signed-off-by: David S. Miller ---- - 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 - - #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 index 000000000..acbbd39f4 --- /dev/null +++ b/kernel/scripts/configcommon.py @@ -0,0 +1,80 @@ +#!/usr/bin/python +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team # +############################################################################### + +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() + + 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 + + +#for option, counter in sorted(options_counter.items()): +# if not counter == len(filelist): +# continue +# +# m = re.match("^(.*)=([ymn])$", option) +# if m: +# option, value = m.groups() +# if value in ("m", "y"): +# print "%s=%s" % (option, value) +# else: +# print "# %s is not set" % option diff --git a/kernel/scripts/configdiff.py b/kernel/scripts/configdiff.py new file mode 100755 index 000000000..d402034c6 --- /dev/null +++ b/kernel/scripts/configdiff.py @@ -0,0 +1,82 @@ +#!/usr/bin/python +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team # +############################################################################### + +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_"): + 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 index 000000000..aac8dc5d8 --- /dev/null +++ b/kernel/scripts/configure @@ -0,0 +1,315 @@ +#!/bin/bash +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team # +############################################################################### + +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: " + 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 " + 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 index 000000000..8c318156a --- /dev/null +++ b/kernel/scripts/merge.pl @@ -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 () { + 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 () { + 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; -- 2.47.2