From 463530b876e41ccec2e71a68528fa1d8dd04f0bd Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 2 Aug 2015 22:02:47 +0100 Subject: [PATCH] kernel: Update to version 4.1.3 Signed-off-by: Michael Tremer --- kernel/config-arm-generic | 70 +- kernel/config-arm32-generic | 45 +- kernel/config-arm64-generic | 133 +- kernel/config-armv5tel-default | 24 +- kernel/config-armv7hl-default | 81 +- kernel/config-armv7hl-lpae | 21 +- kernel/config-generic | 157 +- kernel/config-i686-default | 9 +- kernel/config-i686-legacy | 49 +- kernel/config-x86-generic | 50 +- kernel/config-x86_64-default | 5 +- kernel/kernel.nm | 4 +- ...> grsecurity-3.1-4.1.3-201507261932.patch} | 20620 +++++++++++----- ...inux-4.0-arm-exynos-thumb2-fix-build.patch | 79 - 14 files changed, 14350 insertions(+), 6997 deletions(-) rename kernel/patches/{grsecurity-3.1-4.0.4-201505272113.patch => grsecurity-3.1-4.1.3-201507261932.patch} (91%) delete mode 100644 kernel/patches/linux-4.0-arm-exynos-thumb2-fix-build.patch diff --git a/kernel/config-arm-generic b/kernel/config-arm-generic index c73a0663d..b9b348e5b 100644 --- a/kernel/config-arm-generic +++ b/kernel/config-arm-generic @@ -1,9 +1,11 @@ CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y +CONFIG_PGTABLE_LEVELS=2 # # IRQ subsystem # +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y CONFIG_HARDIRQS_SW_RESEND=y CONFIG_HANDLE_DOMAIN_IRQ=y @@ -61,6 +63,11 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_PM_OPP=y CONFIG_CPU_PM=y +# +# ARM CPU Idle Drivers +# +# CONFIG_ARM_CPUIDLE is not set + # # CPU Frequency scaling # @@ -103,6 +110,9 @@ CONFIG_CMA_ALIGNMENT=8 # # Bus devices # +CONFIG_ARM_CCI=y +CONFIG_ARM_CCI400_COMMON=y +CONFIG_ARM_CCI400_PMU=y # CONFIG_ARM_CCN is not set CONFIG_VEXPRESS_CONFIG=y CONFIG_DTC=y @@ -124,6 +134,10 @@ CONFIG_OF_PCI_IRQ=y CONFIG_OF_RESERVED_MEM=y # CONFIG_OF_OVERLAY is not set # CONFIG_PARPORT is not set + +# +# Protocols +# # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set @@ -146,10 +160,7 @@ CONFIG_VEXPRESS_SYSCFG=y # SCSI Transports # CONFIG_AIC79XX_RESET_DELAY_MS=5000 -CONFIG_AIC79XX_DEBUG_ENABLE=y CONFIG_AIC79XX_REG_PRETTY_PRINT=y -CONFIG_AIC94XX_DEBUG=y -CONFIG_SCSI_MVSAS_DEBUG=y # CONFIG_SCSI_MVSAS_TASKLET is not set # CONFIG_MEGARAID_NEWGEN is not set @@ -196,7 +207,6 @@ CONFIG_SMC91X=m CONFIG_MDIO_BUS_MUX=m CONFIG_MDIO_BUS_MUX_GPIO=m CONFIG_MDIO_BUS_MUX_MMIOREG=m -# CONFIG_ATH5K_DEBUG is not set CONFIG_WIL6210_TRACING=y # CONFIG_IPW2100_MONITOR is not set # CONFIG_IPW2200_MONITOR is not set @@ -210,6 +220,7 @@ CONFIG_WIL6210_TRACING=y CONFIG_KEYBOARD_OMAP4=m # CONFIG_KEYBOARD_TC3589X is not set # CONFIG_KEYBOARD_CAP11XX is not set +CONFIG_KEYBOARD_BCM=m CONFIG_INPUT_MAX77693_HAPTIC=m # CONFIG_INPUT_MAX8997_HAPTIC is not set # CONFIG_INPUT_GPIO_BEEPER is not set @@ -271,26 +282,27 @@ CONFIG_OF_GPIO=y CONFIG_GPIO_GENERIC=y # -# Memory mapped GPIO drivers: +# Memory mapped GPIO drivers # CONFIG_GPIO_74XX_MMIO=m +CONFIG_GPIO_ALTERA=m CONFIG_GPIO_GENERIC_PLATFORM=y -# CONFIG_GPIO_SYSCON is not set # CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_SYSCON is not set # -# I2C GPIO expanders: +# I2C GPIO expanders # -# CONFIG_GPIO_STMPE is not set CONFIG_GPIO_ADNP=m # -# SPI GPIO expanders: +# MFD GPIO expanders # -# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_STMPE is not set +# CONFIG_GPIO_TC3589X is not set # -# USB GPIO expanders: +# USB GPIO expanders # # CONFIG_MAX8925_POWER is not set # CONFIG_WM831X_BACKUP is not set @@ -310,12 +322,17 @@ CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_POWER_RESET_LTC2952=y CONFIG_POWER_RESET_VEXPRESS=y CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y # # Native drivers # CONFIG_SENSORS_PWM_FAN=m CONFIG_SENSORS_VEXPRESS=m + +# +# ACPI drivers +# CONFIG_THERMAL_OF=y # CONFIG_CPU_THERMAL is not set CONFIG_CLOCK_THERMAL=y @@ -346,6 +363,7 @@ CONFIG_MFD_STMPE=y # STMicroelectronics STMPE Interface Drivers # CONFIG_STMPE_I2C=y +CONFIG_MFD_TC3589X=y CONFIG_MFD_VEXPRESS_SYSREG=y CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set @@ -391,6 +409,7 @@ CONFIG_DVB_TTUSB_DEC=y # CONFIG_DVB_PT1 is not set # CONFIG_MANTIS_CORE is not set # CONFIG_DVB_NGENE is not set +# CONFIG_VIDEO_XILINX is not set # # DVB-S (satellite) frontends @@ -419,6 +438,7 @@ CONFIG_DVB_LNBP21=y # I2C encoder or helper chips # CONFIG_DRM_PTN3460=m +CONFIG_DRM_PS8622=m # CONFIG_DRM_RADEON is not set # CONFIG_DRM_NOUVEAU is not set @@ -460,6 +480,7 @@ CONFIG_SND_SOC_FSL_SSI=m CONFIG_SND_SOC_FSL_SPDIF=m CONFIG_SND_SOC_FSL_ESAI=m CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SOC_QCOM=m CONFIG_SND_SOC_I2C_AND_SPI=m # @@ -519,16 +540,23 @@ CONFIG_SND_SOC_WM8750=m CONFIG_SND_SOC_WM8753=m CONFIG_SND_SOC_WM8776=m CONFIG_SND_SOC_WM8804=m +CONFIG_SND_SOC_WM8804_I2C=m CONFIG_SND_SOC_WM8903=m CONFIG_SND_SOC_WM8962=m CONFIG_SND_SOC_WM8978=m CONFIG_SND_SOC_TPA6130A2=m CONFIG_SND_SIMPLE_CARD=m +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +CONFIG_USB_CHIPIDEA_OF=m + # # USB Physical Layer drivers # CONFIG_USB_ULPI=y +CONFIG_USB_ULPI_VIEWPORT=y # # MMC/SD/SDIO Host Controller Drivers @@ -570,7 +598,6 @@ CONFIG_RTC_DRV_SNVS=m # # CONFIG_DW_DMAC is not set CONFIG_FSL_EDMA=m -CONFIG_DMA_VIRTUAL_CHANNELS=m CONFIG_DMA_OF=y # @@ -590,24 +617,13 @@ CONFIG_COMMON_CLK_MAX_GEN=y CONFIG_COMMON_CLK_MAX77802=m CONFIG_COMMON_CLK_RK808=m CONFIG_COMMON_CLK_SI570=m -CONFIG_COMMON_CLK_QCOM=m -CONFIG_APQ_GCC_8084=m -CONFIG_APQ_MMCC_8084=m -CONFIG_IPQ_GCC_806X=m -CONFIG_IPQ_LCC_806X=m -CONFIG_MSM_GCC_8660=m -CONFIG_MSM_GCC_8960=m -CONFIG_MSM_LCC_8960=m -CONFIG_MSM_MMCC_8960=m -CONFIG_MSM_GCC_8974=m -CONFIG_MSM_MMCC_8974=m +CONFIG_COMMON_CLK_PWM=m # # Clock Source drivers # CONFIG_CLKSRC_OF=y CONFIG_CLKSRC_MMIO=y -CONFIG_CLKSRC_VERSATILE=y # # Analog to digital converters @@ -626,6 +642,11 @@ CONFIG_PWM=y CONFIG_PWM_SYSFS=y CONFIG_IRQCHIP=y +# +# Firmware Drivers +# +# CONFIG_FIRMWARE_MEMMAP is not set + # # RCU Debugging # @@ -636,6 +657,7 @@ CONFIG_IRQCHIP=y # # CONFIG_DEBUG_SET_MODULE_RONX is not set CONFIG_DEBUG_RODATA=y +# CONFIG_CORESIGHT is not set # # Logging Options diff --git a/kernel/config-arm32-generic b/kernel/config-arm32-generic index b8b88c394..bce2c5782 100644 --- a/kernel/config-arm32-generic +++ b/kernel/config-arm32-generic @@ -21,14 +21,12 @@ CONFIG_KERNEL_XZ=y # # IRQ subsystem # -CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_FORCED_THREADING=y # # RCU Subsystem # CONFIG_CONTEXT_TRACKING_FORCE=y -CONFIG_UID16=y # # Kernel Performance Events And Counters @@ -38,7 +36,6 @@ CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_GENERIC_IDLE_POLL_SETUP=y CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y CONFIG_MODULES_USE_ELF_REL=y -CONFIG_OLD_SIGSUSPEND3=y CONFIG_OLD_SIGACTION=y # @@ -52,7 +49,6 @@ CONFIG_LBDAF=y CONFIG_ARCH_MULTIPLATFORM=y # CONFIG_ARCH_REALVIEW is not set # CONFIG_ARCH_VERSATILE is not set -# CONFIG_ARCH_AT91 is not set # CONFIG_ARCH_CLPS711X is not set # CONFIG_ARCH_GEMINI is not set # CONFIG_ARCH_EBSA110 is not set @@ -71,7 +67,6 @@ CONFIG_ARCH_MULTIPLATFORM=y # CONFIG_ARCH_W90X900 is not set # CONFIG_ARCH_LPC32XX is not set # CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_MSM is not set # CONFIG_ARCH_SHMOBILE_LEGACY is not set # CONFIG_ARCH_RPC is not set # CONFIG_ARCH_SA1100 is not set @@ -84,12 +79,12 @@ CONFIG_ARCH_MULTIPLATFORM=y # CPU Core family selection # # CONFIG_ARCH_MULTI_V6 is not set +# CONFIG_ARCH_AT91 is not set # # Hisilicon platform type # CONFIG_ARCH_MXC=y -# CONFIG_MXC_DEBUG_BOARD is not set # # OMAP Legacy Platform Data Board Type @@ -108,7 +103,6 @@ CONFIG_CPU_CP15_MMU=y # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set CONFIG_ARM_THUMB=y # CONFIG_CPU_ICACHE_DISABLE is not set -# CONFIG_CPU_DCACHE_DISABLE is not set CONFIG_KUSER_HELPERS=y CONFIG_OUTER_CACHE=y CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y @@ -121,6 +115,7 @@ CONFIG_MULTI_IRQ_HANDLER=y CONFIG_PCIE_DW=y CONFIG_PCI_HOST_GENERIC=y CONFIG_PCI_LAYERSCAPE=y +CONFIG_PCIE_IPROC=m # CONFIG_PCCARD is not set # @@ -159,6 +154,7 @@ CONFIG_AUTO_ZRELADDR=y # CPU frequency scaling drivers # CONFIG_ARM_IMX6Q_CPUFREQ=m +CONFIG_QORIQ_CPUFREQ=m # # At least one emulation must be selected @@ -213,7 +209,6 @@ CONFIG_PATA_IMX=m # # Distributed Switch Architecture drivers # -CONFIG_NET_CADENCE=y CONFIG_NET_VENDOR_CIRRUS=y CONFIG_CS89x0=m CONFIG_CS89x0_PLATFORM=y @@ -224,6 +219,8 @@ CONFIG_FTMAC100=m CONFIG_FTGMAC100=m CONFIG_NET_VENDOR_FREESCALE=y CONFIG_FEC=m +CONFIG_FSL_PQ_MDIO=m +CONFIG_FSL_XGMAC_MDIO=m CONFIG_NET_VENDOR_HISILICON=y CONFIG_HIX5HD2_GMAC=m CONFIG_HIP04_ETH=m @@ -279,21 +276,23 @@ CONFIG_PINCTRL=y # CONFIG_PINMUX=y CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y # CONFIG_DEBUG_PINCTRL is not set # CONFIG_PINCTRL_AS3722 is not set +CONFIG_PINCTRL_AMD=y # CONFIG_PINCTRL_PALMAS is not set CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y # -# Memory mapped GPIO drivers: +# Memory mapped GPIO drivers # # CONFIG_GPIO_DWAPB is not set # CONFIG_GPIO_EM is not set -# CONFIG_GPIO_ZEVIO is not set CONFIG_GPIO_MXC=y +# CONFIG_GPIO_ZEVIO is not set # -# USB GPIO expanders: +# USB GPIO expanders # # CONFIG_APM_POWER is not set CONFIG_POWER_RESET_VERSATILE=y @@ -301,7 +300,6 @@ CONFIG_POWER_RESET_VERSATILE=y # # Watchdog Device Drivers # -CONFIG_CADENCE_WATCHDOG=m CONFIG_MAX63XX_WATCHDOG=m CONFIG_IMX2_WDT=m @@ -410,6 +408,7 @@ CONFIG_USB_MXS_PHY=m CONFIG_MMC_SDHCI_IO_ACCESSORS=y CONFIG_MMC_SDHCI_OF_ARASAN=m CONFIG_MMC_SDHCI_ESDHC_IMX=m +CONFIG_MMC_SDHCI_PXAV3=m CONFIG_MMC_MXC=m # @@ -441,10 +440,15 @@ CONFIG_NBPFAXI_DMA=m # # CONFIG_VFIO is not set +# +# Android +# +CONFIG_CHROME_PLATFORMS=y + # # Common Clock Framework # -# CONFIG_CLK_QORIQ is not set +CONFIG_CLK_QORIQ=y # # Clock Source drivers @@ -480,7 +484,6 @@ CONFIG_ARM_UNWIND=y CONFIG_DEBUG_IMX_UART_PORT=1 # CONFIG_DEBUG_UART_8250 is not set CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" -# CONFIG_CORESIGHT is not set # # PaX @@ -527,22 +530,16 @@ CONFIG_GRKERNSEC_KERN_LOCKOUT=y # # CONFIG_GRKERNSEC_SETXID is not set -# -# Digest -# -CONFIG_CRYPTO_SHA1_ARM=m - -# -# Ciphers -# -CONFIG_CRYPTO_AES_ARM=m - # # Random Number Generation # CONFIG_CRYPTO_DEV_HIFN_795X=m CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y CONFIG_CRYPTO_DEV_SAHARA=m +CONFIG_ARM_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM=m +CONFIG_CRYPTO_SHA256_ARM=m +CONFIG_CRYPTO_AES_ARM=m # # Library routines diff --git a/kernel/config-arm64-generic b/kernel/config-arm64-generic index b8cbadd0c..2dec4e948 100644 --- a/kernel/config-arm64-generic +++ b/kernel/config-arm64-generic @@ -46,6 +46,12 @@ CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_SLUB_CPU_PARTIAL=y CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_COMPAT_OLD_SIGACTION=y + +# +# Partition Types +# +CONFIG_BLOCK_COMPAT=y # # IO Schedulers @@ -62,17 +68,21 @@ CONFIG_LOCK_SPIN_ON_OWNER=y # CONFIG_ARCH_EXYNOS7 is not set # CONFIG_ARCH_FSL_LS2085A is not set # CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_QCOM is not set CONFIG_ARCH_SEATTLE=y # CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_SPRD is not set # CONFIG_ARCH_THUNDER is not set CONFIG_ARCH_VEXPRESS=y CONFIG_ARCH_XGENE=y +# CONFIG_ARCH_ZYNQMP is not set # # Bus support # CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_BUS_ADDR_T_64BIT=y CONFIG_PCI_LABEL=y # @@ -81,6 +91,8 @@ CONFIG_PCI_LABEL=y CONFIG_PCI_XGENE=y CONFIG_HOTPLUG_PCI_PCIE=y CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=y CONFIG_HOTPLUG_PCI_CPCI=y CONFIG_HOTPLUG_PCI_SHPC=m @@ -92,12 +104,12 @@ CONFIG_ARM64_ERRATUM_827319=y CONFIG_ARM64_ERRATUM_824069=y CONFIG_ARM64_ERRATUM_819472=y CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_845719=y # CONFIG_ARM64_4K_PAGES is not set CONFIG_ARM64_64K_PAGES=y CONFIG_ARM64_VA_BITS_42=y # CONFIG_ARM64_VA_BITS_48 is not set CONFIG_ARM64_VA_BITS=42 -CONFIG_ARM64_PGTABLE_LEVELS=2 CONFIG_SMP=y CONFIG_SCHED_MC=y CONFIG_SCHED_SMT=y @@ -123,6 +135,10 @@ CONFIG_MMU_NOTIFIER=y CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_XEN is not set CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y # # Boot options @@ -133,25 +149,27 @@ CONFIG_EFI=y CONFIG_DMI=y # -# Power management options +# Userspace binary formats # -CONFIG_PM_SLEEP_SMP=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_COMPAT=y +CONFIG_SYSVIPC_COMPAT=y # -# CPU Idle +# Power management options # -CONFIG_DT_IDLE_STATES=y +CONFIG_PM_SLEEP_SMP=y # -# ARM64 CPU Idle Drivers +# ARM CPU Idle Drivers # -CONFIG_ARM64_CPUIDLE=y # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set # # CPU frequency scaling drivers # # CONFIG_ARM_KIRKWOOD_CPUFREQ is not set +CONFIG_COMPAT_NETLINK_MESSAGES=y # # Classification @@ -176,6 +194,13 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y # # Device Tree and Open Firmware support # +CONFIG_PNP=y +# CONFIG_PNP_DEBUG_MESSAGES is not set + +# +# Protocols +# +CONFIG_PNPACPI=y CONFIG_BLK_DEV_SKD=m # @@ -187,16 +212,32 @@ CONFIG_BLK_DEV_SKD=m # SCSI Transports # # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +CONFIG_ATA_ACPI=y +CONFIG_SATA_ZPODD=y # # Controllers with non-SFF native interface # CONFIG_AHCI_XGENE=m +# +# Generic fallback / legacy drivers +# +CONFIG_PATA_ACPI=m + # # Distributed Switch Architecture drivers # CONFIG_VORTEX=m +CONFIG_AMD_XGBE=m +CONFIG_NET_XGENE=m +CONFIG_MACB=m +CONFIG_NET_SB1000=m + +# +# MII PHY device drivers +# +CONFIG_AMD_XGBE_PHY=m # # Input device support @@ -213,6 +254,12 @@ CONFIG_INPUT_MATRIXKMAP=m # # CONFIG_SERIO_AMBAKMI is not set +# +# Serial drivers +# +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_FINTEK=m + # # Non-8250 serial port support # @@ -220,6 +267,21 @@ CONFIG_SERIAL_AMBA_PL010=m CONFIG_SERIAL_AMBA_PL011=m CONFIG_HW_RANDOM_XGENE=m +# +# PCMCIA character devices +# +# CONFIG_HPET is not set + +# +# I2C support +# +CONFIG_ACPI_I2C_OPREGION=y + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + # # I2C system bus drivers (mostly embedded / system-on-chip) # @@ -242,17 +304,28 @@ CONFIG_PPS=m CONFIG_PTP_1588_CLOCK=m # -# Memory mapped GPIO drivers: +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_GPIO_ACPI=y + +# +# Memory mapped GPIO drivers # +CONFIG_GPIO_DWAPB=m CONFIG_GPIO_PL061=y CONFIG_GPIO_XGENE=y CONFIG_GPIO_XGENE_SB=m # -# USB GPIO expanders: +# USB GPIO expanders # CONFIG_POWER_RESET_XGENE=y +# +# ACPI drivers +# +CONFIG_SENSORS_ACPI_POWER=m + # # Watchdog Device Drivers # @@ -274,6 +347,14 @@ CONFIG_ARM_SP805_WATCHDOG=m # CONFIG_REGULATOR_LP8788 is not set # CONFIG_REGULATOR_TWL4030 is not set +# +# Media drivers +# +# CONFIG_IR_ENE is not set +# CONFIG_IR_ITE_CIR is not set +# CONFIG_IR_FINTEK is not set +# CONFIG_IR_NUVOTON is not set + # # Media digital TV PCI Adapters # @@ -322,16 +403,12 @@ CONFIG_DUMMY_CONSOLE_ROWS=25 # CONFIG_MUSB_PIO_ONLY=y -# -# USB Physical Layer drivers -# -CONFIG_NOP_USB_XCEIV=m - # # MMC/SD/SDIO Host Controller Drivers # CONFIG_MMC_ARMMMCI=m # CONFIG_MMC_RICOH_MMC is not set +CONFIG_MMC_SDHCI_ACPI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # @@ -353,13 +430,17 @@ CONFIG_RTC_DRV_PL031=m # # DMA Devices # +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y # CONFIG_AMBA_PL08X is not set # CONFIG_DW_DMAC_PCI is not set # CONFIG_PL330_DMA is not set +CONFIG_XGENE_DMA=m +CONFIG_DMA_ACPI=y # # DMA Clients # +CONFIG_DMA_ENGINE_RAID=y # CONFIG_UIO_AEC is not set # CONFIG_UIO_SERCOS3 is not set # CONFIG_UIO_PCI_GENERIC is not set @@ -369,6 +450,7 @@ CONFIG_RTC_DRV_PL031=m # Android # CONFIG_I2O_EXT_ADAPTEC_DMA64=y +# CONFIG_FSL_MC_BUS is not set # # Common Clock Framework @@ -386,7 +468,9 @@ CONFIG_COMMON_CLK_XGENE=y CONFIG_ARM_ARCH_TIMER=y CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y # CONFIG_SH_TIMER_TMU is not set +CONFIG_ARM_MHU=m # CONFIG_PL320_MBOX is not set +# CONFIG_PCC is not set # # Generic IOMMU Pagetable Support @@ -422,7 +506,6 @@ CONFIG_PHY_XGENE=m # # Firmware Drivers # -# CONFIG_FIRMWARE_MEMMAP is not set CONFIG_DMIID=y CONFIG_DMI_SYSFS=y @@ -435,6 +518,22 @@ CONFIG_EFI_VARS_PSTORE=y CONFIG_EFI_PARAMS_FROM_FDT=y CONFIG_EFI_RUNTIME_WRAPPERS=y CONFIG_EFI_ARMSTUB=y +CONFIG_ACPI=y +CONFIG_ACPI_GENERIC_GSI=y +# CONFIG_ACPI_PROCFS_POWER is not set +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_IPMI=m +# CONFIG_ACPI_CUSTOM_DSDT is not set +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_HED=m +CONFIG_ACPI_CUSTOM_METHOD=m +CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y +# CONFIG_PMIC_OPREGION is not set # # File systems @@ -449,11 +548,10 @@ CONFIG_DCACHE_WORD_ACCESS=y CONFIG_EFIVAR_FS=y CONFIG_KVM_MMIO=y CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_COMPAT=y CONFIG_KVM=y CONFIG_KVM_ARM_HOST=y CONFIG_KVM_ARM_MAX_VCPUS=4 -CONFIG_KVM_ARM_VGIC=y -CONFIG_KVM_ARM_TIMER=y # # Compile-time checks and compiler options @@ -519,6 +617,7 @@ CONFIG_CRYPTO_CRC32_ARM64=m # Library routines # CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_AUDIT_COMPAT_GENERIC=y CONFIG_HAS_IOPORT_MAP=y CONFIG_CPU_RMAP=y CONFIG_UCS2_STRING=y diff --git a/kernel/config-armv5tel-default b/kernel/config-armv5tel-default index 045bce1cf..20dc27191 100644 --- a/kernel/config-armv5tel-default +++ b/kernel/config-armv5tel-default @@ -42,13 +42,6 @@ CONFIG_MACH_NETXBIG=y # # CONFIG_MACH_MX21ADS is not set -# -# MX25 platforms: -# -# CONFIG_MACH_MX25_3DS is not set -# CONFIG_MACH_EUKREA_CPUIMX25SD is not set -# CONFIG_MACH_IMX25_DT is not set - # # MX27 platforms: # @@ -57,6 +50,11 @@ CONFIG_MACH_NETXBIG=y # CONFIG_MACH_IMX27_VISSTRIM_M10 is not set # CONFIG_MACH_PCA100 is not set # CONFIG_MACH_IMX27_DT is not set + +# +# Device tree only +# +# CONFIG_SOC_IMX25 is not set # CONFIG_ARCH_MXS is not set # CONFIG_ARCH_NOMADIK is not set # CONFIG_ARCH_NSPIRE is not set @@ -80,6 +78,7 @@ CONFIG_CPU_USE_DOMAINS=y # # Processor Features # +# CONFIG_CPU_DCACHE_DISABLE is not set CONFIG_NEED_KUSER_HELPERS=y CONFIG_CACHE_FEROCEON_L2=y # CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set @@ -149,6 +148,7 @@ CONFIG_AHCI_MVEBU=m # Distributed Switch Architecture drivers # # CONFIG_VORTEX is not set +CONFIG_MACB=m CONFIG_MV643XX_ETH=m CONFIG_MVNETA=m @@ -190,12 +190,12 @@ CONFIG_PINCTRL_MVEBU=y CONFIG_PINCTRL_KIRKWOOD=y # -# Memory mapped GPIO drivers: +# Memory mapped GPIO drivers # CONFIG_GPIO_MVEBU=y # -# USB GPIO expanders: +# USB GPIO expanders # # CONFIG_CHARGER_LP8788 is not set # CONFIG_POWER_RESET_BRCMSTB is not set @@ -306,11 +306,6 @@ CONFIG_USB_IMX21_HCD=m # CONFIG_MUSB_PIO_ONLY=y -# -# USB Physical Layer drivers -# -CONFIG_NOP_USB_XCEIV=m - # # MMC/SD/SDIO Host Controller Drivers # @@ -333,6 +328,7 @@ CONFIG_RTC_DRV_ARMADA38X=m # DMA Devices # CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y +CONFIG_DW_DMAC_CORE=m CONFIG_DW_DMAC_PCI=m CONFIG_MV_XOR=y CONFIG_IMX_SDMA=m diff --git a/kernel/config-armv7hl-default b/kernel/config-armv7hl-default index a79b0c52a..950be1000 100644 --- a/kernel/config-armv7hl-default +++ b/kernel/config-armv7hl-default @@ -5,6 +5,7 @@ CONFIG_ARCH_HAS_BANDGAP=y # IRQ subsystem # CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_ARCH_HAS_TICK_BROADCAST=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y @@ -53,6 +54,7 @@ CONFIG_ARCH_MULTI_V6_V7=y # CONFIG_ARCH_MULTI_CPU_AUTO is not set CONFIG_ARCH_VIRT=y # CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_ALPINE is not set CONFIG_ARCH_BCM=y # @@ -154,24 +156,20 @@ CONFIG_OMAP_PACKAGE_CUS=y # OMAP Legacy Platform Data 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_OMAP3517EVM=y CONFIG_MACH_OMAP3_PANDORA=y -CONFIG_MACH_TOUCHBOOK=y CONFIG_MACH_NOKIA_RX51=y CONFIG_MACH_CM_T35=y CONFIG_MACH_CM_T3730=y -CONFIG_MACH_SBC3530=y # CONFIG_OMAP3_SDRC_AC_TIMING is not set CONFIG_ARCH_QCOM=y # CONFIG_ARCH_MSM8X60 is not set # CONFIG_ARCH_MSM8960 is not set # CONFIG_ARCH_MSM8974 is not set -CONFIG_QCOM_SCM=y CONFIG_ARCH_ROCKCHIP=y # CONFIG_ARCH_SOCFPGA is not set CONFIG_ARCH_STI=y @@ -218,10 +216,12 @@ CONFIG_ARCH_SHMOBILE_MULTI=y # CONFIG_ARCH_R7S72100 is not set # CONFIG_ARCH_R8A73A4 is not set # CONFIG_ARCH_R8A7740 is not set +# CONFIG_ARCH_R8A7778 is not set CONFIG_ARCH_R8A7779=y # CONFIG_ARCH_R8A7790 is not set # CONFIG_ARCH_R8A7791 is not set # CONFIG_ARCH_R8A7794 is not set +# CONFIG_ARCH_SH73A0 is not set # # Renesas ARM SoCs Board Type @@ -300,6 +300,7 @@ CONFIG_CPU_HAS_ASID=y CONFIG_ARM_VIRT_EXT=y CONFIG_SWP_EMULATE=y # CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_VDSO=y CONFIG_OUTER_CACHE_SYNC=y CONFIG_MIGHT_HAVE_CACHE_L2X0=y CONFIG_CACHE_L2X0=y @@ -311,7 +312,7 @@ CONFIG_ARM_L1_CACHE_SHIFT_6=y CONFIG_ARM_L1_CACHE_SHIFT=6 CONFIG_ARM_DMA_MEM_BUFFERABLE=y # CONFIG_ARM_ERRATA_430973 is not set -# CONFIG_ARM_ERRATA_643719 is not set +CONFIG_ARM_ERRATA_643719=y CONFIG_ARM_ERRATA_720789=y CONFIG_ARM_ERRATA_754322=y CONFIG_ARM_ERRATA_754327=y @@ -338,6 +339,7 @@ CONFIG_PCI_RCAR_GEN2=y CONFIG_PCI_RCAR_GEN2_PCIE=y CONFIG_PCI_KEYSTONE=y CONFIG_PCIE_XILINX=y +CONFIG_PCIE_IPROC_PLATFORM=m # # Kernel Features @@ -385,6 +387,7 @@ CONFIG_ARM_EXYNOS5250_CPUFREQ=y # CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW is not set CONFIG_ARM_EXYNOS5440_CPUFREQ=y CONFIG_ARM_HIGHBANK_CPUFREQ=m +CONFIG_ARM_HISI_ACPU_CPUFREQ=m # CONFIG_ARM_KIRKWOOD_CPUFREQ is not set CONFIG_ARM_OMAP2PLUS_CPUFREQ=y CONFIG_ARM_TEGRA_CPUFREQ=y @@ -436,10 +439,11 @@ CONFIG_REGMAP_SPMI=m # # Bus devices # +CONFIG_ARM_CCI400_PORT_CTRL=y # CONFIG_IMX_WEIM is not set -# CONFIG_OMAP_OCP2SCP is not set CONFIG_OMAP_INTERCONNECT=y -CONFIG_ARM_CCI=y +# CONFIG_OMAP_OCP2SCP is not set +CONFIG_SIMPLE_PM_BUS=y # # Misc devices @@ -470,6 +474,7 @@ CONFIG_SATA_RCAR=m CONFIG_NET_VENDOR_ALLWINNER=y CONFIG_SUN4I_EMAC=m # CONFIG_MACB is not set +CONFIG_BGMAC=m CONFIG_NET_CALXEDA_XGMAC=m CONFIG_PXA168_ETH=m CONFIG_SH_ETH=m @@ -502,6 +507,7 @@ CONFIG_KEYBOARD_SAMSUNG=y CONFIG_KEYBOARD_SH_KEYSC=m CONFIG_KEYBOARD_SUN4I_LRADC=m # CONFIG_INPUT_AB8500_PONKEY is not set +CONFIG_INPUT_PM8941_PWRKEY=m CONFIG_INPUT_SIRFSOC_ONKEY=y # @@ -532,6 +538,7 @@ CONFIG_SERIAL_SH_SCI_NR_UARTS=2 # CONFIG_SERIAL_MSM is not set # CONFIG_SERIAL_VT8500 is not set CONFIG_SERIAL_OMAP=m +CONFIG_HW_RANDOM_IPROC_RNG200=m CONFIG_HW_RANDOM_OMAP=y CONFIG_HW_RANDOM_OMAP3_ROM=y CONFIG_HW_RANDOM_EXYNOS=y @@ -590,7 +597,7 @@ CONFIG_PTP_1588_CLOCK=y # # Pin controllers # -CONFIG_GENERIC_PINCONF=y +CONFIG_PINCTRL_MESON=y CONFIG_PINCTRL_ROCKCHIP=y CONFIG_PINCTRL_SINGLE=y CONFIG_PINCTRL_SIRF=y @@ -641,9 +648,11 @@ CONFIG_PINCTRL_SUN8I_A23=y CONFIG_PINCTRL_SUN8I_A23_R=y CONFIG_PINCTRL_SUN9I_A80=y # CONFIG_PINCTRL_WM8850 is not set +CONFIG_PINCTRL_MTK_COMMON=y +CONFIG_PINCTRL_MT8135=y # -# Memory mapped GPIO drivers: +# Memory mapped GPIO drivers # # CONFIG_GPIO_DAVINCI is not set CONFIG_GPIO_MSM_V2=m @@ -655,7 +664,7 @@ CONFIG_GPIO_VF610=y CONFIG_GPIO_ZYNQ=m # -# USB GPIO expanders: +# USB GPIO expanders # CONFIG_POWER_RESET_BRCMSTB=y CONFIG_POWER_RESET_HISI=y @@ -787,6 +796,7 @@ CONFIG_DRM_SHMOBILE=m CONFIG_DRM_MSM=m # CONFIG_DRM_MSM_FBDEV is not set # CONFIG_DRM_MSM_REGISTER_LOGGING is not set +CONFIG_DRM_MSM_DSI=y CONFIG_DRM_TEGRA=m CONFIG_DRM_TEGRA_FBDEV=y # CONFIG_DRM_TEGRA_DEBUG is not set @@ -842,6 +852,9 @@ CONFIG_SND_AM33XX_SOC_EVM=m # # SoC Audio support for Freescale i.MX boards: # +CONFIG_SND_SOC_LPASS_CPU=m +CONFIG_SND_SOC_LPASS_PLATFORM=m +CONFIG_SND_SOC_STORM=m CONFIG_SND_SOC_ROCKCHIP=m CONFIG_SND_SOC_ROCKCHIP_I2S=m CONFIG_SND_SOC_SAMSUNG=m @@ -860,6 +873,7 @@ CONFIG_SND_SOC_ARNDALE_RT5631_ALC5631=m # CONFIG_SND_SOC_SH4_FSI=m CONFIG_SND_SOC_RCAR=m +CONFIG_SND_SOC_RSRC_CARD=m CONFIG_SND_SOC_SIRF=m CONFIG_SND_SOC_SIRF_AUDIO=m CONFIG_SND_SOC_SIRF_AUDIO_PORT=m @@ -873,6 +887,7 @@ CONFIG_SND_SOC_UX500_PLAT_DMA=m CONFIG_SND_SOC_WM_HUBS=m CONFIG_SND_SOC_MAX98090=m CONFIG_SND_SOC_MAX98095=m +CONFIG_SND_SOC_MAX98357A=m CONFIG_SND_SOC_WM8994=m # @@ -918,10 +933,8 @@ CONFIG_USB_DWC3_QCOM=m # # CONFIG_AB8500_USB is not set CONFIG_KEYSTONE_USB_PHY=m -CONFIG_NOP_USB_XCEIV=y CONFIG_USB_MSM_OTG=m CONFIG_USB_RCAR_PHY=m -CONFIG_USB_ULPI_VIEWPORT=y # # MMC/SD/SDIO Host Controller Drivers @@ -932,6 +945,7 @@ CONFIG_MMC_SDHCI_TEGRA=m CONFIG_MMC_SDHCI_S3C=m CONFIG_MMC_SDHCI_SIRF=m CONFIG_MMC_SDHCI_S3C_DMA=y +CONFIG_MMC_SDHCI_IPROC=m CONFIG_MMC_SDHCI_ST=m CONFIG_MMC_OMAP=m CONFIG_MMC_OMAP_HS=m @@ -972,8 +986,8 @@ CONFIG_SH_DMAE_BASE=y # CONFIG_SH_DMAE is not set # CONFIG_SUDMAC is not set # CONFIG_RCAR_HPB_DMAE is not set -# CONFIG_RCAR_AUDMAC_PP is not set CONFIG_RCAR_DMAC=m +CONFIG_RENESAS_USB_DMAC=m # CONFIG_STE_DMA40 is not set # CONFIG_SIRF_DMA is not set # CONFIG_TI_EDMA is not set @@ -1011,6 +1025,18 @@ CONFIG_CLK_VEXPRESS_OSC=y CONFIG_COMMON_CLK_MAX77686=y # CONFIG_COMMON_CLK_AXI_CLKGEN is not set CONFIG_COMMON_CLK_KEYSTONE=y +CONFIG_COMMON_CLK_QCOM=m +CONFIG_APQ_GCC_8084=m +CONFIG_APQ_MMCC_8084=m +CONFIG_IPQ_GCC_806X=m +CONFIG_IPQ_LCC_806X=m +CONFIG_MSM_GCC_8660=m +CONFIG_MSM_GCC_8916=m +CONFIG_MSM_GCC_8960=m +CONFIG_MSM_LCC_8960=m +CONFIG_MSM_MMCC_8960=m +CONFIG_MSM_GCC_8974=m +CONFIG_MSM_MMCC_8974=m CONFIG_COMMON_CLK_SAMSUNG=y # @@ -1043,6 +1069,8 @@ CONFIG_CLKSRC_SAMSUNG_PWM=y CONFIG_MTK_TIMER=y CONFIG_SYS_SUPPORTS_SH_TMU=y CONFIG_SH_TIMER_TMU=y +CONFIG_CLKSRC_VERSATILE=y +CONFIG_ARM_MHU=m CONFIG_PL320_MBOX=y CONFIG_OMAP2PLUS_MBOX=m CONFIG_OMAP_MBOX_KFIFO_SIZE=256 @@ -1072,6 +1100,7 @@ CONFIG_RPMSG=m # # SOC (System On Chip) specific Drivers # +# CONFIG_MTK_PMIC_WRAP is not set CONFIG_QCOM_GSBI=m # CONFIG_KEYSTONE_NAVIGATOR_QMSS is not set CONFIG_KEYSTONE_NAVIGATOR_DMA=m @@ -1137,6 +1166,7 @@ CONFIG_STIH407_RESET=y # CONFIG_PHY_BERLIN_USB=m CONFIG_PHY_BERLIN_SATA=m +CONFIG_PHY_DM816X_USB=m CONFIG_PHY_EXYNOS_MIPI_VIDEO=y CONFIG_PHY_MIPHY28LP=m CONFIG_PHY_MIPHY365X=m @@ -1147,6 +1177,7 @@ CONFIG_PHY_EXYNOS_DP_VIDEO=y CONFIG_PHY_EXYNOS5250_SATA=m CONFIG_PHY_HIX5HD2_SATA=m CONFIG_PHY_SUN4I_USB=m +CONFIG_PHY_SUN9I_USB=m CONFIG_PHY_EXYNOS4210_USB2=y CONFIG_PHY_EXYNOS4X12_USB2=y CONFIG_PHY_EXYNOS5250_USB2=y @@ -1156,6 +1187,12 @@ CONFIG_PHY_QCOM_IPQ806X_SATA=m CONFIG_PHY_ROCKCHIP_USB=m CONFIG_PHY_STIH407_USB=m CONFIG_PHY_STIH41X_USB=m +CONFIG_PHY_QCOM_UFS=m + +# +# Firmware Drivers +# +CONFIG_QCOM_SCM=y # # File systems @@ -1216,17 +1253,6 @@ CONFIG_GRKERNSEC_RWXMAP_LOG=y CONFIG_CRYPTO_PCRYPT=m CONFIG_CRYPTO_ABLK_HELPER=m -# -# Digest -# -CONFIG_CRYPTO_SHA1_ARM_NEON=m -CONFIG_CRYPTO_SHA512_ARM_NEON=m - -# -# Ciphers -# -CONFIG_CRYPTO_AES_ARM_BS=m - # # Random Number Generation # @@ -1236,6 +1262,13 @@ CONFIG_CRYPTO_DEV_OMAP_DES=m CONFIG_CRYPTO_DEV_S5P=m # CONFIG_CRYPTO_DEV_UX500 is not set CONFIG_CRYPTO_DEV_QCE=m +CONFIG_CRYPTO_SHA1_ARM_NEON=m +CONFIG_CRYPTO_SHA1_ARM_CE=m +CONFIG_CRYPTO_SHA2_ARM_CE=m +CONFIG_CRYPTO_SHA512_ARM_NEON=m +CONFIG_CRYPTO_AES_ARM_BS=m +CONFIG_CRYPTO_AES_ARM_CE=m +CONFIG_CRYPTO_GHASH_ARM_CE=m # # Library routines diff --git a/kernel/config-armv7hl-lpae b/kernel/config-armv7hl-lpae index 9898dab35..0329ba10d 100644 --- a/kernel/config-armv7hl-lpae +++ b/kernel/config-armv7hl-lpae @@ -1,3 +1,4 @@ +CONFIG_PGTABLE_LEVELS=3 # # IO Schedulers @@ -21,6 +22,17 @@ CONFIG_ARM_LPAE=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# +# Bus support +# +CONFIG_PCI_BUS_ADDR_T_64BIT=y + +# +# PCI host controller drivers +# +CONFIG_PCIE_IPROC=y +CONFIG_PCIE_IPROC_PLATFORM=y + # # Kernel Features # @@ -29,13 +41,18 @@ CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_MMU_NOTIFIER=y # CONFIG_TRANSPARENT_HUGEPAGE is not set +# +# Bus devices +# +# CONFIG_SIMPLE_PM_BUS is not set + # # I2C system bus drivers (mostly embedded / system-on-chip) # CONFIG_I2C_AXXIA=m # -# USB GPIO expanders: +# USB GPIO expanders # CONFIG_POWER_RESET_AXXIA=y CONFIG_ROCKCHIP_IODOMAIN=m @@ -88,5 +105,3 @@ CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y CONFIG_KVM=y CONFIG_KVM_ARM_HOST=y CONFIG_KVM_ARM_MAX_VCPUS=4 -CONFIG_KVM_ARM_VGIC=y -CONFIG_KVM_ARM_TIMER=y diff --git a/kernel/config-generic b/kernel/config-generic index c0f755388..a850914ac 100644 --- a/kernel/config-generic +++ b/kernel/config-generic @@ -42,11 +42,11 @@ CONFIG_AUDIT_TREE=y # CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_SPARSE_IRQ=y CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y # # Timers subsystem @@ -74,6 +74,7 @@ CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set # CONFIG_TREE_RCU_TRACE is not set CONFIG_RCU_KTHREAD_PRIO=0 +# CONFIG_RCU_EXPEDITE_BOOT is not set # CONFIG_BUILD_BIN2C is not set # CONFIG_IKCONFIG is not set CONFIG_LOG_BUF_SHIFT=18 @@ -112,8 +113,11 @@ CONFIG_RD_LZ4=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_ANON_INODES=y +CONFIG_HAVE_UID16=y CONFIG_BPF=y CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y CONFIG_SGETMASK_SYSCALL=y CONFIG_SYSFS_SYSCALL=y # CONFIG_SYSCTL_SYSCALL is not set @@ -142,7 +146,7 @@ CONFIG_HAVE_PERF_EVENTS=y CONFIG_PERF_EVENTS=y # CONFIG_DEBUG_PERF_USE_VMALLOC is not set CONFIG_VM_EVENT_COUNTERS=y -CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG is not set # CONFIG_COMPAT_BRK is not set # CONFIG_SLAB is not set CONFIG_SLUB=y @@ -169,20 +173,21 @@ CONFIG_CC_STACKPROTECTOR=y # CONFIG_CC_STACKPROTECTOR_NONE is not set # CONFIG_CC_STACKPROTECTOR_REGULAR is not set CONFIG_CC_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_OLD_SIGSUSPEND3=y # # GCOV-based kernel profiling # # CONFIG_GCOV_KERNEL is not set CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=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_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_SIG is not set # CONFIG_MODULE_COMPRESS is not set @@ -262,6 +267,7 @@ CONFIG_CLEANCACHE=y # CONFIG_FRONTSWAP is not set CONFIG_CMA=y # CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set CONFIG_CMA_AREAS=7 CONFIG_ZPOOL=m # CONFIG_ZBUD is not set @@ -341,7 +347,6 @@ CONFIG_PCIE_PME=y # Executable file formats / Emulations # CONFIG_BINFMT_ELF=y -CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y CONFIG_BINFMT_SCRIPT=y CONFIG_BINFMT_MISC=y @@ -660,13 +665,13 @@ CONFIG_IP_VS_PE_SIP=m CONFIG_NF_DEFRAG_IPV4=y CONFIG_NF_CONNTRACK_IPV4=y # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set -CONFIG_NF_LOG_ARP=m -CONFIG_NF_LOG_IPV4=m CONFIG_NF_TABLES_IPV4=m CONFIG_NFT_CHAIN_ROUTE_IPV4=m -CONFIG_NF_REJECT_IPV4=m CONFIG_NFT_REJECT_IPV4=m CONFIG_NF_TABLES_ARP=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m CONFIG_NF_NAT_IPV4=m CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_NF_NAT_MASQUERADE_IPV4=m @@ -688,8 +693,8 @@ CONFIG_NF_DEFRAG_IPV6=y CONFIG_NF_CONNTRACK_IPV6=y CONFIG_NF_TABLES_IPV6=m CONFIG_NFT_CHAIN_ROUTE_IPV6=m -CONFIG_NF_REJECT_IPV6=m CONFIG_NFT_REJECT_IPV6=m +CONFIG_NF_REJECT_IPV6=m CONFIG_NF_LOG_IPV6=m CONFIG_NF_NAT_IPV6=m CONFIG_NFT_CHAIN_NAT_IPV6=m @@ -851,7 +856,9 @@ CONFIG_OPENVSWITCH_VXLAN=m CONFIG_VSOCKETS=m CONFIG_NETLINK_MMAP=y CONFIG_NETLINK_DIAG=m +CONFIG_MPLS=y CONFIG_NET_MPLS_GSO=m +CONFIG_MPLS_ROUTING=m # CONFIG_HSR is not set CONFIG_NET_SWITCHDEV=y CONFIG_CGROUP_NET_PRIO=y @@ -878,17 +885,23 @@ CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m CONFIG_BT_LE=y # CONFIG_BT_SELFTEST is not set +# CONFIG_BT_DEBUGFS is not set # # Bluetooth device drivers # +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_BCM=y 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_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_BCM=y CONFIG_BT_HCIBCM203X=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m @@ -913,6 +926,7 @@ CONFIG_CFG80211_DEFAULT_PS=y # CONFIG_CFG80211_DEBUGFS is not set # CONFIG_CFG80211_INTERNAL_REGDB is not set CONFIG_CFG80211_WEXT=y +CONFIG_CFG80211_WEXT_EXPORT=y CONFIG_LIB80211=m CONFIG_LIB80211_CRYPT_WEP=m CONFIG_LIB80211_CRYPT_CCMP=m @@ -987,6 +1001,7 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m # CONFIG_BLK_DEV_OSD is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_PMEM=m # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set CONFIG_VIRTIO_BLK=m @@ -1106,14 +1121,17 @@ 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_ENABLE is not set CONFIG_AIC7XXX_DEBUG_MASK=0 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC79XX=m CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set # CONFIG_SCSI_MVUMI is not set CONFIG_SCSI_ARCMSR=m CONFIG_SCSI_ESAS2R=m @@ -1269,11 +1287,13 @@ CONFIG_MD_RAID10=m CONFIG_MD_RAID456=m CONFIG_MD_MULTIPATH=m CONFIG_MD_FAULTY=m +CONFIG_MD_CLUSTER=m CONFIG_BCACHE=m # CONFIG_BCACHE_DEBUG is not set # CONFIG_BCACHE_CLOSURES_DEBUG is not set CONFIG_BLK_DEV_DM_BUILTIN=y CONFIG_BLK_DEV_DM=y +# CONFIG_DM_MQ_DEFAULT is not set # CONFIG_DM_DEBUG is not set CONFIG_DM_BUFIO=y CONFIG_DM_BIO_PRISON=m @@ -1298,6 +1318,7 @@ CONFIG_DM_UEVENT=y # CONFIG_DM_FLAKEY is not set CONFIG_DM_VERITY=m CONFIG_DM_SWITCH=m +# CONFIG_DM_LOG_WRITES is not set # CONFIG_TARGET_CORE is not set # CONFIG_FUSION is not set @@ -1363,8 +1384,6 @@ CONFIG_ACENIC=m CONFIG_ALTERA_TSE=m CONFIG_NET_VENDOR_AMD=y CONFIG_PCNET32=m -CONFIG_AMD_XGBE=m -CONFIG_NET_XGENE=m CONFIG_NET_VENDOR_ARC=y CONFIG_NET_VENDOR_ATHEROS=y CONFIG_ATL2=m @@ -1372,6 +1391,7 @@ CONFIG_ATL1=m CONFIG_ATL1E=m CONFIG_ATL1C=m CONFIG_ALX=m +CONFIG_NET_CADENCE=y CONFIG_NET_VENDOR_BROADCOM=y CONFIG_B44=m CONFIG_B44_PCI_AUTOSELECT=y @@ -1437,7 +1457,7 @@ CONFIG_NET_VENDOR_MELLANOX=y CONFIG_MLX4_EN=m CONFIG_MLX4_EN_VXLAN=y CONFIG_MLX4_CORE=m -CONFIG_MLX4_DEBUG=y +# CONFIG_MLX4_DEBUG is not set # CONFIG_MLX5_CORE is not set CONFIG_NET_VENDOR_MICREL=y # CONFIG_KS8842 is not set @@ -1521,7 +1541,6 @@ CONFIG_PHYLIB=y # CONFIG_AT803X_PHY=m CONFIG_AMD_PHY=m -CONFIG_AMD_XGBE_PHY=m CONFIG_MARVELL_PHY=m CONFIG_DAVICOM_PHY=m CONFIG_QSEMI_PHY=m @@ -1616,6 +1635,7 @@ CONFIG_ATH_COMMON=m CONFIG_ATH_CARDS=m # CONFIG_ATH_DEBUG is not set CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set # CONFIG_ATH5K_TRACER is not set CONFIG_ATH5K_PCI=y CONFIG_ATH9K_HW=m @@ -1956,6 +1976,7 @@ CONFIG_INPUT_MISC=y # CONFIG_INPUT_AD714X is not set # CONFIG_INPUT_BMA150 is not set # CONFIG_INPUT_E3X0_BUTTON is not set +# CONFIG_INPUT_MAX77843_HAPTIC is not set # CONFIG_INPUT_MAX8925_ONKEY is not set # CONFIG_INPUT_MMA8450 is not set # CONFIG_INPUT_MPU3050 is not set @@ -2041,7 +2062,6 @@ CONFIG_SERIAL_8250_DW=m # # Non-8250 serial port support # -# CONFIG_SERIAL_MFD_HSU is not set CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_SC16IS7XX=m @@ -2189,66 +2209,53 @@ CONFIG_GPIO_DEVRES=y CONFIG_GPIOLIB_IRQCHIP=y # CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y -# CONFIG_GPIO_DA9052 is not set -# CONFIG_GPIO_DA9055 is not set # -# Memory mapped GPIO drivers: +# Memory mapped GPIO drivers # # CONFIG_GPIO_SCH311X is not set # CONFIG_GPIO_VX855 is not set # -# I2C GPIO expanders: +# I2C GPIO expanders # -CONFIG_GPIO_CRYSTAL_COVE=m -# CONFIG_GPIO_LP3943 is not set +# CONFIG_GPIO_ADP5588 is not set # 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_RC5T583 is not set # CONFIG_GPIO_SX150X is not set -# CONFIG_GPIO_TC3589X is not set + +# +# MFD GPIO expanders +# +# CONFIG_GPIO_ADP5520 is not set +CONFIG_GPIO_CRYSTAL_COVE=m +# CONFIG_GPIO_DA9052 is not set +# CONFIG_GPIO_DA9055 is not set +# CONFIG_GPIO_KEMPLD is not set +# CONFIG_GPIO_LP3943 is not set +# CONFIG_GPIO_PALMAS is not set +# CONFIG_GPIO_RC5T583 is not set +# CONFIG_GPIO_TPS6586X is not set +# CONFIG_GPIO_TPS65910 is not set # CONFIG_GPIO_TPS65912 is not set # CONFIG_GPIO_TWL4030 is not set # CONFIG_GPIO_TWL6040 is not set # CONFIG_GPIO_WM831X is not set # CONFIG_GPIO_WM8350 is not set # CONFIG_GPIO_WM8994 is not set -# CONFIG_GPIO_ADP5520 is not set -# CONFIG_GPIO_ADP5588 is not set # -# PCI GPIO expanders: +# PCI GPIO expanders # -# CONFIG_GPIO_BT8XX is not set # CONFIG_GPIO_AMD8111 is not set +# CONFIG_GPIO_BT8XX is not set # CONFIG_GPIO_ML_IOH is not set # CONFIG_GPIO_RDC321X is not set # -# SPI GPIO expanders: -# - -# -# AC97 GPIO expanders: -# - -# -# LPC GPIO expanders: -# -# CONFIG_GPIO_KEMPLD is not set - -# -# MODULbus GPIO expanders: -# -# CONFIG_GPIO_PALMAS is not set -# CONFIG_GPIO_TPS6586X is not set -# CONFIG_GPIO_TPS65910 is not set - -# -# USB GPIO expanders: +# USB GPIO expanders # CONFIG_GPIO_VIPERBOARD=m # CONFIG_W1 is not set @@ -2262,6 +2269,7 @@ CONFIG_GENERIC_ADC_BATTERY=m # CONFIG_BATTERY_DS2782 is not set # CONFIG_BATTERY_SBS is not set # CONFIG_BATTERY_BQ27x00 is not set +CONFIG_AXP288_FUEL_GAUGE=m # CONFIG_BATTERY_MAX17040 is not set # CONFIG_BATTERY_MAX17042 is not set # CONFIG_CHARGER_ISP1704 is not set @@ -2364,6 +2372,7 @@ CONFIG_SENSORS_NTC_THERMISTOR=m CONFIG_SENSORS_NCT6683=m CONFIG_SENSORS_NCT6775=m CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m CONFIG_SENSORS_PCF8591=m CONFIG_PMBUS=m CONFIG_SENSORS_PMBUS=m @@ -2452,6 +2461,7 @@ CONFIG_MENF21BMC_WATCHDOG=m CONFIG_WM831X_WATCHDOG=m CONFIG_WM8350_WATCHDOG=m CONFIG_XILINX_WATCHDOG=m +CONFIG_CADENCE_WATCHDOG=m CONFIG_DW_WATCHDOG=m CONFIG_RN5T618_WATCHDOG=m CONFIG_TWL4030_WATCHDOG=m @@ -2497,6 +2507,7 @@ CONFIG_BCMA_BLOCKIO=y CONFIG_BCMA_HOST_PCI_POSSIBLE=y CONFIG_BCMA_HOST_PCI=y CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_DRIVER_PCI=y CONFIG_BCMA_DRIVER_GMAC_CMN=y # CONFIG_BCMA_DRIVER_GPIO is not set # CONFIG_BCMA_DEBUG is not set @@ -2530,10 +2541,12 @@ CONFIG_MFD_88PM805=m CONFIG_MFD_88PM860X=y CONFIG_MFD_MAX14577=y CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX77843=y CONFIG_MFD_MAX8907=m CONFIG_MFD_MAX8925=y CONFIG_MFD_MAX8997=y CONFIG_MFD_MAX8998=y +CONFIG_MFD_MT6397=m CONFIG_MFD_MENF21BMC=m CONFIG_MFD_VIPERBOARD=m CONFIG_MFD_RETU=m @@ -2548,6 +2561,7 @@ CONFIG_MFD_SEC_CORE=y # CONFIG_MFD_SI476X_CORE is not set CONFIG_MFD_SM501=m CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_SKY81452=m CONFIG_MFD_SMSC=y CONFIG_MFD_SYSCON=y # CONFIG_MFD_TI_AM335X_TSCADC is not set @@ -2570,7 +2584,6 @@ CONFIG_MFD_TWL4030_AUDIO=y CONFIG_TWL6040_CORE=y CONFIG_MFD_WL1273_CORE=m CONFIG_MFD_LM3533=m -CONFIG_MFD_TC3589X=y # CONFIG_MFD_TMIO is not set # CONFIG_MFD_ARIZONA_I2C is not set CONFIG_MFD_WM8400=y @@ -2613,6 +2626,8 @@ CONFIG_REGULATOR_MAX8973=m CONFIG_REGULATOR_MAX8997=m CONFIG_REGULATOR_MAX8998=m CONFIG_REGULATOR_MAX77693=m +CONFIG_REGULATOR_MAX77843=m +CONFIG_REGULATOR_MT6397=m CONFIG_REGULATOR_PALMAS=m CONFIG_REGULATOR_PFUZE100=m CONFIG_REGULATOR_RC5T583=m @@ -2621,6 +2636,7 @@ CONFIG_REGULATOR_RT5033=m CONFIG_REGULATOR_S2MPA01=m CONFIG_REGULATOR_S2MPS11=m CONFIG_REGULATOR_S5M8767=m +CONFIG_REGULATOR_SKY81452=m CONFIG_REGULATOR_TPS51632=m CONFIG_REGULATOR_TPS62360=m CONFIG_REGULATOR_TPS65023=m @@ -3004,7 +3020,6 @@ CONFIG_MEDIA_TUNER_FC0013=m CONFIG_MEDIA_TUNER_TDA18212=m CONFIG_MEDIA_TUNER_E4000=m CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_M88TS2022=m CONFIG_MEDIA_TUNER_M88RS6000T=m CONFIG_MEDIA_TUNER_TUA9001=m CONFIG_MEDIA_TUNER_SI2157=m @@ -3084,6 +3099,7 @@ CONFIG_DVB_NXT200X=m CONFIG_DVB_BCM3510=m CONFIG_DVB_LGDT330X=m CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m CONFIG_DVB_S5H1409=m CONFIG_DVB_AU8522=m CONFIG_DVB_AU8522_DTV=m @@ -3152,6 +3168,7 @@ CONFIG_DRM_R128=m CONFIG_DRM_MGA=m CONFIG_DRM_VIA=m CONFIG_DRM_SAVAGE=m +CONFIG_DRM_VGEM=m CONFIG_DRM_VMWGFX=m # CONFIG_DRM_VMWGFX_FBCON is not set CONFIG_DRM_UDL=m @@ -3243,6 +3260,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_AAT2870 is not set # CONFIG_BACKLIGHT_LM3639 is not set # CONFIG_BACKLIGHT_PANDORA is not set +# CONFIG_BACKLIGHT_SKY81452 is not set # CONFIG_BACKLIGHT_AS3711 is not set # CONFIG_BACKLIGHT_GPIO is not set # CONFIG_BACKLIGHT_LV5207LP is not set @@ -3284,9 +3302,7 @@ CONFIG_SND_MAX_CARDS=32 # 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_DEBUG is not set CONFIG_SND_VMASTER=y CONFIG_SND_KCTL_JACK=y CONFIG_SND_RAWMIDI_SEQ=m @@ -3398,6 +3414,7 @@ CONFIG_SND_HDA_CODEC_CMEDIA=m CONFIG_SND_HDA_CODEC_SI3054=m CONFIG_SND_HDA_GENERIC=m CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_HDA_CORE=m CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_UA101=m @@ -3444,7 +3461,6 @@ CONFIG_HID_CYPRESS=y CONFIG_HID_EZKEY=y # CONFIG_HID_HOLTEK is not set CONFIG_HID_GT683R=m -# CONFIG_HID_HUION is not set CONFIG_HID_KEYTOUCH=m CONFIG_HID_KYE=y # CONFIG_HID_UCLOGIC is not set @@ -3499,6 +3515,7 @@ CONFIG_HID_THINGM=m # CONFIG_HID_ZEROPLUS is not set CONFIG_HID_ZYDACRON=m CONFIG_HID_SENSOR_HUB=m +# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set # # USB HID support @@ -3617,7 +3634,6 @@ CONFIG_USB_DWC3_PCI=m # Debugging features # # CONFIG_USB_DWC3_DEBUG is not set -CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y CONFIG_USB_DWC2=y CONFIG_USB_DWC2_HOST=y @@ -3629,6 +3645,7 @@ CONFIG_USB_DWC2_PCI=y # CONFIG_USB_DWC2_DEBUG is not set # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CHIPIDEA_PCI=m # CONFIG_USB_CHIPIDEA_HOST is not set # CONFIG_USB_CHIPIDEA_DEBUG is not set CONFIG_USB_ISP1760=m @@ -3719,6 +3736,7 @@ CONFIG_USB_YUREX=m CONFIG_USB_EZUSB_FX2=m CONFIG_USB_HSIC_USB3503=m CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_CHAOSKEY=m CONFIG_USB_ATM=m CONFIG_USB_SPEEDTOUCH=m CONFIG_USB_CXACRU=m @@ -3729,6 +3747,7 @@ CONFIG_USB_XUSBATM=m # USB Physical Layer drivers # CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=y CONFIG_USB_GPIO_VBUS=m CONFIG_USB_ISP1301=m # CONFIG_USB_GADGET is not set @@ -3818,6 +3837,7 @@ CONFIG_LEDS_MENF21BMC=m # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) # CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_PM8941_WLED=m # # LED Triggers @@ -3860,6 +3880,7 @@ CONFIG_RTC_INTF_DEV=y CONFIG_RTC_DRV_88PM860X=m CONFIG_RTC_DRV_88PM80X=m CONFIG_RTC_DRV_ABB5ZES3=m +CONFIG_RTC_DRV_ABX80X=m CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=m CONFIG_RTC_DRV_DS1374_WDT=y @@ -3947,8 +3968,10 @@ CONFIG_DMADEVICES=y # # DMA Devices # -CONFIG_DW_DMAC_CORE=m +CONFIG_HSU_DMA=m +CONFIG_HSU_DMA_PCI=m CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=m # # DMA Clients @@ -3970,6 +3993,7 @@ CONFIG_VIRTIO=m CONFIG_VIRTIO_PCI=m CONFIG_VIRTIO_PCI_LEGACY=y CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_INPUT=m CONFIG_VIRTIO_MMIO=m # CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set @@ -4061,6 +4085,7 @@ CONFIG_SENSORS_HMC5843_I2C=m # CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set # CONFIG_IIO_SIMPLE_DUMMY is not set # CONFIG_FB_SM7XX is not set +# CONFIG_FB_SM750 is not set # CONFIG_FB_XGI is not set # CONFIG_FT1000 is not set @@ -4247,6 +4272,7 @@ CONFIG_DHT11=m # CONFIG_APDS9300 is not set CONFIG_CM32181=m # CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set # CONFIG_CM36651 is not set # CONFIG_GP2AP020A00F is not set # CONFIG_ISL29125 is not set @@ -4289,6 +4315,7 @@ CONFIG_IIO_INTERRUPT_TRIGGER=m # CONFIG_HID_SENSOR_PRESS is not set # CONFIG_MPL115 is not set CONFIG_MPL3115=m +# CONFIG_MS5611 is not set CONFIG_IIO_ST_PRESS=m CONFIG_IIO_ST_PRESS_I2C=m # CONFIG_T5403 is not set @@ -4345,6 +4372,8 @@ CONFIG_EXT4_FS=y CONFIG_EXT4_USE_FOR_EXT23=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_ENCRYPTION=m +CONFIG_EXT4_FS_ENCRYPTION=y # CONFIG_EXT4_DEBUG is not set CONFIG_JBD2=y # CONFIG_JBD2_DEBUG is not set @@ -4371,6 +4400,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y # CONFIG_BTRFS_DEBUG is not set # CONFIG_BTRFS_ASSERT is not set # CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y CONFIG_FILE_LOCKING=y @@ -4462,7 +4492,6 @@ CONFIG_PSTORE=y # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # CONFIG_EXOFS_FS is not set -# CONFIG_F2FS_FS is not set CONFIG_ORE=m CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=m @@ -4608,7 +4637,6 @@ CONFIG_DEBUG_KERNEL=y # # CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set @@ -4627,9 +4655,10 @@ CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 # CONFIG_PANIC_ON_OOPS is not set CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=120 -CONFIG_SCHED_DEBUG=y +# CONFIG_SCHED_DEBUG is not set CONFIG_SCHEDSTATS=y CONFIG_SCHED_STACK_END_CHECK=y +# CONFIG_DEBUG_TIMEKEEPING is not set CONFIG_TIMER_STATS=y # @@ -4653,6 +4682,7 @@ CONFIG_DEBUG_LIST=y # # RCU Debugging # +# CONFIG_PROVE_RCU is not set # CONFIG_SPARSE_RCU_POINTER is not set # CONFIG_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set @@ -4693,6 +4723,7 @@ CONFIG_FTRACE_MCOUNT_RECORD=y # CONFIG_TRACEPOINT_BENCHMARK is not set CONFIG_RING_BUFFER_BENCHMARK=m # CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_TRACE_ENUM_MAP_FILE is not set # # Runtime Testing @@ -4716,6 +4747,7 @@ CONFIG_ASYNC_RAID6_TEST=m # CONFIG_TEST_BPF is not set # CONFIG_TEST_FIRMWARE is not set # CONFIG_TEST_UDELAY is not set +# CONFIG_MEMTEST is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set @@ -4759,7 +4791,7 @@ CONFIG_GRKERNSEC_PROC_GID=10 # CONFIG_PAX_MEMORY_SANITIZE=y CONFIG_PAX_MEMORY_STRUCTLEAK=y -# CONFIG_PAX_LATENT_ENTROPY is not set +CONFIG_PAX_LATENT_ENTROPY=y # # Memory Protections @@ -4770,7 +4802,8 @@ CONFIG_GRKERNSEC_BPF_HARDEN=y CONFIG_GRKERNSEC_BRUTE=y # CONFIG_GRKERNSEC_MODHARDEN is not set CONFIG_GRKERNSEC_HIDESYM=y -# CONFIG_GRKERNSEC_RANDSTRUCT is not set +CONFIG_GRKERNSEC_RANDSTRUCT=y +CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE=y # # Role Based Access Control Options @@ -4859,7 +4892,7 @@ CONFIG_GRKERNSEC_FLOODBURST=6 CONFIG_KEYS=y CONFIG_PERSISTENT_KEYRINGS=y # CONFIG_BIG_KEYS is not set -# CONFIG_ENCRYPTED_KEYS is not set +CONFIG_ENCRYPTED_KEYS=m CONFIG_SECURITY_DMESG_RESTRICT=y CONFIG_SECURITY=y CONFIG_SECURITYFS=y diff --git a/kernel/config-i686-default b/kernel/config-i686-default index ee28ec115..e35bd6d31 100644 --- a/kernel/config-i686-default +++ b/kernel/config-i686-default @@ -2,10 +2,9 @@ CONFIG_X86_32=y CONFIG_OUTPUT_FORMAT="elf32-i386" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" -# 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_PGTABLE_LEVELS=3 # # Timers subsystem @@ -233,9 +232,13 @@ CONFIG_SCx200_ACB=m CONFIG_PTP_1588_CLOCK_PCH=m # -# PCI GPIO expanders: +# MFD GPIO expanders # # CONFIG_GPIO_CS5535 is not set + +# +# PCI GPIO expanders +# # CONFIG_GPIO_PCH is not set # diff --git a/kernel/config-i686-legacy b/kernel/config-i686-legacy index baa12a65c..bf8ef09f2 100644 --- a/kernel/config-i686-legacy +++ b/kernel/config-i686-legacy @@ -1,3 +1,4 @@ +CONFIG_PGTABLE_LEVELS=2 # # Processor type and features @@ -91,7 +92,9 @@ CONFIG_MDIO_BUS_MUX_MMIOREG=m # CONFIG_KEYBOARD_STMPE=m CONFIG_KEYBOARD_OMAP4=m +CONFIG_KEYBOARD_TC3589X=m CONFIG_KEYBOARD_CAP11XX=m +CONFIG_KEYBOARD_BCM=m CONFIG_MOUSE_PS2_OLPC=y CONFIG_INPUT_MAX77693_HAPTIC=m CONFIG_INPUT_MAX8997_HAPTIC=m @@ -135,35 +138,35 @@ CONFIG_PINCTRL_AS3722=y # CONFIG_PINCTRL_SINGLE is not set CONFIG_PINCTRL_PALMAS=y CONFIG_OF_GPIO=y -CONFIG_GPIO_GENERIC=m # -# Memory mapped GPIO drivers: +# Memory mapped GPIO drivers # CONFIG_GPIO_74XX_MMIO=m +CONFIG_GPIO_ALTERA=m +# CONFIG_GPIO_GRGPIO is not set # CONFIG_GPIO_SYSCON is not set # CONFIG_GPIO_XILINX is not set -# CONFIG_GPIO_GRGPIO is not set # -# I2C GPIO expanders: +# I2C GPIO expanders # -# CONFIG_GPIO_STMPE is not set CONFIG_GPIO_ADNP=m # -# PCI GPIO expanders: +# MFD GPIO expanders # CONFIG_GPIO_CS5535=y -# CONFIG_GPIO_SODAVILLE is not set +# CONFIG_GPIO_STMPE is not set +# CONFIG_GPIO_TC3589X is not set # -# SPI GPIO expanders: +# PCI GPIO expanders # -# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_SODAVILLE is not set # -# USB GPIO expanders: +# USB GPIO expanders # CONFIG_BATTERY_OLPC=y CONFIG_POWER_RESET_AS3722=y @@ -171,6 +174,7 @@ CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_POWER_RESET_LTC2952=y CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y # # Native drivers @@ -202,6 +206,7 @@ CONFIG_MFD_STMPE=y # STMicroelectronics STMPE Interface Drivers # CONFIG_STMPE_I2C=y +CONFIG_MFD_TC3589X=y CONFIG_REGULATOR_AS3722=m CONFIG_REGULATOR_HI6421=m CONFIG_REGULATOR_MAX77686=m @@ -210,10 +215,16 @@ CONFIG_REGULATOR_PWM=m CONFIG_REGULATOR_RK808=m CONFIG_REGULATOR_TPS65218=m +# +# Media digital TV PCI Adapters +# +# CONFIG_VIDEO_XILINX is not set + # # I2C encoder or helper chips # CONFIG_DRM_PTN3460=m +CONFIG_DRM_PS8622=m # # Display Panels @@ -232,6 +243,11 @@ CONFIG_BACKLIGHT_PWM=m # CONFIG_BACKLIGHT_LP8788 is not set # CONFIG_BACKLIGHT_OT200 is not set +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +CONFIG_USB_CHIPIDEA_OF=m + # # MMC/SD/SDIO Host Controller Drivers # @@ -266,7 +282,6 @@ CONFIG_RTC_DRV_SNVS=m # DMA Devices # CONFIG_FSL_EDMA=m -CONFIG_DMA_VIRTUAL_CHANNELS=m CONFIG_DMA_OF=y # @@ -290,17 +305,7 @@ CONFIG_COMMON_CLK_MAX77802=m CONFIG_COMMON_CLK_RK808=m # CONFIG_COMMON_CLK_SI5351 is not set CONFIG_COMMON_CLK_SI570=m -CONFIG_COMMON_CLK_QCOM=m -CONFIG_APQ_GCC_8084=m -CONFIG_APQ_MMCC_8084=m -CONFIG_IPQ_GCC_806X=m -CONFIG_IPQ_LCC_806X=m -CONFIG_MSM_GCC_8660=m -CONFIG_MSM_GCC_8960=m -CONFIG_MSM_LCC_8960=m -CONFIG_MSM_MMCC_8960=m -CONFIG_MSM_GCC_8974=m -CONFIG_MSM_MMCC_8974=m +CONFIG_COMMON_CLK_PWM=m # # Generic IOMMU Pagetable Support diff --git a/kernel/config-x86-generic b/kernel/config-x86-generic index 6f3ba6908..ed613edb7 100644 --- a/kernel/config-x86-generic +++ b/kernel/config-x86-generic @@ -55,7 +55,6 @@ CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_ALL=y CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_SYSCTL_EXCEPTION_TRACE=y -CONFIG_UID16=y CONFIG_PCSPKR_PLATFORM=y # @@ -67,7 +66,6 @@ CONFIG_OPROFILE_NMI_TIMER=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_USER_RETURN_NOTIFIER=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y -CONFIG_OLD_SIGSUSPEND3=y # # IO Schedulers @@ -102,7 +100,6 @@ CONFIG_KVM_GUEST=y # CONFIG_KVM_DEBUG_FS is not set CONFIG_PARAVIRT_TIME_ACCOUNTING=y CONFIG_PARAVIRT_CLOCK=y -# CONFIG_MEMTEST is not set # CONFIG_MK8 is not set # CONFIG_MCORE2 is not set # CONFIG_MATOM is not set @@ -122,7 +119,6 @@ CONFIG_DMI=y CONFIG_NR_CPUS=64 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y -CONFIG_X86_UP_APIC_MSI=y CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y @@ -137,8 +133,6 @@ CONFIG_MICROCODE=m CONFIG_MICROCODE_INTEL=y CONFIG_MICROCODE_AMD=y CONFIG_MICROCODE_OLD_INTERFACE=y -# CONFIG_MICROCODE_INTEL_EARLY is not set -# CONFIG_MICROCODE_AMD_EARLY is not set # CONFIG_X86_MSR is not set CONFIG_X86_CPUID=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y @@ -159,6 +153,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_X86_PMEM_LEGACY=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y CONFIG_X86_RESERVE_LOW=64 @@ -187,6 +182,7 @@ CONFIG_HOTPLUG_CPU=y # CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set # CONFIG_DEBUG_HOTPLUG_CPU0 is not set # CONFIG_CMDLINE_BOOL is not set +# CONFIG_DEFAULT_MODIFY_LDT_SYSCALL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # @@ -196,9 +192,10 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_ACPI=y CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_PROCFS_POWER is not set -CONFIG_ACPI_EC_DEBUGFS=m +# CONFIG_ACPI_EC_DEBUGFS is not set CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y @@ -273,6 +270,7 @@ CONFIG_PCIE_ECRC=y CONFIG_PCIEAER_INJECT=m # CONFIG_PCIEASPM_DEFAULT is not set CONFIG_PCIEASPM_POWERSAVE=y +CONFIG_PCI_BUS_ADDR_T_64BIT=y CONFIG_PCI_MSI=y CONFIG_PCI_STUB=y CONFIG_HT_IRQ=y @@ -394,10 +392,7 @@ CONFIG_VMWARE_VMCI=m # SCSI Transports # CONFIG_AIC79XX_RESET_DELAY_MS=4000 -# CONFIG_AIC79XX_DEBUG_ENABLE is not set # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set -# CONFIG_AIC94XX_DEBUG is not set -# CONFIG_SCSI_MVSAS_DEBUG is not set CONFIG_SCSI_MVSAS_TASKLET=y CONFIG_SCSI_DPT_I2O=m CONFIG_SCSI_ADVANSYS=m @@ -462,6 +457,7 @@ CONFIG_VHOST=m # CONFIG_VORTEX=m CONFIG_AMD8111_ETH=m +CONFIG_MACB=m CONFIG_BNX2X_SRIOV=y CONFIG_CHELSIO_T1_1G=y CONFIG_CX_ECAT=m @@ -496,7 +492,6 @@ CONFIG_NET_SB1000=m # # CONFIG_PLIP is not set CONFIG_AIRO=m -CONFIG_ATH5K_DEBUG=y # CONFIG_WIL6210_TRACING is not set CONFIG_IPW2100_MONITOR=y CONFIG_IPW2200_MONITOR=y @@ -520,8 +515,8 @@ CONFIG_INPUT_MATRIXKMAP=m # CONFIG_KEYBOARD_ADP5520=m CONFIG_KEYBOARD_SAMSUNG=m -CONFIG_KEYBOARD_TC3589X=m CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_VMMOUSE=y CONFIG_INPUT_PCSPKR=m CONFIG_INPUT_APANEL=m CONFIG_INPUT_GPIO_BEEPER=m @@ -637,32 +632,32 @@ CONFIG_PINMUX=y CONFIG_PINCONF=y CONFIG_GENERIC_PINCONF=y # CONFIG_DEBUG_PINCTRL is not set +CONFIG_PINCTRL_AMD=y # CONFIG_PINCTRL_BAYTRAIL is not set CONFIG_PINCTRL_CHERRYVIEW=m +CONFIG_PINCTRL_INTEL=m +CONFIG_PINCTRL_SUNRISEPOINT=m CONFIG_GPIO_ACPI=y +CONFIG_GPIO_GENERIC=m # -# Memory mapped GPIO drivers: +# Memory mapped GPIO drivers # -# CONFIG_GPIO_GENERIC_PLATFORM is not set -# CONFIG_GPIO_IT8761E is not set +CONFIG_GPIO_DWAPB=m # CONFIG_GPIO_F7188X is not set -CONFIG_GPIO_SCH=m +# CONFIG_GPIO_GENERIC_PLATFORM is not set CONFIG_GPIO_ICH=m +# CONFIG_GPIO_IT8761E is not set # CONFIG_GPIO_LYNXPOINT is not set +CONFIG_GPIO_SCH=m # -# PCI GPIO expanders: +# PCI GPIO expanders # # CONFIG_GPIO_INTEL_MID is not set # -# SPI GPIO expanders: -# -CONFIG_GPIO_MCP23S08=m - -# -# USB GPIO expanders: +# USB GPIO expanders # CONFIG_MAX8925_POWER=m CONFIG_WM831X_BACKUP=m @@ -748,6 +743,7 @@ CONFIG_WDTPCI=m # # Multifunction device drivers # +CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m CONFIG_LPC_ICH=m CONFIG_MFD_RTSX_PCI=m # CONFIG_ABX500_CORE is not set @@ -928,6 +924,7 @@ CONFIG_DRM_MIPI_DSI=y # CONFIG_DRM_I2C_SIL164 is not set CONFIG_DRM_I2C_NXP_TDA998X=m CONFIG_DRM_RADEON=m +# CONFIG_DRM_RADEON_USERPTR is not set # CONFIG_DRM_RADEON_UMS is not set CONFIG_DRM_NOUVEAU=m CONFIG_NOUVEAU_DEBUG=5 @@ -1003,11 +1000,6 @@ CONFIG_MUSB_PIO_ONLY=y CONFIG_USB_USS720=m CONFIG_USB_SERIAL_MOS7715_PARPORT=y -# -# USB Physical Layer drivers -# -CONFIG_NOP_USB_XCEIV=m - # # MMC/SD/SDIO Host Controller Drivers # @@ -1059,8 +1051,8 @@ CONFIG_RTC_DRV_CMOS=y # # DMA Devices # -# CONFIG_INTEL_MID_DMAC is not set CONFIG_INTEL_IOATDMA=m +CONFIG_DW_DMAC_CORE=m CONFIG_DW_DMAC=m CONFIG_DW_DMAC_PCI=m CONFIG_DMA_ACPI=y diff --git a/kernel/config-x86_64-default b/kernel/config-x86_64-default index da287bb41..beaf5cad3 100644 --- a/kernel/config-x86_64-default +++ b/kernel/config-x86_64-default @@ -7,6 +7,7 @@ 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_PGTABLE_LEVELS=4 # # Timers subsystem @@ -30,7 +31,6 @@ CONFIG_RCU_USER_QS=y CONFIG_CONTEXT_TRACKING_FORCE=y CONFIG_RCU_FANOUT=64 CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y -CONFIG_ARCH_SUPPORTS_INT128=y # CONFIG_NUMA_BALANCING is not set # @@ -63,7 +63,7 @@ CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y # CONFIG_MAXSMP is not set CONFIG_X86_VSYSCALL_EMULATION=y -CONFIG_DIRECT_GBPAGES=y +CONFIG_X86_DIRECT_GBPAGES=y CONFIG_NUMA=y CONFIG_AMD_NUMA=y CONFIG_X86_64_ACPI_NUMA=y @@ -212,7 +212,6 @@ CONFIG_QUOTACTL_COMPAT=y # # Memory Debugging # -# CONFIG_KASAN is not set CONFIG_KASAN_SHADOW_OFFSET=0xdffffc0000000000 # diff --git a/kernel/kernel.nm b/kernel/kernel.nm index 097878672..45369472c 100644 --- a/kernel/kernel.nm +++ b/kernel/kernel.nm @@ -4,8 +4,8 @@ ############################################################################### name = kernel -version = 4.0.4 -release = 2 +version = 4.1.3 +release = 1 thisapp = linux-%{version} maintainer = Arne Fitzenreiter diff --git a/kernel/patches/grsecurity-3.1-4.0.4-201505272113.patch b/kernel/patches/grsecurity-3.1-4.1.3-201507261932.patch similarity index 91% rename from kernel/patches/grsecurity-3.1-4.0.4-201505272113.patch rename to kernel/patches/grsecurity-3.1-4.1.3-201507261932.patch index b338663c2..c2c4dedcf 100644 --- a/kernel/patches/grsecurity-3.1-4.0.4-201505272113.patch +++ b/kernel/patches/grsecurity-3.1-4.1.3-201507261932.patch @@ -313,10 +313,10 @@ index 74b6c6d..eac0e77 100644 A typical pattern in a Kbuild file looks like this: diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt -index 4d68ec8..9546b75 100644 +index 6726139..c825c0a 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt -@@ -1203,6 +1203,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. +@@ -1223,6 +1223,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. Format: such that (rxsize & ~0x1fffc0) == 0. Default: 1024 @@ -330,7 +330,7 @@ index 4d68ec8..9546b75 100644 hashdist= [KNL,NUMA] Large hashes allocated during boot are distributed across NUMA nodes. Defaults on for 64-bit NUMA, off otherwise. -@@ -2300,6 +2307,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. +@@ -2333,6 +2340,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. noexec=on: enable non-executable mappings (default) noexec=off: disable non-executable mappings @@ -341,7 +341,7 @@ index 4d68ec8..9546b75 100644 nosmap [X86] Disable SMAP (Supervisor Mode Access Prevention) even if it is supported by processor. -@@ -2601,6 +2612,30 @@ bytes respectively. Such letter suffixes can also be entirely omitted. +@@ -2631,6 +2642,30 @@ 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. @@ -372,11 +372,44 @@ index 4d68ec8..9546b75 100644 pcbit= [HW,ISDN] pcd. [PARIDE] +diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt +index c831001..1bfbbf6 100644 +--- a/Documentation/sysctl/kernel.txt ++++ b/Documentation/sysctl/kernel.txt +@@ -41,6 +41,7 @@ show up in /proc/sys/kernel: + - kptr_restrict + - kstack_depth_to_print [ X86 only ] + - l2cr [ PPC only ] ++- modify_ldt [ X86 only ] + - modprobe ==> Documentation/debugging-modules.txt + - modules_disabled + - msg_next_id [ sysv ipc ] +@@ -391,6 +392,20 @@ This flag controls the L2 cache of G3 processor boards. If + + ============================================================== + ++modify_ldt: (X86 only) ++ ++Enables (1) or disables (0) the modify_ldt syscall. Modifying the LDT ++(Local Descriptor Table) may be needed to run a 16-bit or segmented code ++such as Dosemu or Wine. This is done via a system call which is not needed ++to run portable applications, and which can sometimes be abused to exploit ++some weaknesses of the architecture, opening new vulnerabilities. ++ ++This sysctl allows one to increase the system's security by disabling the ++system call, or to restore compatibility with specific applications when it ++was already disabled. ++ ++============================================================== ++ + modules_disabled: + + A toggle value indicating if modules are allowed to be loaded diff --git a/Makefile b/Makefile -index 3d16bcc..c31faf4 100644 +index e3cdec4..56ae73d 100644 --- a/Makefile +++ b/Makefile -@@ -298,7 +298,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ +@@ -299,7 +299,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ HOSTCC = gcc HOSTCXX = g++ HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89 @@ -387,7 +420,7 @@ index 3d16bcc..c31faf4 100644 ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1) HOSTCFLAGS += -Wno-unused-value -Wno-unused-parameter \ -@@ -446,8 +448,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ +@@ -444,8 +446,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ # Rules shared between *config targets and build targets # Basic helpers built in scripts/ @@ -398,7 +431,7 @@ index 3d16bcc..c31faf4 100644 $(Q)$(MAKE) $(build)=scripts/basic $(Q)rm -f .tmp_quiet_recordmcount -@@ -622,6 +624,74 @@ endif +@@ -620,6 +622,74 @@ endif # Tell gcc to never replace conditional load with a non-conditional one KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0) @@ -473,7 +506,7 @@ index 3d16bcc..c31faf4 100644 ifdef CONFIG_READABLE_ASM # Disable optimizations that make assembler listings hard to read. # reorder blocks reorders the control in the function -@@ -714,7 +784,7 @@ KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g) +@@ -712,7 +782,7 @@ KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g) else KBUILD_CFLAGS += -g endif @@ -482,7 +515,7 @@ index 3d16bcc..c31faf4 100644 endif ifdef CONFIG_DEBUG_INFO_DWARF4 KBUILD_CFLAGS += $(call cc-option, -gdwarf-4,) -@@ -884,7 +954,7 @@ export mod_sign_cmd +@@ -883,7 +953,7 @@ export mod_sign_cmd ifeq ($(KBUILD_EXTMOD),) @@ -491,7 +524,7 @@ index 3d16bcc..c31faf4 100644 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ -@@ -934,6 +1004,8 @@ endif +@@ -933,6 +1003,8 @@ endif # The actual objects are generated when descending, # make sure no implicit rule kicks in @@ -500,7 +533,7 @@ index 3d16bcc..c31faf4 100644 $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; # Handle descending into subdirectories listed in $(vmlinux-dirs) -@@ -943,7 +1015,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; +@@ -942,7 +1014,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; # Error messages still appears in the original language PHONY += $(vmlinux-dirs) @@ -509,7 +542,7 @@ index 3d16bcc..c31faf4 100644 $(Q)$(MAKE) $(build)=$@ define filechk_kernel.release -@@ -986,10 +1058,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \ +@@ -985,10 +1057,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \ archprepare: archheaders archscripts prepare1 scripts_basic @@ -523,7 +556,7 @@ index 3d16bcc..c31faf4 100644 prepare: prepare0 # Generate some files -@@ -1103,6 +1178,8 @@ all: modules +@@ -1096,6 +1171,8 @@ all: modules # using awk while concatenating to the final file. PHONY += modules @@ -532,7 +565,7 @@ index 3d16bcc..c31faf4 100644 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.'; -@@ -1118,7 +1195,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin) +@@ -1111,7 +1188,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin) # Target to prepare building external modules PHONY += modules_prepare @@ -541,7 +574,7 @@ index 3d16bcc..c31faf4 100644 # Target to install modules PHONY += modules_install -@@ -1184,7 +1261,10 @@ MRPROPER_FILES += .config .config.old .version .old_version \ +@@ -1177,7 +1254,10 @@ MRPROPER_FILES += .config .config.old .version .old_version \ Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ signing_key.priv signing_key.x509 x509.genkey \ extra_certificates signing_key.x509.keyid \ @@ -553,7 +586,7 @@ index 3d16bcc..c31faf4 100644 # clean - Delete most, but leave enough to build external modules # -@@ -1223,7 +1303,7 @@ distclean: mrproper +@@ -1216,7 +1296,7 @@ distclean: mrproper @find $(srctree) $(RCS_FIND_IGNORE) \ \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ @@ -562,7 +595,7 @@ index 3d16bcc..c31faf4 100644 -type f -print | xargs rm -f -@@ -1389,6 +1469,8 @@ PHONY += $(module-dirs) modules +@@ -1382,6 +1462,8 @@ PHONY += $(module-dirs) modules $(module-dirs): crmodverdir $(objtree)/Module.symvers $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) @@ -571,7 +604,7 @@ index 3d16bcc..c31faf4 100644 modules: $(module-dirs) @$(kecho) ' Building modules, stage 2.'; $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost -@@ -1529,17 +1611,21 @@ else +@@ -1522,17 +1604,21 @@ else target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) endif @@ -597,7 +630,7 @@ index 3d16bcc..c31faf4 100644 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) %.symtypes: %.c prepare scripts FORCE $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) -@@ -1551,11 +1637,15 @@ endif +@@ -1544,11 +1630,15 @@ endif $(build)=$(build-dir) # Make sure the latest headers are built for Documentation Documentation/: headers_install @@ -731,10 +764,10 @@ index 2fd00b7..cfd5069 100644 for (i = 0; i < n; i++) { diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c -index e51f578..16c64a3 100644 +index 36dc91a..6769cb0 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c -@@ -1296,10 +1296,11 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p) +@@ -1295,10 +1295,11 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p) generic version except that we know how to honor ADDR_LIMIT_32BIT. */ static unsigned long @@ -748,7 +781,7 @@ index e51f578..16c64a3 100644 info.flags = 0; info.length = len; -@@ -1307,6 +1308,7 @@ arch_get_unmapped_area_1(unsigned long addr, unsigned long len, +@@ -1306,6 +1307,7 @@ arch_get_unmapped_area_1(unsigned long addr, unsigned long len, info.high_limit = limit; info.align_mask = 0; info.align_offset = 0; @@ -756,7 +789,7 @@ index e51f578..16c64a3 100644 return vm_unmapped_area(&info); } -@@ -1339,20 +1341,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -1338,20 +1340,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, merely specific addresses, but regions of memory -- perhaps this feature should be incorporated into all ports? */ @@ -946,10 +979,10 @@ index 9d0ac09..479a962 100644 /* Allow reads even for write-only mappings */ if (!(vma->vm_flags & (VM_READ | VM_WRITE))) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index cf4c0c9..a87ecf5 100644 +index 45df48b..952017a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -1735,7 +1735,7 @@ config ALIGNMENT_TRAP +@@ -1716,7 +1716,7 @@ config ALIGNMENT_TRAP config UACCESS_WITH_MEMCPY bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" @@ -958,7 +991,7 @@ index cf4c0c9..a87ecf5 100644 default y if CPU_FEROCEON help Implement faster copy_to_user and clear_user methods for CPU -@@ -1999,6 +1999,7 @@ config XIP_PHYS_ADDR +@@ -1951,6 +1951,7 @@ config XIP_PHYS_ADDR config KEXEC bool "Kexec system call (EXPERIMENTAL)" depends on (!SMP || PM_SLEEP_SMP) @@ -1618,6 +1651,19 @@ index abb2c37..96db950 100644 #include +diff --git a/arch/arm/include/asm/cpuidle.h b/arch/arm/include/asm/cpuidle.h +index 0f84249..8e83c55 100644 +--- a/arch/arm/include/asm/cpuidle.h ++++ b/arch/arm/include/asm/cpuidle.h +@@ -32,7 +32,7 @@ struct device_node; + struct cpuidle_ops { + int (*suspend)(int cpu, unsigned long arg); + int (*init)(struct device_node *, int cpu); +-}; ++} __no_const; + + struct of_cpuidle_method { + const char *method; diff --git a/arch/arm/include/asm/domain.h b/arch/arm/include/asm/domain.h index 6ddbe44..b5e38b1a 100644 --- a/arch/arm/include/asm/domain.h @@ -1680,10 +1726,10 @@ index 6ddbe44..b5e38b1a 100644 static inline void set_domain(unsigned val) { } static inline void modify_domain(unsigned dom, unsigned type) { } diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h -index 674d03f..9a0bac0 100644 +index d2315ff..f60b47b 100644 --- a/arch/arm/include/asm/elf.h +++ b/arch/arm/include/asm/elf.h -@@ -115,7 +115,14 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); +@@ -117,7 +117,14 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); 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. */ @@ -1699,17 +1745,6 @@ index 674d03f..9a0bac0 100644 /* When the program starts, a1 contains a pointer to a function to be registered with atexit, as per the SVR4 ABI. A value of 0 means we -@@ -125,10 +132,6 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); - extern void elf_set_personality(const struct elf32_hdr *); - #define SET_PERSONALITY(ex) elf_set_personality(&(ex)) - --struct mm_struct; --extern unsigned long arch_randomize_brk(struct mm_struct *mm); --#define arch_randomize_brk arch_randomize_brk -- - #ifdef CONFIG_MMU - #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1 - struct linux_binprm; diff --git a/arch/arm/include/asm/fncpy.h b/arch/arm/include/asm/fncpy.h index de53547..52b9a28 100644 --- a/arch/arm/include/asm/fncpy.h @@ -1725,7 +1760,7 @@ index de53547..52b9a28 100644 (unsigned long)(dest_buf) + (size)); \ \ diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h -index 53e69da..3fdc896 100644 +index 4e78065..f265b48 100644 --- a/arch/arm/include/asm/futex.h +++ b/arch/arm/include/asm/futex.h @@ -46,6 +46,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, @@ -2110,10 +2145,10 @@ index 18f5a55..5072a40 100644 struct of_cpu_method { const char *method; diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h -index 72812a1..335f4f3 100644 +index bd32ede..bd90a0b 100644 --- a/arch/arm/include/asm/thread_info.h +++ b/arch/arm/include/asm/thread_info.h -@@ -77,9 +77,9 @@ struct thread_info { +@@ -74,9 +74,9 @@ struct thread_info { .flags = 0, \ .preempt_count = INIT_PREEMPT_COUNT, \ .addr_limit = KERNEL_DS, \ @@ -2126,7 +2161,7 @@ index 72812a1..335f4f3 100644 } #define init_thread_info (init_thread_union.thread_info) -@@ -155,7 +155,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, +@@ -152,7 +152,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, #define TIF_SYSCALL_AUDIT 9 #define TIF_SYSCALL_TRACEPOINT 10 #define TIF_SECCOMP 11 /* seccomp syscall filtering active */ @@ -2139,7 +2174,7 @@ index 72812a1..335f4f3 100644 #define TIF_USING_IWMMXT 17 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ #define TIF_RESTORE_SIGMASK 20 -@@ -169,10 +173,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, +@@ -166,10 +170,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) #define _TIF_SECCOMP (1 << TIF_SECCOMP) #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) @@ -2175,7 +2210,7 @@ index 5f833f7..76e6644 100644 } diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h -index ce0786e..a80c264 100644 +index 74b17d0..57a4bf4 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h @@ -18,6 +18,7 @@ @@ -2405,8 +2440,21 @@ index a88671c..1cc895e 100644 EXPORT_SYMBOL(__get_user_1); EXPORT_SYMBOL(__get_user_2); +diff --git a/arch/arm/kernel/cpuidle.c b/arch/arm/kernel/cpuidle.c +index 318da33..373689f 100644 +--- a/arch/arm/kernel/cpuidle.c ++++ b/arch/arm/kernel/cpuidle.c +@@ -19,7 +19,7 @@ extern struct of_cpuidle_method __cpuidle_method_of_table[]; + static const struct of_cpuidle_method __cpuidle_method_of_table_sentinel + __used __section(__cpuidle_method_of_table_end); + +-static struct cpuidle_ops cpuidle_ops[NR_CPUS]; ++static struct cpuidle_ops cpuidle_ops[NR_CPUS] __read_only; + + /** + * arm_cpuidle_simple_enter() - a wrapper to cpu_do_idle() diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S -index 672b219..4aa120a 100644 +index 570306c..c87f193 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -48,6 +48,87 @@ @@ -2576,7 +2624,7 @@ index 672b219..4aa120a 100644 str r2, [sp, #S_PC] @ it's a 2x16bit instr, update @@ -547,7 +650,8 @@ ENDPROC(__und_usr) */ - .pushsection .fixup, "ax" + .pushsection .text.fixup, "ax" .align 2 -4: str r4, [sp, #S_PC] @ retry current instruction +4: pax_close_userland @@ -2603,7 +2651,7 @@ index 672b219..4aa120a 100644 #endif mov r5, r0 diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S -index f8ccc21..83d192f 100644 +index 4e7f40c..0f9ee2c 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -11,18 +11,46 @@ @@ -2656,7 +2704,7 @@ index f8ccc21..83d192f 100644 .align 5 /* * This is the fast syscall return path. We do as little as -@@ -171,6 +199,12 @@ ENTRY(vector_swi) +@@ -173,6 +201,12 @@ ENTRY(vector_swi) USER( ldr scno, [lr, #-4] ) @ get SWI instruction #endif @@ -2770,7 +2818,7 @@ index 059c3da..8e45cfc 100644 flush_icache_range((unsigned long)base + offset, offset + length); diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S -index 0196327..50ac8895 100644 +index 3637973..cb29657 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S @@ -444,7 +444,7 @@ __enable_mmu: @@ -2783,7 +2831,7 @@ index 0196327..50ac8895 100644 mcr p15, 0, r4, c2, c0, 0 @ load page table pointer #endif diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c -index 2e11961..07f0704 100644 +index af791f4..3ff9821 100644 --- a/arch/arm/kernel/module.c +++ b/arch/arm/kernel/module.c @@ -38,12 +38,39 @@ @@ -2849,27 +2897,10 @@ index 69bda1a..755113a 100644 if (waddr != addr) { flush_kernel_vmap_range(waddr, twopage ? size / 2 : size); diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c -index 2bf1a16..d959d40 100644 +index f192a2a..1a40523 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c -@@ -213,6 +213,7 @@ void machine_power_off(void) - - if (pm_power_off) - pm_power_off(); -+ BUG(); - } - - /* -@@ -226,7 +227,7 @@ void machine_power_off(void) - * executing pre-reset code, and using RAM that the primary CPU's code wishes - * to use. Implementing such co-ordination would be essentially impossible. - */ --void machine_restart(char *cmd) -+__noreturn void machine_restart(char *cmd) - { - local_irq_disable(); - smp_send_stop(); -@@ -252,8 +253,8 @@ void __show_regs(struct pt_regs *regs) +@@ -105,8 +105,8 @@ void __show_regs(struct pt_regs *regs) show_regs_print_info(KERN_DEFAULT); @@ -2880,7 +2911,7 @@ index 2bf1a16..d959d40 100644 printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n" "sp : %08lx ip : %08lx fp : %08lx\n", regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr, -@@ -430,12 +431,6 @@ unsigned long get_wchan(struct task_struct *p) +@@ -283,12 +283,6 @@ unsigned long get_wchan(struct task_struct *p) return 0; } @@ -2893,7 +2924,7 @@ index 2bf1a16..d959d40 100644 #ifdef CONFIG_MMU #ifdef CONFIG_KUSER_HELPERS /* -@@ -451,7 +446,7 @@ static struct vm_area_struct gate_vma = { +@@ -304,7 +298,7 @@ static struct vm_area_struct gate_vma = { static int __init gate_vma_init(void) { @@ -2902,12 +2933,12 @@ index 2bf1a16..d959d40 100644 return 0; } arch_initcall(gate_vma_init); -@@ -480,81 +475,13 @@ const char *arch_vma_name(struct vm_area_struct *vma) +@@ -333,91 +327,13 @@ const char *arch_vma_name(struct vm_area_struct *vma) return is_gate_vma(vma) ? "[vectors]" : NULL; } -/* If possible, provide a placement hint at a random offset from the -- * stack for the signal page. +- * stack for the sigpage and vdso pages. - */ -static unsigned long sigpage_addr(const struct mm_struct *mm, - unsigned int npages) @@ -2951,6 +2982,7 @@ index 2bf1a16..d959d40 100644 { struct mm_struct *mm = current->mm; - struct vm_area_struct *vma; +- unsigned long npages; - unsigned long addr; - unsigned long hint; - int ret = 0; @@ -2959,10 +2991,13 @@ index 2bf1a16..d959d40 100644 - signal_page = get_signal_page(); - if (!signal_page) - return -ENOMEM; +- +- npages = 1; /* for sigpage */ +- npages += vdso_total_pages; down_write(&mm->mmap_sem); -- hint = sigpage_addr(mm, 1); -- addr = get_unmapped_area(NULL, hint, PAGE_SIZE, 0, 0); +- hint = sigpage_addr(mm, npages); +- addr = get_unmapped_area(NULL, hint, npages << PAGE_SHIFT, 0, 0); - if (IS_ERR_VALUE(addr)) { - ret = addr; - goto up_fail; @@ -2979,6 +3014,12 @@ index 2bf1a16..d959d40 100644 - - mm->context.sigpage = addr; - +- /* Unlike the sigpage, failure to install the vdso is unlikely +- * to be fatal to the process, so no error check needed +- * here. +- */ +- arm_install_vdso(mm, addr + PAGE_SIZE); +- - up_fail: + mm->context.sigpage = (PAGE_OFFSET + (get_random_int() % 0x3FFEFFE0)) & 0xFFFFFFFC; up_write(&mm->mmap_sem); @@ -3023,8 +3064,20 @@ index ef9119f..31995a3 100644 /* Do the secure computing check first; failures should be fast. */ #ifdef CONFIG_HAVE_ARCH_SECCOMP_FILTER if (secure_computing() == -1) +diff --git a/arch/arm/kernel/reboot.c b/arch/arm/kernel/reboot.c +index 1a4d232..2677169 100644 +--- a/arch/arm/kernel/reboot.c ++++ b/arch/arm/kernel/reboot.c +@@ -122,6 +122,7 @@ void machine_power_off(void) + + if (pm_power_off) + pm_power_off(); ++ while (1); + } + + /* diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c -index 1d60beb..4aa25d5 100644 +index 6c777e9..3d2d0ca 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -105,21 +105,23 @@ EXPORT_SYMBOL(elf_hwcap); @@ -3073,7 +3126,7 @@ index 1d60beb..4aa25d5 100644 cpu_arch = CPU_ARCH_ARMv6; else diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c -index 023ac90..0a69950 100644 +index 423663e..bfeb0ff 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c @@ -24,8 +24,6 @@ @@ -3085,7 +3138,7 @@ index 023ac90..0a69950 100644 #ifdef CONFIG_CRUNCH static int preserve_crunch_context(struct crunch_sigframe __user *frame) { -@@ -396,8 +394,7 @@ setup_return(struct pt_regs *regs, struct ksignal *ksig, +@@ -385,8 +383,7 @@ setup_return(struct pt_regs *regs, struct ksignal *ksig, * except when the MPU has protected the vectors * page from PL0 */ @@ -3095,7 +3148,7 @@ index 023ac90..0a69950 100644 } else #endif { -@@ -603,33 +600,3 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) +@@ -592,33 +589,3 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) } while (thread_flags & _TIF_WORK_MASK); return 0; } @@ -3130,7 +3183,7 @@ index 023ac90..0a69950 100644 - return page; -} diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index 86ef244..c518451 100644 +index cca5b87..68f0f73 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -76,7 +76,7 @@ enum ipi_msg_type { @@ -3166,7 +3219,7 @@ index 7a3be1d..b00c7de 100644 start, end); itcm_present = true; diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c -index 788e23f..6fa06a1 100644 +index 3dce1a3..60e857f 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -65,7 +65,7 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long); @@ -3197,7 +3250,7 @@ index 788e23f..6fa06a1 100644 if (signr) do_exit(signr); } -@@ -880,7 +885,11 @@ void __init early_trap_init(void *vectors_base) +@@ -878,7 +883,11 @@ void __init early_trap_init(void *vectors_base) kuser_init(vectors_base); flush_icache_range(vectors, vectors + PAGE_SIZE * 2); @@ -3211,7 +3264,7 @@ index 788e23f..6fa06a1 100644 /* * on V7-M there is no need to copy the vector table to a dedicated diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S -index b31aa73..cc4b7a1 100644 +index 8b60fde..8d986dd 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S @@ -37,7 +37,7 @@ @@ -3223,7 +3276,7 @@ index b31aa73..cc4b7a1 100644 #define ARM_EXIT_KEEP(x) x #define ARM_EXIT_DISCARD(x) #else -@@ -123,6 +123,8 @@ SECTIONS +@@ -120,6 +120,8 @@ SECTIONS #ifdef CONFIG_DEBUG_RODATA . = ALIGN(1<arch.vmid = kvm_next_vmid; kvm_next_vmid++; -@@ -1087,7 +1087,7 @@ struct kvm_vcpu *kvm_mpidr_to_vcpu(struct kvm *kvm, unsigned long mpidr) +@@ -1098,7 +1098,7 @@ struct kvm_vcpu *kvm_mpidr_to_vcpu(struct kvm *kvm, unsigned long mpidr) /** * Initialize Hyp-mode and memory mappings on all CPUs. */ @@ -3291,7 +3344,7 @@ index b652af5..60231ab 100644 int err; int ret, cpu; diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S -index 14a0d98..7771a7d 100644 +index 1710fd7..ec3e014 100644 --- a/arch/arm/lib/clear_user.S +++ b/arch/arm/lib/clear_user.S @@ -12,14 +12,14 @@ @@ -3319,7 +3372,7 @@ index 14a0d98..7771a7d 100644 +ENDPROC(___clear_user) ENDPROC(__clear_user_std) - .pushsection .fixup,"ax" + .pushsection .text.fixup,"ax" diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S index 7a235b9..73a0556 100644 --- a/arch/arm/lib/copy_from_user.S @@ -3360,7 +3413,7 @@ index 6ee2f67..d1cce76 100644 #include #include diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S -index a9d3db1..164b089 100644 +index 9648b06..19c333c 100644 --- a/arch/arm/lib/copy_to_user.S +++ b/arch/arm/lib/copy_to_user.S @@ -17,7 +17,7 @@ @@ -3385,9 +3438,9 @@ index a9d3db1..164b089 100644 +ENDPROC(___copy_to_user) ENDPROC(__copy_to_user_std) - .pushsection .fixup,"ax" + .pushsection .text.fixup,"ax" diff --git a/arch/arm/lib/csumpartialcopyuser.S b/arch/arm/lib/csumpartialcopyuser.S -index 7d08b43..f7ca7ea 100644 +index 1d0957e..f708846 100644 --- a/arch/arm/lib/csumpartialcopyuser.S +++ b/arch/arm/lib/csumpartialcopyuser.S @@ -57,8 +57,8 @@ @@ -3402,7 +3455,7 @@ index 7d08b43..f7ca7ea 100644 #include "csumpartialcopygeneric.S" diff --git a/arch/arm/lib/delay.c b/arch/arm/lib/delay.c -index 312d43e..21d2322 100644 +index 8044591..c9b2609 100644 --- a/arch/arm/lib/delay.c +++ b/arch/arm/lib/delay.c @@ -29,7 +29,7 @@ @@ -3437,18 +3490,10 @@ index 3e58d71..029817c 100644 /* See rational for this in __copy_to_user() above. */ if (n < 64) diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c -index 318d127..9aab0d1 100644 +index 7d23ce0..5ef383a 100644 --- a/arch/arm/mach-exynos/suspend.c +++ b/arch/arm/mach-exynos/suspend.c -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -632,8 +633,10 @@ void __init exynos_pm_init(void) +@@ -738,8 +738,10 @@ void __init exynos_pm_init(void) tmp |= pm_data->wake_disable_mask; pmu_raw_writel(tmp, S5P_WAKEUP_MASK); @@ -3544,10 +3589,10 @@ index 5305ec7..6d74045 100644 #include diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c -index f961c46..4a453dc 100644 +index 3b56722..33ac281 100644 --- a/arch/arm/mach-omap2/omap-wakeupgen.c +++ b/arch/arm/mach-omap2/omap-wakeupgen.c -@@ -344,7 +344,7 @@ static int irq_cpu_hotplug_notify(struct notifier_block *self, +@@ -330,7 +330,7 @@ static int irq_cpu_hotplug_notify(struct notifier_block *self, return NOTIFY_OK; } @@ -3557,7 +3602,7 @@ index f961c46..4a453dc 100644 }; diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c -index be9541e..821805f 100644 +index 166b18f..f985f04 100644 --- a/arch/arm/mach-omap2/omap_device.c +++ b/arch/arm/mach-omap2/omap_device.c @@ -510,7 +510,7 @@ void omap_device_delete(struct omap_device *od) @@ -3598,10 +3643,10 @@ index 78c02b3..c94109a 100644 struct omap_device *omap_device_alloc(struct platform_device *pdev, struct omap_hwmod **ohs, int oh_cnt); diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c -index 355b089..2c9d7c3 100644 +index 752969f..a34b446 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c -@@ -193,10 +193,10 @@ struct omap_hwmod_soc_ops { +@@ -199,10 +199,10 @@ struct omap_hwmod_soc_ops { int (*init_clkdm)(struct omap_hwmod *oh); void (*update_context_lost)(struct omap_hwmod *oh); int (*get_context_lost)(struct omap_hwmod *oh); @@ -3662,10 +3707,10 @@ index ff0a68c..b312aa0 100644 sizeof(struct omap_wd_timer_platform_data)); WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n", diff --git a/arch/arm/mach-tegra/cpuidle-tegra20.c b/arch/arm/mach-tegra/cpuidle-tegra20.c -index 4f25a7c..a81be85 100644 +index 7469347..1ecc350 100644 --- a/arch/arm/mach-tegra/cpuidle-tegra20.c +++ b/arch/arm/mach-tegra/cpuidle-tegra20.c -@@ -179,7 +179,7 @@ static int tegra20_idle_lp2_coupled(struct cpuidle_device *dev, +@@ -177,7 +177,7 @@ static int tegra20_idle_lp2_coupled(struct cpuidle_device *dev, bool entered_lp2 = false; if (tegra_pending_sgi()) @@ -3675,7 +3720,7 @@ index 4f25a7c..a81be85 100644 cpuidle_coupled_parallel_barrier(dev, &abort_barrier); diff --git a/arch/arm/mach-tegra/irq.c b/arch/arm/mach-tegra/irq.c -index ab95f53..4b977a7 100644 +index 3b9098d..15b390f 100644 --- a/arch/arm/mach-tegra/irq.c +++ b/arch/arm/mach-tegra/irq.c @@ -20,6 +20,7 @@ @@ -3729,7 +3774,7 @@ index 52d768f..5f93180 100644 #include "common.h" diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig -index 9b4f29e..bbf3bfa 100644 +index b4f92b9..ffefea9 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig @@ -446,6 +446,7 @@ config CPU_32v5 @@ -3767,7 +3812,7 @@ index 9b4f29e..bbf3bfa 100644 If all of the binaries and libraries which run on your platform diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c -index 2c0c541..4585df9 100644 +index 9769f1e..16aaa55 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c @@ -216,10 +216,12 @@ union offset_union { @@ -3832,7 +3877,7 @@ index 2c0c541..4585df9 100644 goto fault; \ } while (0) diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c -index 8f15f70..d599a2b 100644 +index e309c8f..f8965e8 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c @@ -43,7 +43,7 @@ struct l2c_init_data { @@ -3893,7 +3938,7 @@ index 845769e..4278fd7 100644 atomic64_set(&mm->context.id, asid); } diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c -index 6333d9c..fd09b46 100644 +index 6333d9c..3bb19f2 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -25,6 +25,7 @@ @@ -3911,10 +3956,10 @@ index 6333d9c..fd09b46 100644 +#ifdef CONFIG_PAX_MEMORY_UDEREF + if (addr < TASK_SIZE) { + if (current->signal->curr_ip) -+ printk(KERN_ERR "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", ¤t->signal->curr_ip, current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", ¤t->signal->curr_ip, current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), addr); + else -+ printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), addr); + } +#endif @@ -3925,10 +3970,10 @@ index 6333d9c..fd09b46 100644 + (MODULES_VADDR <= addr && addr < MODULES_END))) + { + if (current->signal->curr_ip) -+ printk(KERN_ERR "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", ¤t->signal->curr_ip, current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", ¤t->signal->curr_ip, current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid())); + else -+ printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid())); + } +#endif @@ -3991,10 +4036,10 @@ index 6333d9c..fd09b46 100644 +#ifdef CONFIG_PAX_MEMORY_UDEREF + if (addr < TASK_SIZE && is_domain_fault(fsr)) { + if (current->signal->curr_ip) -+ printk(KERN_ERR "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", ¤t->signal->curr_ip, current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", ¤t->signal->curr_ip, current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), addr); + else -+ printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to access userland memory at %08lx\n", current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), addr); + goto die; + } @@ -4074,11 +4119,11 @@ index 6333d9c..fd09b46 100644 +#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF) + else if (is_domain_fault(ifsr) || is_xn_fault(ifsr)) { + if (current->signal->curr_ip) -+ printk(KERN_ERR "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to execute %s memory at %08lx\n", ¤t->signal->curr_ip, current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to execute %s memory at %08lx\n", ¤t->signal->curr_ip, current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), + pc >= TASK_SIZE ? "non-executable kernel" : "userland", pc); + else -+ printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to execute %s memory at %08lx\n", current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to execute %s memory at %08lx\n", current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid()), + pc >= TASK_SIZE ? "non-executable kernel" : "userland", pc); + goto die; @@ -4143,10 +4188,10 @@ index cf08bdf..772656c 100644 unsigned long search_exception_table(unsigned long addr); diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c -index 1609b02..def0785 100644 +index be92fa0..5252d7e 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c -@@ -755,7 +755,46 @@ void free_tcmmem(void) +@@ -709,7 +709,46 @@ void free_tcmmem(void) { #ifdef CONFIG_HAVE_TCM extern char __tcm_start, __tcm_end; @@ -4210,7 +4255,7 @@ index d1e5ad7..84dcbf2 100644 return __arm_ioremap_caller(phys_addr, size, mtype, __builtin_return_address(0)); diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c -index 5e85ed3..b10a7ed 100644 +index 407dc78..047ce9d 100644 --- a/arch/arm/mm/mmap.c +++ b/arch/arm/mm/mmap.c @@ -59,6 +59,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, @@ -4287,7 +4332,7 @@ index 5e85ed3..b10a7ed 100644 addr = vm_unmapped_area(&info); /* -@@ -173,6 +183,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -183,14 +193,30 @@ void arch_pick_mmap_layout(struct mm_struct *mm) { unsigned long random_factor = 0UL; @@ -4295,10 +4340,8 @@ index 5e85ed3..b10a7ed 100644 + if (!(mm->pax_flags & MF_PAX_RANDMMAP)) +#endif + - /* 8 bits of randomness in 20 address space bits */ - if ((current->flags & PF_RANDOMIZE) && - !(current->personality & ADDR_NO_RANDOMIZE)) -@@ -180,9 +194,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) + if (current->flags & PF_RANDOMIZE) + random_factor = arch_mmap_rnd(); if (mmap_is_legacy()) { mm->mmap_base = TASK_UNMAPPED_BASE + random_factor; @@ -4321,7 +4364,7 @@ index 5e85ed3..b10a7ed 100644 } } diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c -index 4e6ef89..21c27f2 100644 +index 7186382..0c145cf 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -41,6 +41,22 @@ @@ -4705,7 +4748,7 @@ index 4e6ef89..21c27f2 100644 } diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c -index f412b53..fc89433 100644 +index e0e2358..a4ee460 100644 --- a/arch/arm/net/bpf_jit_32.c +++ b/arch/arm/net/bpf_jit_32.c @@ -20,6 +20,7 @@ @@ -4716,7 +4759,7 @@ index f412b53..fc89433 100644 #include "bpf_jit_32.h" -@@ -71,7 +72,11 @@ struct jit_ctx { +@@ -72,34 +73,58 @@ struct jit_ctx { #endif }; @@ -4726,9 +4769,62 @@ index f412b53..fc89433 100644 int bpf_jit_enable __read_mostly; +#endif - static u64 jit_get_skb_b(struct sk_buff *skb, unsigned offset) +-static u64 jit_get_skb_b(struct sk_buff *skb, unsigned offset) ++static inline int call_neg_helper(struct sk_buff *skb, int offset, void *ret, ++ unsigned int size) ++{ ++ void *ptr = bpf_internal_load_pointer_neg_helper(skb, offset, size); ++ ++ if (!ptr) ++ return -EFAULT; ++ memcpy(ret, ptr, size); ++ return 0; ++} ++ ++static u64 jit_get_skb_b(struct sk_buff *skb, int offset) + { + u8 ret; + int err; + +- err = skb_copy_bits(skb, offset, &ret, 1); ++ if (offset < 0) ++ err = call_neg_helper(skb, offset, &ret, 1); ++ else ++ err = skb_copy_bits(skb, offset, &ret, 1); + + return (u64)err << 32 | ret; + } + +-static u64 jit_get_skb_h(struct sk_buff *skb, unsigned offset) ++static u64 jit_get_skb_h(struct sk_buff *skb, int offset) { -@@ -178,8 +183,10 @@ static void jit_fill_hole(void *area, unsigned int size) + u16 ret; + int err; + +- err = skb_copy_bits(skb, offset, &ret, 2); ++ if (offset < 0) ++ err = call_neg_helper(skb, offset, &ret, 2); ++ else ++ err = skb_copy_bits(skb, offset, &ret, 2); + + return (u64)err << 32 | ntohs(ret); + } + +-static u64 jit_get_skb_w(struct sk_buff *skb, unsigned offset) ++static u64 jit_get_skb_w(struct sk_buff *skb, int offset) + { + u32 ret; + int err; + +- err = skb_copy_bits(skb, offset, &ret, 4); ++ if (offset < 0) ++ err = call_neg_helper(skb, offset, &ret, 4); ++ else ++ err = skb_copy_bits(skb, offset, &ret, 4); + + return (u64)err << 32 | ntohl(ret); + } +@@ -179,8 +204,10 @@ static void jit_fill_hole(void *area, unsigned int size) { u32 *ptr; /* We are guaranteed to have aligned memory. */ @@ -4739,6 +4835,57 @@ index f412b53..fc89433 100644 } static void build_prologue(struct jit_ctx *ctx) +@@ -536,9 +563,6 @@ static int build_body(struct jit_ctx *ctx) + case BPF_LD | BPF_B | BPF_ABS: + load_order = 0; + load: +- /* the interpreter will deal with the negative K */ +- if ((int)k < 0) +- return -ENOTSUPP; + emit_mov_i(r_off, k, ctx); + load_common: + ctx->seen |= SEEN_DATA | SEEN_CALL; +@@ -547,12 +571,24 @@ load_common: + emit(ARM_SUB_I(r_scratch, r_skb_hl, + 1 << load_order), ctx); + emit(ARM_CMP_R(r_scratch, r_off), ctx); +- condt = ARM_COND_HS; ++ condt = ARM_COND_GE; + } else { + emit(ARM_CMP_R(r_skb_hl, r_off), ctx); + condt = ARM_COND_HI; + } + ++ /* ++ * test for negative offset, only if we are ++ * currently scheduled to take the fast ++ * path. this will update the flags so that ++ * the slowpath instruction are ignored if the ++ * offset is negative. ++ * ++ * for loard_order == 0 the HI condition will ++ * make loads at offset 0 take the slow path too. ++ */ ++ _emit(condt, ARM_CMP_I(r_off, 0), ctx); ++ + _emit(condt, ARM_ADD_R(r_scratch, r_off, r_skb_data), + ctx); + +@@ -860,9 +896,11 @@ b_epilogue: + off = offsetof(struct sk_buff, vlan_tci); + emit(ARM_LDRH_I(r_A, r_skb, off), ctx); + if (code == (BPF_ANC | SKF_AD_VLAN_TAG)) +- OP_IMM3(ARM_AND, r_A, r_A, VLAN_VID_MASK, ctx); +- else +- OP_IMM3(ARM_AND, r_A, r_A, VLAN_TAG_PRESENT, ctx); ++ OP_IMM3(ARM_AND, r_A, r_A, ~VLAN_TAG_PRESENT, ctx); ++ else { ++ OP_IMM3(ARM_LSR, r_A, r_A, 12, ctx); ++ OP_IMM3(ARM_AND, r_A, r_A, 0x1, ctx); ++ } + break; + case BPF_ANC | SKF_AD_QUEUE: + ctx->seen |= SEEN_SKB; diff --git a/arch/arm/plat-iop/setup.c b/arch/arm/plat-iop/setup.c index 5b217f4..c23f40e 100644 --- a/arch/arm/plat-iop/setup.c @@ -4786,7 +4933,7 @@ index 7047051..44e8675 100644 #endif #endif diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h -index a5abb00..9cbca9a 100644 +index 71f19c4..2b13cfe 100644 --- a/arch/arm64/include/asm/barrier.h +++ b/arch/arm64/include/asm/barrier.h @@ -44,7 +44,7 @@ @@ -4824,7 +4971,7 @@ index 4fde8c1..441f84f 100644 default: BUILD_BUG(); diff --git a/arch/arm64/include/asm/pgalloc.h b/arch/arm64/include/asm/pgalloc.h -index e20df38..027ede3 100644 +index 7642056..bffc904 100644 --- a/arch/arm64/include/asm/pgalloc.h +++ b/arch/arm64/include/asm/pgalloc.h @@ -46,6 +46,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) @@ -4836,9 +4983,9 @@ index e20df38..027ede3 100644 + pud_populate(mm, pud, pmd); +} + - #endif /* CONFIG_ARM64_PGTABLE_LEVELS > 2 */ + #endif /* CONFIG_PGTABLE_LEVELS > 2 */ - #if CONFIG_ARM64_PGTABLE_LEVELS > 3 + #if CONFIG_PGTABLE_LEVELS > 3 diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h index 07e1ba44..ec8cbbb 100644 --- a/arch/arm64/include/asm/uaccess.h @@ -4881,14 +5028,14 @@ index c3a58a1..78fbf54 100644 /* * Memory returned by kmalloc() may be used for DMA, so we must make diff --git a/arch/avr32/include/asm/elf.h b/arch/avr32/include/asm/elf.h -index d232888..87c8df1 100644 +index 0388ece..87c8df1 100644 --- a/arch/avr32/include/asm/elf.h +++ b/arch/avr32/include/asm/elf.h @@ -84,8 +84,14 @@ typedef struct user_fpu_struct elf_fpregset_t; 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. */ --#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) +-#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) +#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) +#ifdef CONFIG_PAX_ASLR @@ -5114,10 +5261,10 @@ index 69952c18..4fa2908 100644 #define ARCH_DMA_MINALIGN L1_CACHE_BYTES diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig -index 074e52b..76afdac 100644 +index 76d25b2..d3793a0f 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig -@@ -548,6 +548,7 @@ source "drivers/sn/Kconfig" +@@ -541,6 +541,7 @@ source "drivers/sn/Kconfig" config KEXEC bool "kexec system call" depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU) @@ -5208,7 +5355,7 @@ index 5a83c5c..4d7f553 100644 /* IA-64 relocations: */ diff --git a/arch/ia64/include/asm/pgalloc.h b/arch/ia64/include/asm/pgalloc.h -index 5767cdf..7462574 100644 +index f5e70e9..624fad5 100644 --- a/arch/ia64/include/asm/pgalloc.h +++ b/arch/ia64/include/asm/pgalloc.h @@ -39,6 +39,12 @@ pgd_populate(struct mm_struct *mm, pgd_t * pgd_entry, pud_t * pud) @@ -5238,7 +5385,7 @@ index 5767cdf..7462574 100644 { return quicklist_alloc(0, GFP_KERNEL, NULL); diff --git a/arch/ia64/include/asm/pgtable.h b/arch/ia64/include/asm/pgtable.h -index 7b6f880..ac8e008 100644 +index 9f3ed9e..c99b418 100644 --- a/arch/ia64/include/asm/pgtable.h +++ b/arch/ia64/include/asm/pgtable.h @@ -12,7 +12,7 @@ @@ -5565,7 +5712,7 @@ index 52b7604b..455cb85 100644 } diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c -index 6b33457..88b5124 100644 +index a9b65cf..49ae1cf 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c @@ -120,6 +120,19 @@ ia64_init_addr_space (void) @@ -5698,10 +5845,10 @@ index 4efe96a..60e8699 100644 #define SMP_CACHE_BYTES L1_CACHE_BYTES diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig -index 1a313c4..f27b613 100644 +index f501665..b107753 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -2504,6 +2504,7 @@ source "kernel/Kconfig.preempt" +@@ -2585,6 +2585,7 @@ source "kernel/Kconfig.preempt" config KEXEC bool "Kexec system call" @@ -6358,10 +6505,10 @@ index b4db69f..8f3b093 100644 #define SMP_CACHE_SHIFT L1_CACHE_SHIFT #define SMP_CACHE_BYTES L1_CACHE_BYTES diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h -index 694925a..990fa62 100644 +index f19e890..a4f8177 100644 --- a/arch/mips/include/asm/elf.h +++ b/arch/mips/include/asm/elf.h -@@ -410,15 +410,18 @@ extern const char *__elf_platform; +@@ -417,6 +417,13 @@ extern const char *__elf_platform; #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) #endif @@ -6375,15 +6522,6 @@ index 694925a..990fa62 100644 #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1 struct linux_binprm; extern int arch_setup_additional_pages(struct linux_binprm *bprm, - int uses_interp); - --struct mm_struct; --extern unsigned long arch_randomize_brk(struct mm_struct *mm); --#define arch_randomize_brk arch_randomize_brk -- - struct arch_elf_state { - int fp_abi; - int interp_fp_abi; diff --git a/arch/mips/include/asm/exec.h b/arch/mips/include/asm/exec.h index c1f6afa..38cc6e9 100644 --- a/arch/mips/include/asm/exec.h @@ -6501,10 +6639,10 @@ index 8feaed6..1bd8a64 100644 /** diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h -index 154b70a..426ae3d 100644 +index 89dd7fe..a123c97 100644 --- a/arch/mips/include/asm/page.h +++ b/arch/mips/include/asm/page.h -@@ -120,7 +120,7 @@ extern void copy_user_highpage(struct page *to, struct page *from, +@@ -118,7 +118,7 @@ extern void copy_user_highpage(struct page *to, struct page *from, #ifdef CONFIG_CPU_MIPS32 typedef struct { unsigned long pte_low, pte_high; } pte_t; #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) @@ -6530,7 +6668,7 @@ index b336037..5b874cc 100644 /* diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h -index f8f809f..b5f3fa4 100644 +index 819af9d..439839d 100644 --- a/arch/mips/include/asm/pgtable.h +++ b/arch/mips/include/asm/pgtable.h @@ -20,6 +20,9 @@ @@ -6544,10 +6682,10 @@ index f8f809f..b5f3fa4 100644 struct vm_area_struct; diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h -index 55ed660..3dc9422 100644 +index 9c0014e..5101ef5 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h -@@ -102,6 +102,9 @@ static inline struct thread_info *current_thread_info(void) +@@ -100,6 +100,9 @@ static inline struct thread_info *current_thread_info(void) #define TIF_SECCOMP 4 /* secure computing */ #define TIF_NOTIFY_RESUME 5 /* callback before returning to user */ #define TIF_RESTORE_SIGMASK 9 /* restore signal mask in do_signal() */ @@ -6557,7 +6695,7 @@ index 55ed660..3dc9422 100644 #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ #define TIF_NOHZ 19 /* in adaptive nohz mode */ -@@ -137,14 +140,16 @@ static inline struct thread_info *current_thread_info(void) +@@ -135,14 +138,16 @@ static inline struct thread_info *current_thread_info(void) #define _TIF_USEDMSA (1<work.syscall_trace -@@ -779,6 +783,11 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall) +@@ -803,6 +807,11 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall) tracehook_report_syscall_entry(regs)) ret = -1; @@ -6766,38 +6902,6 @@ index 5104528..950bbdc 100644 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) trace_sys_enter(regs, regs->regs[2]); -diff --git a/arch/mips/kernel/reset.c b/arch/mips/kernel/reset.c -index 07fc524..b9d7f28 100644 ---- a/arch/mips/kernel/reset.c -+++ b/arch/mips/kernel/reset.c -@@ -13,6 +13,7 @@ - #include - - #include -+#include - - /* - * Urgs ... Too many MIPS machines to handle this in a generic way. -@@ -29,16 +30,19 @@ void machine_restart(char *command) - { - if (_machine_restart) - _machine_restart(command); -+ BUG(); - } - - void machine_halt(void) - { - if (_machine_halt) - _machine_halt(); -+ BUG(); - } - - void machine_power_off(void) - { - if (pm_power_off) - pm_power_off(); -+ BUG(); - } diff --git a/arch/mips/kernel/sync-r4k.c b/arch/mips/kernel/sync-r4k.c index 2242bdd..b284048 100644 --- a/arch/mips/kernel/sync-r4k.c @@ -6868,7 +6972,7 @@ index 2242bdd..b284048 100644 } /* Arrange for an interrupt in a short while */ diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c -index 33984c0..666a96d 100644 +index d2d1c19..3e21d8d 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -689,7 +689,18 @@ asmlinkage void do_ov(struct pt_regs *regs) @@ -6892,10 +6996,10 @@ index 33984c0..666a96d 100644 info.si_code = FPE_INTOVF; info.si_signo = SIGFPE; diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c -index f5e7dda..47198ec 100644 +index 52f205a..335927c 100644 --- a/arch/mips/kvm/mips.c +++ b/arch/mips/kvm/mips.c -@@ -816,7 +816,7 @@ long kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) +@@ -1013,7 +1013,7 @@ long kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) return r; } @@ -6948,7 +7052,7 @@ index 7ff8637..6004edb 100644 tsk->thread.error_code = write; if (show_unhandled_signals && diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c -index f1baadd..5472dca 100644 +index 5c81fdd..db158d3 100644 --- a/arch/mips/mm/mmap.c +++ b/arch/mips/mm/mmap.c @@ -59,6 +59,7 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp, @@ -6988,7 +7092,7 @@ index f1baadd..5472dca 100644 if (dir == DOWN) { info.flags = VM_UNMAPPED_AREA_TOPDOWN; -@@ -146,6 +152,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -160,45 +166,34 @@ void arch_pick_mmap_layout(struct mm_struct *mm) { unsigned long random_factor = 0UL; @@ -6996,10 +7100,8 @@ index f1baadd..5472dca 100644 + if (!(mm->pax_flags & MF_PAX_RANDMMAP)) +#endif + - if (current->flags & PF_RANDOMIZE) { - random_factor = get_random_int(); - random_factor = random_factor << PAGE_SHIFT; -@@ -157,40 +167,25 @@ void arch_pick_mmap_layout(struct mm_struct *mm) + if (current->flags & PF_RANDOMIZE) + random_factor = arch_mmap_rnd(); if (mmap_is_legacy()) { mm->mmap_base = TASK_UNMAPPED_BASE + random_factor; @@ -7186,7 +7288,7 @@ index 4ce7a01..449202a 100644 #endif /* __ASM_OPENRISC_CACHE_H */ diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h -index 226f8ca..9d9b87d 100644 +index 226f8ca9..9d9b87d 100644 --- a/arch/parisc/include/asm/atomic.h +++ b/arch/parisc/include/asm/atomic.h @@ -273,6 +273,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v) @@ -7235,7 +7337,7 @@ index 47f11c7..3420df2 100644 #define SMP_CACHE_BYTES L1_CACHE_BYTES diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h -index 3391d06..c23a2cc 100644 +index 78c9fd3..42fa66a 100644 --- a/arch/parisc/include/asm/elf.h +++ b/arch/parisc/include/asm/elf.h @@ -342,6 +342,13 @@ struct pt_regs; /* forward declaration... */ @@ -7253,7 +7355,7 @@ index 3391d06..c23a2cc 100644 instruction set this CPU supports. This could be done in user space, but it's not easy, and we've already done it here. */ diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h -index d174372..f27fe5c 100644 +index 3a08eae..08fef28 100644 --- a/arch/parisc/include/asm/pgalloc.h +++ b/arch/parisc/include/asm/pgalloc.h @@ -61,6 +61,11 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd) @@ -7268,7 +7370,24 @@ index d174372..f27fe5c 100644 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) { pmd_t *pmd = (pmd_t *)__get_free_pages(GFP_KERNEL|__GFP_REPEAT, -@@ -96,6 +101,7 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) +@@ -72,7 +77,7 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) + + static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) + { +- if(pmd_flag(*pmd) & PxD_FLAG_ATTACHED) ++ if (pmd_flag(*pmd) & PxD_FLAG_ATTACHED) { + /* + * This is the permanent pmd attached to the pgd; + * cannot free it. +@@ -81,6 +86,7 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) + */ + mm_inc_nr_pmds(mm); + return; ++ } + free_pages((unsigned long)pmd, PMD_ORDER); + } + +@@ -96,6 +102,7 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); }) #define pmd_free(mm, x) do { } while (0) #define pgd_populate(mm, pmd, pte) BUG() @@ -7277,10 +7396,10 @@ index d174372..f27fe5c 100644 #endif diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h -index 15207b9..3209e65 100644 +index 0a18375..d613939 100644 --- a/arch/parisc/include/asm/pgtable.h +++ b/arch/parisc/include/asm/pgtable.h -@@ -215,6 +215,17 @@ extern void purge_tlb_entries(struct mm_struct *, unsigned long); +@@ -213,6 +213,17 @@ extern void purge_tlb_entries(struct mm_struct *, unsigned long); #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_EXEC |_PAGE_ACCESSED) #define PAGE_COPY PAGE_EXECREAD #define PAGE_RWX __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_WRITE | _PAGE_EXEC |_PAGE_ACCESSED) @@ -7419,10 +7538,10 @@ index 3c63a82..b1d6ee9 100644 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n", me->arch.unwind_section, table, end, gp); diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c -index e1ffea2..46ed66e 100644 +index 5aba01a..47cdd5a 100644 --- a/arch/parisc/kernel/sys_parisc.c +++ b/arch/parisc/kernel/sys_parisc.c -@@ -89,6 +89,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -92,6 +92,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long task_size = TASK_SIZE; int do_color_align, last_mmap; struct vm_unmapped_area_info info; @@ -7430,7 +7549,7 @@ index e1ffea2..46ed66e 100644 if (len > task_size) return -ENOMEM; -@@ -106,6 +107,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -109,6 +110,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, goto found_addr; } @@ -7441,7 +7560,7 @@ index e1ffea2..46ed66e 100644 if (addr) { if (do_color_align && last_mmap) addr = COLOR_ALIGN(addr, last_mmap, pgoff); -@@ -124,6 +129,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -127,6 +132,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, info.high_limit = mmap_upper_limit(); info.align_mask = last_mmap ? (PAGE_MASK & (SHM_COLOUR - 1)) : 0; info.align_offset = shared_align_offset(last_mmap, pgoff); @@ -7449,7 +7568,7 @@ index e1ffea2..46ed66e 100644 addr = vm_unmapped_area(&info); found_addr: -@@ -143,6 +149,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -146,6 +152,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, unsigned long addr = addr0; int do_color_align, last_mmap; struct vm_unmapped_area_info info; @@ -7457,7 +7576,7 @@ index e1ffea2..46ed66e 100644 #ifdef CONFIG_64BIT /* This should only ever run for 32-bit processes. */ -@@ -167,6 +174,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -170,6 +177,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, } /* requesting a specific address */ @@ -7468,7 +7587,7 @@ index e1ffea2..46ed66e 100644 if (addr) { if (do_color_align && last_mmap) addr = COLOR_ALIGN(addr, last_mmap, pgoff); -@@ -184,6 +195,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -187,6 +198,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, info.high_limit = mm->mmap_base; info.align_mask = last_mmap ? (PAGE_MASK & (SHM_COLOUR - 1)) : 0; info.align_offset = shared_align_offset(last_mmap, pgoff); @@ -7476,7 +7595,7 @@ index e1ffea2..46ed66e 100644 addr = vm_unmapped_area(&info); if (!(addr & ~PAGE_MASK)) goto found_addr; -@@ -249,6 +261,13 @@ void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -252,6 +264,13 @@ void arch_pick_mmap_layout(struct mm_struct *mm) mm->mmap_legacy_base = mmap_legacy_base(); mm->mmap_base = mmap_upper_limit(); @@ -7679,10 +7798,10 @@ index e5120e6..8ddb5cc 100644 /* * If for any reason at all we couldn't handle the fault, make diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig -index 22b0940..309f790 100644 +index 190cc48..48439ce 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig -@@ -409,6 +409,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE +@@ -413,6 +413,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE config KEXEC bool "kexec system call" depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) @@ -8217,7 +8336,7 @@ index a3bf5be..e03ba81 100644 #define smp_load_acquire(p) \ diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h -index 34a05a1..a1f2c67 100644 +index 0dc42c5..b80a3a1 100644 --- a/arch/powerpc/include/asm/cache.h +++ b/arch/powerpc/include/asm/cache.h @@ -4,6 +4,7 @@ @@ -8238,7 +8357,7 @@ index 34a05a1..a1f2c67 100644 #define SMP_CACHE_BYTES L1_CACHE_BYTES diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h -index 57d289a..b36c98c 100644 +index ee46ffe..b36c98c 100644 --- a/arch/powerpc/include/asm/elf.h +++ b/arch/powerpc/include/asm/elf.h @@ -30,6 +30,18 @@ @@ -8260,17 +8379,6 @@ index 57d289a..b36c98c 100644 #define ELF_CORE_EFLAGS (is_elf2_task() ? 2 : 0) /* -@@ -128,10 +140,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm, - (0x7ff >> (PAGE_SHIFT - 12)) : \ - (0x3ffff >> (PAGE_SHIFT - 12))) - --extern unsigned long arch_randomize_brk(struct mm_struct *mm); --#define arch_randomize_brk arch_randomize_brk -- -- - #ifdef CONFIG_SPU_BASE - /* Notes used in ET_CORE. Note name is "SPU//". */ - #define NT_SPU 1 diff --git a/arch/powerpc/include/asm/exec.h b/arch/powerpc/include/asm/exec.h index 8196e9c..d83a9f3 100644 --- a/arch/powerpc/include/asm/exec.h @@ -8472,7 +8580,7 @@ index 4b0be20..c15a27d 100644 static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte) diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h -index 9835ac4..900430f 100644 +index 11a3863..108f194 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -2,6 +2,7 @@ @@ -8508,7 +8616,7 @@ index af56b5c..f86f3f6 100644 #define DSISR_ISSTORE 0x02000000 /* access was a store */ #define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */ diff --git a/arch/powerpc/include/asm/smp.h b/arch/powerpc/include/asm/smp.h -index d607df5..08dc9ae 100644 +index 825663c..f9e9134 100644 --- a/arch/powerpc/include/asm/smp.h +++ b/arch/powerpc/include/asm/smp.h @@ -51,7 +51,7 @@ struct smp_ops_t { @@ -8588,10 +8696,10 @@ index 4dbe072..b803275 100644 : "r"(&rw->lock) : "cr0", "xer", "memory"); diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h -index 7248979..80b75de 100644 +index 7efee4a..48d47cc 100644 --- a/arch/powerpc/include/asm/thread_info.h +++ b/arch/powerpc/include/asm/thread_info.h -@@ -103,6 +103,8 @@ static inline struct thread_info *current_thread_info(void) +@@ -101,6 +101,8 @@ static inline struct thread_info *current_thread_info(void) #if defined(CONFIG_PPC64) #define TIF_ELF2ABI 18 /* function descriptors must die! */ #endif @@ -8600,7 +8708,7 @@ index 7248979..80b75de 100644 /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<gpr[1]); if (!user_mode(regs)) -@@ -1549,10 +1549,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) +@@ -1554,10 +1554,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) newsp = stack[0]; ip = stack[STACK_FRAME_LR_SAVE]; if (!firstframe || ip != lr) { @@ -8946,7 +9054,7 @@ index b4cc7be..1fe8bb3 100644 (void *)current->ret_stack[curr_frame].ret); curr_frame--; } -@@ -1572,7 +1572,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) +@@ -1577,7 +1577,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; @@ -8955,7 +9063,7 @@ index b4cc7be..1fe8bb3 100644 regs->trap, (void *)regs->nip, (void *)lr); firstframe = 1; } -@@ -1608,49 +1608,3 @@ void notrace __ppc64_runlatch_off(void) +@@ -1613,49 +1613,3 @@ void notrace __ppc64_runlatch_off(void) mtspr(SPRN_CTRLT, ctrl); } #endif /* CONFIG_PPC64 */ @@ -9159,10 +9267,10 @@ index 305eb0d..accc5b40 100644 rc = vdso_base; goto fail_mmapsem; diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c -index 27c0fac..6ec4a32 100644 +index ac3ddf1..9a54c76 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c -@@ -1402,7 +1402,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param) +@@ -1403,7 +1403,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param) } EXPORT_SYMBOL_GPL(kvmppc_init_lpid); @@ -9307,44 +9415,21 @@ index b396868..3eb6b9f 100644 goto bail; } diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c -index cb8bdbe..cde4bc7 100644 +index 0f0502e..bc3e7a3 100644 --- a/arch/powerpc/mm/mmap.c +++ b/arch/powerpc/mm/mmap.c -@@ -53,10 +53,14 @@ static inline int mmap_is_legacy(void) - return sysctl_legacy_va_layout; - } - --static unsigned long mmap_rnd(void) -+static unsigned long mmap_rnd(struct mm_struct *mm) +@@ -86,6 +86,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) { - unsigned long rnd = 0; + unsigned long random_factor = 0UL; +#ifdef CONFIG_PAX_RANDMMAP + if (!(mm->pax_flags & MF_PAX_RANDMMAP)) +#endif + - if (current->flags & PF_RANDOMIZE) { - /* 8MB for 32bit, 1GB for 64bit */ - if (is_32bit_task()) -@@ -67,7 +71,7 @@ static unsigned long mmap_rnd(void) - return rnd << PAGE_SHIFT; - } - --static inline unsigned long mmap_base(void) -+static inline unsigned long mmap_base(struct mm_struct *mm) - { - unsigned long gap = rlimit(RLIMIT_STACK); - -@@ -76,7 +80,7 @@ static inline unsigned long mmap_base(void) - else if (gap > MAX_GAP) - gap = MAX_GAP; + if (current->flags & PF_RANDOMIZE) + random_factor = arch_mmap_rnd(); -- return PAGE_ALIGN(TASK_SIZE - gap - mmap_rnd()); -+ return PAGE_ALIGN(TASK_SIZE - gap - mmap_rnd(mm)); - } - - /* -@@ -91,9 +95,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -95,9 +99,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) */ if (mmap_is_legacy()) { mm->mmap_base = TASK_UNMAPPED_BASE; @@ -9356,8 +9441,7 @@ index cb8bdbe..cde4bc7 100644 + mm->get_unmapped_area = arch_get_unmapped_area; } else { -- mm->mmap_base = mmap_base(); -+ mm->mmap_base = mmap_base(mm); + mm->mmap_base = mmap_base(random_factor); + +#ifdef CONFIG_PAX_RANDMMAP + if (mm->pax_flags & MF_PAX_RANDMMAP) @@ -9422,10 +9506,10 @@ index d966bbe..372124a 100644 struct spu_context *ctx = vma->vm_file->private_data; unsigned long offset = address - vma->vm_start; diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h -index fa934fe..c296056 100644 +index adbe380..adb7516 100644 --- a/arch/s390/include/asm/atomic.h +++ b/arch/s390/include/asm/atomic.h -@@ -412,4 +412,14 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v) +@@ -317,4 +317,14 @@ 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) @@ -9470,36 +9554,23 @@ index 4d7ccac..d03d0ad 100644 #define __read_mostly __attribute__((__section__(".data..read_mostly"))) diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h -index c9c875d..b4b0e4c 100644 +index 3ad48f2..64cc6f3 100644 --- a/arch/s390/include/asm/elf.h +++ b/arch/s390/include/asm/elf.h -@@ -163,8 +163,14 @@ extern unsigned int vdso_enabled; - 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. */ +@@ -163,6 +163,13 @@ extern unsigned int vdso_enabled; + (STACK_TOP / 3 * 2) : \ + (STACK_TOP / 3 * 2) & ~((1UL << 32) - 1)) --extern unsigned long randomize_et_dyn(void); --#define ELF_ET_DYN_BASE randomize_et_dyn() -+#define ELF_ET_DYN_BASE (STACK_TOP / 3 * 2) -+ +#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) +#endif - ++ /* This yields a mask that user programs can use to figure out what instruction set this CPU supports. */ -@@ -225,9 +231,6 @@ struct linux_binprm; - #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1 - int arch_setup_additional_pages(struct linux_binprm *, int); - --extern unsigned long arch_randomize_brk(struct mm_struct *mm); --#define arch_randomize_brk arch_randomize_brk -- - void *fill_cpu_elf_notes(void *ptr, struct save_area *sa, __vector128 *vxrs); - #endif diff --git a/arch/s390/include/asm/exec.h b/arch/s390/include/asm/exec.h index c4a93d6..4d2a9b4 100644 --- a/arch/s390/include/asm/exec.h @@ -9513,7 +9584,7 @@ index c4a93d6..4d2a9b4 100644 #endif /* __ASM_EXEC_H */ diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h -index cd4c68e..6764641 100644 +index d64a7a6..0830329 100644 --- a/arch/s390/include/asm/uaccess.h +++ b/arch/s390/include/asm/uaccess.h @@ -59,6 +59,7 @@ static inline int __range_ok(unsigned long addr, unsigned long size) @@ -9553,10 +9624,10 @@ index cd4c68e..6764641 100644 return n; } diff --git a/arch/s390/kernel/module.c b/arch/s390/kernel/module.c -index 2ca9586..55682a9 100644 +index 0c1a679..e1df357 100644 --- a/arch/s390/kernel/module.c +++ b/arch/s390/kernel/module.c -@@ -165,11 +165,11 @@ int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, +@@ -159,11 +159,11 @@ int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, /* Increase core size by size of got & plt and set start offsets for got and plt. */ @@ -9573,7 +9644,7 @@ index 2ca9586..55682a9 100644 return 0; } -@@ -285,7 +285,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -279,7 +279,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, if (info->got_initialized == 0) { Elf_Addr *gotent; @@ -9582,7 +9653,7 @@ index 2ca9586..55682a9 100644 info->got_offset; *gotent = val; info->got_initialized = 1; -@@ -308,7 +308,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -302,7 +302,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, rc = apply_rela_bits(loc, val, 0, 64, 0); else if (r_type == R_390_GOTENT || r_type == R_390_GOTPLTENT) { @@ -9591,16 +9662,16 @@ index 2ca9586..55682a9 100644 rc = apply_rela_bits(loc, val, 1, 32, 1); } break; -@@ -321,7 +321,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -315,7 +315,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, case R_390_PLTOFF64: /* 16 bit offset from GOT to PLT. */ if (info->plt_initialized == 0) { unsigned int *ip; - ip = me->module_core + me->arch.plt_offset + + ip = me->module_core_rx + me->arch.plt_offset + info->plt_offset; - #ifndef CONFIG_64BIT - ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */ -@@ -346,7 +346,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, + ip[0] = 0x0d10e310; /* basr 1,0; lg 1,10(1); br 1 */ + ip[1] = 0x100a0004; +@@ -334,7 +334,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, val - loc + 0xffffUL < 0x1ffffeUL) || (r_type == R_390_PLT32DBL && val - loc + 0xffffffffULL < 0x1fffffffeULL))) @@ -9609,7 +9680,7 @@ index 2ca9586..55682a9 100644 me->arch.plt_offset + info->plt_offset; val += rela->r_addend - loc; -@@ -368,7 +368,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -356,7 +356,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, case R_390_GOTOFF32: /* 32 bit offset to GOT. */ case R_390_GOTOFF64: /* 64 bit offset to GOT. */ val = val + rela->r_addend - @@ -9618,7 +9689,7 @@ index 2ca9586..55682a9 100644 if (r_type == R_390_GOTOFF16) rc = apply_rela_bits(loc, val, 0, 16, 0); else if (r_type == R_390_GOTOFF32) -@@ -378,7 +378,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, +@@ -366,7 +366,7 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, break; case R_390_GOTPC: /* 32 bit PC relative offset to GOT. */ case R_390_GOTPCDBL: /* 32 bit PC rel. off. to GOT shifted by 1. */ @@ -9628,10 +9699,10 @@ index 2ca9586..55682a9 100644 if (r_type == R_390_GOTPC) rc = apply_rela_bits(loc, val, 1, 32, 0); diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c -index 13fc097..84d375f 100644 +index dc5edc2..7d34ae3 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c -@@ -227,27 +227,3 @@ unsigned long get_wchan(struct task_struct *p) +@@ -200,27 +200,3 @@ unsigned long get_wchan(struct task_struct *p) } return 0; } @@ -9660,35 +9731,24 @@ index 13fc097..84d375f 100644 - return (ret > mm->brk) ? ret : mm->brk; -} diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c -index 179a2c2..371e85c 100644 +index 6e552af..3e608a1 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c -@@ -204,9 +204,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) - */ - if (mmap_is_legacy()) { - mm->mmap_base = mmap_base_legacy(); -+ -+#ifdef CONFIG_PAX_RANDMMAP -+ if (mm->pax_flags & MF_PAX_RANDMMAP) -+ mm->mmap_base += mm->delta_mmap; -+#endif -+ - mm->get_unmapped_area = arch_get_unmapped_area; - } else { - mm->mmap_base = mmap_base(); -+ +@@ -239,6 +239,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) + { + unsigned long random_factor = 0UL; + +#ifdef CONFIG_PAX_RANDMMAP -+ if (mm->pax_flags & MF_PAX_RANDMMAP) -+ mm->mmap_base -= mm->delta_mmap + mm->delta_stack; ++ if (!(mm->pax_flags & MF_PAX_RANDMMAP)) +#endif + - mm->get_unmapped_area = arch_get_unmapped_area_topdown; - } - } -@@ -279,9 +291,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) + if (current->flags & PF_RANDOMIZE) + random_factor = arch_mmap_rnd(); + +@@ -248,9 +252,21 @@ void arch_pick_mmap_layout(struct mm_struct *mm) */ if (mmap_is_legacy()) { - mm->mmap_base = mmap_base_legacy(); + mm->mmap_base = mmap_base_legacy(random_factor); + +#ifdef CONFIG_PAX_RANDMMAP + if (mm->pax_flags & MF_PAX_RANDMMAP) @@ -9697,7 +9757,7 @@ index 179a2c2..371e85c 100644 + mm->get_unmapped_area = s390_get_unmapped_area; } else { - mm->mmap_base = mmap_base(); + mm->mmap_base = mmap_base(random_factor); + +#ifdef CONFIG_PAX_RANDMMAP + if (mm->pax_flags & MF_PAX_RANDMMAP) @@ -10318,10 +10378,10 @@ index 9689176..63c18ea 100644 unsigned long mask, tmp1, tmp2, result; diff --git a/arch/sparc/include/asm/thread_info_32.h b/arch/sparc/include/asm/thread_info_32.h -index fd7bd0a..2e2fa7a 100644 +index 229475f..2fca9163 100644 --- a/arch/sparc/include/asm/thread_info_32.h +++ b/arch/sparc/include/asm/thread_info_32.h -@@ -47,6 +47,7 @@ struct thread_info { +@@ -48,6 +48,7 @@ struct thread_info { struct reg_window32 reg_window[NSWINS]; /* align for ldd! */ unsigned long rwbuf_stkptrs[NSWINS]; unsigned long w_saved; @@ -10330,10 +10390,10 @@ index fd7bd0a..2e2fa7a 100644 /* diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h -index ff45516..73001ab 100644 +index bde5982..9cbb56d 100644 --- a/arch/sparc/include/asm/thread_info_64.h +++ b/arch/sparc/include/asm/thread_info_64.h -@@ -61,6 +61,8 @@ struct thread_info { +@@ -59,6 +59,8 @@ struct thread_info { struct pt_regs *kern_una_regs; unsigned int kern_una_insn; @@ -10342,7 +10402,7 @@ index ff45516..73001ab 100644 unsigned long fpregs[(7 * 256) / sizeof(unsigned long)] __attribute__ ((aligned(64))); }; -@@ -184,12 +186,13 @@ register struct thread_info *current_thread_info_reg asm("g6"); +@@ -180,12 +182,13 @@ register struct thread_info *current_thread_info_reg asm("g6"); #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ /* flag bit 4 is available */ #define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */ @@ -10357,7 +10417,7 @@ index ff45516..73001ab 100644 /* NOTE: Thread flags >= 12 should be ones we have no interest * in using in assembly, else we can't use the mask as * an immediate value in instructions such as andcc. -@@ -209,12 +212,17 @@ register struct thread_info *current_thread_info_reg asm("g6"); +@@ -205,12 +208,17 @@ register struct thread_info *current_thread_info_reg asm("g6"); #define _TIF_SYSCALL_AUDIT (1<sc.oldmask) || (_COMPAT_NSIG_WORDS > 1 && __copy_from_user((((char *) &set.sig) + 4), @@ -14608,7 +14700,7 @@ index d0165c9..0d5639b 100644 sizeof(frame->extramask)))) goto badframe; -@@ -338,7 +338,7 @@ static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, +@@ -335,7 +335,7 @@ static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, sp -= frame_size; /* Align the stack pointer according to the i386 ABI, * i.e. so that on function entry ((sp + 4) & 15) == 0. */ @@ -14617,7 +14709,7 @@ index d0165c9..0d5639b 100644 return (void __user *) sp; } -@@ -383,10 +383,10 @@ int ia32_setup_frame(int sig, struct ksignal *ksig, +@@ -380,10 +380,10 @@ int ia32_setup_frame(int sig, struct ksignal *ksig, } else { /* Return stub is in 32bit vsyscall page */ if (current->mm->context.vdso) @@ -14631,7 +14723,7 @@ index d0165c9..0d5639b 100644 } put_user_try { -@@ -396,7 +396,7 @@ int ia32_setup_frame(int sig, struct ksignal *ksig, +@@ -393,7 +393,7 @@ int ia32_setup_frame(int sig, struct ksignal *ksig, * These are actually not used anymore, but left because some * gdb versions depend on them as a marker. */ @@ -14640,7 +14732,7 @@ index d0165c9..0d5639b 100644 } put_user_catch(err); if (err) -@@ -438,7 +438,7 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig, +@@ -435,7 +435,7 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig, 0xb8, __NR_ia32_rt_sigreturn, 0x80cd, @@ -14649,7 +14741,7 @@ index d0165c9..0d5639b 100644 }; frame = get_sigframe(ksig, regs, sizeof(*frame), &fpstate); -@@ -461,16 +461,19 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig, +@@ -458,16 +458,19 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig, if (ksig->ka.sa.sa_flags & SA_RESTORER) restorer = ksig->ka.sa.sa_restorer; @@ -14673,7 +14765,7 @@ index d0165c9..0d5639b 100644 err |= copy_siginfo_to_user32(&frame->info, &ksig->info); diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S -index 156ebca..9591cf0 100644 +index 72bf268..127572a 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S @@ -15,8 +15,10 @@ @@ -14687,25 +14779,7 @@ index 156ebca..9591cf0 100644 /* Avoid __ASSEMBLER__'ifying just for this. */ #include -@@ -62,12 +64,12 @@ - */ - .macro LOAD_ARGS32 offset, _r9=0 - .if \_r9 -- movl \offset+16(%rsp),%r9d -+ movl \offset+R9(%rsp),%r9d - .endif -- movl \offset+40(%rsp),%ecx -- movl \offset+48(%rsp),%edx -- movl \offset+56(%rsp),%esi -- movl \offset+64(%rsp),%edi -+ movl \offset+RCX(%rsp),%ecx -+ movl \offset+RDX(%rsp),%edx -+ movl \offset+RSI(%rsp),%esi -+ movl \offset+RDI(%rsp),%edi - movl %eax,%eax /* zero extension */ - .endm - -@@ -96,6 +98,32 @@ ENTRY(native_irq_enable_sysexit) +@@ -85,6 +87,32 @@ ENTRY(native_irq_enable_sysexit) ENDPROC(native_irq_enable_sysexit) #endif @@ -14738,51 +14812,56 @@ index 156ebca..9591cf0 100644 /* * 32bit SYSENTER instruction entry. * -@@ -122,12 +150,6 @@ ENTRY(ia32_sysenter_target) - CFI_REGISTER rsp,rbp +@@ -119,23 +147,24 @@ ENTRY(ia32_sysenter_target) + * it is too small to ever cause noticeable irq latency. + */ SWAPGS_UNSAFE_STACK - movq PER_CPU_VAR(kernel_stack), %rsp -- addq $(KERNEL_STACK_OFFSET),%rsp -- /* -- * No need to follow this irqs on/off section: the syscall -- * disabled irqs, here we enable it straight after entry: -- */ +- movq PER_CPU_VAR(cpu_tss + TSS_sp0), %rsp - ENABLE_INTERRUPTS(CLBR_NONE) - movl %ebp,%ebp /* zero extension */ - pushq_cfi $__USER32_DS - /*CFI_REL_OFFSET ss,0*/ -@@ -135,23 +157,46 @@ ENTRY(ia32_sysenter_target) - CFI_REL_OFFSET rsp,0 - pushfq_cfi - /*CFI_REL_OFFSET rflags,0*/ -- movl TI_sysenter_return+THREAD_INFO(%rsp,3*8-KERNEL_STACK_OFFSET),%r10d ++ movq PER_CPU_VAR(kernel_stack), %rsp + + /* Zero-extending 32-bit regs, do not remove */ + movl %ebp, %ebp + movl %eax, %eax + +- movl ASM_THREAD_INFO(TI_sysenter_return, %rsp, 0), %r10d - CFI_REGISTER rip,r10 -+ orl $X86_EFLAGS_IF,(%rsp) + GET_THREAD_INFO(%r11) + movl TI_sysenter_return(%r11), %r11d + CFI_REGISTER rip,r11 - pushq_cfi $__USER32_CS - /*CFI_REL_OFFSET cs,0*/ - movl %eax, %eax -- pushq_cfi %r10 -+ pushq_cfi %r11 - CFI_REL_OFFSET rip,0 - pushq_cfi %rax - cld - SAVE_ARGS 0,1,0 + + /* Construct struct pt_regs on stack */ + pushq_cfi $__USER32_DS /* pt_regs->ss */ + pushq_cfi %rbp /* pt_regs->sp */ + CFI_REL_OFFSET rsp,0 + pushfq_cfi /* pt_regs->flags */ ++ orl $X86_EFLAGS_IF,(%rsp) + pushq_cfi $__USER32_CS /* pt_regs->cs */ +- pushq_cfi %r10 /* pt_regs->ip = thread_info->sysenter_return */ ++ pushq_cfi %r11 /* pt_regs->ip = thread_info->sysenter_return */ + CFI_REL_OFFSET rip,0 + pushq_cfi_reg rax /* pt_regs->orig_ax */ + pushq_cfi_reg rdi /* pt_regs->di */ +@@ -147,15 +176,37 @@ ENTRY(ia32_sysenter_target) + sub $(10*8),%rsp /* pt_regs->r8-11,bp,bx,r12-15 not saved */ + CFI_ADJUST_CFA_OFFSET 10*8 + ++#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ movq_cfi r12, R12 ++#endif ++ + pax_enter_kernel_user + +#ifdef CONFIG_PAX_RANDKSTACK + pax_erase_kstack +#endif + -+ /* -+ * No need to follow this irqs on/off section: the syscall -+ * disabled irqs, here we enable it straight after entry: -+ */ + ENABLE_INTERRUPTS(CLBR_NONE) - /* no need to do an access_ok check here because rbp has been - 32bit zero extended */ ++ + /* + * no need to do an access_ok check here because rbp has been + * 32bit zero extended + */ + +#ifdef CONFIG_PAX_MEMORY_UDEREF + addq pax_user_shadow_base,%rbp @@ -14801,83 +14880,85 @@ index 156ebca..9591cf0 100644 /* * Sysenter doesn't filter flags, so we need to clear NT * ourselves. To save a few cycles, we can check whether -@@ -161,8 +206,9 @@ ENTRY(ia32_sysenter_target) +@@ -165,8 +216,9 @@ ENTRY(ia32_sysenter_target) jnz sysenter_fix_flags sysenter_flags_fixed: -- orl $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET) -- testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- orl $TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS) +- testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + GET_THREAD_INFO(%r11) + orl $TS_COMPAT,TI_status(%r11) + testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r11) CFI_REMEMBER_STATE jnz sysenter_tracesys cmpq $(IA32_NR_syscalls-1),%rax -@@ -172,14 +218,17 @@ sysenter_do_call: +@@ -181,9 +233,10 @@ sysenter_do_call: sysenter_dispatch: call *ia32_sys_call_table(,%rax,8) - movq %rax,RAX-ARGOFFSET(%rsp) + movq %rax,RAX(%rsp) + GET_THREAD_INFO(%r11) DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF -- testl $_TIF_ALLWORK_MASK,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- testl $_TIF_ALLWORK_MASK, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + testl $_TIF_ALLWORK_MASK,TI_flags(%r11) jnz sysexit_audit sysexit_from_sys_call: -- andl $~TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET) + /* +@@ -196,7 +249,9 @@ sysexit_from_sys_call: + * This code path is still called 'sysexit' because it pairs + * with 'sysenter' and it uses the SYSENTER calling convention. + */ +- andl $~TS_COMPAT,ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS) + pax_exit_kernel_user + pax_erase_kstack + andl $~TS_COMPAT,TI_status(%r11) - /* clear IF, that popfq doesn't enable interrupts early */ -- andl $~0x200,EFLAGS-ARGOFFSET(%rsp) -+ andl $~X86_EFLAGS_IF,EFLAGS-ARGOFFSET(%rsp) - movl RIP-ARGOFFSET(%rsp),%edx /* User %eip */ - CFI_REGISTER rip,rdx - RESTORE_ARGS 0,24,0,0,0,0 -@@ -205,6 +254,9 @@ sysexit_from_sys_call: + movl RIP(%rsp),%ecx /* User %eip */ + CFI_REGISTER rip,rcx + RESTORE_RSI_RDI +@@ -247,6 +302,9 @@ sysexit_from_sys_call: movl %ebx,%esi /* 2nd arg: 1st syscall arg */ movl %eax,%edi /* 1st arg: syscall number */ call __audit_syscall_entry + + pax_erase_kstack + - movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall number */ + movl RAX(%rsp),%eax /* reload syscall number */ cmpq $(IA32_NR_syscalls-1),%rax ja ia32_badsys -@@ -216,7 +268,7 @@ sysexit_from_sys_call: +@@ -258,7 +316,7 @@ sysexit_from_sys_call: .endm .macro auditsys_exit exit -- testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags(%r11) jnz ia32_ret_from_sys_call TRACE_IRQS_ON ENABLE_INTERRUPTS(CLBR_NONE) -@@ -227,11 +279,12 @@ sysexit_from_sys_call: +@@ -269,11 +327,12 @@ sysexit_from_sys_call: 1: setbe %al /* 1 if error, 0 if not */ movzbl %al,%edi /* zero-extend that into %edi */ call __audit_syscall_exit + GET_THREAD_INFO(%r11) - movq RAX-ARGOFFSET(%rsp),%rax /* reload syscall return value */ + movq RAX(%rsp),%rax /* reload syscall return value */ movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF -- testl %edi,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- testl %edi, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + testl %edi,TI_flags(%r11) jz \exit - CLEAR_RREGS -ARGOFFSET + CLEAR_RREGS jmp int_with_check -@@ -253,7 +306,7 @@ sysenter_fix_flags: +@@ -295,7 +354,7 @@ sysenter_fix_flags: sysenter_tracesys: #ifdef CONFIG_AUDITSYSCALL -- testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT), ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%r11) jz sysenter_auditsys #endif - SAVE_REST -@@ -265,6 +318,9 @@ sysenter_tracesys: - RESTORE_REST + SAVE_EXTRA_REGS +@@ -307,6 +366,9 @@ sysenter_tracesys: + RESTORE_EXTRA_REGS cmpq $(IA32_NR_syscalls-1),%rax ja int_ret_from_sys_call /* sysenter_tracesys has set RAX(%rsp) */ + @@ -14886,51 +14967,47 @@ index 156ebca..9591cf0 100644 jmp sysenter_do_call CFI_ENDPROC ENDPROC(ia32_sysenter_target) -@@ -292,19 +348,25 @@ ENDPROC(ia32_sysenter_target) - ENTRY(ia32_cstar_target) - CFI_STARTPROC32 simple - CFI_SIGNAL_FRAME -- CFI_DEF_CFA rsp,KERNEL_STACK_OFFSET -+ CFI_DEF_CFA rsp,0 - CFI_REGISTER rip,rcx - /*CFI_REGISTER rflags,r11*/ - SWAPGS_UNSAFE_STACK +@@ -357,7 +419,6 @@ ENTRY(ia32_cstar_target) movl %esp,%r8d CFI_REGISTER rsp,r8 movq PER_CPU_VAR(kernel_stack),%rsp -+ SAVE_ARGS 8*6,0,0 +- ENABLE_INTERRUPTS(CLBR_NONE) + + /* Zero-extending 32-bit regs, do not remove */ + movl %eax,%eax +@@ -380,16 +441,41 @@ ENTRY(ia32_cstar_target) + sub $(10*8),%rsp /* pt_regs->r8-11,bp,bx,r12-15 not saved */ + CFI_ADJUST_CFA_OFFSET 10*8 + ++#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ movq_cfi r12, R12 ++#endif ++ + pax_enter_kernel_user + +#ifdef CONFIG_PAX_RANDKSTACK + pax_erase_kstack +#endif ++ ++ ENABLE_INTERRUPTS(CLBR_NONE) + /* - * No need to follow this irqs on/off section: the syscall - * disabled irqs and here we enable it straight after entry: + * no need to do an access_ok check here because r8 has been + * 32bit zero extended */ - ENABLE_INTERRUPTS(CLBR_NONE) -- SAVE_ARGS 8,0,0 - movl %eax,%eax /* zero extension */ - movq %rax,ORIG_RAX-ARGOFFSET(%rsp) - movq %rcx,RIP-ARGOFFSET(%rsp) -@@ -320,12 +382,25 @@ 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 */ + +#ifdef CONFIG_PAX_MEMORY_UDEREF + ASM_PAX_OPEN_USERLAND + movq pax_user_shadow_base,%r8 -+ addq RSP-ARGOFFSET(%rsp),%r8 ++ addq RSP(%rsp),%r8 +#endif + ASM_STAC 1: movl (%r8),%r9d _ASM_EXTABLE(1b,ia32_badarg) ASM_CLAC -- orl $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET) -- testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- orl $TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS) +- testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + +#ifdef CONFIG_PAX_MEMORY_UDEREF + ASM_PAX_CLOSE_USERLAND @@ -14942,36 +15019,34 @@ index 156ebca..9591cf0 100644 CFI_REMEMBER_STATE jnz cstar_tracesys cmpq $IA32_NR_syscalls-1,%rax -@@ -335,13 +410,16 @@ cstar_do_call: +@@ -404,12 +490,15 @@ cstar_do_call: cstar_dispatch: call *ia32_sys_call_table(,%rax,8) - movq %rax,RAX-ARGOFFSET(%rsp) + movq %rax,RAX(%rsp) + GET_THREAD_INFO(%r11) DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF -- testl $_TIF_ALLWORK_MASK,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- testl $_TIF_ALLWORK_MASK, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + testl $_TIF_ALLWORK_MASK,TI_flags(%r11) jnz sysretl_audit sysretl_from_sys_call: -- andl $~TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET) -- RESTORE_ARGS 0,-ARG_SKIP,0,0,0 +- andl $~TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS) + pax_exit_kernel_user + pax_erase_kstack + andl $~TS_COMPAT,TI_status(%r11) -+ RESTORE_ARGS 0,-ORIG_RAX,0,0,0 - movl RIP-ARGOFFSET(%rsp),%ecx + RESTORE_RSI_RDI_RDX + movl RIP(%rsp),%ecx CFI_REGISTER rip,rcx - movl EFLAGS-ARGOFFSET(%rsp),%r11d -@@ -368,7 +446,7 @@ sysretl_audit: +@@ -451,7 +540,7 @@ sysretl_audit: cstar_tracesys: #ifdef CONFIG_AUDITSYSCALL -- testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT), ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%r11) jz cstar_auditsys #endif xchgl %r9d,%ebp -@@ -382,11 +460,19 @@ cstar_tracesys: +@@ -465,11 +554,19 @@ cstar_tracesys: xchgl %ebp,%r9d cmpq $(IA32_NR_syscalls-1),%rax ja int_ret_from_sys_call /* cstar_tracesys has set RAX(%rsp) */ @@ -14991,23 +15066,31 @@ index 156ebca..9591cf0 100644 movq $-EFAULT,%rax jmp ia32_sysret CFI_ENDPROC -@@ -423,19 +509,26 @@ ENTRY(ia32_syscall) - CFI_REL_OFFSET rip,RIP-RIP - PARAVIRT_ADJUST_EXCEPTION_FRAME - SWAPGS +@@ -505,14 +602,8 @@ ENTRY(ia32_syscall) + /*CFI_REL_OFFSET cs,1*8 */ + CFI_REL_OFFSET rip,0*8 + - /* -- * No need to follow this irqs on/off section: the syscall -- * disabled irqs and here we enable it straight after entry: +- * Interrupts are off on entry. +- * We do not frame this tiny irq-off block with TRACE_IRQS_OFF/ON, +- * it is too small to ever cause noticeable irq latency. - */ + PARAVIRT_ADJUST_EXCEPTION_FRAME + SWAPGS - ENABLE_INTERRUPTS(CLBR_NONE) - movl %eax,%eax - pushq_cfi %rax - cld - /* note the registers are not zero extended to the sf. - this could be a problem. */ - SAVE_ARGS 0,1,0 -- orl $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET) -- testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) + + /* Zero-extending 32-bit regs, do not remove */ + movl %eax,%eax +@@ -528,8 +619,26 @@ ENTRY(ia32_syscall) + sub $(10*8),%rsp /* pt_regs->r8-11,bp,bx,r12-15 not saved */ + CFI_ADJUST_CFA_OFFSET 10*8 + +- orl $TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS) +- testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) ++#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ movq_cfi r12, R12 ++#endif ++ + pax_enter_kernel_user + +#ifdef CONFIG_PAX_RANDKSTACK @@ -15015,18 +15098,20 @@ index 156ebca..9591cf0 100644 +#endif + + /* -+ * No need to follow this irqs on/off section: the syscall -+ * disabled irqs and here we enable it straight after entry: ++ * Interrupts are off on entry. ++ * We do not frame this tiny irq-off block with TRACE_IRQS_OFF/ON, ++ * it is too small to ever cause noticeable irq latency. + */ + ENABLE_INTERRUPTS(CLBR_NONE) ++ + GET_THREAD_INFO(%r11) + orl $TS_COMPAT,TI_status(%r11) + testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r11) jnz ia32_tracesys cmpq $(IA32_NR_syscalls-1),%rax ja ia32_badsys -@@ -458,6 +551,9 @@ ia32_tracesys: - RESTORE_REST +@@ -557,6 +666,9 @@ ia32_tracesys: + RESTORE_EXTRA_REGS cmpq $(IA32_NR_syscalls-1),%rax ja int_ret_from_sys_call /* ia32_tracesys has set RAX(%rsp) */ + @@ -15036,7 +15121,7 @@ index 156ebca..9591cf0 100644 END(ia32_syscall) diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c -index 8e0ceec..af13504 100644 +index 719cd70..69d576b 100644 --- a/arch/x86/ia32/sys_ia32.c +++ b/arch/x86/ia32/sys_ia32.c @@ -69,8 +69,8 @@ asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long offset_low, @@ -15051,7 +15136,7 @@ index 8e0ceec..af13504 100644 SET_GID(gid, from_kgid_munged(current_user_ns(), stat->gid)); if (!access_ok(VERIFY_WRITE, ubuf, sizeof(struct stat64)) || diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h -index 372231c..51b537d 100644 +index bdf02ee..51a4656 100644 --- a/arch/x86/include/asm/alternative-asm.h +++ b/arch/x86/include/asm/alternative-asm.h @@ -18,6 +18,45 @@ @@ -15097,25 +15182,43 @@ index 372231c..51b537d 100644 + .endm +#endif + - .macro altinstruction_entry orig alt feature orig_len alt_len + .macro altinstruction_entry orig alt feature orig_len alt_len pad_len .long \orig - . .long \alt - . +@@ -38,7 +77,7 @@ + altinstruction_entry 140b,143f,\feature,142b-140b,144f-143f,142b-141b + .popsection + +- .pushsection .altinstr_replacement,"ax" ++ .pushsection .altinstr_replacement,"a" + 143: + \newinstr + 144: +@@ -68,7 +107,7 @@ + altinstruction_entry 140b,144f,\feature2,142b-140b,145f-144f,142b-141b + .popsection + +- .pushsection .altinstr_replacement,"ax" ++ .pushsection .altinstr_replacement,"a" + 143: + \newinstr1 + 144: diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h -index 473bdbe..b1e3377 100644 +index ba32af0..ff42fc0 100644 --- a/arch/x86/include/asm/alternative.h +++ b/arch/x86/include/asm/alternative.h -@@ -106,7 +106,7 @@ static inline int alternatives_text_reserved(void *start, void *end) - ".pushsection .discard,\"aw\",@progbits\n" \ - DISCARD_ENTRY(1) \ +@@ -130,7 +130,7 @@ static inline int alternatives_text_reserved(void *start, void *end) + ".pushsection .altinstructions,\"a\"\n" \ + ALTINSTR_ENTRY(feature, 1) \ ".popsection\n" \ - ".pushsection .altinstr_replacement, \"ax\"\n" \ + ".pushsection .altinstr_replacement, \"a\"\n" \ ALTINSTR_REPLACEMENT(newinstr, feature, 1) \ ".popsection" -@@ -120,7 +120,7 @@ static inline int alternatives_text_reserved(void *start, void *end) - DISCARD_ENTRY(1) \ - DISCARD_ENTRY(2) \ +@@ -140,7 +140,7 @@ static inline int alternatives_text_reserved(void *start, void *end) + ALTINSTR_ENTRY(feature1, 1) \ + ALTINSTR_ENTRY(feature2, 2) \ ".popsection\n" \ - ".pushsection .altinstr_replacement, \"ax\"\n" \ + ".pushsection .altinstr_replacement, \"a\"\n" \ @@ -15123,7 +15226,7 @@ index 473bdbe..b1e3377 100644 ALTINSTR_REPLACEMENT(newinstr2, feature2, 2) \ ".popsection" diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h -index efc3b22..85c4f3a 100644 +index 976b86a..f3bc83a 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) @@ -16000,7 +16103,7 @@ index f8d273e..02f39f3 100644 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h -index 2ab1eb3..1e8cc5d 100644 +index 959e45b..6ea9bf6 100644 --- a/arch/x86/include/asm/barrier.h +++ b/arch/x86/include/asm/barrier.h @@ -57,7 +57,7 @@ @@ -16148,181 +16251,163 @@ index 48f99f1..d78ebf9 100644 #ifdef CONFIG_X86_VSMP #ifdef CONFIG_SMP diff --git a/arch/x86/include/asm/calling.h b/arch/x86/include/asm/calling.h -index 1f1297b..72b8439 100644 +index 1c8b50e..166bcaa 100644 --- a/arch/x86/include/asm/calling.h +++ b/arch/x86/include/asm/calling.h -@@ -82,106 +82,117 @@ For 32-bit we have the following conventions - kernel is built with - #define RSP 152 - #define SS 160 - --#define ARGOFFSET R11 -+#define ARGOFFSET R15 - - .macro SAVE_ARGS addskip=0, save_rcx=1, save_r891011=1, rax_enosys=0 -- subq $9*8+\addskip, %rsp -- CFI_ADJUST_CFA_OFFSET 9*8+\addskip -- movq_cfi rdi, 8*8 -- movq_cfi rsi, 7*8 -- movq_cfi rdx, 6*8 -+ subq $ORIG_RAX-ARGOFFSET+\addskip, %rsp -+ CFI_ADJUST_CFA_OFFSET ORIG_RAX-ARGOFFSET+\addskip -+ movq_cfi rdi, RDI -+ movq_cfi rsi, RSI -+ movq_cfi rdx, RDX - - .if \save_rcx -- movq_cfi rcx, 5*8 -+ movq_cfi rcx, RCX - .endif +@@ -96,23 +96,26 @@ For 32-bit we have the following conventions - kernel is built with + .endm - .if \rax_enosys -- movq $-ENOSYS, 4*8(%rsp) -+ movq $-ENOSYS, RAX(%rsp) - .else -- movq_cfi rax, 4*8 -+ movq_cfi rax, RAX + .macro SAVE_C_REGS_HELPER offset=0 rax=1 rcx=1 r8910=1 r11=1 ++#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ movq_cfi r12, R12+\offset ++#endif + .if \r11 +- movq_cfi r11, 6*8+\offset ++ movq_cfi r11, R11+\offset .endif - - .if \save_r891011 -- movq_cfi r8, 3*8 -- movq_cfi r9, 2*8 -- movq_cfi r10, 1*8 -- movq_cfi r11, 0*8 -+ movq_cfi r8, R8 -+ movq_cfi r9, R9 -+ movq_cfi r10, R10 -+ movq_cfi r11, R11 + .if \r8910 +- movq_cfi r10, 7*8+\offset +- movq_cfi r9, 8*8+\offset +- movq_cfi r8, 9*8+\offset ++ movq_cfi r10, R10+\offset ++ movq_cfi r9, R9+\offset ++ movq_cfi r8, R8+\offset + .endif + .if \rax +- movq_cfi rax, 10*8+\offset ++ movq_cfi rax, RAX+\offset .endif + .if \rcx +- movq_cfi rcx, 11*8+\offset ++ movq_cfi rcx, RCX+\offset + .endif +- movq_cfi rdx, 12*8+\offset +- movq_cfi rsi, 13*8+\offset +- movq_cfi rdi, 14*8+\offset ++ movq_cfi rdx, RDX+\offset ++ movq_cfi rsi, RSI+\offset ++ movq_cfi rdi, RDI+\offset + .endm + .macro SAVE_C_REGS offset=0 + SAVE_C_REGS_HELPER \offset, 1, 1, 1, 1 +@@ -131,76 +134,87 @@ For 32-bit we have the following conventions - kernel is built with + .endm -+#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR -+ movq_cfi r12, R12 + .macro SAVE_EXTRA_REGS offset=0 +- movq_cfi r15, 0*8+\offset +- movq_cfi r14, 1*8+\offset +- movq_cfi r13, 2*8+\offset +- movq_cfi r12, 3*8+\offset +- movq_cfi rbp, 4*8+\offset +- movq_cfi rbx, 5*8+\offset ++ movq_cfi r15, R15+\offset ++ movq_cfi r14, R14+\offset ++ movq_cfi r13, R13+\offset ++#ifndef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ movq_cfi r12, R12+\offset +#endif -+ ++ movq_cfi rbp, RBP+\offset ++ movq_cfi rbx, RBX+\offset + .endm + .macro SAVE_EXTRA_REGS_RBP offset=0 +- movq_cfi rbp, 4*8+\offset ++ movq_cfi rbp, RBP+\offset + .endm + + .macro RESTORE_EXTRA_REGS offset=0 +- movq_cfi_restore 0*8+\offset, r15 +- movq_cfi_restore 1*8+\offset, r14 +- movq_cfi_restore 2*8+\offset, r13 +- movq_cfi_restore 3*8+\offset, r12 +- movq_cfi_restore 4*8+\offset, rbp +- movq_cfi_restore 5*8+\offset, rbx ++ movq_cfi_restore R15+\offset, r15 ++ movq_cfi_restore R14+\offset, r14 ++ movq_cfi_restore R13+\offset, r13 ++#ifndef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ movq_cfi_restore R12+\offset, r12 ++#endif ++ movq_cfi_restore RBP+\offset, rbp ++ movq_cfi_restore RBX+\offset, rbx .endm --#define ARG_SKIP (9*8) -+#define ARG_SKIP ORIG_RAX + .macro ZERO_EXTRA_REGS + xorl %r15d, %r15d + xorl %r14d, %r14d + xorl %r13d, %r13d ++#ifndef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR + xorl %r12d, %r12d ++#endif + xorl %ebp, %ebp + xorl %ebx, %ebx + .endm - .macro RESTORE_ARGS rstor_rax=1, addskip=0, rstor_rcx=1, rstor_r11=1, \ - rstor_r8910=1, rstor_rdx=1 -+ +- .macro RESTORE_C_REGS_HELPER rstor_rax=1, rstor_rcx=1, rstor_r11=1, rstor_r8910=1, rstor_rdx=1 ++ .macro RESTORE_C_REGS_HELPER rstor_rax=1, rstor_rcx=1, rstor_r11=1, rstor_r8910=1, rstor_rdx=1, rstor_r12=1 +#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ .if \rstor_r12 + movq_cfi_restore R12, r12 ++ .endif +#endif -+ .if \rstor_r11 -- movq_cfi_restore 0*8, r11 +- movq_cfi_restore 6*8, r11 + movq_cfi_restore R11, r11 .endif - .if \rstor_r8910 -- movq_cfi_restore 1*8, r10 -- movq_cfi_restore 2*8, r9 -- movq_cfi_restore 3*8, r8 +- movq_cfi_restore 7*8, r10 +- movq_cfi_restore 8*8, r9 +- movq_cfi_restore 9*8, r8 + movq_cfi_restore R10, r10 + movq_cfi_restore R9, r9 + movq_cfi_restore R8, r8 .endif - .if \rstor_rax -- movq_cfi_restore 4*8, rax +- movq_cfi_restore 10*8, rax + movq_cfi_restore RAX, rax .endif - .if \rstor_rcx -- movq_cfi_restore 5*8, rcx +- movq_cfi_restore 11*8, rcx + movq_cfi_restore RCX, rcx .endif - .if \rstor_rdx -- movq_cfi_restore 6*8, rdx +- movq_cfi_restore 12*8, rdx + movq_cfi_restore RDX, rdx .endif - -- movq_cfi_restore 7*8, rsi -- movq_cfi_restore 8*8, rdi +- movq_cfi_restore 13*8, rsi +- movq_cfi_restore 14*8, rdi + movq_cfi_restore RSI, rsi + movq_cfi_restore RDI, rdi - -- .if ARG_SKIP+\addskip > 0 -- addq $ARG_SKIP+\addskip, %rsp -- CFI_ADJUST_CFA_OFFSET -(ARG_SKIP+\addskip) -+ .if ORIG_RAX+\addskip > 0 -+ addq $ORIG_RAX+\addskip, %rsp -+ CFI_ADJUST_CFA_OFFSET -(ORIG_RAX+\addskip) - .endif .endm - -- .macro LOAD_ARGS offset, skiprax=0 -- movq \offset(%rsp), %r11 -- movq \offset+8(%rsp), %r10 -- movq \offset+16(%rsp), %r9 -- movq \offset+24(%rsp), %r8 -- movq \offset+40(%rsp), %rcx -- movq \offset+48(%rsp), %rdx -- movq \offset+56(%rsp), %rsi -- movq \offset+64(%rsp), %rdi -+ .macro LOAD_ARGS skiprax=0 -+ movq R11(%rsp), %r11 -+ movq R10(%rsp), %r10 -+ movq R9(%rsp), %r9 -+ movq R8(%rsp), %r8 -+ movq RCX(%rsp), %rcx -+ movq RDX(%rsp), %rdx -+ movq RSI(%rsp), %rsi -+ movq RDI(%rsp), %rdi - .if \skiprax - .else -- movq \offset+72(%rsp), %rax -+ movq ORIG_RAX(%rsp), %rax - .endif + .macro RESTORE_C_REGS +- RESTORE_C_REGS_HELPER 1,1,1,1,1 ++ RESTORE_C_REGS_HELPER 1,1,1,1,1,1 .endm - --#define REST_SKIP (6*8) -- - .macro SAVE_REST -- subq $REST_SKIP, %rsp -- CFI_ADJUST_CFA_OFFSET REST_SKIP -- movq_cfi rbx, 5*8 -- movq_cfi rbp, 4*8 -- movq_cfi r12, 3*8 -- movq_cfi r13, 2*8 -- movq_cfi r14, 1*8 -- movq_cfi r15, 0*8 -+ movq_cfi rbx, RBX -+ movq_cfi rbp, RBP -+ -+#ifndef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR -+ movq_cfi r12, R12 -+#endif -+ -+ movq_cfi r13, R13 -+ movq_cfi r14, R14 -+ movq_cfi r15, R15 + .macro RESTORE_C_REGS_EXCEPT_RAX +- RESTORE_C_REGS_HELPER 0,1,1,1,1 ++ RESTORE_C_REGS_HELPER 0,1,1,1,1,0 .endm - - .macro RESTORE_REST -- movq_cfi_restore 0*8, r15 -- movq_cfi_restore 1*8, r14 -- movq_cfi_restore 2*8, r13 -- movq_cfi_restore 3*8, r12 -- movq_cfi_restore 4*8, rbp -- movq_cfi_restore 5*8, rbx -- addq $REST_SKIP, %rsp -- CFI_ADJUST_CFA_OFFSET -(REST_SKIP) -+ movq_cfi_restore R15, r15 -+ movq_cfi_restore R14, r14 -+ movq_cfi_restore R13, r13 -+ -+#ifndef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR -+ movq_cfi_restore R12, r12 -+#endif -+ -+ movq_cfi_restore RBP, rbp -+ movq_cfi_restore RBX, rbx + .macro RESTORE_C_REGS_EXCEPT_RCX +- RESTORE_C_REGS_HELPER 1,0,1,1,1 ++ RESTORE_C_REGS_HELPER 1,0,1,1,1,0 + .endm + .macro RESTORE_C_REGS_EXCEPT_R11 +- RESTORE_C_REGS_HELPER 1,1,0,1,1 ++ RESTORE_C_REGS_HELPER 1,1,0,1,1,1 + .endm + .macro RESTORE_C_REGS_EXCEPT_RCX_R11 +- RESTORE_C_REGS_HELPER 1,0,0,1,1 ++ RESTORE_C_REGS_HELPER 1,0,0,1,1,1 + .endm + .macro RESTORE_RSI_RDI +- RESTORE_C_REGS_HELPER 0,0,0,0,0 ++ RESTORE_C_REGS_HELPER 0,0,0,0,0,1 + .endm + .macro RESTORE_RSI_RDI_RDX +- RESTORE_C_REGS_HELPER 0,0,0,0,1 ++ RESTORE_C_REGS_HELPER 0,0,0,0,1,1 .endm - .macro SAVE_ALL + .macro REMOVE_PT_GPREGS_FROM_STACK addskip=0 diff --git a/arch/x86/include/asm/checksum_32.h b/arch/x86/include/asm/checksum_32.h index f50de69..2b0a458 100644 --- a/arch/x86/include/asm/checksum_32.h @@ -16427,7 +16512,7 @@ index 99c105d7..2f667ac 100644 ({ \ __typeof__ (*(ptr)) __ret = (inc); \ diff --git a/arch/x86/include/asm/compat.h b/arch/x86/include/asm/compat.h -index 59c6c40..5e0b22c 100644 +index acdee09..a553db3 100644 --- a/arch/x86/include/asm/compat.h +++ b/arch/x86/include/asm/compat.h @@ -41,7 +41,7 @@ typedef s64 __attribute__((aligned(4))) compat_s64; @@ -16440,19 +16525,20 @@ index 59c6c40..5e0b22c 100644 struct compat_timespec { compat_time_t tv_sec; diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h -index 90a5485..43b6211 100644 +index 3d6606f..5e22255 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h -@@ -213,7 +213,7 @@ +@@ -214,7 +214,8 @@ #define X86_FEATURE_PAUSEFILTER ( 8*32+13) /* AMD filtered pause intercept */ #define X86_FEATURE_PFTHRESHOLD ( 8*32+14) /* AMD pause filter threshold */ #define X86_FEATURE_VMMCALL ( 8*32+15) /* Prefer vmmcall to vmcall */ - ++#define X86_FEATURE_PCIDUDEREF ( 8*32+30) /* PaX PCID based UDEREF */ +#define X86_FEATURE_STRONGUDEREF (8*32+31) /* PaX PCID based strong UDEREF */ /* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9 */ #define X86_FEATURE_FSGSBASE ( 9*32+ 0) /* {RD/WR}{FS/GS}BASE instructions*/ -@@ -221,7 +221,7 @@ +@@ -222,7 +223,7 @@ #define X86_FEATURE_BMI1 ( 9*32+ 3) /* 1st group bit manipulation extensions */ #define X86_FEATURE_HLE ( 9*32+ 4) /* Hardware Lock Elision */ #define X86_FEATURE_AVX2 ( 9*32+ 5) /* AVX2 instructions */ @@ -16461,7 +16547,7 @@ index 90a5485..43b6211 100644 #define X86_FEATURE_BMI2 ( 9*32+ 8) /* 2nd group bit manipulation extensions */ #define X86_FEATURE_ERMS ( 9*32+ 9) /* Enhanced REP MOVSB/STOSB */ #define X86_FEATURE_INVPCID ( 9*32+10) /* Invalidate Processor Context ID */ -@@ -390,6 +390,7 @@ extern const char * const x86_bug_flags[NBUGINTS*32]; +@@ -401,6 +402,7 @@ extern const char * const x86_bug_flags[NBUGINTS*32]; #define cpu_has_eager_fpu boot_cpu_has(X86_FEATURE_EAGER_FPU) #define cpu_has_topoext boot_cpu_has(X86_FEATURE_TOPOEXT) #define cpu_has_bpext boot_cpu_has(X86_FEATURE_BPEXT) @@ -16469,7 +16555,7 @@ index 90a5485..43b6211 100644 #if __GNUC__ >= 4 extern void warn_pre_alternatives(void); -@@ -441,7 +442,8 @@ static __always_inline __pure bool __static_cpu_has(u16 bit) +@@ -454,7 +456,8 @@ static __always_inline __pure bool __static_cpu_has(u16 bit) #ifdef CONFIG_X86_DEBUG_STATIC_CPU_HAS t_warn: @@ -16479,7 +16565,7 @@ index 90a5485..43b6211 100644 return false; #endif -@@ -461,7 +463,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit) +@@ -475,7 +478,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" @@ -16488,16 +16574,16 @@ index 90a5485..43b6211 100644 "3: movb $1,%0\n" "4:\n" ".previous\n" -@@ -498,7 +500,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) - " .byte 2b - 1b\n" /* src len */ - " .byte 4f - 3f\n" /* repl len */ +@@ -510,7 +513,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) + " .byte 5f - 4f\n" /* repl len */ + " .byte 3b - 2b\n" /* pad len */ ".previous\n" - ".section .altinstr_replacement,\"ax\"\n" + ".section .altinstr_replacement,\"a\"\n" - "3: .byte 0xe9\n .long %l[t_no] - 2b\n" - "4:\n" + "4: jmp %l[t_no]\n" + "5:\n" ".previous\n" -@@ -531,7 +533,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) +@@ -545,7 +548,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) ".section .discard,\"aw\",@progbits\n" " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */ ".previous\n" @@ -16506,7 +16592,7 @@ index 90a5485..43b6211 100644 "3: movb $0,%0\n" "4:\n" ".previous\n" -@@ -545,7 +547,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) +@@ -560,7 +563,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit) ".section .discard,\"aw\",@progbits\n" " .byte 0xff + (6f-5f) - (4b-3b)\n" /* size check */ ".previous\n" @@ -16516,7 +16602,7 @@ index 90a5485..43b6211 100644 "6:\n" ".previous\n" diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h -index a94b82e..59ecefa 100644 +index a0bf89f..56f0b2a 100644 --- a/arch/x86/include/asm/desc.h +++ b/arch/x86/include/asm/desc.h @@ -4,6 +4,7 @@ @@ -16670,19 +16756,24 @@ index a94b82e..59ecefa 100644 unsigned dpl, unsigned ist, unsigned seg) { gate_desc s; -@@ -379,9 +392,9 @@ static inline void _set_gate(int gate, unsigned type, void *addr, - #define set_intr_gate(n, addr) \ +@@ -379,14 +392,14 @@ static inline void _set_gate(int gate, unsigned type, void *addr, + #define set_intr_gate_notrace(n, addr) \ do { \ BUG_ON((unsigned)n > 0xFF); \ - _set_gate(n, GATE_INTERRUPT, (void *)addr, 0, 0, \ + _set_gate(n, GATE_INTERRUPT, (const void *)addr, 0, 0, \ __KERNEL_CS); \ + } while (0) + + #define set_intr_gate(n, addr) \ + do { \ + set_intr_gate_notrace(n, addr); \ - _trace_set_gate(n, GATE_INTERRUPT, (void *)trace_##addr,\ + _trace_set_gate(n, GATE_INTERRUPT, (const void *)trace_##addr,\ 0, 0, __KERNEL_CS); \ } while (0) -@@ -409,19 +422,19 @@ static inline void alloc_system_vector(int vector) +@@ -414,19 +427,19 @@ static inline void alloc_system_vector(int vector) /* * This routine sets up an interrupt gate at directory privilege level 3. */ @@ -16705,7 +16796,7 @@ index a94b82e..59ecefa 100644 { BUG_ON((unsigned)n > 0xFF); _set_gate(n, GATE_TRAP, addr, 0, 0, __KERNEL_CS); -@@ -430,16 +443,16 @@ static inline void set_trap_gate(unsigned int n, void *addr) +@@ -435,16 +448,16 @@ static inline void set_trap_gate(unsigned int n, void *addr) static inline void set_task_gate(unsigned int n, unsigned int gdt_entry) { BUG_ON((unsigned)n > 0xFF); @@ -16725,7 +16816,7 @@ index a94b82e..59ecefa 100644 { BUG_ON((unsigned)n > 0xFF); _set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS); -@@ -511,4 +524,17 @@ static inline void load_current_idt(void) +@@ -516,4 +529,17 @@ static inline void load_current_idt(void) else load_idt((const struct desc_ptr *)&idt_descr); } @@ -16774,7 +16865,7 @@ index ced283a..ffe04cc 100644 union { u64 v64; diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h -index ca3347a..1a5082a 100644 +index f161c18..97d43e8 100644 --- a/arch/x86/include/asm/elf.h +++ b/arch/x86/include/asm/elf.h @@ -75,9 +75,6 @@ typedef struct user_fxsr_struct elf_fpxregset_t; @@ -16787,7 +16878,7 @@ index ca3347a..1a5082a 100644 #if defined(CONFIG_X86_32) || defined(CONFIG_COMPAT) extern unsigned int vdso32_enabled; #endif -@@ -249,7 +246,25 @@ extern int force_personality32; +@@ -250,7 +247,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. */ @@ -16813,7 +16904,7 @@ index ca3347a..1a5082a 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, -@@ -298,17 +313,13 @@ do { \ +@@ -299,17 +314,13 @@ do { \ #define ARCH_DLINFO \ do { \ @@ -16833,7 +16924,7 @@ index ca3347a..1a5082a 100644 } while (0) #define AT_SYSINFO 32 -@@ -323,10 +334,10 @@ else \ +@@ -324,10 +335,10 @@ else \ #endif /* !CONFIG_X86_32 */ @@ -16846,16 +16937,6 @@ index ca3347a..1a5082a 100644 selected_vdso32->sym___kernel_vsyscall) struct linux_binprm; -@@ -338,9 +349,6 @@ extern int compat_arch_setup_additional_pages(struct linux_binprm *bprm, - int uses_interp); - #define compat_arch_setup_additional_pages compat_arch_setup_additional_pages - --extern unsigned long arch_randomize_brk(struct mm_struct *mm); --#define arch_randomize_brk arch_randomize_brk -- - /* - * 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 77a99ac..39ff7f5 100644 --- a/arch/x86/include/asm/emergency-restart.h @@ -16902,10 +16983,10 @@ index 1c7eefe..d0e4702 100644 }; diff --git a/arch/x86/include/asm/fpu-internal.h b/arch/x86/include/asm/fpu-internal.h -index 72ba21a..79f3f66 100644 +index da5e967..ab07eec 100644 --- a/arch/x86/include/asm/fpu-internal.h +++ b/arch/x86/include/asm/fpu-internal.h -@@ -124,8 +124,11 @@ static inline void sanitize_i387_state(struct task_struct *tsk) +@@ -151,8 +151,11 @@ static inline void sanitize_i387_state(struct task_struct *tsk) #define user_insn(insn, output, input...) \ ({ \ int err; \ @@ -16918,7 +16999,7 @@ index 72ba21a..79f3f66 100644 "2: " ASM_CLAC "\n" \ ".section .fixup,\"ax\"\n" \ "3: movl $-1,%[err]\n" \ -@@ -134,6 +137,7 @@ static inline void sanitize_i387_state(struct task_struct *tsk) +@@ -161,6 +164,7 @@ static inline void sanitize_i387_state(struct task_struct *tsk) _ASM_EXTABLE(1b, 3b) \ : [err] "=r" (err), output \ : "0"(0), input); \ @@ -16926,12 +17007,12 @@ index 72ba21a..79f3f66 100644 err; \ }) -@@ -300,7 +304,7 @@ static inline int restore_fpu_checking(struct task_struct *tsk) +@@ -327,7 +331,7 @@ static inline int restore_fpu_checking(struct task_struct *tsk) "fnclex\n\t" "emms\n\t" "fildl %P[addr]" /* set F?P to defined value */ - : : [addr] "m" (tsk->thread.fpu.has_fpu)); -+ : : [addr] "m" (init_tss[raw_smp_processor_id()].x86_tss.sp0)); ++ : : [addr] "m" (cpu_tss[raw_smp_processor_id()].x86_tss.sp0)); } return fpu_restore_checking(&tsk->thread.fpu); @@ -17000,7 +17081,7 @@ index b4c1f54..e290c08 100644 pagefault_enable(); diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h -index 9662290..49ca5e5 100644 +index e9571dd..df5f542 100644 --- a/arch/x86/include/asm/hw_irq.h +++ b/arch/x86/include/asm/hw_irq.h @@ -160,8 +160,8 @@ static inline void unlock_vector_lock(void) {} @@ -17085,12 +17166,12 @@ index 34a5b93..27e40a6 100644 * Convert a virtual cached pointer to an uncached pointer */ diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h -index 0a8b519..80e7d5b 100644 +index b77f5ed..a2f791e 100644 --- a/arch/x86/include/asm/irqflags.h +++ b/arch/x86/include/asm/irqflags.h -@@ -141,6 +141,11 @@ static inline notrace unsigned long arch_local_irq_save(void) - sti; \ - sysexit +@@ -137,6 +137,11 @@ static inline notrace unsigned long arch_local_irq_save(void) + swapgs; \ + sysretl +#define GET_CR0_INTO_RDI mov %cr0, %rdi +#define SET_RDI_INTO_CR0 mov %rdi, %cr0 @@ -17358,7 +17439,7 @@ index 09b9620..923aecd 100644 atomic_t perf_rdpmc_allowed; /* nonzero if rdpmc is allowed */ } mm_context_t; diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h -index 883f6b93..6869d96 100644 +index 883f6b93..5184058 100644 --- a/arch/x86/include/asm/mmu_context.h +++ b/arch/x86/include/asm/mmu_context.h @@ -42,6 +42,20 @@ void destroy_context(struct mm_struct *mm); @@ -17367,7 +17448,7 @@ index 883f6b93..6869d96 100644 { + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (!(static_cpu_has(X86_FEATURE_PCID))) { ++ if (!(static_cpu_has(X86_FEATURE_PCIDUDEREF))) { + unsigned int i; + pgd_t *pgd; + @@ -17405,7 +17486,7 @@ index 883f6b93..6869d96 100644 + pax_open_kernel(); + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (static_cpu_has(X86_FEATURE_PCID)) ++ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) + __clone_user_pgds(get_cpu_pgd(cpu, user), next->pgd); + else +#endif @@ -17416,7 +17497,7 @@ index 883f6b93..6869d96 100644 + BUG_ON((__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL) != (read_cr3() & __PHYSICAL_MASK) && (__pa(get_cpu_pgd(cpu, user)) | PCID_USER) != (read_cr3() & __PHYSICAL_MASK)); + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (static_cpu_has(X86_FEATURE_PCID)) { ++ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) { + if (static_cpu_has(X86_FEATURE_INVPCID)) { + u64 descriptor[2]; + descriptor[0] = PCID_USER; @@ -17450,9 +17531,9 @@ index 883f6b93..6869d96 100644 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP) + if (!(__supported_pte_mask & _PAGE_NX)) { + smp_mb__before_atomic(); -+ cpu_clear(cpu, prev->context.cpu_user_cs_mask); ++ cpumask_clear_cpu(cpu, &prev->context.cpu_user_cs_mask); + smp_mb__after_atomic(); -+ cpu_set(cpu, next->context.cpu_user_cs_mask); ++ cpumask_set_cpu(cpu, &next->context.cpu_user_cs_mask); + } +#endif + @@ -17473,7 +17554,7 @@ index 883f6b93..6869d96 100644 + pax_open_kernel(); + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (static_cpu_has(X86_FEATURE_PCID)) ++ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) + __clone_user_pgds(get_cpu_pgd(cpu, user), next->pgd); + else +#endif @@ -17484,7 +17565,7 @@ index 883f6b93..6869d96 100644 + BUG_ON((__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL) != (read_cr3() & __PHYSICAL_MASK) && (__pa(get_cpu_pgd(cpu, user)) | PCID_USER) != (read_cr3() & __PHYSICAL_MASK)); + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (static_cpu_has(X86_FEATURE_PCID)) { ++ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) { + if (static_cpu_has(X86_FEATURE_INVPCID)) { + u64 descriptor[2]; + descriptor[0] = PCID_USER; @@ -17526,7 +17607,7 @@ index 883f6b93..6869d96 100644 + +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) + if (!(__supported_pte_mask & _PAGE_NX)) -+ cpu_set(cpu, next->context.cpu_user_cs_mask); ++ cpumask_set_cpu(cpu, &next->context.cpu_user_cs_mask); +#endif + +#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) @@ -17686,7 +17767,7 @@ index b3bebf9..13ac22e 100644 #define __phys_addr(x) __phys_addr_nodebug(x) #define __phys_addr_symbol(x) \ diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h -index 965c47d..ffe0af8 100644 +index 8957810..f34efb4 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -560,7 +560,7 @@ static inline pmd_t __pmd(pmdval_t val) @@ -17748,10 +17829,10 @@ index 965c47d..ffe0af8 100644 #endif #define INTERRUPT_RETURN \ -@@ -981,6 +1008,21 @@ extern void default_banner(void); - PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_irq_enable_sysexit), \ +@@ -976,6 +1003,21 @@ extern void default_banner(void); + PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_usergs_sysret64), \ CLBR_NONE, \ - jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_irq_enable_sysexit)) + jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret64)) + +#define GET_CR0_INTO_RDI \ + call PARA_INDIRECT(pv_cpu_ops+PV_CPU_read_cr0); \ @@ -17771,7 +17852,7 @@ index 965c47d..ffe0af8 100644 #endif /* __ASSEMBLY__ */ diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h -index 7549b8b..f0edfda 100644 +index f7b0b5c..cdd33f9 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -84,7 +84,7 @@ struct pv_init_ops { @@ -17831,8 +17912,8 @@ index 7549b8b..f0edfda 100644 void (*set_pgd)(pgd_t *pudp, pgd_t pgdval); + void (*set_pgd_batched)(pgd_t *pudp, pgd_t pgdval); - #endif /* PAGETABLE_LEVELS == 4 */ - #endif /* PAGETABLE_LEVELS >= 3 */ + #endif /* CONFIG_PGTABLE_LEVELS == 4 */ + #endif /* CONFIG_PGTABLE_LEVELS >= 3 */ @@ -324,7 +325,13 @@ struct pv_mmu_ops { an mfn. We can tell which is which from the index. */ @@ -17876,7 +17957,7 @@ index 7549b8b..f0edfda 100644 extern struct pv_info pv_info; extern struct pv_init_ops pv_init_ops; diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h -index c4412e9..90e88c5 100644 +index bf7f8b5..ca5799d 100644 --- a/arch/x86/include/asm/pgalloc.h +++ b/arch/x86/include/asm/pgalloc.h @@ -63,6 +63,13 @@ static inline void pmd_populate_kernel(struct mm_struct *mm, @@ -17915,7 +17996,7 @@ index c4412e9..90e88c5 100644 +} #endif /* CONFIG_X86_PAE */ - #if PAGETABLE_LEVELS > 3 + #if CONFIG_PGTABLE_LEVELS > 3 @@ -123,6 +140,12 @@ static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud))); } @@ -17965,7 +18046,7 @@ index cdaa58c..e61122b 100644 /* diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h -index a0c35bf..7045c6a 100644 +index fe57e7a..0573d42 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -47,6 +47,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page); @@ -18321,10 +18402,10 @@ index 2ee7811..55aca24 100644 } diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h -index 602b602..acb53ed 100644 +index e6844df..432b56e 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h -@@ -61,11 +61,16 @@ typedef struct { pteval_t pte; } pte_t; +@@ -60,11 +60,16 @@ typedef struct { pteval_t pte; } pte_t; #define MODULES_VADDR (__START_KERNEL_map + KERNEL_IMAGE_SIZE) #define MODULES_END _AC(0xffffffffff000000, UL) #define MODULES_LEN (MODULES_END - MODULES_VADDR) @@ -18342,7 +18423,7 @@ index 602b602..acb53ed 100644 #endif /* _ASM_X86_PGTABLE_64_DEFS_H */ diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h -index 8c7c108..1c1b77f 100644 +index 78f0c8c..4424bb0 100644 --- a/arch/x86/include/asm/pgtable_types.h +++ b/arch/x86/include/asm/pgtable_types.h @@ -85,8 +85,10 @@ @@ -18391,16 +18472,16 @@ index 8c7c108..1c1b77f 100644 } +#endif -+#if PAGETABLE_LEVELS == 3 ++#if CONFIG_PGTABLE_LEVELS == 3 +#include +#endif + -+#if PAGETABLE_LEVELS == 2 ++#if CONFIG_PGTABLE_LEVELS == 2 +#include +#endif + +#ifndef __ASSEMBLY__ - #if PAGETABLE_LEVELS > 3 + #if CONFIG_PGTABLE_LEVELS > 3 typedef struct { pudval_t pud; } pud_t; @@ -247,8 +262,6 @@ static inline pudval_t native_pud_val(pud_t pud) @@ -18443,10 +18524,10 @@ index 8f327184..368fb29 100644 /* diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h -index ec1c935..5cc6023 100644 +index 23ba676..6584489 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h -@@ -127,7 +127,7 @@ struct cpuinfo_x86 { +@@ -130,7 +130,7 @@ struct cpuinfo_x86 { /* Index into per_cpu list: */ u16 cpu_index; u32 microcode; @@ -18455,7 +18536,7 @@ index ec1c935..5cc6023 100644 #define X86_VENDOR_INTEL 0 #define X86_VENDOR_CYRIX 1 -@@ -198,9 +198,21 @@ static inline void native_cpuid(unsigned int *eax, unsigned int *ebx, +@@ -201,9 +201,21 @@ static inline void native_cpuid(unsigned int *eax, unsigned int *ebx, : "memory"); } @@ -18478,16 +18559,16 @@ index ec1c935..5cc6023 100644 } #ifdef CONFIG_X86_32 -@@ -282,7 +294,7 @@ struct tss_struct { +@@ -300,7 +312,7 @@ struct tss_struct { } ____cacheline_aligned; --DECLARE_PER_CPU_SHARED_ALIGNED(struct tss_struct, init_tss); -+extern struct tss_struct init_tss[NR_CPUS]; +-DECLARE_PER_CPU_SHARED_ALIGNED(struct tss_struct, cpu_tss); ++extern struct tss_struct cpu_tss[NR_CPUS]; - /* - * Save the original ist values for checking stack pointers during debugging -@@ -479,6 +491,7 @@ struct thread_struct { + #ifdef CONFIG_X86_32 + DECLARE_PER_CPU(unsigned long, cpu_current_top_of_stack); +@@ -500,6 +512,7 @@ struct thread_struct { unsigned short ds; unsigned short fsindex; unsigned short gsindex; @@ -18495,7 +18576,20 @@ index ec1c935..5cc6023 100644 #endif #ifdef CONFIG_X86_32 unsigned long ip; -@@ -805,11 +818,18 @@ static inline void spin_lock_prefetch(const void *x) +@@ -585,10 +598,10 @@ static inline void native_swapgs(void) + #endif + } + +-static inline unsigned long current_top_of_stack(void) ++static inline unsigned long current_top_of_stack(unsigned int cpu) + { + #ifdef CONFIG_X86_64 +- return this_cpu_read_stable(cpu_tss.x86_tss.sp0); ++ return cpu_tss[cpu].x86_tss.sp0; + #else + /* sp0 on x86_32 is special in and around vm86 mode. */ + return this_cpu_read_stable(cpu_current_top_of_stack); +@@ -837,8 +850,15 @@ static inline void spin_lock_prefetch(const void *x) */ #define TASK_SIZE PAGE_OFFSET #define TASK_SIZE_MAX TASK_SIZE @@ -18511,43 +18605,22 @@ index ec1c935..5cc6023 100644 +#define STACK_TOP_MAX TASK_SIZE #define INIT_THREAD { \ -- .sp0 = sizeof(init_stack) + (long)&init_stack, \ -+ .sp0 = sizeof(init_stack) + (long)&init_stack - 8, \ - .vm86_info = NULL, \ - .sysenter_cs = __KERNEL_CS, \ - .io_bitmap_ptr = NULL, \ -@@ -823,7 +843,7 @@ static inline void spin_lock_prefetch(const void *x) + .sp0 = TOP_OF_INIT_STACK, \ +@@ -859,12 +879,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); + * "struct pt_regs" is possible, but they may contain the + * completely wrong values. */ - #define INIT_TSS { \ - .x86_tss = { \ -- .sp0 = sizeof(init_stack) + (long)&init_stack, \ -+ .sp0 = sizeof(init_stack) + (long)&init_stack - 8, \ - .ss0 = __KERNEL_DS, \ - .ss1 = __KERNEL_CS, \ - .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \ -@@ -834,11 +854,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)) --#define KSTK_TOP(info) \ --({ \ -- unsigned long *__ptr = (unsigned long *)(info); \ -- (unsigned long)(&__ptr[THREAD_SIZE_LONGS]); \ +-#define task_pt_regs(task) \ +-({ \ +- unsigned long __ptr = (unsigned long)task_stack_page(task); \ +- __ptr += THREAD_SIZE - TOP_OF_KERNEL_STACK_PADDING; \ +- ((struct pt_regs *)__ptr) - 1; \ -}) -+#define KSTK_TOP(info) ((container_of(info, struct task_struct, tinfo))->thread.sp0) ++#define task_pt_regs(tsk) ((struct pt_regs *)(tsk)->thread.sp0 - 1) - /* - * The below -8 is to reserve 8 bytes on top of the ring0 stack. -@@ -853,7 +869,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); - #define task_pt_regs(task) \ - ({ \ - struct pt_regs *__regs__; \ -- __regs__ = (struct pt_regs *)(KSTK_TOP(task_stack_page(task))-8); \ -+ __regs__ = (struct pt_regs *)((task)->thread.sp0); \ - __regs__ - 1; \ - }) + #define KSTK_ESP(task) (task_pt_regs(task)->sp) -@@ -869,13 +885,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); +@@ -878,13 +893,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); * particular problem by preventing anything from being mapped * at the maximum canonical address. */ @@ -18563,21 +18636,7 @@ index ec1c935..5cc6023 100644 #define TASK_SIZE (test_thread_flag(TIF_ADDR32) ? \ IA32_PAGE_OFFSET : TASK_SIZE_MAX) -@@ -886,11 +902,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk); - #define STACK_TOP_MAX TASK_SIZE_MAX - - #define INIT_THREAD { \ -- .sp0 = (unsigned long)&init_stack + sizeof(init_stack) \ -+ .sp0 = (unsigned long)&init_stack + sizeof(init_stack) - 16 \ - } - - #define INIT_TSS { \ -- .x86_tss.sp0 = (unsigned long)&init_stack + sizeof(init_stack) \ -+ .x86_tss.sp0 = (unsigned long)&init_stack + sizeof(init_stack) - 16 \ - } - - /* -@@ -918,6 +934,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip, +@@ -918,6 +933,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip, */ #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) @@ -18588,7 +18647,7 @@ index ec1c935..5cc6023 100644 #define KSTK_EIP(task) (task_pt_regs(task)->ip) /* Get/set a process' ability to use the timestamp counter instruction */ -@@ -962,7 +982,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves) +@@ -962,7 +981,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves) return 0; } @@ -18597,7 +18656,7 @@ index ec1c935..5cc6023 100644 extern void free_init_pages(char *what, unsigned long begin, unsigned long end); void default_idle(void); -@@ -972,6 +992,6 @@ bool xen_set_default_idle(void); +@@ -972,6 +991,6 @@ bool xen_set_default_idle(void); #define xen_set_default_idle 0 #endif @@ -18606,46 +18665,10 @@ index ec1c935..5cc6023 100644 void df_debug(struct pt_regs *regs, long error_code); #endif /* _ASM_X86_PROCESSOR_H */ diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h -index 86fc2bb..bd5049a 100644 +index 5fabf13..7388158 100644 --- a/arch/x86/include/asm/ptrace.h +++ b/arch/x86/include/asm/ptrace.h -@@ -89,28 +89,29 @@ static inline unsigned long regs_return_value(struct pt_regs *regs) - } - - /* -- * user_mode_vm(regs) determines whether a register set came from user mode. -+ * user_mode(regs) determines whether a register set came from user mode. - * This is true if V8086 mode was enabled OR if the register set was from - * protected mode with RPL-3 CS value. This tricky test checks that with - * one comparison. Many places in the kernel can bypass this full check -- * if they have already ruled out V8086 mode, so user_mode(regs) can be used. -+ * if they have already ruled out V8086 mode, so user_mode_novm(regs) can -+ * be used. - */ --static inline int user_mode(struct pt_regs *regs) -+static inline int user_mode_novm(struct pt_regs *regs) - { - #ifdef CONFIG_X86_32 - return (regs->cs & SEGMENT_RPL_MASK) == USER_RPL; - #else -- return !!(regs->cs & 3); -+ return !!(regs->cs & SEGMENT_RPL_MASK); - #endif - } - --static inline int user_mode_vm(struct pt_regs *regs) -+static inline int user_mode(struct pt_regs *regs) - { - #ifdef CONFIG_X86_32 - return ((regs->cs & SEGMENT_RPL_MASK) | (regs->flags & X86_VM_MASK)) >= - USER_RPL; - #else -- return user_mode(regs); -+ return user_mode_novm(regs); - #endif - } - -@@ -126,15 +127,16 @@ static inline int v8086_mode(struct pt_regs *regs) +@@ -125,15 +125,16 @@ static inline int v8086_mode(struct pt_regs *regs) #ifdef CONFIG_X86_64 static inline bool user_64bit_mode(struct pt_regs *regs) { @@ -18664,7 +18687,7 @@ index 86fc2bb..bd5049a 100644 #endif } -@@ -185,9 +187,11 @@ static inline unsigned long regs_get_register(struct pt_regs *regs, +@@ -180,9 +181,11 @@ static inline unsigned long regs_get_register(struct pt_regs *regs, * Traps from the kernel do not save sp and ss. * Use the helper function to retrieve sp. */ @@ -18974,13 +18997,13 @@ index cad82c9..2e5c5c1 100644 #endif /* __KERNEL__ */ diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h -index db257a5..b91bc77 100644 +index 7d5a192..23ef1aa 100644 --- a/arch/x86/include/asm/segment.h +++ b/arch/x86/include/asm/segment.h -@@ -73,10 +73,15 @@ +@@ -82,14 +82,20 @@ * 26 - ESPFIX small SS * 27 - per-cpu [ offset to per-cpu data area ] - * 28 - stack_canary-20 [ for stack protector ] + * 28 - stack_canary-20 [ for stack protector ] <=== cacheline #8 - * 29 - unused - * 30 - unused + * 29 - PCI BIOS CS @@ -18992,115 +19015,92 @@ index db257a5..b91bc77 100644 +#define __KERNEXEC_EFI_CS (GDT_ENTRY_KERNEXEC_EFI_CS*8) +#define __KERNEXEC_EFI_DS (GDT_ENTRY_KERNEXEC_EFI_DS*8) + - #define GDT_ENTRY_TLS_MIN 6 - #define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1) - -@@ -88,6 +93,8 @@ + #define GDT_ENTRY_TLS_MIN 6 + #define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1) - #define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE+0) + #define GDT_ENTRY_KERNEL_CS 12 ++#define GDT_ENTRY_KERNEXEC_KERNEL_CS 4 + #define GDT_ENTRY_KERNEL_DS 13 + #define GDT_ENTRY_DEFAULT_USER_CS 14 + #define GDT_ENTRY_DEFAULT_USER_DS 15 +@@ -106,6 +112,12 @@ + #define GDT_ENTRY_PERCPU 27 + #define GDT_ENTRY_STACK_CANARY 28 -+#define GDT_ENTRY_KERNEXEC_KERNEL_CS (4) ++#define GDT_ENTRY_PCIBIOS_CS 29 ++#define __PCIBIOS_DS (GDT_ENTRY_PCIBIOS_DS * 8) + - #define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE+1) - - #define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE+4) -@@ -113,6 +120,12 @@ - #define __KERNEL_STACK_CANARY 0 - #endif - -+#define GDT_ENTRY_PCIBIOS_CS (GDT_ENTRY_KERNEL_BASE+17) ++#define GDT_ENTRY_PCIBIOS_DS 30 +#define __PCIBIOS_CS (GDT_ENTRY_PCIBIOS_CS * 8) -+ -+#define GDT_ENTRY_PCIBIOS_DS (GDT_ENTRY_KERNEL_BASE+18) -+#define __PCIBIOS_DS (GDT_ENTRY_PCIBIOS_DS * 8) + #define GDT_ENTRY_DOUBLEFAULT_TSS 31 /* -@@ -140,7 +153,7 @@ +@@ -118,6 +130,7 @@ */ - /* Matches PNP_CS32 and PNP_CS16 (they must be consecutive) */ --#define SEGMENT_IS_PNP_CODE(x) (((x) & 0xf4) == GDT_ENTRY_PNPBIOS_BASE * 8) -+#define SEGMENT_IS_PNP_CODE(x) (((x) & 0xFFFCU) == PNP_CS32 || ((x) & 0xFFFCU) == PNP_CS16) + #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8) ++#define __KERNEXEC_KERNEL_CS (GDT_ENTRY_KERNEXEC_KERNEL_CS*8) + #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8) + #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8 + 3) + #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8 + 3) +@@ -129,7 +142,7 @@ + #define PNP_CS16 (GDT_ENTRY_PNPBIOS_CS16*8) + /* "Is this PNP code selector (PNP_CS32 or PNP_CS16)?" */ +-#define SEGMENT_IS_PNP_CODE(x) (((x) & 0xf4) == PNP_CS32) ++#define SEGMENT_IS_PNP_CODE(x) (((x) & 0xFFFCU) == PNP_CS32 || ((x) & 0xFFFCU) == PNP_CS16) - #else -@@ -164,6 +177,8 @@ - #define __USER32_CS (GDT_ENTRY_DEFAULT_USER32_CS*8+3) - #define __USER32_DS __USER_DS + /* data segment for BIOS: */ + #define PNP_DS (GDT_ENTRY_PNPBIOS_DS*8) +@@ -176,6 +189,8 @@ + #define GDT_ENTRY_DEFAULT_USER_DS 5 + #define GDT_ENTRY_DEFAULT_USER_CS 6 -+#define GDT_ENTRY_KERNEXEC_KERNEL_CS 7 ++#define GDT_ENTRY_KERNEXEC_KERNEL_CS 7 + - #define GDT_ENTRY_TSS 8 /* needs two entries */ - #define GDT_ENTRY_LDT 10 /* needs two entries */ - #define GDT_ENTRY_TLS_MIN 12 -@@ -172,6 +187,8 @@ - #define GDT_ENTRY_PER_CPU 15 /* Abused to load per CPU data from limit */ - #define __PER_CPU_SEG (GDT_ENTRY_PER_CPU * 8 + 3) + /* Needs two entries */ + #define GDT_ENTRY_TSS 8 + /* Needs two entries */ +@@ -187,10 +202,12 @@ + /* Abused to load per CPU data from limit */ + #define GDT_ENTRY_PER_CPU 15 -+#define GDT_ENTRY_UDEREF_KERNEL_DS 16 ++#define GDT_ENTRY_UDEREF_KERNEL_DS 16 + - /* TLS indexes for 64bit - hardcoded in arch_prctl */ - #define FS_TLS 0 - #define GS_TLS 1 -@@ -179,12 +196,14 @@ - #define GS_TLS_SEL ((GDT_ENTRY_TLS_MIN+GS_TLS)*8 + 3) - #define FS_TLS_SEL ((GDT_ENTRY_TLS_MIN+FS_TLS)*8 + 3) - --#define GDT_ENTRIES 16 -+#define GDT_ENTRIES 17 - - #endif - - #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8) -+#define __KERNEXEC_KERNEL_CS (GDT_ENTRY_KERNEXEC_KERNEL_CS*8) - #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8) -+#define __UDEREF_KERNEL_DS (GDT_ENTRY_UDEREF_KERNEL_DS*8) - #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3) - #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3) - #ifndef CONFIG_PARAVIRT -@@ -256,7 +275,7 @@ static inline unsigned long get_limit(unsigned long segment) - { - unsigned long __limit; - asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); -- return __limit + 1; -+ return __limit; - } + /* + * Number of entries in the GDT table: + */ +-#define GDT_ENTRIES 16 ++#define GDT_ENTRIES 17 - #endif /* !__ASSEMBLY__ */ + /* + * Segment selector values corresponding to the above entries: +@@ -200,7 +217,9 @@ + */ + #define __KERNEL32_CS (GDT_ENTRY_KERNEL32_CS*8) + #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8) ++#define __KERNEXEC_KERNEL_CS (GDT_ENTRY_KERNEXEC_KERNEL_CS*8) + #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8) ++#define __UDEREF_KERNEL_DS (GDT_ENTRY_UDEREF_KERNEL_DS*8) + #define __USER32_CS (GDT_ENTRY_DEFAULT_USER32_CS*8 + 3) + #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8 + 3) + #define __USER32_DS __USER_DS diff --git a/arch/x86/include/asm/smap.h b/arch/x86/include/asm/smap.h -index 8d3120f..352b440 100644 +index ba665eb..0f72938 100644 --- a/arch/x86/include/asm/smap.h +++ b/arch/x86/include/asm/smap.h -@@ -25,11 +25,40 @@ +@@ -25,6 +25,18 @@ #include +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) +#define ASM_PAX_OPEN_USERLAND \ -+ 661: jmp 663f; \ -+ .pushsection .altinstr_replacement, "a" ; \ -+ 662: pushq %rax; nop; \ -+ .popsection ; \ -+ .pushsection .altinstructions, "a" ; \ -+ altinstruction_entry 661b, 662b, X86_FEATURE_STRONGUDEREF, 2, 2;\ -+ .popsection ; \ -+ call __pax_open_userland; \ -+ popq %rax; \ -+ 663: ++ ALTERNATIVE "", "call __pax_open_userland", X86_FEATURE_STRONGUDEREF + +#define ASM_PAX_CLOSE_USERLAND \ -+ 661: jmp 663f; \ -+ .pushsection .altinstr_replacement, "a" ; \ -+ 662: pushq %rax; nop; \ -+ .popsection; \ -+ .pushsection .altinstructions, "a" ; \ -+ altinstruction_entry 661b, 662b, X86_FEATURE_STRONGUDEREF, 2, 2;\ -+ .popsection; \ -+ call __pax_close_userland; \ -+ popq %rax; \ -+ 663: ++ ALTERNATIVE "", "call __pax_close_userland", X86_FEATURE_STRONGUDEREF ++ +#else +#define ASM_PAX_OPEN_USERLAND +#define ASM_PAX_CLOSE_USERLAND @@ -19108,23 +19108,8 @@ index 8d3120f..352b440 100644 + #ifdef CONFIG_X86_SMAP - #define ASM_CLAC \ - 661: ASM_NOP3 ; \ -- .pushsection .altinstr_replacement, "ax" ; \ -+ .pushsection .altinstr_replacement, "a" ; \ - 662: __ASM_CLAC ; \ - .popsection ; \ - .pushsection .altinstructions, "a" ; \ -@@ -38,7 +67,7 @@ - - #define ASM_STAC \ - 661: ASM_NOP3 ; \ -- .pushsection .altinstr_replacement, "ax" ; \ -+ .pushsection .altinstr_replacement, "a" ; \ - 662: __ASM_STAC ; \ - .popsection ; \ - .pushsection .altinstructions, "a" ; \ -@@ -56,6 +85,37 @@ + #define ASM_CLAC \ +@@ -44,6 +56,37 @@ #include @@ -19136,7 +19121,7 @@ index 8d3120f..352b440 100644 +{ + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ asm volatile(ALTERNATIVE(ASM_NOP5, "call %P[open]", X86_FEATURE_STRONGUDEREF) ++ asm volatile(ALTERNATIVE("", "call %P[open]", X86_FEATURE_STRONGUDEREF) + : + : [open] "i" (__pax_open_userland) + : "memory", "rax"); @@ -19150,7 +19135,7 @@ index 8d3120f..352b440 100644 +{ + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ asm volatile(ALTERNATIVE(ASM_NOP5, "call %P[close]", X86_FEATURE_STRONGUDEREF) ++ asm volatile(ALTERNATIVE("", "call %P[close]", X86_FEATURE_STRONGUDEREF) + : + : [close] "i" (__pax_close_userland) + : "memory", "rax"); @@ -19163,7 +19148,7 @@ index 8d3120f..352b440 100644 static __always_inline void clac(void) diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h -index 8cd1cc3..827e09e 100644 +index 17a8dce..79f7280 100644 --- a/arch/x86/include/asm/smp.h +++ b/arch/x86/include/asm/smp.h @@ -35,7 +35,7 @@ DECLARE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_core_map); @@ -19184,7 +19169,7 @@ index 8cd1cc3..827e09e 100644 /* Globals due to paravirt */ extern void set_cpu_sibling_map(int cpu); -@@ -191,14 +191,8 @@ extern unsigned disabled_cpus; +@@ -192,14 +192,8 @@ extern unsigned disabled_cpus; extern int safe_smp_processor_id(void); #elif defined(CONFIG_X86_64_SMP) @@ -19299,18 +19284,26 @@ index 751bf4b..a1278b5 100644 __switch_canary_iparam \ : "memory", "cc" __EXTRA_CLOBBER) diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h -index 1d4e4f2..506db18 100644 +index b4bdec3..e8af9bc 100644 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h -@@ -24,7 +24,6 @@ struct exec_domain; +@@ -36,7 +36,7 @@ + #ifdef CONFIG_X86_32 + # define TOP_OF_KERNEL_STACK_PADDING 8 + #else +-# define TOP_OF_KERNEL_STACK_PADDING 0 ++# define TOP_OF_KERNEL_STACK_PADDING 16 + #endif + + /* +@@ -50,27 +50,26 @@ struct task_struct; #include struct thread_info { - struct task_struct *task; /* main task structure */ - struct exec_domain *exec_domain; /* execution domain */ __u32 flags; /* low level flags */ __u32 status; /* thread synchronous flags */ -@@ -32,13 +31,13 @@ struct thread_info { + __u32 cpu; /* current CPU */ int saved_preempt_count; mm_segment_t addr_limit; void __user *sysenter_return; @@ -19323,10 +19316,9 @@ index 1d4e4f2..506db18 100644 +#define INIT_THREAD_INFO \ { \ - .task = &tsk, \ - .exec_domain = &default_exec_domain, \ .flags = 0, \ .cpu = 0, \ -@@ -46,7 +45,7 @@ struct thread_info { + .saved_preempt_count = INIT_PREEMPT_COUNT, \ .addr_limit = KERNEL_DS, \ } @@ -19335,7 +19327,7 @@ index 1d4e4f2..506db18 100644 #define init_stack (init_thread_union.stack) #else /* !__ASSEMBLY__ */ -@@ -86,6 +85,7 @@ struct thread_info { +@@ -110,6 +109,7 @@ struct thread_info { #define TIF_SYSCALL_TRACEPOINT 28 /* syscall tracepoint instrumentation */ #define TIF_ADDR32 29 /* 32-bit address space on 64 bits */ #define TIF_X32 30 /* 32-bit native x86-64 binary */ @@ -19343,7 +19335,7 @@ index 1d4e4f2..506db18 100644 #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) -@@ -109,17 +109,18 @@ struct thread_info { +@@ -133,17 +133,18 @@ struct thread_info { #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) #define _TIF_ADDR32 (1 << TIF_ADDR32) #define _TIF_X32 (1 << TIF_X32) @@ -19364,7 +19356,7 @@ index 1d4e4f2..506db18 100644 /* work to do on interrupt/exception return */ #define _TIF_WORK_MASK \ -@@ -130,7 +131,7 @@ struct thread_info { +@@ -154,7 +155,7 @@ struct thread_info { /* work to do on any return to user space */ #define _TIF_ALLWORK_MASK \ ((0x0000FFFF & ~_TIF_SECCOMP) | _TIF_SYSCALL_TRACEPOINT | \ @@ -19373,15 +19365,7 @@ index 1d4e4f2..506db18 100644 /* Only used for 64 bit */ #define _TIF_DO_NOTIFY_MASK \ -@@ -145,7 +146,6 @@ struct thread_info { - #define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW) - - #define STACK_WARN (THREAD_SIZE/8) --#define KERNEL_STACK_OFFSET (5*(BITS_PER_LONG/8)) - - /* - * macros/functions for gaining access to the thread information structure -@@ -156,12 +156,11 @@ struct thread_info { +@@ -179,9 +180,11 @@ struct thread_info { DECLARE_PER_CPU(unsigned long, kernel_stack); @@ -19389,31 +19373,22 @@ index 1d4e4f2..506db18 100644 + static inline struct thread_info *current_thread_info(void) { -- struct thread_info *ti; -- ti = (void *)(this_cpu_read_stable(kernel_stack) + -- KERNEL_STACK_OFFSET - THREAD_SIZE); -- return ti; +- return (struct thread_info *)(current_top_of_stack() - THREAD_SIZE); + return this_cpu_read_stable(current_tinfo); } static inline unsigned long current_stack_pointer(void) -@@ -179,14 +178,7 @@ static inline unsigned long current_stack_pointer(void) +@@ -199,8 +202,7 @@ static inline unsigned long current_stack_pointer(void) - /* how to get the thread information struct from ASM */ + /* Load thread_info address into "reg" */ #define GET_THREAD_INFO(reg) \ - _ASM_MOV PER_CPU_VAR(kernel_stack),reg ; \ -- _ASM_SUB $(THREAD_SIZE-KERNEL_STACK_OFFSET),reg ; -- --/* -- * Same if PER_CPU_VAR(kernel_stack) is, perhaps with some offset, already in -- * a certain register (to be used in assembler memory operands). -- */ --#define THREAD_INFO(reg, off) KERNEL_STACK_OFFSET+(off)-THREAD_SIZE(reg) +- _ASM_SUB $(THREAD_SIZE),reg ; + _ASM_MOV PER_CPU_VAR(current_tinfo),reg ; - #endif - -@@ -242,5 +234,12 @@ static inline bool is_ia32_task(void) + /* + * ASM operand which evaluates to a 'thread_info' address of +@@ -293,5 +295,12 @@ static inline bool is_ia32_task(void) extern void arch_task_cache_init(void); extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); extern void arch_release_task_struct(struct task_struct *tsk); @@ -19427,7 +19402,7 @@ index 1d4e4f2..506db18 100644 #endif #endif /* _ASM_X86_THREAD_INFO_H */ diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h -index cd79194..e7a9491 100644 +index cd79194..6a9956f 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -86,18 +86,44 @@ static inline void cr4_set_bits_and_update_boot(unsigned long mask) @@ -19443,7 +19418,7 @@ index cd79194..e7a9491 100644 + } + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (static_cpu_has(X86_FEATURE_PCID)) { ++ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) { + unsigned int cpu = raw_get_cpu(); + + native_write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER); @@ -19481,7 +19456,7 @@ index cd79194..e7a9491 100644 } static inline void __native_flush_tlb_global(void) -@@ -118,6 +144,41 @@ static inline void __native_flush_tlb_global(void) +@@ -118,6 +144,43 @@ static inline void __native_flush_tlb_global(void) static inline void __native_flush_tlb_single(unsigned long addr) { @@ -19492,14 +19467,16 @@ index cd79194..e7a9491 100644 + descriptor[1] = addr; + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (!static_cpu_has(X86_FEATURE_STRONGUDEREF) || addr >= TASK_SIZE_MAX) { -+ if (addr < TASK_SIZE_MAX) -+ descriptor[1] += pax_user_shadow_base; -+ asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_ADDRESS) : "memory"); -+ } ++ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) { ++ if (!static_cpu_has(X86_FEATURE_STRONGUDEREF) || addr >= TASK_SIZE_MAX) { ++ if (addr < TASK_SIZE_MAX) ++ descriptor[1] += pax_user_shadow_base; ++ asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_ADDRESS) : "memory"); ++ } + -+ descriptor[0] = PCID_USER; -+ descriptor[1] = addr; ++ descriptor[0] = PCID_USER; ++ descriptor[1] = addr; ++ } +#endif + + asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_SINGLE_ADDRESS) : "memory"); @@ -19507,7 +19484,7 @@ index cd79194..e7a9491 100644 + } + +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) -+ if (static_cpu_has(X86_FEATURE_PCID)) { ++ if (static_cpu_has(X86_FEATURE_PCIDUDEREF)) { + unsigned int cpu = raw_get_cpu(); + + native_write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER | PCID_NOFLUSH); @@ -20464,7 +20441,7 @@ index f58a9c7..dc378042a 100644 extern struct x86_init_ops x86_init; extern struct x86_cpuinit_ops x86_cpuinit; diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h -index 358dcd3..23c0bf1 100644 +index c44a5d5..7f83cfc 100644 --- a/arch/x86/include/asm/xen/page.h +++ b/arch/x86/include/asm/xen/page.h @@ -82,7 +82,7 @@ static inline int xen_safe_read_ulong(unsigned long *addr, unsigned long *val) @@ -20522,10 +20499,10 @@ index c9a6d68..cb57f42 100644 } diff --git a/arch/x86/include/uapi/asm/e820.h b/arch/x86/include/uapi/asm/e820.h -index d993e33..8db1b18 100644 +index 960a8a9..404daf7 100644 --- a/arch/x86/include/uapi/asm/e820.h +++ b/arch/x86/include/uapi/asm/e820.h -@@ -58,7 +58,7 @@ struct e820map { +@@ -68,7 +68,7 @@ struct e820map { #define ISA_START_ADDRESS 0xa0000 #define ISA_END_ADDRESS 0x100000 @@ -20534,20 +20511,8 @@ index d993e33..8db1b18 100644 #define BIOS_END 0x00100000 #define BIOS_ROM_BASE 0xffe00000 -diff --git a/arch/x86/include/uapi/asm/ptrace-abi.h b/arch/x86/include/uapi/asm/ptrace-abi.h -index 7b0a55a..ad115bf 100644 ---- a/arch/x86/include/uapi/asm/ptrace-abi.h -+++ b/arch/x86/include/uapi/asm/ptrace-abi.h -@@ -49,7 +49,6 @@ - #define EFLAGS 144 - #define RSP 152 - #define SS 160 --#define ARGOFFSET R11 - #endif /* __ASSEMBLY__ */ - - /* top of stack page */ diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile -index cdb1b70..426434c 100644 +index 9bcd0b5..750f1b7 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -28,7 +28,7 @@ obj-y += time.o ioport.o ldt.o dumpstack.o nmi.o @@ -20560,7 +20525,7 @@ index cdb1b70..426434c 100644 obj-$(CONFIG_X86_64) += mcount_64.o obj-y += syscall_$(BITS).o vsyscall_gtod.o diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c -index 803b684..68c64f1 100644 +index dbe76a1..e2ec334 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -1361,7 +1361,7 @@ static void __init acpi_reduced_hw_init(void) @@ -20619,36 +20584,68 @@ index 665c6b7..eae4d56 100644 bogus_magic: jmp bogus_magic diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c -index 703130f..27a155d 100644 +index aef6531..2044b66 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c -@@ -268,6 +268,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start, - */ - for (a = start; a < end; a++) { +@@ -248,7 +248,9 @@ static void __init_or_module add_nops(void *insns, unsigned int len) + unsigned int noplen = len; + if (noplen > ASM_NOP_MAX) + noplen = ASM_NOP_MAX; ++ pax_open_kernel(); + memcpy(insns, ideal_nops[noplen], noplen); ++ pax_close_kernel(); + insns += noplen; + len -= noplen; + } +@@ -276,6 +278,11 @@ recompute_jump(struct alt_instr *a, u8 *orig_insn, u8 *repl_insn, u8 *insnbuf) + if (a->replacementlen != 5) + return; + ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) ++ if (orig_insn < (u8 *)_text || (u8 *)_einittext <= orig_insn) ++ orig_insn = ktva_ktla(orig_insn); ++#endif ++ + o_dspl = *(s32 *)(insnbuf + 1); + + /* next_rip of the replacement JMP */ +@@ -362,7 +369,23 @@ void __init_or_module apply_alternatives(struct alt_instr *start, + int insnbuf_sz = 0; + instr = (u8 *)&a->instr_offset + a->instr_offset; + +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) -+ instr += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR; -+ if (instr < (u8 *)_text || (u8 *)_einittext <= instr) -+ instr -= ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR; ++ if ((u8 *)_text <= instr && instr < (u8 *)_einittext) { ++ instr += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR; ++ instr = ktla_ktva(instr); ++ } +#endif + replacement = (u8 *)&a->repl_offset + a->repl_offset; - BUG_ON(a->replacementlen > a->instrlen); ++ ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) ++ if ((u8 *)_text <= replacement && replacement < (u8 *)_einittext) { ++ replacement += ____LOAD_PHYSICAL_ADDR - LOAD_PHYSICAL_ADDR; ++ replacement = ktla_ktva(replacement); ++ } ++#endif ++ BUG_ON(a->instrlen > sizeof(insnbuf)); -@@ -284,6 +291,11 @@ void __init_or_module apply_alternatives(struct alt_instr *start, - add_nops(insnbuf + a->replacementlen, - a->instrlen - a->replacementlen); + BUG_ON(a->cpuid >= (NCAPINTS + NBUGINTS) * 32); + if (!boot_cpu_has(a->cpuid)) { +@@ -402,6 +425,11 @@ void __init_or_module apply_alternatives(struct alt_instr *start, + } + DUMP_BYTES(insnbuf, insnbuf_sz, "%p: final_insn: ", instr); +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) + if (instr < (u8 *)_text || (u8 *)_einittext <= instr) + instr = ktva_ktla(instr); +#endif + - text_poke_early(instr, insnbuf, a->instrlen); + text_poke_early(instr, insnbuf, insnbuf_sz); } } -@@ -299,10 +311,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end, +@@ -416,10 +444,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end, for (poff = start; poff < end; poff++) { u8 *ptr = (u8 *)poff + *poff; @@ -20666,7 +20663,7 @@ index 703130f..27a155d 100644 text_poke(ptr, ((unsigned char []){0xf0}), 1); } mutex_unlock(&text_mutex); -@@ -317,10 +335,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end, +@@ -434,10 +468,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end, for (poff = start; poff < end; poff++) { u8 *ptr = (u8 *)poff + *poff; @@ -20684,7 +20681,7 @@ index 703130f..27a155d 100644 text_poke(ptr, ((unsigned char []){0x3E}), 1); } mutex_unlock(&text_mutex); -@@ -457,7 +481,7 @@ void __init_or_module apply_paravirt(struct paravirt_patch_site *start, +@@ -574,7 +614,7 @@ void __init_or_module apply_paravirt(struct paravirt_patch_site *start, BUG_ON(p->len > MAX_PATCH_LEN); /* prep the buffer with the original instructions */ @@ -20693,7 +20690,7 @@ index 703130f..27a155d 100644 used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf, (unsigned long)p->instr, p->len); -@@ -504,7 +528,7 @@ void __init alternative_instructions(void) +@@ -621,7 +661,7 @@ void __init alternative_instructions(void) if (!uniproc_patched || num_possible_cpus() == 1) free_init_pages("SMP alternatives", (unsigned long)__smp_locks, @@ -20702,7 +20699,7 @@ index 703130f..27a155d 100644 #endif apply_paravirt(__parainstructions, __parainstructions_end); -@@ -524,13 +548,17 @@ void __init alternative_instructions(void) +@@ -641,13 +681,17 @@ void __init alternative_instructions(void) * instructions. And on the local CPU you need to be protected again NMI or MCE * handlers seeing an inconsistent instruction while you patch. */ @@ -20722,7 +20719,7 @@ index 703130f..27a155d 100644 local_irq_restore(flags); /* Could also do a CLFLUSH here to speed up CPU recovery; but that causes hangs on some VIA CPUs. */ -@@ -552,36 +580,22 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode, +@@ -669,36 +713,22 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode, */ void *text_poke(void *addr, const void *opcode, size_t len) { @@ -20767,16 +20764,7 @@ index 703130f..27a155d 100644 return addr; } -@@ -601,7 +615,7 @@ int poke_int3_handler(struct pt_regs *regs) - if (likely(!bp_patching_in_progress)) - return 0; - -- if (user_mode_vm(regs) || regs->ip != (unsigned long)bp_int3_addr) -+ if (user_mode(regs) || regs->ip != (unsigned long)bp_int3_addr) - return 0; - - /* set up the specified breakpoint handler */ -@@ -635,7 +649,7 @@ int poke_int3_handler(struct pt_regs *regs) +@@ -752,7 +782,7 @@ int poke_int3_handler(struct pt_regs *regs) */ void *text_poke_bp(void *addr, const void *opcode, size_t len, void *handler) { @@ -20786,7 +20774,7 @@ index 703130f..27a155d 100644 bp_int3_handler = handler; bp_int3_addr = (u8 *)addr + sizeof(int3); diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c -index ad3639a..bd4253c 100644 +index dcb5285..cc79e9d 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -171,7 +171,7 @@ int first_system_vector = FIRST_SYSTEM_VECTOR; @@ -20798,7 +20786,7 @@ index ad3639a..bd4253c 100644 int pic_mode; -@@ -1918,7 +1918,7 @@ static inline void __smp_error_interrupt(struct pt_regs *regs) +@@ -1857,7 +1857,7 @@ static inline void __smp_error_interrupt(struct pt_regs *regs) apic_write(APIC_ESR, 0); v = apic_read(APIC_ESR); ack_APIC_irq(); @@ -20931,7 +20919,7 @@ index 6cedd79..023ff8e 100644 raw_spin_unlock(&vector_lock); } diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c -index e658f21..b695a1a 100644 +index ab3219b..e8033eb 100644 --- a/arch/x86/kernel/apic/x2apic_cluster.c +++ b/arch/x86/kernel/apic/x2apic_cluster.c @@ -182,7 +182,7 @@ update_clusterinfo(struct notifier_block *nfb, unsigned long action, void *hcpu) @@ -20966,10 +20954,10 @@ index 6fae733..5ca17af 100644 .name = "physical x2apic", .probe = x2apic_phys_probe, diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c -index 8e9dcfd..c61b3e4 100644 +index c8d9295..9af2d03 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c -@@ -348,7 +348,7 @@ static int uv_probe(void) +@@ -375,7 +375,7 @@ static int uv_probe(void) return apic == &apic_x2apic_uv_x; } @@ -21103,7 +21091,7 @@ index 9f6b934..cf5ffb3 100644 BLANK(); OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask); diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c -index fdcbb4d..036dd93 100644 +index 5ce6f2d..9e738f3 100644 --- a/arch/x86/kernel/asm-offsets_64.c +++ b/arch/x86/kernel/asm-offsets_64.c @@ -80,6 +80,7 @@ int main(void) @@ -21112,10 +21100,10 @@ index fdcbb4d..036dd93 100644 + DEFINE(TSS_size, sizeof(struct tss_struct)); OFFSET(TSS_ist, tss_struct, x86_tss.ist); + OFFSET(TSS_sp0, tss_struct, x86_tss.sp0); BLANK(); - diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile -index 80091ae..0c5184f 100644 +index 9bff687..5b899fb 100644 --- a/arch/x86/kernel/cpu/Makefile +++ b/arch/x86/kernel/cpu/Makefile @@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg @@ -21130,10 +21118,10 @@ index 80091ae..0c5184f 100644 obj-y += common.o obj-y += rdrand.o diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c -index a220239..607fc38 100644 +index e4cf633..941f450 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c -@@ -717,7 +717,7 @@ static void init_amd(struct cpuinfo_x86 *c) +@@ -729,7 +729,7 @@ static void init_amd(struct cpuinfo_x86 *c) static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size) { /* AMD errata T13 (order #21922) */ @@ -21143,7 +21131,7 @@ index a220239..607fc38 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 2346c95..c061472 100644 +index a62cf04..56afd65 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -91,60 +91,6 @@ static const struct cpu_dev default_cpu = { @@ -21207,7 +21195,7 @@ index 2346c95..c061472 100644 static int __init x86_xsave_setup(char *s) { if (strlen(s)) -@@ -306,6 +252,59 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c) +@@ -306,6 +252,62 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c) } } @@ -21228,26 +21216,31 @@ index 2346c95..c061472 100644 + +static void setup_pcid(struct cpuinfo_x86 *c) +{ -+ if (!cpu_has(c, X86_FEATURE_PCID)) { ++ if (cpu_has(c, X86_FEATURE_PCID)) { ++ printk("PAX: PCID detected\n"); ++ cr4_set_bits(X86_CR4_PCIDE); ++ } else + clear_cpu_cap(c, X86_FEATURE_INVPCID); + ++ if (cpu_has(c, X86_FEATURE_INVPCID)) ++ printk("PAX: INVPCID detected\n"); ++ +#ifdef CONFIG_PAX_MEMORY_UDEREF -+ if (clone_pgd_mask != ~(pgdval_t)0UL) { -+ pax_open_kernel(); -+ pax_user_shadow_base = 1UL << TASK_SIZE_MAX_SHIFT; -+ pax_close_kernel(); -+ printk("PAX: slow and weak UDEREF enabled\n"); -+ } else -+ printk("PAX: UDEREF disabled\n"); -+#endif ++ if (clone_pgd_mask == ~(pgdval_t)0UL) { ++ printk("PAX: UDEREF disabled\n"); ++ return; ++ } + ++ if (!cpu_has(c, X86_FEATURE_PCID)) { ++ pax_open_kernel(); ++ pax_user_shadow_base = 1UL << TASK_SIZE_MAX_SHIFT; ++ pax_close_kernel(); ++ printk("PAX: slow and weak UDEREF enabled\n"); + return; + } + -+ printk("PAX: PCID detected\n"); -+ cr4_set_bits(X86_CR4_PCIDE); ++ set_cpu_cap(c, X86_FEATURE_PCIDUDEREF); + -+#ifdef CONFIG_PAX_MEMORY_UDEREF + pax_open_kernel(); + clone_pgd_mask = ~(pgdval_t)0UL; + pax_close_kernel(); @@ -21259,15 +21252,13 @@ index 2346c95..c061472 100644 + } +#endif + -+ if (cpu_has(c, X86_FEATURE_INVPCID)) -+ printk("PAX: INVPCID detected\n"); +} +#endif + /* * Some CPU features depend on higher CPUID levels, which may not always * be available due to CPUID level capping or broken virtualization -@@ -406,7 +405,7 @@ void switch_to_new_gdt(int cpu) +@@ -406,7 +408,7 @@ void switch_to_new_gdt(int cpu) { struct desc_ptr gdt_descr; @@ -21276,7 +21267,7 @@ index 2346c95..c061472 100644 gdt_descr.size = GDT_SIZE - 1; load_gdt(&gdt_descr); /* Reload the per-cpu base */ -@@ -897,6 +896,20 @@ static void identify_cpu(struct cpuinfo_x86 *c) +@@ -935,6 +937,20 @@ static void identify_cpu(struct cpuinfo_x86 *c) setup_smep(c); setup_smap(c); @@ -21297,16 +21288,16 @@ index 2346c95..c061472 100644 /* * The vendor-specific functions might have changed features. * Now we do "generic changes." -@@ -979,7 +992,7 @@ static void syscall32_cpu_init(void) - void enable_sep_cpu(void) - { - int cpu = get_cpu(); -- struct tss_struct *tss = &per_cpu(init_tss, cpu); -+ struct tss_struct *tss = init_tss + cpu; +@@ -1009,7 +1025,7 @@ void enable_sep_cpu(void) + int cpu; - if (!boot_cpu_has(X86_FEATURE_SEP)) { - put_cpu(); -@@ -1117,14 +1130,16 @@ static __init int setup_disablecpuid(char *arg) + cpu = get_cpu(); +- tss = &per_cpu(cpu_tss, cpu); ++ tss = cpu_tss + cpu; + + if (!boot_cpu_has(X86_FEATURE_SEP)) + goto out; +@@ -1155,14 +1171,16 @@ static __init int setup_disablecpuid(char *arg) } __setup("clearcpuid=", setup_disablecpuid); @@ -21314,7 +21305,7 @@ index 2346c95..c061472 100644 +EXPORT_PER_CPU_SYMBOL(current_tinfo); + DEFINE_PER_CPU(unsigned long, kernel_stack) = -- (unsigned long)&init_thread_union - KERNEL_STACK_OFFSET + THREAD_SIZE; +- (unsigned long)&init_thread_union + THREAD_SIZE; + (unsigned long)&init_thread_union - 16 + THREAD_SIZE; EXPORT_PER_CPU_SYMBOL(kernel_stack); @@ -21327,16 +21318,16 @@ index 2346c95..c061472 100644 DEFINE_PER_CPU_FIRST(union irq_stack_union, irq_stack_union) __aligned(PAGE_SIZE) __visible; -@@ -1307,7 +1322,7 @@ void cpu_init(void) +@@ -1367,7 +1385,7 @@ void cpu_init(void) */ load_ucode_ap(); -- t = &per_cpu(init_tss, cpu); -+ t = init_tss + cpu; +- t = &per_cpu(cpu_tss, cpu); ++ t = cpu_tss + cpu; oist = &per_cpu(orig_ist, cpu); #ifdef CONFIG_NUMA -@@ -1339,7 +1354,6 @@ void cpu_init(void) +@@ -1399,7 +1417,6 @@ void cpu_init(void) wrmsrl(MSR_KERNEL_GS_BASE, 0); barrier(); @@ -21344,108 +21335,69 @@ index 2346c95..c061472 100644 x2apic_setup(); /* -@@ -1391,7 +1405,7 @@ void cpu_init(void) +@@ -1451,7 +1468,7 @@ void cpu_init(void) { int cpu = smp_processor_id(); struct task_struct *curr = current; -- struct tss_struct *t = &per_cpu(init_tss, cpu); -+ struct tss_struct *t = init_tss + cpu; +- struct tss_struct *t = &per_cpu(cpu_tss, cpu); ++ struct tss_struct *t = cpu_tss + cpu; struct thread_struct *thread = &curr->thread; wait_for_master_cpu(cpu); diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c -index 6596433..1ad6eaf 100644 +index edcb0e2..a138233 100644 --- a/arch/x86/kernel/cpu/intel_cacheinfo.c +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c -@@ -1024,6 +1024,22 @@ static struct attribute *default_attrs[] = { - }; +@@ -519,25 +519,23 @@ cache_private_attrs_is_visible(struct kobject *kobj, + return 0; + } - #ifdef CONFIG_AMD_NB -+static struct attribute *default_attrs_amd_nb[] = { -+ &type.attr, -+ &level.attr, -+ &coherency_line_size.attr, -+ &physical_line_partition.attr, -+ &ways_of_associativity.attr, -+ &number_of_sets.attr, -+ &size.attr, -+ &shared_cpu_map.attr, -+ &shared_cpu_list.attr, -+ NULL, -+ NULL, -+ NULL, -+ NULL -+}; ++static struct attribute *amd_l3_attrs[4]; + - static struct attribute **amd_l3_attrs(void) + static struct attribute_group cache_private_group = { + .is_visible = cache_private_attrs_is_visible, ++ .attrs = amd_l3_attrs, + }; + + static void init_amd_l3_attrs(void) { - static struct attribute **attrs; -@@ -1034,18 +1050,7 @@ static struct attribute **amd_l3_attrs(void) + int n = 1; +- static struct attribute **amd_l3_attrs; +- +- if (amd_l3_attrs) /* already initialized */ +- return; - n = ARRAY_SIZE(default_attrs); + if (amd_nb_has_feature(AMD_NB_L3_INDEX_DISABLE)) + n += 2; + if (amd_nb_has_feature(AMD_NB_L3_PARTITIONING)) + n += 1; -- if (amd_nb_has_feature(AMD_NB_L3_INDEX_DISABLE)) -- n += 2; -- -- if (amd_nb_has_feature(AMD_NB_L3_PARTITIONING)) -- n += 1; -- -- attrs = kzalloc(n * sizeof (struct attribute *), GFP_KERNEL); -- if (attrs == NULL) -- return attrs = default_attrs; -- -- for (n = 0; default_attrs[n]; n++) -- attrs[n] = default_attrs[n]; -+ attrs = default_attrs_amd_nb; - - if (amd_nb_has_feature(AMD_NB_L3_INDEX_DISABLE)) { - attrs[n++] = &cache_disable_0.attr; -@@ -1096,6 +1101,13 @@ static struct kobj_type ktype_cache = { - .default_attrs = default_attrs, - }; +- amd_l3_attrs = kcalloc(n, sizeof(*amd_l3_attrs), GFP_KERNEL); +- if (!amd_l3_attrs) ++ if (n > 1 && amd_l3_attrs[0]) /* already initialized */ + return; -+#ifdef CONFIG_AMD_NB -+static struct kobj_type ktype_cache_amd_nb = { -+ .sysfs_ops = &sysfs_ops, -+ .default_attrs = default_attrs_amd_nb, -+}; -+#endif -+ - static struct kobj_type ktype_percpu_entry = { - .sysfs_ops = &sysfs_ops, - }; -@@ -1161,20 +1173,26 @@ static int cache_add_dev(struct device *dev) - return retval; + n = 0; +@@ -547,8 +545,6 @@ static void init_amd_l3_attrs(void) } + if (amd_nb_has_feature(AMD_NB_L3_PARTITIONING)) + amd_l3_attrs[n++] = &dev_attr_subcaches.attr; +- +- cache_private_group.attrs = amd_l3_attrs; + } -+#ifdef CONFIG_AMD_NB -+ amd_l3_attrs(); -+#endif -+ - for (i = 0; i < num_cache_leaves; i++) { -+ struct kobj_type *ktype; -+ - this_object = INDEX_KOBJECT_PTR(cpu, i); - this_object->cpu = cpu; - this_object->index = i; + const struct attribute_group * +@@ -559,7 +555,7 @@ cache_get_priv_group(struct cacheinfo *this_leaf) + if (this_leaf->level < 3 || !nb) + return NULL; - this_leaf = CPUID4_INFO_IDX(cpu, i); +- if (nb && nb->l3_cache.indices) ++ if (nb->l3_cache.indices) + init_amd_l3_attrs(); -- ktype_cache.default_attrs = default_attrs; -+ ktype = &ktype_cache; - #ifdef CONFIG_AMD_NB - if (this_leaf->base.nb) -- ktype_cache.default_attrs = amd_l3_attrs(); -+ ktype = &ktype_cache_amd_nb; - #endif - retval = kobject_init_and_add(&(this_object->kobj), -- &ktype_cache, -+ ktype, - per_cpu(ici_cache_kobject, cpu), - "index%1lu", i); - if (unlikely(retval)) { + return &cache_private_group; diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c -index 3c036cb..3b5677d 100644 +index 20190bd..cadb2ab 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -47,6 +47,7 @@ @@ -21456,7 +21408,7 @@ index 3c036cb..3b5677d 100644 #include "mce-internal.h" -@@ -258,7 +259,7 @@ static void print_mce(struct mce *m) +@@ -256,7 +257,7 @@ static void print_mce(struct mce *m) !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "", m->cs, m->ip); @@ -21465,7 +21417,7 @@ index 3c036cb..3b5677d 100644 print_symbol("{%s}", m->ip); pr_cont("\n"); } -@@ -291,10 +292,10 @@ static void print_mce(struct mce *m) +@@ -289,10 +290,10 @@ static void print_mce(struct mce *m) #define PANIC_TIMEOUT 5 /* 5 seconds */ @@ -21478,7 +21430,7 @@ index 3c036cb..3b5677d 100644 /* Panic in progress. Enable interrupts and wait for final IPI */ static void wait_for_panic(void) -@@ -318,7 +319,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) +@@ -316,7 +317,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) /* * Make sure only one CPU runs in machine check panic */ @@ -21487,7 +21439,7 @@ index 3c036cb..3b5677d 100644 wait_for_panic(); barrier(); -@@ -326,7 +327,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) +@@ -324,7 +325,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) console_verbose(); } else { /* Don't log too much for fake panic */ @@ -21496,7 +21448,7 @@ index 3c036cb..3b5677d 100644 return; } /* First print corrected ones that are still unlogged */ -@@ -365,7 +366,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) +@@ -363,7 +364,7 @@ static void mce_panic(const char *msg, struct mce *final, char *exp) if (!fake_panic) { if (panic_timeout == 0) panic_timeout = mca_cfg.panic_timeout; @@ -21505,7 +21457,7 @@ index 3c036cb..3b5677d 100644 } else pr_emerg(HW_ERR "Fake kernel panic: %s\n", msg); } -@@ -743,7 +744,7 @@ static int mce_timed_out(u64 *t, const char *msg) +@@ -749,7 +750,7 @@ static int mce_timed_out(u64 *t, const char *msg) * might have been modified by someone else. */ rmb(); @@ -21514,7 +21466,7 @@ index 3c036cb..3b5677d 100644 wait_for_panic(); if (!mca_cfg.monarch_timeout) goto out; -@@ -1669,7 +1670,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code) +@@ -1679,7 +1680,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code) } /* Call the installed machine check handler for this CPU setup. */ @@ -21523,7 +21475,7 @@ index 3c036cb..3b5677d 100644 unexpected_machine_check; /* -@@ -1692,7 +1693,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c) +@@ -1702,7 +1703,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c) return; } @@ -21533,7 +21485,7 @@ index 3c036cb..3b5677d 100644 __mcheck_cpu_init_generic(); __mcheck_cpu_init_vendor(c); -@@ -1706,7 +1709,7 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c) +@@ -1716,7 +1719,7 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c) */ static DEFINE_SPINLOCK(mce_chrdev_state_lock); @@ -21542,7 +21494,7 @@ index 3c036cb..3b5677d 100644 static int mce_chrdev_open_exclu; /* already open exclusive? */ static int mce_chrdev_open(struct inode *inode, struct file *file) -@@ -1714,7 +1717,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file) +@@ -1724,7 +1727,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file) spin_lock(&mce_chrdev_state_lock); if (mce_chrdev_open_exclu || @@ -21551,7 +21503,7 @@ index 3c036cb..3b5677d 100644 spin_unlock(&mce_chrdev_state_lock); return -EBUSY; -@@ -1722,7 +1725,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file) +@@ -1732,7 +1735,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file) if (file->f_flags & O_EXCL) mce_chrdev_open_exclu = 1; @@ -21560,7 +21512,7 @@ index 3c036cb..3b5677d 100644 spin_unlock(&mce_chrdev_state_lock); -@@ -1733,7 +1736,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file) +@@ -1743,7 +1746,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file) { spin_lock(&mce_chrdev_state_lock); @@ -21569,7 +21521,7 @@ index 3c036cb..3b5677d 100644 mce_chrdev_open_exclu = 0; spin_unlock(&mce_chrdev_state_lock); -@@ -2408,7 +2411,7 @@ static __init void mce_init_banks(void) +@@ -2419,7 +2422,7 @@ static __init void mce_init_banks(void) for (i = 0; i < mca_cfg.banks; i++) { struct mce_bank *b = &mce_banks[i]; @@ -21578,7 +21530,7 @@ index 3c036cb..3b5677d 100644 sysfs_attr_init(&a->attr); a->attr.name = b->attrname; -@@ -2515,7 +2518,7 @@ struct dentry *mce_get_debugfs_dir(void) +@@ -2526,7 +2529,7 @@ struct dentry *mce_get_debugfs_dir(void) static void mce_reset(void) { cpu_missing = 0; @@ -21645,7 +21597,7 @@ index 36a8361..e7058c2 100644 }; diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c -index 746e7fd..8dc677e 100644 +index a41bead..4e3685b 100644 --- a/arch/x86/kernel/cpu/microcode/intel.c +++ b/arch/x86/kernel/cpu/microcode/intel.c @@ -298,13 +298,13 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device, @@ -21691,10 +21643,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 b71a7f8..534af0e 100644 +index aa4e3a7..469370f 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c -@@ -1376,7 +1376,7 @@ static void __init pmu_check_apic(void) +@@ -1509,7 +1509,7 @@ static void __init pmu_check_apic(void) } @@ -21703,7 +21655,7 @@ index b71a7f8..534af0e 100644 .name = "format", .attrs = NULL, }; -@@ -1475,7 +1475,7 @@ static struct attribute *events_attr[] = { +@@ -1608,7 +1608,7 @@ static struct attribute *events_attr[] = { NULL, }; @@ -21712,7 +21664,7 @@ index b71a7f8..534af0e 100644 .name = "events", .attrs = events_attr, }; -@@ -2037,7 +2037,7 @@ static unsigned long get_segment_base(unsigned int segment) +@@ -2181,7 +2181,7 @@ static unsigned long get_segment_base(unsigned int segment) if (idx > GDT_ENTRIES) return 0; @@ -21721,7 +21673,7 @@ index b71a7f8..534af0e 100644 } return get_desc_base(desc + idx); -@@ -2127,7 +2127,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) +@@ -2271,7 +2271,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) break; perf_callchain_store(entry, frame.return_address); @@ -21744,10 +21696,10 @@ index 97242a9..cf9c30e 100644 while (amd_iommu_v2_event_descs[i].attr.attr.name) diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c -index 2589906..1ca1000 100644 +index 2813ea0..3ef5969c8 100644 --- a/arch/x86/kernel/cpu/perf_event_intel.c +++ b/arch/x86/kernel/cpu/perf_event_intel.c -@@ -2353,10 +2353,10 @@ __init int intel_pmu_init(void) +@@ -3033,10 +3033,10 @@ __init int intel_pmu_init(void) x86_pmu.num_counters_fixed = max((int)edx.split.num_counters_fixed, 3); if (boot_cpu_has(X86_FEATURE_PDCM)) { @@ -21761,11 +21713,147 @@ index 2589906..1ca1000 100644 } intel_ds_init(); +diff --git a/arch/x86/kernel/cpu/perf_event_intel_bts.c b/arch/x86/kernel/cpu/perf_event_intel_bts.c +index 7795f3f..3535b76 100644 +--- a/arch/x86/kernel/cpu/perf_event_intel_bts.c ++++ b/arch/x86/kernel/cpu/perf_event_intel_bts.c +@@ -252,7 +252,7 @@ static void bts_event_start(struct perf_event *event, int flags) + __bts_event_start(event); + + /* PMI handler: this counter is running and likely generating PMIs */ +- ACCESS_ONCE(bts->started) = 1; ++ ACCESS_ONCE_RW(bts->started) = 1; + } + + static void __bts_event_stop(struct perf_event *event) +@@ -266,7 +266,7 @@ static void __bts_event_stop(struct perf_event *event) + if (event->hw.state & PERF_HES_STOPPED) + return; + +- ACCESS_ONCE(event->hw.state) |= PERF_HES_STOPPED; ++ ACCESS_ONCE_RW(event->hw.state) |= PERF_HES_STOPPED; + } + + static void bts_event_stop(struct perf_event *event, int flags) +@@ -274,7 +274,7 @@ static void bts_event_stop(struct perf_event *event, int flags) + struct bts_ctx *bts = this_cpu_ptr(&bts_ctx); + + /* PMI handler: don't restart this counter */ +- ACCESS_ONCE(bts->started) = 0; ++ ACCESS_ONCE_RW(bts->started) = 0; + + __bts_event_stop(event); + +diff --git a/arch/x86/kernel/cpu/perf_event_intel_cqm.c b/arch/x86/kernel/cpu/perf_event_intel_cqm.c +index e4d1b8b..2c6ffa0 100644 +--- a/arch/x86/kernel/cpu/perf_event_intel_cqm.c ++++ b/arch/x86/kernel/cpu/perf_event_intel_cqm.c +@@ -1352,7 +1352,9 @@ static int __init intel_cqm_init(void) + goto out; + } + +- event_attr_intel_cqm_llc_scale.event_str = str; ++ pax_open_kernel(); ++ *(const char **)&event_attr_intel_cqm_llc_scale.event_str = str; ++ pax_close_kernel(); + + ret = intel_cqm_setup_rmid_cache(); + if (ret) +diff --git a/arch/x86/kernel/cpu/perf_event_intel_pt.c b/arch/x86/kernel/cpu/perf_event_intel_pt.c +index 123ff1b..d53e500 100644 +--- a/arch/x86/kernel/cpu/perf_event_intel_pt.c ++++ b/arch/x86/kernel/cpu/perf_event_intel_pt.c +@@ -116,16 +116,12 @@ static const struct attribute_group *pt_attr_groups[] = { + + static int __init pt_pmu_hw_init(void) + { +- struct dev_ext_attribute *de_attrs; +- struct attribute **attrs; +- size_t size; +- int ret; ++ static struct dev_ext_attribute de_attrs[ARRAY_SIZE(pt_caps)]; ++ static struct attribute *attrs[ARRAY_SIZE(pt_caps)]; + long i; + +- attrs = NULL; +- ret = -ENODEV; + if (!test_cpu_cap(&boot_cpu_data, X86_FEATURE_INTEL_PT)) +- goto fail; ++ return -ENODEV; + + for (i = 0; i < PT_CPUID_LEAVES; i++) { + cpuid_count(20, i, +@@ -135,39 +131,25 @@ static int __init pt_pmu_hw_init(void) + &pt_pmu.caps[CR_EDX + i*4]); + } + +- ret = -ENOMEM; +- size = sizeof(struct attribute *) * (ARRAY_SIZE(pt_caps)+1); +- attrs = kzalloc(size, GFP_KERNEL); +- if (!attrs) +- goto fail; +- +- size = sizeof(struct dev_ext_attribute) * (ARRAY_SIZE(pt_caps)+1); +- de_attrs = kzalloc(size, GFP_KERNEL); +- if (!de_attrs) +- goto fail; +- ++ pax_open_kernel(); + for (i = 0; i < ARRAY_SIZE(pt_caps); i++) { +- struct dev_ext_attribute *de_attr = de_attrs + i; ++ struct dev_ext_attribute *de_attr = &de_attrs[i]; + +- de_attr->attr.attr.name = pt_caps[i].name; ++ *(const char **)&de_attr->attr.attr.name = pt_caps[i].name; + + sysfs_attr_init(&de_attr->attr.attr); + +- de_attr->attr.attr.mode = S_IRUGO; +- de_attr->attr.show = pt_cap_show; +- de_attr->var = (void *)i; ++ *(umode_t *)&de_attr->attr.attr.mode = S_IRUGO; ++ *(void **)&de_attr->attr.show = pt_cap_show; ++ *(void **)&de_attr->var = (void *)i; + + attrs[i] = &de_attr->attr.attr; + } + +- pt_cap_group.attrs = attrs; ++ *(struct attribute ***)&pt_cap_group.attrs = attrs; ++ pax_close_kernel(); + + return 0; +- +-fail: +- kfree(attrs); +- +- return ret; + } + + #define PT_CONFIG_MASK (RTIT_CTL_TSC_EN | RTIT_CTL_DISRETC) +@@ -928,7 +910,7 @@ static void pt_event_start(struct perf_event *event, int mode) + return; + } + +- ACCESS_ONCE(pt->handle_nmi) = 1; ++ ACCESS_ONCE_RW(pt->handle_nmi) = 1; + event->hw.state = 0; + + pt_config_buffer(buf->cur->table, buf->cur_idx, +@@ -945,7 +927,7 @@ static void pt_event_stop(struct perf_event *event, int mode) + * Protect against the PMI racing with disabling wrmsr, + * see comment in intel_pt_interrupt(). + */ +- ACCESS_ONCE(pt->handle_nmi) = 0; ++ ACCESS_ONCE_RW(pt->handle_nmi) = 0; + pt_config_start(false); + + if (event->hw.state == PERF_HES_STOPPED) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c -index c4bb8b8..9f7384d 100644 +index 358c54a..f068235 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c -@@ -465,7 +465,7 @@ static struct attribute *rapl_events_hsw_attr[] = { +@@ -487,7 +487,7 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; @@ -21775,10 +21863,10 @@ index c4bb8b8..9f7384d 100644 .attrs = NULL, /* patched at runtime */ }; diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c -index c635b8b..b78835e 100644 +index 90b7c50..7863ae3 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c -@@ -733,7 +733,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types) +@@ -732,7 +732,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types) static int __init uncore_type_init(struct intel_uncore_type *type) { struct intel_uncore_pmu *pmus; @@ -21788,10 +21876,10 @@ index c635b8b..b78835e 100644 int i, j; diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.h b/arch/x86/kernel/cpu/perf_event_intel_uncore.h -index 6c8c1e7..515b98a 100644 +index ceac8f5..a562de7 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.h +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.h -@@ -114,7 +114,7 @@ struct intel_uncore_box { +@@ -115,7 +115,7 @@ struct intel_uncore_box { struct uncore_event_desc { struct kobj_attribute attr; const char *config; @@ -21813,19 +21901,6 @@ index 83741a7..bd3507d 100644 { .notifier_call = cpuid_class_cpu_callback, }; -diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c -index aceb2f9..c76d3e3 100644 ---- a/arch/x86/kernel/crash.c -+++ b/arch/x86/kernel/crash.c -@@ -105,7 +105,7 @@ static void kdump_nmi_callback(int cpu, struct pt_regs *regs) - #ifdef CONFIG_X86_32 - struct pt_regs fixed_regs; - -- if (!user_mode_vm(regs)) { -+ if (!user_mode(regs)) { - crash_fixup_ss_esp(&fixed_regs, regs); - regs = &fixed_regs; - } diff --git a/arch/x86/kernel/crash_dump_64.c b/arch/x86/kernel/crash_dump_64.c index afa64ad..dce67dd 100644 --- a/arch/x86/kernel/crash_dump_64.c @@ -21875,7 +21950,7 @@ index f6dfd93..892ade4 100644 .__cr3 = __pa_nodebug(swapper_pg_dir), diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c -index cf3df1d..b637d9a 100644 +index 9c30acf..8cf2411 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c @@ -2,6 +2,9 @@ @@ -21888,7 +21963,7 @@ index cf3df1d..b637d9a 100644 #include #include #include -@@ -33,23 +36,21 @@ static void printk_stack_address(unsigned long address, int reliable) +@@ -35,23 +38,21 @@ static void printk_stack_address(unsigned long address, int reliable, void printk_address(unsigned long address) { @@ -21914,7 +21989,7 @@ index cf3df1d..b637d9a 100644 index = task->curr_ret_stack; if (!task->ret_stack || index < *graph) -@@ -66,7 +67,7 @@ print_ftrace_graph_addr(unsigned long addr, void *data, +@@ -68,7 +69,7 @@ print_ftrace_graph_addr(unsigned long addr, void *data, static inline void print_ftrace_graph_addr(unsigned long addr, void *data, const struct stacktrace_ops *ops, @@ -21923,7 +21998,7 @@ index cf3df1d..b637d9a 100644 { } #endif -@@ -77,10 +78,8 @@ print_ftrace_graph_addr(unsigned long addr, void *data, +@@ -79,10 +80,8 @@ print_ftrace_graph_addr(unsigned long addr, void *data, * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack */ @@ -21935,7 +22010,7 @@ index cf3df1d..b637d9a 100644 if (end) { if (p < end && p >= (end-THREAD_SIZE)) return 1; -@@ -91,14 +90,14 @@ static inline int valid_stack_ptr(struct thread_info *tinfo, +@@ -93,14 +92,14 @@ static inline int valid_stack_ptr(struct thread_info *tinfo, } unsigned long @@ -21952,7 +22027,7 @@ index cf3df1d..b637d9a 100644 unsigned long addr; addr = *stack; -@@ -110,7 +109,7 @@ print_context_stack(struct thread_info *tinfo, +@@ -112,7 +111,7 @@ print_context_stack(struct thread_info *tinfo, } else { ops->address(data, addr, 0); } @@ -21961,7 +22036,7 @@ index cf3df1d..b637d9a 100644 } stack++; } -@@ -119,7 +118,7 @@ print_context_stack(struct thread_info *tinfo, +@@ -121,7 +120,7 @@ print_context_stack(struct thread_info *tinfo, EXPORT_SYMBOL_GPL(print_context_stack); unsigned long @@ -21970,7 +22045,7 @@ index cf3df1d..b637d9a 100644 unsigned long *stack, unsigned long bp, const struct stacktrace_ops *ops, void *data, unsigned long *end, int *graph) -@@ -127,7 +126,7 @@ print_context_stack_bp(struct thread_info *tinfo, +@@ -129,7 +128,7 @@ print_context_stack_bp(struct thread_info *tinfo, struct stack_frame *frame = (struct stack_frame *)bp; unsigned long *ret_addr = &frame->return_address; @@ -21979,7 +22054,7 @@ index cf3df1d..b637d9a 100644 unsigned long addr = *ret_addr; if (!__kernel_text_address(addr)) -@@ -136,7 +135,7 @@ print_context_stack_bp(struct thread_info *tinfo, +@@ -138,7 +137,7 @@ print_context_stack_bp(struct thread_info *tinfo, ops->address(data, addr, 1); frame = frame->next_frame; ret_addr = &frame->return_address; @@ -21988,16 +22063,7 @@ index cf3df1d..b637d9a 100644 } return (unsigned long)frame; -@@ -155,7 +154,7 @@ static int print_trace_stack(void *data, char *name) - static void print_trace_address(void *data, unsigned long addr, int reliable) - { - touch_nmi_watchdog(); -- printk(data); -+ printk("%s", (char *)data); - printk_stack_address(addr, reliable); - } - -@@ -225,6 +224,8 @@ unsigned long oops_begin(void) +@@ -226,6 +225,8 @@ unsigned long oops_begin(void) EXPORT_SYMBOL_GPL(oops_begin); NOKPROBE_SYMBOL(oops_begin); @@ -22006,7 +22072,7 @@ index cf3df1d..b637d9a 100644 void oops_end(unsigned long flags, struct pt_regs *regs, int signr) { if (regs && kexec_should_crash(current)) -@@ -246,7 +247,10 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr) +@@ -247,7 +248,10 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr) panic("Fatal exception in interrupt"); if (panic_on_oops) panic("Fatal exception"); @@ -22018,26 +22084,8 @@ index cf3df1d..b637d9a 100644 } NOKPROBE_SYMBOL(oops_end); -@@ -278,7 +282,7 @@ int __die(const char *str, struct pt_regs *regs, long err) - print_modules(); - show_regs(regs); - #ifdef CONFIG_X86_32 -- if (user_mode_vm(regs)) { -+ if (user_mode(regs)) { - sp = regs->sp; - ss = regs->ss & 0xffff; - } else { -@@ -307,7 +311,7 @@ void die(const char *str, struct pt_regs *regs, long err) - unsigned long flags = oops_begin(); - int sig = SIGSEGV; - -- if (!user_mode_vm(regs)) -+ if (!user_mode(regs)) - report_bug(regs->ip, regs); - - if (__die(str, regs, err)) diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c -index 5abd4cd..c65733b 100644 +index 464ffd6..01f2cda 100644 --- a/arch/x86/kernel/dumpstack_32.c +++ b/arch/x86/kernel/dumpstack_32.c @@ -61,15 +61,14 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, @@ -22058,20 +22106,7 @@ index 5abd4cd..c65733b 100644 end_stack, &graph); /* Stop if not on irq stack */ -@@ -123,27 +122,28 @@ void show_regs(struct pt_regs *regs) - int i; - - show_regs_print_info(KERN_EMERG); -- __show_regs(regs, !user_mode_vm(regs)); -+ __show_regs(regs, !user_mode(regs)); - - /* - * When in-kernel, we also print out the stack and code at the - * time of the fault.. - */ -- if (!user_mode_vm(regs)) { -+ if (!user_mode(regs)) { - unsigned int code_prologue = code_bytes * 43 / 64; +@@ -137,16 +136,17 @@ void show_regs(struct pt_regs *regs) unsigned int code_len = code_bytes; unsigned char c; u8 *ip; @@ -22091,7 +22126,7 @@ index 5abd4cd..c65733b 100644 code_len = code_len - code_prologue + 1; } for (i = 0; i < code_len; i++, ip++) { -@@ -152,7 +152,7 @@ void show_regs(struct pt_regs *regs) +@@ -155,7 +155,7 @@ void show_regs(struct pt_regs *regs) pr_cont(" Bad EIP value."); break; } @@ -22100,7 +22135,7 @@ index 5abd4cd..c65733b 100644 pr_cont(" <%02x>", c); else pr_cont(" %02x", c); -@@ -165,6 +165,7 @@ int is_valid_bugaddr(unsigned long ip) +@@ -168,6 +168,7 @@ int is_valid_bugaddr(unsigned long ip) { unsigned short ud2; @@ -22108,13 +22143,13 @@ index 5abd4cd..c65733b 100644 if (ip < PAGE_OFFSET) return 0; if (probe_kernel_address((unsigned short *)ip, ud2)) -@@ -172,3 +173,15 @@ int is_valid_bugaddr(unsigned long ip) +@@ -175,3 +176,15 @@ int is_valid_bugaddr(unsigned long ip) return ud2 == 0x0b0f; } + +#if defined(CONFIG_PAX_MEMORY_STACKLEAK) || defined(CONFIG_PAX_USERCOPY) -+void pax_check_alloca(unsigned long size) ++void __used pax_check_alloca(unsigned long size) +{ + unsigned long sp = (unsigned long)&sp, stack_left; + @@ -22125,7 +22160,7 @@ index 5abd4cd..c65733b 100644 +EXPORT_SYMBOL(pax_check_alloca); +#endif diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c -index ff86f19..73eabf4 100644 +index 5f1c626..1cba97e 100644 --- a/arch/x86/kernel/dumpstack_64.c +++ b/arch/x86/kernel/dumpstack_64.c @@ -153,12 +153,12 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, @@ -22188,7 +22223,7 @@ index ff86f19..73eabf4 100644 put_cpu(); } EXPORT_SYMBOL(dump_trace); -@@ -344,8 +347,55 @@ int is_valid_bugaddr(unsigned long ip) +@@ -347,8 +350,55 @@ int is_valid_bugaddr(unsigned long ip) { unsigned short ud2; @@ -22200,7 +22235,7 @@ index ff86f19..73eabf4 100644 } + +#if defined(CONFIG_PAX_MEMORY_STACKLEAK) || defined(CONFIG_PAX_USERCOPY) -+void pax_check_alloca(unsigned long size) ++void __used pax_check_alloca(unsigned long size) +{ + unsigned long sp = (unsigned long)&sp, stack_start, stack_end; + unsigned cpu, used; @@ -22246,10 +22281,10 @@ index ff86f19..73eabf4 100644 +EXPORT_SYMBOL(pax_check_alloca); +#endif diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c -index 46201de..ebffabf 100644 +index e2ce85d..00ccad0 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c -@@ -794,8 +794,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void) +@@ -802,8 +802,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void) static void early_panic(char *msg) { @@ -22261,7 +22296,7 @@ index 46201de..ebffabf 100644 static int userdef __initdata; diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c -index a62536a..8444df4 100644 +index 89427d8..00c0d52 100644 --- a/arch/x86/kernel/early_printk.c +++ b/arch/x86/kernel/early_printk.c @@ -7,6 +7,7 @@ @@ -22273,7 +22308,7 @@ index a62536a..8444df4 100644 #include #include diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S -index 31e2d5b..b31c76d 100644 +index 1c30976..71b41b9 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S @@ -177,13 +177,154 @@ @@ -22317,7 +22352,7 @@ index 31e2d5b..b31c76d 100644 +#else + mov %cr0, %esi +#endif -+ bts $16, %esi ++ bts $X86_CR0_WP_BIT, %esi + jnc 1f + mov %cs, %esi + cmp $__KERNEL_CS, %esi @@ -22353,7 +22388,7 @@ index 31e2d5b..b31c76d 100644 +#else + mov %cr0, %esi +#endif -+ btr $16, %esi ++ btr $X86_CR0_WP_BIT, %esi + ljmp $__KERNEL_CS, $1f +1: +#ifdef CONFIG_PARAVIRT @@ -22502,14 +22537,17 @@ index 31e2d5b..b31c76d 100644 #endif CFI_ENDPROC -@@ -395,30 +553,45 @@ sysenter_past_esp: +@@ -395,33 +553,45 @@ sysenter_past_esp: /*CFI_REL_OFFSET cs, 0*/ /* * Push current_thread_info()->sysenter_return to the stack. -- * A tiny bit of offset fixup is necessary - 4*4 means the 4 words -- * pushed above; +8 corresponds to copy_thread's esp0 setting. +- * A tiny bit of offset fixup is necessary: TI_sysenter_return +- * is relative to thread_info, which is at the bottom of the +- * kernel stack page. 4*4 means the 4 words pushed above; +- * TOP_OF_KERNEL_STACK_PADDING takes us to the top of the stack; +- * and THREAD_SIZE takes us to the bottom. */ -- pushl_cfi ((TI_sysenter_return)-THREAD_SIZE+8+4*4)(%esp) +- pushl_cfi ((TI_sysenter_return) - THREAD_SIZE + TOP_OF_KERNEL_STACK_PADDING + 4*4)(%esp) + pushl_cfi $0 CFI_REL_OFFSET eip, 0 @@ -22551,9 +22589,9 @@ index 31e2d5b..b31c76d 100644 testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) jnz sysenter_audit sysenter_do_call: -@@ -434,12 +607,24 @@ sysenter_after_call: +@@ -437,12 +607,24 @@ sysenter_after_call: testl $_TIF_ALLWORK_MASK, %ecx - jne sysexit_audit + jnz sysexit_audit sysenter_exit: + +#ifdef CONFIG_PAX_RANDKSTACK @@ -22576,7 +22614,7 @@ index 31e2d5b..b31c76d 100644 PTGS_TO_GS ENABLE_INTERRUPTS_SYSEXIT -@@ -453,6 +638,9 @@ sysenter_audit: +@@ -456,6 +638,9 @@ sysenter_audit: pushl_cfi PT_ESI(%esp) /* a3: 5th arg */ pushl_cfi PT_EDX+4(%esp) /* a2: 4th arg */ call __audit_syscall_entry @@ -22586,7 +22624,7 @@ index 31e2d5b..b31c76d 100644 popl_cfi %ecx /* get that remapped edx off the stack */ popl_cfi %ecx /* get that remapped esi off the stack */ movl PT_EAX(%esp),%eax /* reload syscall number */ -@@ -479,10 +667,16 @@ sysexit_audit: +@@ -482,10 +667,16 @@ sysexit_audit: CFI_ENDPROC .pushsection .fixup,"ax" @@ -22605,7 +22643,7 @@ index 31e2d5b..b31c76d 100644 PTGS_TO_GS_EX ENDPROC(ia32_sysenter_target) -@@ -493,6 +687,11 @@ ENTRY(system_call) +@@ -496,6 +687,11 @@ ENTRY(system_call) pushl_cfi %eax # save orig_eax SAVE_ALL GET_THREAD_INFO(%ebp) @@ -22617,9 +22655,9 @@ index 31e2d5b..b31c76d 100644 # system call tracing in operation / emulation testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) jnz syscall_trace_entry -@@ -512,6 +711,15 @@ syscall_exit: +@@ -515,6 +711,15 @@ syscall_exit: testl $_TIF_ALLWORK_MASK, %ecx # current->work - jne syscall_exit_work + jnz syscall_exit_work +restore_all_pax: + @@ -22633,7 +22671,7 @@ index 31e2d5b..b31c76d 100644 restore_all: TRACE_IRQS_IRET restore_all_notrace: -@@ -566,14 +774,34 @@ ldt_ss: +@@ -569,14 +774,34 @@ ldt_ss: * compensating for the offset by changing to the ESPFIX segment with * a base address that matches for the difference. */ @@ -22656,7 +22694,7 @@ index 31e2d5b..b31c76d 100644 + +#ifdef CONFIG_PAX_KERNEXEC + mov %cr0, %esi -+ btr $16, %esi ++ btr $X86_CR0_WP_BIT, %esi + mov %esi, %cr0 +#endif + @@ -22664,14 +22702,14 @@ index 31e2d5b..b31c76d 100644 + mov %dh, 7 + GDT_ESPFIX_SS /* bits 24..31 */ + +#ifdef CONFIG_PAX_KERNEXEC -+ bts $16, %esi ++ bts $X86_CR0_WP_BIT, %esi + mov %esi, %cr0 +#endif + pushl_cfi $__ESPFIX_SS pushl_cfi %eax /* new kernel esp */ /* Disable interrupts, but do not irqtrace this section: we -@@ -603,20 +831,18 @@ work_resched: +@@ -606,20 +831,18 @@ work_resched: movl TI_flags(%ebp), %ecx andl $_TIF_WORK_MASK, %ecx # is there any work to be done other # than syscall tracing? @@ -22686,7 +22724,7 @@ index 31e2d5b..b31c76d 100644 #ifdef CONFIG_VM86 testl $X86_EFLAGS_VM, PT_EFLAGS(%esp) - movl %esp, %eax - jne work_notifysig_v86 # returning to kernel-space or + jnz work_notifysig_v86 # returning to kernel-space or # vm86-space 1: -#else @@ -22694,7 +22732,7 @@ index 31e2d5b..b31c76d 100644 #endif TRACE_IRQS_ON ENABLE_INTERRUPTS(CLBR_NONE) -@@ -637,7 +863,7 @@ work_notifysig_v86: +@@ -640,7 +863,7 @@ work_notifysig_v86: movl %eax, %esp jmp 1b #endif @@ -22703,7 +22741,7 @@ index 31e2d5b..b31c76d 100644 # perform syscall exit tracing ALIGN -@@ -645,11 +871,14 @@ syscall_trace_entry: +@@ -648,11 +871,14 @@ syscall_trace_entry: movl $-ENOSYS,PT_EAX(%esp) movl %esp, %eax call syscall_trace_enter @@ -22719,7 +22757,7 @@ index 31e2d5b..b31c76d 100644 # perform syscall exit tracing ALIGN -@@ -662,26 +891,30 @@ syscall_exit_work: +@@ -665,26 +891,30 @@ syscall_exit_work: movl %esp, %eax call syscall_trace_leave jmp resume_userspace @@ -22754,7 +22792,7 @@ index 31e2d5b..b31c76d 100644 CFI_ENDPROC .macro FIXUP_ESPFIX_STACK -@@ -694,8 +927,15 @@ END(sysenter_badsys) +@@ -697,8 +927,15 @@ END(sysenter_badsys) */ #ifdef CONFIG_X86_ESPFIX32 /* fixup the stack */ @@ -22772,16 +22810,16 @@ index 31e2d5b..b31c76d 100644 shl $16, %eax addl %esp, %eax /* the adjusted stack pointer */ pushl_cfi $__KERNEL_DS -@@ -751,7 +991,7 @@ vector=vector+1 - .endr - 2: jmp common_interrupt - .endr +@@ -737,7 +974,7 @@ ENTRY(irq_entries_start) + CFI_ADJUST_CFA_OFFSET -4 + .align 8 + .endr -END(irq_entries_start) +ENDPROC(irq_entries_start) - .previous - END(interrupt) -@@ -808,7 +1048,7 @@ ENTRY(coprocessor_error) + /* + * the CPU automatically disables interrupts when executing an IRQ vector, +@@ -790,7 +1027,7 @@ ENTRY(coprocessor_error) pushl_cfi $do_coprocessor_error jmp error_code CFI_ENDPROC @@ -22790,16 +22828,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(simd_coprocessor_error) RING0_INT_FRAME -@@ -821,7 +1061,7 @@ ENTRY(simd_coprocessor_error) - .section .altinstructions,"a" - altinstruction_entry 661b, 663f, X86_FEATURE_XMM, 662b-661b, 664f-663f - .previous --.section .altinstr_replacement,"ax" -+.section .altinstr_replacement,"a" - 663: pushl $do_simd_coprocessor_error - 664: - .previous -@@ -830,7 +1070,7 @@ ENTRY(simd_coprocessor_error) +@@ -806,7 +1043,7 @@ ENTRY(simd_coprocessor_error) #endif jmp error_code CFI_ENDPROC @@ -22808,7 +22837,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(device_not_available) RING0_INT_FRAME -@@ -839,18 +1079,18 @@ ENTRY(device_not_available) +@@ -815,18 +1052,18 @@ ENTRY(device_not_available) pushl_cfi $do_device_not_available jmp error_code CFI_ENDPROC @@ -22830,7 +22859,7 @@ index 31e2d5b..b31c76d 100644 #endif ENTRY(overflow) -@@ -860,7 +1100,7 @@ ENTRY(overflow) +@@ -836,7 +1073,7 @@ ENTRY(overflow) pushl_cfi $do_overflow jmp error_code CFI_ENDPROC @@ -22839,7 +22868,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(bounds) RING0_INT_FRAME -@@ -869,7 +1109,7 @@ ENTRY(bounds) +@@ -845,7 +1082,7 @@ ENTRY(bounds) pushl_cfi $do_bounds jmp error_code CFI_ENDPROC @@ -22848,7 +22877,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(invalid_op) RING0_INT_FRAME -@@ -878,7 +1118,7 @@ ENTRY(invalid_op) +@@ -854,7 +1091,7 @@ ENTRY(invalid_op) pushl_cfi $do_invalid_op jmp error_code CFI_ENDPROC @@ -22857,7 +22886,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(coprocessor_segment_overrun) RING0_INT_FRAME -@@ -887,7 +1127,7 @@ ENTRY(coprocessor_segment_overrun) +@@ -863,7 +1100,7 @@ ENTRY(coprocessor_segment_overrun) pushl_cfi $do_coprocessor_segment_overrun jmp error_code CFI_ENDPROC @@ -22866,7 +22895,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(invalid_TSS) RING0_EC_FRAME -@@ -895,7 +1135,7 @@ ENTRY(invalid_TSS) +@@ -871,7 +1108,7 @@ ENTRY(invalid_TSS) pushl_cfi $do_invalid_TSS jmp error_code CFI_ENDPROC @@ -22875,7 +22904,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(segment_not_present) RING0_EC_FRAME -@@ -903,7 +1143,7 @@ ENTRY(segment_not_present) +@@ -879,7 +1116,7 @@ ENTRY(segment_not_present) pushl_cfi $do_segment_not_present jmp error_code CFI_ENDPROC @@ -22884,7 +22913,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(stack_segment) RING0_EC_FRAME -@@ -911,7 +1151,7 @@ ENTRY(stack_segment) +@@ -887,7 +1124,7 @@ ENTRY(stack_segment) pushl_cfi $do_stack_segment jmp error_code CFI_ENDPROC @@ -22893,7 +22922,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(alignment_check) RING0_EC_FRAME -@@ -919,7 +1159,7 @@ ENTRY(alignment_check) +@@ -895,7 +1132,7 @@ ENTRY(alignment_check) pushl_cfi $do_alignment_check jmp error_code CFI_ENDPROC @@ -22902,7 +22931,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(divide_error) RING0_INT_FRAME -@@ -928,7 +1168,7 @@ ENTRY(divide_error) +@@ -904,7 +1141,7 @@ ENTRY(divide_error) pushl_cfi $do_divide_error jmp error_code CFI_ENDPROC @@ -22911,7 +22940,7 @@ index 31e2d5b..b31c76d 100644 #ifdef CONFIG_X86_MCE ENTRY(machine_check) -@@ -938,7 +1178,7 @@ ENTRY(machine_check) +@@ -914,7 +1151,7 @@ ENTRY(machine_check) pushl_cfi machine_check_vector jmp error_code CFI_ENDPROC @@ -22920,7 +22949,7 @@ index 31e2d5b..b31c76d 100644 #endif ENTRY(spurious_interrupt_bug) -@@ -948,7 +1188,7 @@ ENTRY(spurious_interrupt_bug) +@@ -924,7 +1161,7 @@ ENTRY(spurious_interrupt_bug) pushl_cfi $do_spurious_interrupt_bug jmp error_code CFI_ENDPROC @@ -22929,7 +22958,7 @@ index 31e2d5b..b31c76d 100644 #ifdef CONFIG_XEN /* Xen doesn't set %esp to be precisely what the normal sysenter -@@ -1057,7 +1297,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR, +@@ -1033,7 +1270,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR, ENTRY(mcount) ret @@ -22938,7 +22967,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(ftrace_caller) pushl %eax -@@ -1087,7 +1327,7 @@ ftrace_graph_call: +@@ -1063,7 +1300,7 @@ ftrace_graph_call: .globl ftrace_stub ftrace_stub: ret @@ -22947,7 +22976,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(ftrace_regs_caller) pushf /* push flags before compare (in cs location) */ -@@ -1185,7 +1425,7 @@ trace: +@@ -1161,7 +1398,7 @@ trace: popl %ecx popl %eax jmp ftrace_stub @@ -22956,7 +22985,7 @@ index 31e2d5b..b31c76d 100644 #endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_FUNCTION_TRACER */ -@@ -1203,7 +1443,7 @@ ENTRY(ftrace_graph_caller) +@@ -1179,7 +1416,7 @@ ENTRY(ftrace_graph_caller) popl %ecx popl %eax ret @@ -22965,7 +22994,7 @@ index 31e2d5b..b31c76d 100644 .globl return_to_handler return_to_handler: -@@ -1264,15 +1504,18 @@ error_code: +@@ -1233,15 +1470,18 @@ error_code: movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart REG_TO_PTGS %ecx SET_KERNEL_GS %ecx @@ -22986,7 +23015,7 @@ index 31e2d5b..b31c76d 100644 /* * Debug traps and NMI can happen at the one SYSENTER instruction -@@ -1315,7 +1558,7 @@ debug_stack_correct: +@@ -1284,7 +1524,7 @@ debug_stack_correct: call do_debug jmp ret_from_exception CFI_ENDPROC @@ -22995,7 +23024,7 @@ index 31e2d5b..b31c76d 100644 /* * NMI is doubly nasty. It can happen _while_ we're handling -@@ -1355,6 +1598,9 @@ nmi_stack_correct: +@@ -1324,6 +1564,9 @@ nmi_stack_correct: xorl %edx,%edx # zero error code movl %esp,%eax # pt_regs pointer call do_nmi @@ -23005,7 +23034,7 @@ index 31e2d5b..b31c76d 100644 jmp restore_all_notrace CFI_ENDPROC -@@ -1392,13 +1638,16 @@ nmi_espfix_stack: +@@ -1361,13 +1604,16 @@ nmi_espfix_stack: FIXUP_ESPFIX_STACK # %eax == %esp xorl %edx,%edx # zero error code call do_nmi @@ -23023,7 +23052,7 @@ index 31e2d5b..b31c76d 100644 ENTRY(int3) RING0_INT_FRAME -@@ -1411,14 +1660,14 @@ ENTRY(int3) +@@ -1380,14 +1626,14 @@ ENTRY(int3) call do_int3 jmp ret_from_exception CFI_ENDPROC @@ -23040,7 +23069,7 @@ index 31e2d5b..b31c76d 100644 #ifdef CONFIG_KVM_GUEST ENTRY(async_page_fault) -@@ -1427,6 +1676,6 @@ ENTRY(async_page_fault) +@@ -1396,6 +1642,6 @@ ENTRY(async_page_fault) pushl_cfi $do_async_page_fault jmp error_code CFI_ENDPROC @@ -23049,10 +23078,10 @@ index 31e2d5b..b31c76d 100644 #endif diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S -index f0095a7..ec77893 100644 +index 02c2eff..a13739f 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S -@@ -59,6 +59,8 @@ +@@ -46,6 +46,8 @@ #include #include #include @@ -23061,7 +23090,7 @@ index f0095a7..ec77893 100644 /* Avoid __ASSEMBLER__'ifying just for this. */ #include -@@ -81,6 +83,431 @@ ENTRY(native_usergs_sysret64) +@@ -64,6 +66,401 @@ ENTRY(native_usergs_sysret64) ENDPROC(native_usergs_sysret64) #endif /* CONFIG_PARAVIRT */ @@ -23103,7 +23132,7 @@ index f0095a7..ec77893 100644 + +#ifdef CONFIG_PAX_KERNEXEC + GET_CR0_INTO_RDI -+ bts $16,%rdi ++ bts $X86_CR0_WP_BIT,%rdi + jnc 3f + mov %cs,%edi + cmp $__KERNEL_CS,%edi @@ -23112,13 +23141,7 @@ index f0095a7..ec77893 100644 +#endif + +#ifdef CONFIG_PAX_MEMORY_UDEREF -+ 661: jmp 111f -+ .pushsection .altinstr_replacement, "a" -+ 662: ASM_NOP2 -+ .popsection -+ .pushsection .altinstructions, "a" -+ altinstruction_entry 661b, 662b, X86_FEATURE_PCID, 2, 2 -+ .popsection ++ ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID + GET_CR3_INTO_RDI + cmp $0,%dil + jnz 112f @@ -23164,19 +23187,13 @@ index f0095a7..ec77893 100644 + cmp $__KERNEXEC_KERNEL_CS,%edi + jz 2f + GET_CR0_INTO_RDI -+ bts $16,%rdi ++ bts $X86_CR0_WP_BIT,%rdi + jnc 4f +1: +#endif + +#ifdef CONFIG_PAX_MEMORY_UDEREF -+ 661: jmp 111f -+ .pushsection .altinstr_replacement, "a" -+ 662: ASM_NOP2 -+ .popsection -+ .pushsection .altinstructions, "a" -+ altinstruction_entry 661b, 662b, X86_FEATURE_PCID, 2, 2 -+ .popsection ++ ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID + mov %ss,%edi + cmp $__UDEREF_KERNEL_DS,%edi + jnz 111f @@ -23202,7 +23219,7 @@ index f0095a7..ec77893 100644 + +#ifdef CONFIG_PAX_KERNEXEC +2: GET_CR0_INTO_RDI -+ btr $16,%rdi ++ btr $X86_CR0_WP_BIT,%rdi + jnc 4f + ljmpq __KERNEL_CS,3f +3: SET_RDI_INTO_CR0 @@ -23242,13 +23259,7 @@ index f0095a7..ec77893 100644 + PV_SAVE_REGS(CLBR_RDI) +#endif + -+ 661: jmp 111f -+ .pushsection .altinstr_replacement, "a" -+ 662: ASM_NOP2 -+ .popsection -+ .pushsection .altinstructions, "a" -+ altinstruction_entry 661b, 662b, X86_FEATURE_PCID, 2, 2 -+ .popsection ++ ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID + GET_CR3_INTO_RDI + cmp $1,%dil + jnz 4f @@ -23290,7 +23301,7 @@ index f0095a7..ec77893 100644 + +#ifdef CONFIG_PAX_KERNEXEC + GET_CR0_INTO_RDI -+ bts $16,%rdi ++ bts $X86_CR0_WP_BIT,%rdi + SET_RDI_INTO_CR0 +#endif + @@ -23316,13 +23327,7 @@ index f0095a7..ec77893 100644 +#endif + + GET_CR3_INTO_RDI -+ 661: jmp 1f -+ .pushsection .altinstr_replacement, "a" -+ 662: ASM_NOP2 -+ .popsection -+ .pushsection .altinstructions, "a" -+ altinstruction_entry 661b, 662b, X86_FEATURE_PCID, 2, 2 -+ .popsection ++ ALTERNATIVE "jmp 1f", "", X86_FEATURE_PCID + cmp $0,%dil + jnz 3f + add $4097,%rdi @@ -23335,7 +23340,7 @@ index f0095a7..ec77893 100644 + +#ifdef CONFIG_PAX_KERNEXEC + GET_CR0_INTO_RDI -+ btr $16,%rdi ++ btr $X86_CR0_WP_BIT,%rdi + jnc 3f + SET_RDI_INTO_CR0 +#endif @@ -23382,7 +23387,7 @@ index f0095a7..ec77893 100644 + +#ifdef CONFIG_PAX_KERNEXEC + GET_CR0_INTO_RDI -+ bts $16,%rdi ++ bts $X86_CR0_WP_BIT,%rdi + jc 110f + SET_RDI_INTO_CR0 + or $2,%ebx @@ -23390,13 +23395,7 @@ index f0095a7..ec77893 100644 +#endif + +#ifdef CONFIG_PAX_MEMORY_UDEREF -+ 661: jmp 111f -+ .pushsection .altinstr_replacement, "a" -+ 662: ASM_NOP2 -+ .popsection -+ .pushsection .altinstructions, "a" -+ altinstruction_entry 661b, 662b, X86_FEATURE_PCID, 2, 2 -+ .popsection ++ ALTERNATIVE "jmp 111f", "", X86_FEATURE_PCID + GET_CR3_INTO_RDI + cmp $0,%dil + jz 111f @@ -23415,7 +23414,7 @@ index f0095a7..ec77893 100644 + btr $1,%ebx + jnc 110f + GET_CR0_INTO_RDI -+ btr $16,%rdi ++ btr $X86_CR0_WP_BIT,%rdi + SET_RDI_INTO_CR0 +110: +#endif @@ -23491,247 +23490,160 @@ index f0095a7..ec77893 100644 +ENDPROC(pax_erase_kstack) +#endif - .macro TRACE_IRQS_IRETQ offset=ARGOFFSET + .macro TRACE_IRQS_IRETQ #ifdef CONFIG_TRACE_IRQFLAGS -@@ -117,7 +544,7 @@ ENDPROC(native_usergs_sysret64) +@@ -100,7 +497,7 @@ ENDPROC(native_usergs_sysret64) .endm - .macro TRACE_IRQS_IRETQ_DEBUG offset=ARGOFFSET -- bt $9,EFLAGS-\offset(%rsp) /* interrupts off? */ -+ bt $X86_EFLAGS_IF_BIT,EFLAGS-\offset(%rsp) /* interrupts off? */ + .macro TRACE_IRQS_IRETQ_DEBUG +- bt $9,EFLAGS(%rsp) /* interrupts off? */ ++ bt $X86_EFLAGS_IF_BIT,EFLAGS(%rsp) /* interrupts off? */ jnc 1f TRACE_IRQS_ON_DEBUG 1: -@@ -243,9 +670,52 @@ ENTRY(save_paranoid) - js 1f /* negative -> in kernel */ - SWAPGS - xorl %ebx,%ebx --1: ret -+1: -+#ifdef CONFIG_PAX_MEMORY_UDEREF -+ testb $3, CS+8(%rsp) -+ jnz 1f -+ pax_enter_kernel -+ jmp 2f -+1: pax_enter_kernel_user -+2: -+#else -+ pax_enter_kernel +@@ -221,14 +618,6 @@ GLOBAL(system_call_after_swapgs) + /* Construct struct pt_regs on stack */ + pushq_cfi $__USER_DS /* pt_regs->ss */ + pushq_cfi PER_CPU_VAR(rsp_scratch) /* pt_regs->sp */ +- /* +- * Re-enable interrupts. +- * We use 'rsp_scratch' as a scratch space, hence irq-off block above +- * must execute atomically in the face of possible interrupt-driven +- * task preemption. We must enable interrupts only after we're done +- * with using rsp_scratch: +- */ +- ENABLE_INTERRUPTS(CLBR_NONE) + pushq_cfi %r11 /* pt_regs->flags */ + pushq_cfi $__USER_CS /* pt_regs->cs */ + pushq_cfi %rcx /* pt_regs->ip */ +@@ -246,7 +635,27 @@ GLOBAL(system_call_after_swapgs) + sub $(6*8),%rsp /* pt_regs->bp,bx,r12-15 not saved */ + CFI_ADJUST_CFA_OFFSET 6*8 + +- testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) ++#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ movq_cfi r12, R12 +#endif -+ pax_force_retaddr -+ ret - CFI_ENDPROC --END(save_paranoid) -+ENDPROC(save_paranoid) + -+ENTRY(save_paranoid_nmi) -+ XCPT_FRAME 1 RDI+8 -+ cld -+ movq_cfi rdi, RDI+8 -+ movq_cfi rsi, RSI+8 -+ movq_cfi rdx, RDX+8 -+ movq_cfi rcx, RCX+8 -+ movq_cfi rax, RAX+8 -+ movq_cfi r8, R8+8 -+ movq_cfi r9, R9+8 -+ movq_cfi r10, R10+8 -+ movq_cfi r11, R11+8 -+ movq_cfi rbx, RBX+8 -+ movq_cfi rbp, RBP+8 -+ movq_cfi r12, R12+8 -+ movq_cfi r13, R13+8 -+ movq_cfi r14, R14+8 -+ movq_cfi r15, R15+8 -+ movl $1,%ebx -+ movl $MSR_GS_BASE,%ecx -+ rdmsr -+ testl %edx,%edx -+ js 1f /* negative -> in kernel */ -+ SWAPGS -+ xorl %ebx,%ebx -+1: pax_enter_kernel_nmi -+ pax_force_retaddr -+ ret -+ CFI_ENDPROC -+ENDPROC(save_paranoid_nmi) - - /* - * A newly forked process directly context switches into this address. -@@ -266,7 +736,7 @@ ENTRY(ret_from_fork) - - RESTORE_REST - -- testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread? -+ testb $3, CS-ARGOFFSET(%rsp) # from kernel_thread? - jz 1f - - /* -@@ -279,15 +749,13 @@ ENTRY(ret_from_fork) - jmp int_ret_from_sys_call - - 1: -- subq $REST_SKIP, %rsp # leave space for volatiles -- CFI_ADJUST_CFA_OFFSET REST_SKIP - movq %rbp, %rdi - call *%rbx - movl $0, RAX(%rsp) - RESTORE_REST - jmp int_ret_from_sys_call - CFI_ENDPROC --END(ret_from_fork) -+ENDPROC(ret_from_fork) - - /* - * System call entry. Up to 6 arguments in registers are supported. -@@ -324,7 +792,7 @@ END(ret_from_fork) - ENTRY(system_call) - CFI_STARTPROC simple - CFI_SIGNAL_FRAME -- CFI_DEF_CFA rsp,KERNEL_STACK_OFFSET -+ CFI_DEF_CFA rsp,0 - CFI_REGISTER rip,rcx - /*CFI_REGISTER rflags,r11*/ - SWAPGS_UNSAFE_STACK -@@ -337,16 +805,23 @@ GLOBAL(system_call_after_swapgs) - - movq %rsp,PER_CPU_VAR(old_rsp) - movq PER_CPU_VAR(kernel_stack),%rsp -+ SAVE_ARGS 8*6, 0, rax_enosys=1 + pax_enter_kernel_user + +#ifdef CONFIG_PAX_RANDKSTACK + pax_erase_kstack +#endif + - /* - * No need to follow this irqs off/on section - it's straight - * and short: - */ - ENABLE_INTERRUPTS(CLBR_NONE) -- SAVE_ARGS 8, 0, rax_enosys=1 - movq_cfi rax,(ORIG_RAX-ARGOFFSET) - movq %rcx,RIP-ARGOFFSET(%rsp) - CFI_REL_OFFSET rip,RIP-ARGOFFSET -- testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) ++ /* ++ * Re-enable interrupts. ++ * We use 'rsp_scratch' as a scratch space, hence irq-off block above ++ * must execute atomically in the face of possible interrupt-driven ++ * task preemption. We must enable interrupts only after we're done ++ * with using rsp_scratch: ++ */ ++ ENABLE_INTERRUPTS(CLBR_NONE) ++ + GET_THREAD_INFO(%rcx) + testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%rcx) jnz tracesys system_call_fastpath: #if __SYSCALL_MASK == ~0 -@@ -376,10 +851,13 @@ ret_from_sys_call: +@@ -279,10 +688,13 @@ system_call_fastpath: * flags (TIF_NOTIFY_RESUME, TIF_USER_RETURN_NOTIFY, etc) set is * very bad. */ -- testl $_TIF_ALLWORK_MASK,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) +- testl $_TIF_ALLWORK_MASK, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS) + GET_THREAD_INFO(%rcx) + testl $_TIF_ALLWORK_MASK,TI_flags(%rcx) - jnz int_ret_from_sys_call_fixup /* Go the the slow path */ + jnz int_ret_from_sys_call_irqs_off /* Go to the slow path */ CFI_REMEMBER_STATE + pax_exit_kernel_user + pax_erase_kstack - /* - * sysretq will re-enable interrupts: - */ -@@ -399,12 +877,15 @@ int_ret_from_sys_call_fixup: - /* Do syscall tracing */ - tracesys: -- leaq -REST_SKIP(%rsp), %rdi -+ movq %rsp, %rdi - movq $AUDIT_ARCH_X86_64, %rsi + RESTORE_C_REGS_EXCEPT_RCX_R11 + movq RIP(%rsp),%rcx +@@ -316,6 +728,9 @@ tracesys: call syscall_trace_enter_phase1 test %rax, %rax jnz tracesys_phase2 /* if needed, run the slow path */ -- LOAD_ARGS 0 /* else restore clobbered regs */ + + pax_erase_kstack + -+ LOAD_ARGS /* else restore clobbered regs */ + RESTORE_C_REGS_EXCEPT_RAX /* else restore clobbered regs */ + movq ORIG_RAX(%rsp), %rax jmp system_call_fastpath /* and return to the fast path */ - - tracesys_phase2: -@@ -415,12 +896,14 @@ tracesys_phase2: +@@ -327,6 +742,8 @@ tracesys_phase2: movq %rax,%rdx call syscall_trace_enter_phase2 + pax_erase_kstack + /* - * Reload arg registers from stack in case ptrace changed them. + * Reload registers from stack in case ptrace changed them. * We don't reload %rax because syscall_trace_entry_phase2() returned - * the value it wants us to use in the table lookup. - */ -- LOAD_ARGS ARGOFFSET, 1 -+ LOAD_ARGS 1 - RESTORE_REST - #if __SYSCALL_MASK == ~0 - cmpq $__NR_syscall_max,%rax -@@ -451,7 +934,9 @@ GLOBAL(int_with_check) +@@ -364,6 +781,8 @@ GLOBAL(int_with_check) andl %edi,%edx jnz int_careful - andl $~TS_COMPAT,TI_status(%rcx) -- jmp retint_swapgs + andl $~TS_COMPAT,TI_status(%rcx) + pax_exit_kernel_user + pax_erase_kstack -+ jmp retint_swapgs_pax + jmp syscall_return /* Either reschedule or signal or syscall exit tracking needed. */ - /* First do a reschedule test. */ -@@ -497,7 +982,7 @@ int_restore_rest: - TRACE_IRQS_OFF - jmp int_with_check +@@ -485,7 +904,7 @@ opportunistic_sysret_failed: + SWAPGS + jmp restore_c_regs_and_iret CFI_ENDPROC -END(system_call) +ENDPROC(system_call) + .macro FORK_LIKE func - ENTRY(stub_\func) -@@ -510,9 +995,10 @@ ENTRY(stub_\func) - DEFAULT_FRAME 0 8 /* offset 8: return address */ - call sys_\func - RESTORE_TOP_OF_STACK %r11, 8 -- ret $REST_SKIP /* pop extended registers */ -+ pax_force_retaddr -+ ret +@@ -495,7 +914,7 @@ ENTRY(stub_\func) + SAVE_EXTRA_REGS 8 + jmp sys_\func CFI_ENDPROC -END(stub_\func) +ENDPROC(stub_\func) .endm - .macro FIXED_FRAME label,func -@@ -522,9 +1008,10 @@ ENTRY(\label) - FIXUP_TOP_OF_STACK %r11, 8-ARGOFFSET - call \func - RESTORE_TOP_OF_STACK %r11, 8-ARGOFFSET -+ pax_force_retaddr - ret - CFI_ENDPROC --END(\label) -+ENDPROC(\label) - .endm - FORK_LIKE clone -@@ -543,7 +1030,7 @@ ENTRY(stub_execve) - RESTORE_REST - jmp int_ret_from_sys_call +@@ -519,7 +938,7 @@ return_from_execve: + movq %rax,RAX(%rsp) + jmp int_ret_from_sys_call CFI_ENDPROC -END(stub_execve) +ENDPROC(stub_execve) - - ENTRY(stub_execveat) - CFI_STARTPROC -@@ -557,7 +1044,7 @@ ENTRY(stub_execveat) - RESTORE_REST - jmp int_ret_from_sys_call + /* + * Remaining execve stubs are only 7 bytes long. + * ENTRY() often aligns to 16 bytes, which in this case has no benefits. +@@ -531,7 +950,7 @@ GLOBAL(stub_execveat) + call sys_execveat + jmp return_from_execve CFI_ENDPROC -END(stub_execveat) +ENDPROC(stub_execveat) - /* - * sigreturn is special because it needs to restore all registers on return. -@@ -574,7 +1061,7 @@ ENTRY(stub_rt_sigreturn) - RESTORE_REST + #ifdef CONFIG_X86_X32_ABI + .align 8 +@@ -541,7 +960,7 @@ GLOBAL(stub_x32_execve) + call compat_sys_execve + jmp return_from_execve + CFI_ENDPROC +-END(stub_x32_execve) ++ENDPROC(stub_x32_execve) + .align 8 + GLOBAL(stub_x32_execveat) + CFI_STARTPROC +@@ -549,7 +968,7 @@ GLOBAL(stub_x32_execveat) + call compat_sys_execveat + jmp return_from_execve + CFI_ENDPROC +-END(stub_x32_execveat) ++ENDPROC(stub_x32_execveat) + #endif + + #ifdef CONFIG_IA32_EMULATION +@@ -592,7 +1011,7 @@ return_from_stub: + movq %rax,RAX(%rsp) jmp int_ret_from_sys_call CFI_ENDPROC -END(stub_rt_sigreturn) @@ -23739,90 +23651,75 @@ index f0095a7..ec77893 100644 #ifdef CONFIG_X86_X32_ABI ENTRY(stub_x32_rt_sigreturn) -@@ -588,7 +1075,7 @@ ENTRY(stub_x32_rt_sigreturn) - RESTORE_REST - jmp int_ret_from_sys_call +@@ -602,7 +1021,7 @@ ENTRY(stub_x32_rt_sigreturn) + call sys32_x32_rt_sigreturn + jmp return_from_stub CFI_ENDPROC -END(stub_x32_rt_sigreturn) +ENDPROC(stub_x32_rt_sigreturn) + #endif - ENTRY(stub_x32_execve) - CFI_STARTPROC -@@ -602,7 +1089,7 @@ ENTRY(stub_x32_execve) - RESTORE_REST - jmp int_ret_from_sys_call - CFI_ENDPROC --END(stub_x32_execve) -+ENDPROC(stub_x32_execve) + /* +@@ -622,7 +1041,7 @@ ENTRY(ret_from_fork) - ENTRY(stub_x32_execveat) - CFI_STARTPROC -@@ -616,7 +1103,7 @@ ENTRY(stub_x32_execveat) - RESTORE_REST + RESTORE_EXTRA_REGS + +- testl $3,CS(%rsp) # from kernel_thread? ++ testb $3,CS(%rsp) # from kernel_thread? + + /* + * By the time we get here, we have no idea whether our pt_regs, +@@ -641,7 +1060,7 @@ ENTRY(ret_from_fork) + RESTORE_EXTRA_REGS jmp int_ret_from_sys_call CFI_ENDPROC --END(stub_x32_execveat) -+ENDPROC(stub_x32_execveat) - - #endif +-END(ret_from_fork) ++ENDPROC(ret_from_fork) -@@ -653,7 +1140,7 @@ vector=vector+1 - 2: jmp common_interrupt - .endr + /* + * Build the entry stubs with some assembler magic. +@@ -659,7 +1078,7 @@ ENTRY(irq_entries_start) + .align 8 + .endr CFI_ENDPROC -END(irq_entries_start) +ENDPROC(irq_entries_start) - .previous - END(interrupt) -@@ -670,28 +1157,29 @@ END(interrupt) + /* + * Interrupt entry/exit. +@@ -672,21 +1091,13 @@ END(irq_entries_start) /* 0(%rsp): ~(interrupt number) */ .macro interrupt func - /* reserve pt_regs for scratch regs and rbp */ -- subq $ORIG_RAX-RBP, %rsp -- CFI_ADJUST_CFA_OFFSET ORIG_RAX-RBP -+ subq $ORIG_RAX, %rsp -+ CFI_ADJUST_CFA_OFFSET ORIG_RAX cld -- /* start from rbp in pt_regs and jump over */ -- movq_cfi rdi, (RDI-RBP) -- movq_cfi rsi, (RSI-RBP) -- movq_cfi rdx, (RDX-RBP) -- movq_cfi rcx, (RCX-RBP) -- movq_cfi rax, (RAX-RBP) -- movq_cfi r8, (R8-RBP) -- movq_cfi r9, (R9-RBP) -- movq_cfi r10, (R10-RBP) -- movq_cfi r11, (R11-RBP) -+ /* start from r15 in pt_regs and jump over */ -+ movq_cfi rdi, RDI -+ movq_cfi rsi, RSI -+ movq_cfi rdx, RDX -+ movq_cfi rcx, RCX -+ movq_cfi rax, RAX -+ movq_cfi r8, R8 -+ movq_cfi r9, R9 -+ movq_cfi r10, R10 -+ movq_cfi r11, R11 -+ movq_cfi r12, R12 - - /* Save rbp so that we can unwind from get_irq_regs() */ -- movq_cfi rbp, 0 -+ movq_cfi rbp, RBP - - /* Save previous stack value */ - movq %rsp, %rsi - -- leaq -RBP(%rsp),%rdi /* arg1 for handler */ -- testl $3, CS-RBP(%rsi) -+ movq %rsp,%rdi /* arg1 for handler */ -+ testb $3, CS(%rsi) +- /* +- * Since nothing in interrupt handling code touches r12...r15 members +- * of "struct pt_regs", and since interrupts can nest, we can save +- * four stack slots and simultaneously provide +- * an unwind-friendly stack layout by saving "truncated" pt_regs +- * exactly up to rbp slot, without these members. +- */ +- ALLOC_PT_GPREGS_ON_STACK -RBP +- SAVE_C_REGS -RBP +- /* this goes to 0(%rsp) for unwinder, not for saving the value: */ +- SAVE_EXTRA_REGS_RBP -RBP ++ ALLOC_PT_GPREGS_ON_STACK ++ SAVE_C_REGS ++ SAVE_EXTRA_REGS + +- leaq -RBP(%rsp),%rdi /* arg1 for \func (pointer to pt_regs) */ ++ movq %rsp,%rdi /* arg1 for \func (pointer to pt_regs) */ + +- testl $3, CS-RBP(%rsp) ++ testb $3, CS(%rsp) je 1f SWAPGS - /* -@@ -711,6 +1199,18 @@ END(interrupt) + 1: +@@ -709,8 +1120,20 @@ END(irq_entries_start) + CFI_ESCAPE 0x0f /* DW_CFA_def_cfa_expression */, 6, \ + 0x77 /* DW_OP_breg7 (rsp) */, 0, \ 0x06 /* DW_OP_deref */, \ - 0x08 /* DW_OP_const1u */, SS+8-RBP, \ +- 0x08 /* DW_OP_const1u */, SIZEOF_PTREGS-RBP, \ ++ 0x08 /* DW_OP_const1u */, SIZEOF_PTREGS, \ 0x22 /* DW_OP_plus */ + +#ifdef CONFIG_PAX_MEMORY_UDEREF @@ -23839,57 +23736,38 @@ index f0095a7..ec77893 100644 /* We entered an interrupt context - irqs are off: */ TRACE_IRQS_OFF -@@ -735,14 +1235,14 @@ ret_from_intr: +@@ -735,13 +1158,12 @@ ret_from_intr: /* Restore saved previous stack */ popq %rsi -- CFI_DEF_CFA rsi,SS+8-RBP /* reg/off reset after def_cfa_expr */ -- leaq ARGOFFSET-RBP(%rsi), %rsp -+ CFI_DEF_CFA rsi,SS+8 /* reg/off reset after def_cfa_expr */ +- CFI_DEF_CFA rsi,SIZEOF_PTREGS-RBP /* reg/off reset after def_cfa_expr */ +- /* return code expects complete pt_regs - adjust rsp accordingly: */ +- leaq -RBP(%rsi),%rsp ++ CFI_DEF_CFA rsi,SIZEOF_PTREGS /* reg/off reset after def_cfa_expr */ + movq %rsi, %rsp CFI_DEF_CFA_REGISTER rsp -- CFI_ADJUST_CFA_OFFSET RBP-ARGOFFSET -+ CFI_ADJUST_CFA_OFFSET -ARGOFFSET +- CFI_ADJUST_CFA_OFFSET RBP ++ CFI_ADJUST_CFA_OFFSET 0 - exit_intr: - GET_THREAD_INFO(%rcx) -- testl $3,CS-ARGOFFSET(%rsp) -+ testb $3,CS-ARGOFFSET(%rsp) +- testl $3,CS(%rsp) ++ testb $3,CS(%rsp) je retint_kernel - /* Interrupt came from user space */ -@@ -764,14 +1264,16 @@ retint_swapgs: /* return to user-space */ + +@@ -763,6 +1185,8 @@ retint_swapgs: /* return to user-space */ * The iretq could re-enable interrupts: */ DISABLE_INTERRUPTS(CLBR_ANY) + pax_exit_kernel_user -+retint_swapgs_pax: ++# pax_erase_kstack TRACE_IRQS_IRETQ - /* - * Try to use SYSRET instead of IRET if we're returning to - * a completely clean 64-bit userspace context. - */ -- movq (RCX-R11)(%rsp), %rcx -- cmpq %rcx,(RIP-R11)(%rsp) /* RCX == RIP */ -+ movq (RCX-ARGOFFSET)(%rsp), %rcx -+ cmpq %rcx,(RIP-ARGOFFSET)(%rsp) /* RCX == RIP */ - jne opportunistic_sysret_failed - - /* -@@ -792,7 +1294,7 @@ retint_swapgs: /* return to user-space */ - shr $__VIRTUAL_MASK_SHIFT, %rcx - jnz opportunistic_sysret_failed - -- cmpq $__USER_CS,(CS-R11)(%rsp) /* CS must match SYSRET */ -+ cmpq $__USER_CS,(CS-ARGOFFSET)(%rsp) /* CS must match SYSRET */ - jne opportunistic_sysret_failed - - movq (R11-ARGOFFSET)(%rsp), %r11 -@@ -838,6 +1340,27 @@ opportunistic_sysret_failed: - - retint_restore_args: /* return to kernel space */ - DISABLE_INTERRUPTS(CLBR_ANY) + SWAPGS +@@ -781,6 +1205,21 @@ retint_kernel: + jmp 0b + 1: + #endif ++ + pax_exit_kernel + +#if defined(CONFIG_EFI) && defined(CONFIG_PAX_KERNEXEC) @@ -23899,22 +23777,24 @@ index f0095a7..ec77893 100644 + * (BTS/OR) before starting any userland process; even before starting + * up the APs. + */ -+ .pushsection .altinstr_replacement, "a" -+ 601: pax_force_retaddr (RIP-ARGOFFSET) -+ 602: -+ .popsection -+ 603: .fill 602b-601b, 1, 0x90 -+ .pushsection .altinstructions, "a" -+ altinstruction_entry 603b, 601b, X86_FEATURE_ALWAYS, 602b-601b, 602b-601b -+ .popsection ++ ALTERNATIVE "", "pax_force_retaddr 16*8", X86_FEATURE_ALWAYS +#else -+ pax_force_retaddr (RIP-ARGOFFSET) ++ pax_force_retaddr RIP +#endif + /* * The iretq could re-enable interrupts: */ -@@ -875,15 +1398,15 @@ native_irq_return_ldt: +@@ -793,8 +1232,6 @@ retint_kernel: + restore_c_regs_and_iret: + RESTORE_C_REGS + REMOVE_PT_GPREGS_FROM_STACK 8 +- +-irq_return: + INTERRUPT_RETURN + + ENTRY(native_iret) +@@ -824,15 +1261,15 @@ native_irq_return_ldt: SWAPGS movq PER_CPU_VAR(espfix_waddr),%rdi movq %rax,(0*8)(%rdi) /* RAX */ @@ -23935,16 +23815,16 @@ index f0095a7..ec77893 100644 movq %rax,(4*8)(%rdi) andl $0xffff0000,%eax popq_cfi %rdi -@@ -937,7 +1460,7 @@ ENTRY(retint_kernel) - jmp exit_intr - #endif +@@ -875,7 +1312,7 @@ retint_signal: + jmp retint_with_reschedule + CFI_ENDPROC -END(common_interrupt) +ENDPROC(common_interrupt) /* * APIC interrupts. -@@ -951,7 +1474,7 @@ ENTRY(\sym) +@@ -889,7 +1326,7 @@ ENTRY(\sym) interrupt \do_sym jmp ret_from_intr CFI_ENDPROC @@ -23953,29 +23833,29 @@ index f0095a7..ec77893 100644 .endm #ifdef CONFIG_TRACING -@@ -1024,7 +1547,7 @@ apicinterrupt IRQ_WORK_VECTOR \ +@@ -962,7 +1399,7 @@ apicinterrupt IRQ_WORK_VECTOR \ /* * Exception entry points. */ --#define INIT_TSS_IST(x) PER_CPU_VAR(init_tss) + (TSS_ist + ((x) - 1) * 8) -+#define INIT_TSS_IST(x) (TSS_ist + ((x) - 1) * 8)(%r13) +-#define CPU_TSS_IST(x) PER_CPU_VAR(cpu_tss) + (TSS_ist + ((x) - 1) * 8) ++#define CPU_TSS_IST(x) (TSS_ist + ((x) - 1) * 8)(%r13) .macro idtentry sym do_sym has_error_code:req paranoid=0 shift_ist=-1 ENTRY(\sym) -@@ -1080,6 +1603,12 @@ ENTRY(\sym) +@@ -1018,6 +1455,12 @@ ENTRY(\sym) .endif .if \shift_ist != -1 +#ifdef CONFIG_SMP + imul $TSS_size, PER_CPU_VAR(cpu_number), %r13d -+ lea init_tss(%r13), %r13 ++ lea cpu_tss(%r13), %r13 +#else -+ lea init_tss(%rip), %r13 ++ lea cpu_tss(%rip), %r13 +#endif - subq $EXCEPTION_STKSZ, INIT_TSS_IST(\shift_ist) + subq $EXCEPTION_STKSZ, CPU_TSS_IST(\shift_ist) .endif -@@ -1126,7 +1655,7 @@ ENTRY(\sym) +@@ -1065,7 +1508,7 @@ ENTRY(\sym) .endif CFI_ENDPROC @@ -23984,7 +23864,7 @@ index f0095a7..ec77893 100644 .endm #ifdef CONFIG_TRACING -@@ -1167,9 +1696,10 @@ gs_change: +@@ -1106,9 +1549,10 @@ gs_change: 2: mfence /* workaround */ SWAPGS popfq_cfi @@ -23996,7 +23876,7 @@ index f0095a7..ec77893 100644 _ASM_EXTABLE(gs_change,bad_gs) .section .fixup,"ax" -@@ -1197,9 +1727,10 @@ ENTRY(do_softirq_own_stack) +@@ -1136,9 +1580,10 @@ ENTRY(do_softirq_own_stack) CFI_DEF_CFA_REGISTER rsp CFI_ADJUST_CFA_OFFSET -8 decl PER_CPU_VAR(irq_count) @@ -24008,7 +23888,7 @@ index f0095a7..ec77893 100644 #ifdef CONFIG_XEN idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0 -@@ -1240,7 +1771,7 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs) +@@ -1179,7 +1624,7 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs) #endif jmp error_exit CFI_ENDPROC @@ -24017,8 +23897,8 @@ index f0095a7..ec77893 100644 /* * Hypervisor uses this for application faults while it executes. -@@ -1299,7 +1830,7 @@ ENTRY(xen_failsafe_callback) - SAVE_ALL +@@ -1240,7 +1685,7 @@ ENTRY(xen_failsafe_callback) + SAVE_EXTRA_REGS jmp error_exit CFI_ENDPROC -END(xen_failsafe_callback) @@ -24026,26 +23906,70 @@ index f0095a7..ec77893 100644 apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \ xen_hvm_callback_vector xen_evtchn_do_upcall -@@ -1344,18 +1875,25 @@ ENTRY(paranoid_exit) +@@ -1286,9 +1731,39 @@ ENTRY(paranoid_entry) + js 1f /* negative -> in kernel */ + SWAPGS + xorl %ebx,%ebx +-1: ret ++1: ++#ifdef CONFIG_PAX_MEMORY_UDEREF ++ testb $3, CS+8(%rsp) ++ jnz 1f ++ pax_enter_kernel ++ jmp 2f ++1: pax_enter_kernel_user ++2: ++#else ++ pax_enter_kernel ++#endif ++ pax_force_retaddr ++ ret + CFI_ENDPROC +-END(paranoid_entry) ++ENDPROC(paranoid_entry) ++ ++ENTRY(paranoid_entry_nmi) ++ XCPT_FRAME 1 15*8 ++ cld ++ SAVE_C_REGS 8 ++ SAVE_EXTRA_REGS 8 ++ movl $1,%ebx ++ movl $MSR_GS_BASE,%ecx ++ rdmsr ++ testl %edx,%edx ++ js 1f /* negative -> in kernel */ ++ SWAPGS ++ xorl %ebx,%ebx ++1: pax_enter_kernel_nmi ++ pax_force_retaddr ++ ret ++ CFI_ENDPROC ++ENDPROC(paranoid_entry_nmi) + + /* + * "Paranoid" exit path from exception stack. This is invoked +@@ -1305,20 +1780,27 @@ ENTRY(paranoid_exit) DEFAULT_FRAME DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF_DEBUG - testl %ebx,%ebx /* swapgs needed? */ + testl $1,%ebx /* swapgs needed? */ - jnz paranoid_restore + jnz paranoid_exit_no_swapgs +#ifdef CONFIG_PAX_MEMORY_UDEREF + pax_exit_kernel_user +#else + pax_exit_kernel +#endif - TRACE_IRQS_IRETQ 0 + TRACE_IRQS_IRETQ SWAPGS_UNSAFE_STACK - RESTORE_ALL 8 - INTERRUPT_RETURN - paranoid_restore: + jmp paranoid_exit_restore + paranoid_exit_no_swapgs: + pax_exit_kernel - TRACE_IRQS_IRETQ_DEBUG 0 - RESTORE_ALL 8 + TRACE_IRQS_IRETQ_DEBUG + paranoid_exit_restore: + RESTORE_EXTRA_REGS + RESTORE_C_REGS + REMOVE_PT_GPREGS_FROM_STACK 8 + pax_force_retaddr_bts INTERRUPT_RETURN CFI_ENDPROC @@ -24053,10 +23977,10 @@ index f0095a7..ec77893 100644 +ENDPROC(paranoid_exit) /* - * Exception entry point. This expects an error code/orig_rax on the stack. -@@ -1382,12 +1920,23 @@ ENTRY(error_entry) - movq %r14, R14+8(%rsp) - movq %r15, R15+8(%rsp) + * Save all registers in pt_regs, and switch gs if needed. +@@ -1330,12 +1812,23 @@ ENTRY(error_entry) + SAVE_C_REGS 8 + SAVE_EXTRA_REGS 8 xorl %ebx,%ebx - testl $3,CS+8(%rsp) + testb $3,CS+8(%rsp) @@ -24078,8 +24002,8 @@ index f0095a7..ec77893 100644 + pax_force_retaddr ret - /* -@@ -1422,7 +1971,7 @@ error_bad_iret: + /* +@@ -1370,7 +1863,7 @@ error_bad_iret: decl %ebx /* Return to usergs */ jmp error_sti CFI_ENDPROC @@ -24087,8 +24011,8 @@ index f0095a7..ec77893 100644 +ENDPROC(error_entry) - /* ebx: no swapgs flag (1: don't need swapgs, 0: need it) */ -@@ -1433,7 +1982,7 @@ ENTRY(error_exit) + /* On entry, ebx is "no swapgs" flag (1: don't need swapgs, 0: need it) */ +@@ -1381,7 +1874,7 @@ ENTRY(error_exit) DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF GET_THREAD_INFO(%rcx) @@ -24097,85 +24021,418 @@ index f0095a7..ec77893 100644 jne retint_kernel LOCKDEP_SYS_EXIT_IRQ movl TI_flags(%rcx),%edx -@@ -1442,7 +1991,7 @@ ENTRY(error_exit) +@@ -1390,7 +1883,7 @@ ENTRY(error_exit) jnz retint_careful jmp retint_swapgs CFI_ENDPROC -END(error_exit) +ENDPROC(error_exit) - /* - * Test if a given stack is an NMI stack or not. -@@ -1500,9 +2049,11 @@ ENTRY(nmi) - * If %cs was not the kernel segment, then the NMI triggered in user - * space, which means it is definitely not nested. + /* Runs on exception stack */ + ENTRY(nmi) +@@ -1413,11 +1906,12 @@ ENTRY(nmi) + * If the variable is not set and the stack is not the NMI + * stack then: + * o Set the special variable on the stack +- * o Copy the interrupt frame into a "saved" location on the stack +- * o Copy the interrupt frame into a "copy" location on the stack ++ * o Copy the interrupt frame into an "outermost" location on the ++ * stack ++ * o Copy the interrupt frame into an "iret" location on the stack + * o Continue processing the NMI + * If the variable is set or the previous stack is the NMI stack: +- * o Modify the "copy" location to jump to the repeate_nmi ++ * o Modify the "iret" location to jump to the repeat_nmi + * o return back to the first NMI + * + * Now on exit of the first NMI, we first clear the stack variable +@@ -1426,32 +1920,185 @@ ENTRY(nmi) + * a nested NMI that updated the copy interrupt stack frame, a + * jump will be made to the repeat_nmi code that will handle the second + * NMI. ++ * ++ * However, espfix prevents us from directly returning to userspace ++ * with a single IRET instruction. Similarly, IRET to user mode ++ * can fault. We therefore handle NMIs from user space like ++ * other IST entries. */ -+ cmpl $__KERNEXEC_KERNEL_CS, 16(%rsp) -+ je 1f - cmpl $__KERNEL_CS, 16(%rsp) - jne first_nmi -- + + /* Use %rdx as our temp variable throughout */ + pushq_cfi %rdx + CFI_REL_OFFSET rdx, 0 + ++ testb $3, CS-RIP+8(%rsp) ++ jz .Lnmi_from_kernel ++ ++ /* ++ * NMI from user mode. We need to run on the thread stack, but we ++ * can't go through the normal entry paths: NMIs are masked, and ++ * we don't want to enable interrupts, because then we'll end ++ * up in an awkward situation in which IRQs are on but NMIs ++ * are off. ++ */ ++ ++ SWAPGS ++ cld ++ movq %rsp, %rdx ++ movq PER_CPU_VAR(kernel_stack), %rsp ++ pushq 5*8(%rdx) /* pt_regs->ss */ ++ pushq 4*8(%rdx) /* pt_regs->rsp */ ++ pushq 3*8(%rdx) /* pt_regs->flags */ ++ pushq 2*8(%rdx) /* pt_regs->cs */ ++ pushq 1*8(%rdx) /* pt_regs->rip */ ++ pushq $-1 /* pt_regs->orig_ax */ ++ pushq %rdi /* pt_regs->di */ ++ pushq %rsi /* pt_regs->si */ ++ pushq (%rdx) /* pt_regs->dx */ ++ pushq %rcx /* pt_regs->cx */ ++ pushq %rax /* pt_regs->ax */ ++ pushq %r8 /* pt_regs->r8 */ ++ pushq %r9 /* pt_regs->r9 */ ++ pushq %r10 /* pt_regs->r10 */ ++ pushq %r11 /* pt_regs->r11 */ ++ pushq %rbx /* pt_regs->rbx */ ++ pushq %rbp /* pt_regs->rbp */ ++ pushq %r12 /* pt_regs->r12 */ ++ pushq %r13 /* pt_regs->r13 */ ++ pushq %r14 /* pt_regs->r14 */ ++ pushq %r15 /* pt_regs->r15 */ ++ ++#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF) ++ xorl %ebx,%ebx ++#endif ++ ++ pax_enter_kernel_nmi ++ + /* +- * If %cs was not the kernel segment, then the NMI triggered in user +- * space, which means it is definitely not nested. ++ * At this point we no longer need to worry about stack damage ++ * due to nesting -- we're on the normal thread stack and we're ++ * done with the NMI stack. + */ +- cmpl $__KERNEL_CS, 16(%rsp) +- jne first_nmi ++ ++ movq %rsp, %rdi ++ movq $-1, %rsi ++ call do_nmi ++ ++ pax_exit_kernel_nmi ++ ++ /* ++ * Return back to user mode. We must *not* do the normal exit ++ * work, because we don't want to enable interrupts. Fortunately, ++ * do_nmi doesn't modify pt_regs. ++ */ ++ SWAPGS ++ ++ /* ++ * Open-code the entire return process for compatibility with varying ++ * register layouts across different kernel versions. ++ */ ++ ++#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF) ++ movq RBX(%rsp), %rbx /* pt_regs->rbx*/ ++#endif ++ ++#ifdef CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR ++ movq R12(%rsp), %r12 /* pt_regs->r12*/ ++#endif ++ ++ addq $6*8, %rsp /* skip bx, bp, and r12-r15 */ ++ popq %r11 /* pt_regs->r11 */ ++ popq %r10 /* pt_regs->r10 */ ++ popq %r9 /* pt_regs->r9 */ ++ popq %r8 /* pt_regs->r8 */ ++ popq %rax /* pt_regs->ax */ ++ popq %rcx /* pt_regs->cx */ ++ popq %rdx /* pt_regs->dx */ ++ popq %rsi /* pt_regs->si */ ++ popq %rdi /* pt_regs->di */ ++ addq $8, %rsp /* skip orig_ax */ ++ INTERRUPT_RETURN ++ ++.Lnmi_from_kernel: ++ /* ++ * Here's what our stack frame will look like: ++ * +---------------------------------------------------------+ ++ * | original SS | ++ * | original Return RSP | ++ * | original RFLAGS | ++ * | original CS | ++ * | original RIP | ++ * +---------------------------------------------------------+ ++ * | temp storage for rdx | ++ * +---------------------------------------------------------+ ++ * | "NMI executing" variable | ++ * +---------------------------------------------------------+ ++ * | iret SS } Copied from "outermost" frame | ++ * | iret Return RSP } on each loop iteration; overwritten | ++ * | iret RFLAGS } by a nested NMI to force another | ++ * | iret CS } iteration if needed. | ++ * | iret RIP } | ++ * +---------------------------------------------------------+ ++ * | outermost SS } initialized in first_nmi; | ++ * | outermost Return RSP } will not be changed before | ++ * | outermost RFLAGS } NMI processing is done. | ++ * | outermost CS } Copied to "iret" frame on each | ++ * | outermost RIP } iteration. | ++ * +---------------------------------------------------------+ ++ * | pt_regs | ++ * +---------------------------------------------------------+ ++ * ++ * The "original" frame is used by hardware. Before re-enabling ++ * NMIs, we need to be done with it, and we need to leave enough ++ * space for the asm code here. ++ * ++ * We return by executing IRET while RSP points to the "iret" frame. ++ * That will either return for real or it will loop back into NMI ++ * processing. ++ * ++ * The "outermost" frame is copied to the "iret" frame on each ++ * iteration of the loop, so each iteration starts with the "iret" ++ * frame pointing to the final return target. ++ */ ++ ++ /* ++ * If we interrupted kernel code between repeat_nmi and ++ * end_repeat_nmi, then we are a nested NMI. We must not ++ * modify the "iret" frame because it's being written by ++ * the outer NMI. That's okay: the outer NMI handler is ++ * about to about to call do_nmi anyway, so we can just ++ * resume the outer NMI. ++ */ ++ ++ movq $repeat_nmi, %rdx ++ cmpq 8(%rsp), %rdx ++ ja 1f ++ movq $end_repeat_nmi, %rdx ++ cmpq 8(%rsp), %rdx ++ ja nested_nmi_out +1: + /* - * Check the special variable on the stack to see if NMIs are - * executing. -@@ -1536,8 +2087,7 @@ nested_nmi: +- * Check the special variable on the stack to see if NMIs are +- * executing. ++ * Now check "NMI executing". If it's set, then we're nested. ++ * ++ * First check "NMI executing". If it's set, then we're nested. ++ * This will not detect if we interrupted an outer NMI just ++ * before IRET. + */ + cmpl $1, -8(%rsp) + je nested_nmi - 1: - /* Set up the interrupted NMIs stack to jump to repeat_nmi */ + /* +- * Now test if the previous stack was an NMI stack. +- * We need the double check. We check the NMI stack to satisfy the +- * race when the first NMI clears the variable before returning. +- * We check the variable because the first NMI could be in a +- * breakpoint routine using a breakpoint stack. ++ * Now test if the previous stack was an NMI stack. This covers ++ * the case where we interrupt an outer NMI after it clears ++ * "NMI executing" but before IRET. We need to be careful, though: ++ * there is one case in which RSP could point to the NMI stack ++ * despite there being no NMI active: naughty userspace controls ++ * RSP at the very beginning of the SYSCALL targets. We can ++ * pull a fast one on naughty userspace, though: we program ++ * SYSCALL to mask DF, so userspace cannot cause DF to be set ++ * if it controls the kernel's RSP. We set DF before we clear ++ * "NMI executing". + */ + lea 6*8(%rsp), %rdx + /* Compare the NMI stack (rdx) with the stack we came from (4*8(%rsp)) */ +@@ -1462,27 +2109,22 @@ ENTRY(nmi) + cmpq %rdx, 4*8(%rsp) + /* If it is below the NMI stack, it is a normal NMI */ + jb first_nmi +- /* Ah, it is within the NMI stack, treat it as nested */ ++ ++ /* Ah, it is within the NMI stack. */ ++ ++ testb $(X86_EFLAGS_DF >> 8), (3*8 + 1)(%rsp) ++ jz first_nmi /* RSP was user controlled. */ + + CFI_REMEMBER_STATE + ++ /* This is a nested NMI. */ ++ + nested_nmi: + /* +- * Do nothing if we interrupted the fixup in repeat_nmi. +- * It's about to repeat the NMI handler, so we are fine +- * with ignoring this one. ++ * Modify the "iret" frame to point to repeat_nmi, forcing another ++ * iteration of NMI handling. + */ +- movq $repeat_nmi, %rdx +- cmpq 8(%rsp), %rdx +- ja 1f +- movq $end_repeat_nmi, %rdx +- cmpq 8(%rsp), %rdx +- ja nested_nmi_out +- +-1: +- /* Set up the interrupted NMIs stack to jump to repeat_nmi */ - leaq -1*8(%rsp), %rdx - movq %rdx, %rsp + subq $8, %rsp CFI_ADJUST_CFA_OFFSET 1*8 leaq -10*8(%rsp), %rdx pushq_cfi $__KERNEL_DS -@@ -1555,6 +2105,7 @@ nested_nmi_out: +@@ -1499,60 +2141,24 @@ nested_nmi_out: + popq_cfi %rdx CFI_RESTORE rdx - /* No need to check faults here */ +- /* No need to check faults here */ ++ /* We are returning to kernel mode, so this cannot result in a fault. */ +# pax_force_retaddr_bts INTERRUPT_RETURN CFI_RESTORE_STATE -@@ -1651,13 +2202,13 @@ end_repeat_nmi: - subq $ORIG_RAX-R15, %rsp - CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15 + first_nmi: +- /* +- * Because nested NMIs will use the pushed location that we +- * stored in rdx, we must keep that space available. +- * Here's what our stack frame will look like: +- * +-------------------------+ +- * | original SS | +- * | original Return RSP | +- * | original RFLAGS | +- * | original CS | +- * | original RIP | +- * +-------------------------+ +- * | temp storage for rdx | +- * +-------------------------+ +- * | NMI executing variable | +- * +-------------------------+ +- * | copied SS | +- * | copied Return RSP | +- * | copied RFLAGS | +- * | copied CS | +- * | copied RIP | +- * +-------------------------+ +- * | Saved SS | +- * | Saved Return RSP | +- * | Saved RFLAGS | +- * | Saved CS | +- * | Saved RIP | +- * +-------------------------+ +- * | pt_regs | +- * +-------------------------+ +- * +- * The saved stack frame is used to fix up the copied stack frame +- * that a nested NMI may change to make the interrupted NMI iret jump +- * to the repeat_nmi. The original stack frame and the temp storage +- * is also used by nested NMIs and can not be trusted on exit. +- */ +- /* Do not pop rdx, nested NMIs will corrupt that part of the stack */ ++ /* Restore rdx. */ + movq (%rsp), %rdx + CFI_RESTORE rdx + + /* Set the NMI executing variable on the stack. */ + pushq_cfi $1 + +- /* +- * Leave room for the "copied" frame +- */ ++ /* Leave room for the "iret" frame */ + subq $(5*8), %rsp + CFI_ADJUST_CFA_OFFSET 5*8 + +- /* Copy the stack frame to the Saved frame */ ++ /* Copy the "original" frame to the "outermost" frame */ + .rept 5 + pushq_cfi 11*8(%rsp) + .endr +@@ -1560,6 +2166,7 @@ first_nmi: + + /* Everything up to here is safe from nested NMIs */ + ++repeat_nmi: + /* + * If there was a nested NMI, the first NMI's iret will return + * here. But NMIs are still enabled and we can take another +@@ -1568,16 +2175,21 @@ first_nmi: + * it will just return, as we are about to repeat an NMI anyway. + * This makes it safe to copy to the stack frame that a nested + * NMI will update. +- */ +-repeat_nmi: +- /* +- * Update the stack variable to say we are still in NMI (the update +- * is benign for the non-repeat case, where 1 was pushed just above +- * to this very stack slot). ++ * ++ * RSP is pointing to "outermost RIP". gsbase is unknown, but, if ++ * we're repeating an NMI, gsbase has the same value that it had on ++ * the first iteration. paranoid_entry will load the kernel ++ * gsbase if needed before we call do_nmi. ++ * ++ * Set "NMI executing" in case we came back here via IRET. + */ + movq $1, 10*8(%rsp) + +- /* Make another copy, this one may be modified by nested NMIs */ ++ /* ++ * Copy the "outermost" frame to the "iret" frame. NMIs that nest ++ * here must not modify the "iret" frame while we're writing to ++ * it or it will end up containing garbage. ++ */ + addq $(10*8), %rsp + CFI_ADJUST_CFA_OFFSET -10*8 + .rept 5 +@@ -1588,66 +2200,65 @@ repeat_nmi: + end_repeat_nmi: + + /* +- * Everything below this point can be preempted by a nested +- * NMI if the first NMI took an exception and reset our iret stack +- * so that we repeat another NMI. ++ * Everything below this point can be preempted by a nested NMI. ++ * If this happens, then the inner NMI will change the "iret" ++ * frame to point back to repeat_nmi. + */ + pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */ + ALLOC_PT_GPREGS_ON_STACK + /* -- * Use save_paranoid to handle SWAPGS, but no need to use paranoid_exit -+ * Use save_paranoid_nmi to handle SWAPGS, but no need to use paranoid_exit +- * Use paranoid_entry to handle SWAPGS, but no need to use paranoid_exit ++ * Use paranoid_entry_nmi to handle SWAPGS, but no need to use paranoid_exit * as we should not be calling schedule in NMI context. * Even with normal interrupts enabled. An NMI should not be * setting NEED_RESCHED or anything that normal interrupts and * exceptions might do. */ -- call save_paranoid -+ call save_paranoid_nmi +- call paranoid_entry ++ call paranoid_entry_nmi DEFAULT_FRAME 0 - /* -@@ -1667,9 +2218,9 @@ end_repeat_nmi: - * NMI itself takes a page fault, the page fault that was preempted - * will read the information from the NMI page fault and not the - * origin fault. Save it off and restore it if it changes. +- /* +- * Save off the CR2 register. If we take a page fault in the NMI then +- * it could corrupt the CR2 value. If the NMI preempts a page fault +- * handler before it was able to read the CR2 register, and then the +- * NMI itself takes a page fault, the page fault that was preempted +- * will read the information from the NMI page fault and not the +- * origin fault. Save it off and restore it if it changes. - * Use the r12 callee-saved register. -+ * Use the r13 callee-saved register. - */ +- */ - movq %cr2, %r12 -+ movq %cr2, %r13 - +- /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */ movq %rsp,%rdi -@@ -1678,29 +2229,34 @@ end_repeat_nmi: + movq $-1,%rsi + call do_nmi - /* Did the NMI take a page fault? Restore cr2 if it did */ - movq %cr2, %rcx +- /* Did the NMI take a page fault? Restore cr2 if it did */ +- movq %cr2, %rcx - cmpq %rcx, %r12 -+ cmpq %rcx, %r13 - je 1f +- je 1f - movq %r12, %cr2 -+ movq %r13, %cr2 - 1: - +-1: +- - testl %ebx,%ebx /* swapgs needed? */ + testl $1,%ebx /* swapgs needed? */ jnz nmi_restore @@ -24183,16 +24440,34 @@ index f0095a7..ec77893 100644 SWAPGS_UNSAFE_STACK nmi_restore: + pax_exit_kernel_nmi - /* Pop the extra iret frame at once */ - RESTORE_ALL 6*8 -+ testb $3, 8(%rsp) -+ jnz 1f -+ pax_force_retaddr_bts -+1: + RESTORE_EXTRA_REGS + RESTORE_C_REGS +- /* Pop the extra iret frame at once */ ++ + REMOVE_PT_GPREGS_FROM_STACK 6*8 - /* Clear the NMI executing stack variable */ - movq $0, 5*8(%rsp) - jmp irq_return +- /* Clear the NMI executing stack variable */ +- movq $0, 5*8(%rsp) +- jmp irq_return ++ pax_force_retaddr_bts ++ ++ /* ++ * Clear "NMI executing". Set DF first so that we can easily ++ * distinguish the remaining code between here and IRET from ++ * the SYSCALL entry and exit paths. On a native kernel, we ++ * could just inspect RIP, but, on paravirt kernels, ++ * INTERRUPT_RETURN can translate into a jump into a ++ * hypercall page. ++ */ ++ std ++ movq $0, 5*8(%rsp) /* clear "NMI executing" */ ++ ++ /* ++ * INTERRUPT_RETURN reads the "iret" frame and exits the NMI ++ * stack in a single instruction. We are returning to kernel ++ * mode, so this cannot result in a fault. ++ */ ++ INTERRUPT_RETURN CFI_ENDPROC -END(nmi) +ENDPROC(nmi) @@ -24248,7 +24523,7 @@ index f5d0730..5bce89c 100644 unlock_done: mutex_unlock(&espfix_init_mutex); diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c -index 8b7b0a5..2395f29 100644 +index 8b7b0a5..02219db 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -89,7 +89,7 @@ static unsigned long text_ip_addr(unsigned long ip) @@ -24287,8 +24562,58 @@ index 8b7b0a5..2395f29 100644 return -EFAULT; /* Make sure it is what we expect it to be */ +@@ -670,11 +672,11 @@ static unsigned char *ftrace_jmp_replace(unsigned long ip, unsigned long addr) + /* Module allocation simplifies allocating memory for code */ + static inline void *alloc_tramp(unsigned long size) + { +- return module_alloc(size); ++ return module_alloc_exec(size); + } + static inline void tramp_free(void *tramp) + { +- module_memfree(tramp); ++ module_memfree_exec(tramp); + } + #else + /* Trampolines can only be created if modules are supported */ +@@ -753,7 +755,9 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size) + *tramp_size = size + MCOUNT_INSN_SIZE + sizeof(void *); + + /* Copy ftrace_caller onto the trampoline memory */ ++ pax_open_kernel(); + ret = probe_kernel_read(trampoline, (void *)start_offset, size); ++ pax_close_kernel(); + if (WARN_ON(ret < 0)) { + tramp_free(trampoline); + return 0; +@@ -763,6 +767,7 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size) + + /* The trampoline ends with a jmp to ftrace_return */ + jmp = ftrace_jmp_replace(ip, (unsigned long)ftrace_return); ++ pax_open_kernel(); + memcpy(trampoline + size, jmp, MCOUNT_INSN_SIZE); + + /* +@@ -775,6 +780,7 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size) + + ptr = (unsigned long *)(trampoline + size + MCOUNT_INSN_SIZE); + *ptr = (unsigned long)ops; ++ pax_close_kernel(); + + op_offset -= start_offset; + memcpy(&op_ptr, trampoline + op_offset, OP_REF_SIZE); +@@ -792,7 +798,9 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size) + op_ptr.offset = offset; + + /* put in the new offset to the ftrace_ops */ ++ pax_open_kernel(); + memcpy(trampoline + op_offset, &op_ptr, OP_REF_SIZE); ++ pax_close_kernel(); + + /* ALLOC_TRAMP flags lets us know we created it */ + ops->flags |= FTRACE_OPS_FL_ALLOC_TRAMP; diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c -index c4f8d46..2d63ae2 100644 +index 5a46681..1ef7ffa 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -68,12 +68,12 @@ again: @@ -24332,19 +24657,19 @@ index c4f8d46..2d63ae2 100644 } pmd = (physaddr & PMD_MASK) + early_pmd_flags; pmd_p[pmd_index(address)] = pmd; -@@ -180,7 +180,6 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data) - if (console_loglevel >= CONSOLE_LOGLEVEL_DEBUG) - early_printk("Kernel alive\n"); +@@ -177,7 +177,6 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data) + */ + load_ucode_bsp(); - clear_page(init_level4_pgt); /* set init_level4_pgt kernel high mapping*/ init_level4_pgt[511] = early_level4_pgt[511]; diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S -index f36bd42..0ab4474 100644 +index 7e429c9..7244a52 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S -@@ -26,6 +26,12 @@ +@@ -27,6 +27,12 @@ /* Physical address */ #define pa(X) ((X) - __PAGE_OFFSET) @@ -24357,7 +24682,7 @@ index f36bd42..0ab4474 100644 /* * References to members of the new_cpu_data structure. */ -@@ -55,11 +61,7 @@ +@@ -56,11 +62,7 @@ * and small than max_low_pfn, otherwise will waste some page table entries */ @@ -24368,9 +24693,9 @@ index f36bd42..0ab4474 100644 -#endif +#define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PTE) - /* Number of possible pages in the lowmem region */ - LOWMEM_PAGES = (((1<<32) - __PAGE_OFFSET) >> PAGE_SHIFT) -@@ -78,6 +80,12 @@ INIT_MAP_SIZE = PAGE_TABLE_SIZE(KERNEL_PAGES) * PAGE_SIZE + /* + * Number of possible pages in the lowmem region. +@@ -86,6 +88,12 @@ INIT_MAP_SIZE = PAGE_TABLE_SIZE(KERNEL_PAGES) * PAGE_SIZE RESERVE_BRK(pagetables, INIT_MAP_SIZE) /* @@ -24383,7 +24708,7 @@ index f36bd42..0ab4474 100644 * 32-bit kernel entrypoint; only used by the boot CPU. On entry, * %esi points to the real-mode code as a 32-bit pointer. * CS and DS must be 4 GB flat segments, but we don't depend on -@@ -85,6 +93,13 @@ RESERVE_BRK(pagetables, INIT_MAP_SIZE) +@@ -93,6 +101,13 @@ RESERVE_BRK(pagetables, INIT_MAP_SIZE) * can. */ __HEAD @@ -24397,7 +24722,7 @@ index f36bd42..0ab4474 100644 ENTRY(startup_32) movl pa(stack_start),%ecx -@@ -106,6 +121,59 @@ ENTRY(startup_32) +@@ -114,6 +129,59 @@ ENTRY(startup_32) 2: leal -__PAGE_OFFSET(%ecx),%esp @@ -24457,7 +24782,7 @@ index f36bd42..0ab4474 100644 /* * Clear BSS first so that there are no surprises... */ -@@ -201,8 +269,11 @@ ENTRY(startup_32) +@@ -209,8 +277,11 @@ ENTRY(startup_32) movl %eax, pa(max_pfn_mapped) /* Do early initialization of the fixmap area */ @@ -24471,7 +24796,7 @@ index f36bd42..0ab4474 100644 #else /* Not PAE */ page_pde_offset = (__PAGE_OFFSET >> 20); -@@ -232,8 +303,11 @@ page_pde_offset = (__PAGE_OFFSET >> 20); +@@ -240,8 +311,11 @@ page_pde_offset = (__PAGE_OFFSET >> 20); movl %eax, pa(max_pfn_mapped) /* Do early initialization of the fixmap area */ @@ -24485,7 +24810,7 @@ index f36bd42..0ab4474 100644 #endif #ifdef CONFIG_PARAVIRT -@@ -247,9 +321,7 @@ page_pde_offset = (__PAGE_OFFSET >> 20); +@@ -255,9 +329,7 @@ page_pde_offset = (__PAGE_OFFSET >> 20); cmpl $num_subarch_entries, %eax jae bad_subarch @@ -24496,7 +24821,7 @@ index f36bd42..0ab4474 100644 bad_subarch: WEAK(lguest_entry) -@@ -261,10 +333,10 @@ WEAK(xen_entry) +@@ -269,10 +341,10 @@ WEAK(xen_entry) __INITDATA subarch_entries: @@ -24511,7 +24836,7 @@ index f36bd42..0ab4474 100644 num_subarch_entries = (. - subarch_entries) / 4 .previous #else -@@ -354,6 +426,7 @@ default_entry: +@@ -362,6 +434,7 @@ default_entry: movl pa(mmu_cr4_features),%eax movl %eax,%cr4 @@ -24519,7 +24844,7 @@ index f36bd42..0ab4474 100644 testb $X86_CR4_PAE, %al # check if PAE is enabled jz enable_paging -@@ -382,6 +455,9 @@ default_entry: +@@ -390,6 +463,9 @@ default_entry: /* Make changes effective */ wrmsr @@ -24529,7 +24854,7 @@ index f36bd42..0ab4474 100644 enable_paging: /* -@@ -449,14 +525,20 @@ is486: +@@ -457,14 +533,20 @@ is486: 1: movl $(__KERNEL_DS),%eax # reload all the segment registers movl %eax,%ss # after changing gdt. @@ -24551,7 +24876,7 @@ index f36bd42..0ab4474 100644 movl %eax,%gs xorl %eax,%eax # Clear LDT -@@ -512,8 +594,11 @@ setup_once: +@@ -521,8 +603,11 @@ setup_once: * relocation. Manually set base address in stack canary * segment descriptor. */ @@ -24564,7 +24889,7 @@ index f36bd42..0ab4474 100644 movw %cx, 8 * GDT_ENTRY_STACK_CANARY + 2(%eax) shrl $16, %ecx movb %cl, 8 * GDT_ENTRY_STACK_CANARY + 4(%eax) -@@ -548,7 +633,7 @@ ENTRY(early_idt_handler) +@@ -559,7 +644,7 @@ early_idt_handler_common: cmpl $2,(%esp) # X86_TRAP_NMI je is_nmi # Ignore NMI @@ -24573,7 +24898,7 @@ index f36bd42..0ab4474 100644 je hlt_loop incl %ss:early_recursion_flag -@@ -586,8 +671,8 @@ ENTRY(early_idt_handler) +@@ -597,8 +682,8 @@ early_idt_handler_common: pushl (20+6*4)(%esp) /* trapno */ pushl $fault_msg call printk @@ -24583,7 +24908,7 @@ index f36bd42..0ab4474 100644 hlt_loop: hlt jmp hlt_loop -@@ -607,8 +692,11 @@ ENDPROC(early_idt_handler) +@@ -618,8 +703,11 @@ ENDPROC(early_idt_handler_common) /* This is the default interrupt "handler" :-) */ ALIGN ignore_int: @@ -24596,7 +24921,7 @@ index f36bd42..0ab4474 100644 pushl %eax pushl %ecx pushl %edx -@@ -617,9 +705,6 @@ ignore_int: +@@ -628,9 +716,6 @@ ignore_int: movl $(__KERNEL_DS),%eax movl %eax,%ds movl %eax,%es @@ -24606,7 +24931,7 @@ index f36bd42..0ab4474 100644 pushl 16(%esp) pushl 24(%esp) pushl 32(%esp) -@@ -653,29 +738,34 @@ ENTRY(setup_once_ref) +@@ -664,29 +749,34 @@ ENTRY(setup_once_ref) /* * BSS section */ @@ -24646,7 +24971,7 @@ index f36bd42..0ab4474 100644 ENTRY(initial_page_table) .long pa(initial_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */ # if KPMDS == 3 -@@ -694,12 +784,20 @@ ENTRY(initial_page_table) +@@ -705,12 +795,20 @@ ENTRY(initial_page_table) # error "Kernel PMDs should be 1, 2 or 3" # endif .align PAGE_SIZE /* needs to be page-sized too */ @@ -24668,7 +24993,7 @@ index f36bd42..0ab4474 100644 __INITRODATA int_msg: -@@ -727,7 +825,7 @@ fault_msg: +@@ -738,7 +836,7 @@ fault_msg: * segment size, and 32-bit linear address value: */ @@ -24677,7 +25002,7 @@ index f36bd42..0ab4474 100644 .globl boot_gdt_descr .globl idt_descr -@@ -736,7 +834,7 @@ fault_msg: +@@ -747,7 +845,7 @@ fault_msg: .word 0 # 32 bit align gdt_desc.address boot_gdt_descr: .word __BOOT_DS+7 @@ -24686,7 +25011,7 @@ index f36bd42..0ab4474 100644 .word 0 # 32-bit align idt_desc.address idt_descr: -@@ -747,7 +845,7 @@ idt_descr: +@@ -758,7 +856,7 @@ idt_descr: .word 0 # 32 bit align gdt_desc.address ENTRY(early_gdt_descr) .word GDT_ENTRIES*8-1 @@ -24695,7 +25020,7 @@ index f36bd42..0ab4474 100644 /* * The boot_gdt must mirror the equivalent in setup.S and is -@@ -756,5 +854,65 @@ ENTRY(early_gdt_descr) +@@ -767,5 +865,65 @@ ENTRY(early_gdt_descr) .align L1_CACHE_BYTES ENTRY(boot_gdt) .fill GDT_ENTRY_BOOT_CS,8,0 @@ -24764,7 +25089,7 @@ index f36bd42..0ab4474 100644 + .fill PAGE_SIZE_asm - GDT_SIZE,1,0 + .endr diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S -index 6fd514d9..320367e 100644 +index df7e780..e97a497 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -20,6 +20,8 @@ @@ -24873,7 +25198,7 @@ index 6fd514d9..320367e 100644 .word 0 __FINITDATA -@@ -391,7 +427,7 @@ ENTRY(early_idt_handler) +@@ -393,7 +429,7 @@ early_idt_handler_common: call dump_stack #ifdef CONFIG_KALLSYMS leaq early_idt_ripmsg(%rip),%rdi @@ -24882,7 +25207,7 @@ index 6fd514d9..320367e 100644 call __print_symbol #endif #endif /* EARLY_PRINTK */ -@@ -420,6 +456,7 @@ ENDPROC(early_idt_handler) +@@ -422,6 +458,7 @@ ENDPROC(early_idt_handler_common) early_recursion_flag: .long 0 @@ -24890,7 +25215,7 @@ index 6fd514d9..320367e 100644 #ifdef CONFIG_EARLY_PRINTK early_idt_msg: .asciz "PANIC: early exception %02lx rip %lx:%lx error %lx cr2 %lx\n" -@@ -447,29 +484,52 @@ NEXT_PAGE(early_level4_pgt) +@@ -449,29 +486,52 @@ NEXT_PAGE(early_level4_pgt) NEXT_PAGE(early_dynamic_pgts) .fill 512*EARLY_DYNAMIC_PAGE_TABLES,8,0 @@ -24952,7 +25277,7 @@ index 6fd514d9..320367e 100644 NEXT_PAGE(level3_kernel_pgt) .fill L3_START_KERNEL,8,0 -@@ -477,6 +537,9 @@ NEXT_PAGE(level3_kernel_pgt) +@@ -479,6 +539,9 @@ NEXT_PAGE(level3_kernel_pgt) .quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE .quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE @@ -24962,7 +25287,7 @@ index 6fd514d9..320367e 100644 NEXT_PAGE(level2_kernel_pgt) /* * 512 MB kernel mapping. We spend a full page on this pagetable -@@ -492,23 +555,61 @@ NEXT_PAGE(level2_kernel_pgt) +@@ -494,23 +557,61 @@ NEXT_PAGE(level2_kernel_pgt) KERNEL_IMAGE_SIZE/PMD_SIZE) NEXT_PAGE(level2_fixmap_pgt) @@ -25030,7 +25355,7 @@ index 6fd514d9..320367e 100644 ENTRY(phys_base) /* This must match the first entry in level2_kernel_pgt */ -@@ -532,8 +633,8 @@ NEXT_PAGE(kasan_zero_pud) +@@ -534,8 +635,8 @@ NEXT_PAGE(kasan_zero_pud) #include "../../x86/xen/xen-head.S" @@ -25070,19 +25395,6 @@ index 05fd74f..c3548b1 100644 +#ifdef CONFIG_PAX_PER_CPU_PGD +EXPORT_SYMBOL(cpu_pgd); +#endif -diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c -index d5651fc..29c740d 100644 ---- a/arch/x86/kernel/i387.c -+++ b/arch/x86/kernel/i387.c -@@ -68,7 +68,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); - } - - /* diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c index e7cc537..67d7372 100644 --- a/arch/x86/kernel/i8259.c @@ -25138,7 +25450,7 @@ index a979b5b..1d6db75 100644 .callback = dmi_io_delay_0xed_port, .ident = "Compaq Presario V6000", diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c -index 4ddaf66..49d5c18 100644 +index 37dae79..620dd84 100644 --- a/arch/x86/kernel/ioport.c +++ b/arch/x86/kernel/ioport.c @@ -6,6 +6,7 @@ @@ -25166,8 +25478,8 @@ index 4ddaf66..49d5c18 100644 * because the ->io_bitmap_max value must match the bitmap * contents: */ -- tss = &per_cpu(init_tss, get_cpu()); -+ tss = init_tss + get_cpu(); +- tss = &per_cpu(cpu_tss, get_cpu()); ++ tss = cpu_tss + get_cpu(); if (turn_on) bitmap_clear(t->io_bitmap_ptr, from, num); @@ -25185,7 +25497,7 @@ index 4ddaf66..49d5c18 100644 regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12); t->iopl = level << 12; diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c -index 67b1cbe..6ad4cbc 100644 +index e5952c2..11c3a54 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -22,7 +22,7 @@ @@ -25219,7 +25531,7 @@ index 67b1cbe..6ad4cbc 100644 } diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c -index 28d28f5..e6cc9ae 100644 +index f9fd86a..e6cc9ae 100644 --- a/arch/x86/kernel/irq_32.c +++ b/arch/x86/kernel/irq_32.c @@ -29,6 +29,8 @@ EXPORT_PER_CPU_SYMBOL(irq_regs); @@ -25345,17 +25657,8 @@ index 28d28f5..e6cc9ae 100644 } bool handle_irq(unsigned irq, struct pt_regs *regs) -@@ -165,7 +171,7 @@ bool handle_irq(unsigned irq, struct pt_regs *regs) - if (unlikely(!desc)) - return false; - -- if (user_mode_vm(regs) || !execute_on_irq_stack(overflow, desc, irq)) { -+ if (user_mode(regs) || !execute_on_irq_stack(overflow, desc, irq)) { - if (unlikely(overflow)) - print_stack_overflow(); - desc->handle_irq(irq, desc); diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c -index e4b503d..824fce8 100644 +index 394e643..824fce8 100644 --- a/arch/x86/kernel/irq_64.c +++ b/arch/x86/kernel/irq_64.c @@ -26,6 +26,8 @@ EXPORT_PER_CPU_SYMBOL(irq_stat); @@ -25367,15 +25670,6 @@ index e4b503d..824fce8 100644 int sysctl_panic_on_stackoverflow; /* -@@ -44,7 +46,7 @@ static inline void stack_overflow_check(struct pt_regs *regs) - u64 estack_top, estack_bottom; - u64 curbase = (u64)task_stack_page(current); - -- if (user_mode_vm(regs)) -+ if (user_mode(regs)) - return; - - if (regs->sp >= curbase + sizeof(struct thread_info) + @@ -69,6 +71,8 @@ static inline void stack_overflow_check(struct pt_regs *regs) irq_stack_top, irq_stack_bottom, estack_top, estack_bottom); @@ -25424,23 +25718,9 @@ index 26d5a55..a01160a 100644 } memcpy(&code, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE); diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c -index 25ecd56..e12482f 100644 +index d6178d9..e12482f 100644 --- a/arch/x86/kernel/kgdb.c +++ b/arch/x86/kernel/kgdb.c -@@ -126,11 +126,11 @@ char *dbg_get_reg(int regno, void *mem, struct pt_regs *regs) - #ifdef CONFIG_X86_32 - switch (regno) { - case GDB_SS: -- if (!user_mode_vm(regs)) -+ if (!user_mode(regs)) - *(unsigned long *)mem = __KERNEL_DS; - break; - case GDB_SP: -- if (!user_mode_vm(regs)) -+ if (!user_mode(regs)) - *(unsigned long *)mem = kernel_stack_pointer(regs); - break; - case GDB_GS: @@ -228,7 +228,10 @@ static void kgdb_correct_hw_break(void) bp->attr.bp_addr = breakinfo[breakno].addr; bp->attr.bp_len = breakinfo[breakno].len; @@ -25517,7 +25797,7 @@ index 25ecd56..e12482f 100644 } diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c -index 4e3d5a9..03fffd8 100644 +index 1deffe6..4705700 100644 --- a/arch/x86/kernel/kprobes/core.c +++ b/arch/x86/kernel/kprobes/core.c @@ -120,9 +120,12 @@ __synthesize_relative_insn(void *from, void *to, u8 op) @@ -25558,17 +25838,17 @@ index 4e3d5a9..03fffd8 100644 } /* -@@ -364,7 +367,9 @@ int __copy_instruction(u8 *dest, u8 *src) +@@ -367,7 +370,9 @@ int __copy_instruction(u8 *dest, u8 *src) /* Another subsystem puts a breakpoint, failed to recover */ if (insn.opcode.bytes[0] == BREAKPOINT_INSTRUCTION) return 0; + pax_open_kernel(); - memcpy(dest, insn.kaddr, insn.length); + memcpy(dest, insn.kaddr, length); + pax_close_kernel(); #ifdef CONFIG_X86_64 if (insn_rip_relative(&insn)) { -@@ -391,7 +396,9 @@ int __copy_instruction(u8 *dest, u8 *src) +@@ -394,7 +399,9 @@ int __copy_instruction(u8 *dest, u8 *src) return 0; } disp = (u8 *) dest + insn_offset_displacement(&insn); @@ -25577,8 +25857,8 @@ index 4e3d5a9..03fffd8 100644 + pax_close_kernel(); } #endif - return insn.length; -@@ -533,7 +540,7 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs, + return length; +@@ -536,7 +543,7 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs, * nor set current_kprobe, because it doesn't use single * stepping. */ @@ -25587,7 +25867,7 @@ index 4e3d5a9..03fffd8 100644 preempt_enable_no_resched(); return; } -@@ -550,9 +557,9 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs, +@@ -553,9 +560,9 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs, regs->flags &= ~X86_EFLAGS_IF; /* single step inline if the instruction is an int3 */ if (p->opcode == BREAKPOINT_INSTRUCTION) @@ -25599,16 +25879,7 @@ index 4e3d5a9..03fffd8 100644 } NOKPROBE_SYMBOL(setup_singlestep); -@@ -602,7 +609,7 @@ int kprobe_int3_handler(struct pt_regs *regs) - struct kprobe *p; - struct kprobe_ctlblk *kcb; - -- if (user_mode_vm(regs)) -+ if (user_mode(regs)) - return 0; - - addr = (kprobe_opcode_t *)(regs->ip - sizeof(kprobe_opcode_t)); -@@ -637,7 +644,7 @@ int kprobe_int3_handler(struct pt_regs *regs) +@@ -640,7 +647,7 @@ int kprobe_int3_handler(struct pt_regs *regs) setup_singlestep(p, regs, kcb, 0); return 1; } @@ -25617,7 +25888,7 @@ index 4e3d5a9..03fffd8 100644 /* * The breakpoint instruction was removed right * after we hit it. Another cpu has removed -@@ -684,6 +691,9 @@ static void __used kretprobe_trampoline_holder(void) +@@ -687,6 +694,9 @@ static void __used kretprobe_trampoline_holder(void) " movq %rax, 152(%rsp)\n" RESTORE_REGS_STRING " popfq\n" @@ -25627,7 +25898,7 @@ index 4e3d5a9..03fffd8 100644 #else " pushf\n" SAVE_REGS_STRING -@@ -824,7 +834,7 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs, +@@ -827,7 +837,7 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb) { unsigned long *tos = stack_addr(regs); @@ -25636,15 +25907,6 @@ index 4e3d5a9..03fffd8 100644 unsigned long orig_ip = (unsigned long)p->addr; kprobe_opcode_t *insn = p->ainsn.insn; -@@ -1007,7 +1017,7 @@ int kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, - struct die_args *args = data; - int ret = NOTIFY_DONE; - -- if (args->regs && user_mode_vm(args->regs)) -+ if (args->regs && user_mode(args->regs)) - return ret; - - if (val == DIE_GPF) { diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c index 7b3b9d1..e2478b91 100644 --- a/arch/x86/kernel/kprobes/opt.c @@ -25728,10 +25990,33 @@ index c2bedae..25e7ab60 100644 .name = "data", .mode = S_IRUGO, diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c -index c37886d..d851d32 100644 +index c37886d..f43b63d 100644 --- a/arch/x86/kernel/ldt.c +++ b/arch/x86/kernel/ldt.c -@@ -66,13 +66,13 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload) +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -20,6 +21,14 @@ + #include + #include + ++#ifdef CONFIG_GRKERNSEC ++int sysctl_modify_ldt __read_only = 0; ++#elif defined(CONFIG_DEFAULT_MODIFY_LDT_SYSCALL) ++int sysctl_modify_ldt __read_only = 1; ++#else ++int sysctl_modify_ldt __read_only = 0; ++#endif ++ + #ifdef CONFIG_SMP + static void flush_ldt(void *current_mm) + { +@@ -66,13 +75,13 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload) if (reload) { #ifdef CONFIG_SMP preempt_disable(); @@ -25747,7 +26032,7 @@ index c37886d..d851d32 100644 #endif } if (oldsize) { -@@ -94,7 +94,7 @@ static inline int copy_ldt(mm_context_t *new, mm_context_t *old) +@@ -94,7 +103,7 @@ static inline int copy_ldt(mm_context_t *new, mm_context_t *old) return err; for (i = 0; i < old->size; i++) @@ -25756,7 +26041,7 @@ index c37886d..d851d32 100644 return 0; } -@@ -115,6 +115,24 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm) +@@ -115,6 +124,24 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm) retval = copy_ldt(&mm->context, &old_mm->context); mutex_unlock(&old_mm->context.lock); } @@ -25770,7 +26055,7 @@ index c37886d..d851d32 100644 + mm->context.user_cs_limit = ~0UL; + +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP) -+ cpus_clear(mm->context.cpu_user_cs_mask); ++ cpumask_clear(&mm->context.cpu_user_cs_mask); +#endif + +#endif @@ -25781,7 +26066,7 @@ index c37886d..d851d32 100644 return retval; } -@@ -229,6 +247,13 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode) +@@ -229,6 +256,13 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode) } } @@ -25795,6 +26080,22 @@ index c37886d..d851d32 100644 if (!IS_ENABLED(CONFIG_X86_16BIT) && !ldt_info.seg_32bit) { error = -EINVAL; goto out_unlock; +@@ -254,6 +288,15 @@ asmlinkage int sys_modify_ldt(int func, void __user *ptr, + { + int ret = -ENOSYS; + ++ if (!sysctl_modify_ldt) { ++ printk_ratelimited(KERN_INFO ++ "Denied a call to modify_ldt() from %s[%d] (uid: %d)." ++ " Adjust sysctl if this was not an exploit attempt.\n", ++ current->comm, task_pid_nr(current), ++ from_kuid_munged(current_user_ns(), current_uid())); ++ return ret; ++ } ++ + switch (func) { + case 0: + ret = read_ldt(ptr, bytecount); diff --git a/arch/x86/kernel/livepatch.c b/arch/x86/kernel/livepatch.c index ff3c3101d..d7c0cd8 100644 --- a/arch/x86/kernel/livepatch.c @@ -25945,10 +26246,10 @@ index 94ea120..4154cea 100644 +ENDPROC(return_to_handler) #endif diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c -index d1ac80b..f593701 100644 +index 005c03e..2f440cd 100644 --- a/arch/x86/kernel/module.c +++ b/arch/x86/kernel/module.c -@@ -82,17 +82,17 @@ static unsigned long int get_module_load_offset(void) +@@ -75,17 +75,17 @@ static unsigned long int get_module_load_offset(void) } #endif @@ -25970,7 +26271,7 @@ index d1ac80b..f593701 100644 __builtin_return_address(0)); if (p && (kasan_module_alloc(p, size) < 0)) { vfree(p); -@@ -102,6 +102,51 @@ void *module_alloc(unsigned long size) +@@ -95,6 +95,51 @@ void *module_alloc(unsigned long size) return p; } @@ -26022,7 +26323,7 @@ index d1ac80b..f593701 100644 #ifdef CONFIG_X86_32 int apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, -@@ -112,14 +157,16 @@ int apply_relocate(Elf32_Shdr *sechdrs, +@@ -105,14 +150,16 @@ int apply_relocate(Elf32_Shdr *sechdrs, unsigned int i; Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr; Elf32_Sym *sym; @@ -26042,7 +26343,7 @@ index d1ac80b..f593701 100644 /* This is the symbol it is referring to. Note that all undefined symbols have been resolved. */ sym = (Elf32_Sym *)sechdrs[symindex].sh_addr -@@ -128,11 +175,15 @@ int apply_relocate(Elf32_Shdr *sechdrs, +@@ -121,11 +168,15 @@ int apply_relocate(Elf32_Shdr *sechdrs, switch (ELF32_R_TYPE(rel[i].r_info)) { case R_386_32: /* We add the value into the location given */ @@ -26060,7 +26361,7 @@ index d1ac80b..f593701 100644 break; default: pr_err("%s: Unknown relocation: %u\n", -@@ -177,21 +228,30 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, +@@ -170,21 +221,30 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, case R_X86_64_NONE: break; case R_X86_64_64: @@ -26136,7 +26437,7 @@ index 113e707..0a690e1 100644 }; diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c -index c3e985d..110a36a 100644 +index c3e985d..f690edd 100644 --- a/arch/x86/kernel/nmi.c +++ b/arch/x86/kernel/nmi.c @@ -98,16 +98,16 @@ fs_initcall(nmi_warning_debugfs); @@ -26214,9 +26515,116 @@ index c3e985d..110a36a 100644 break; } } -@@ -528,6 +529,17 @@ static inline void nmi_nesting_postprocess(void) - dotraplinkage notrace void - do_nmi(struct pt_regs *regs, long error_code) +@@ -408,15 +409,15 @@ static void default_do_nmi(struct pt_regs *regs) + NOKPROBE_SYMBOL(default_do_nmi); + + /* +- * NMIs can hit breakpoints which will cause it to lose its +- * NMI context with the CPU when the breakpoint does an iret. +- */ +-#ifdef CONFIG_X86_32 +-/* +- * For i386, NMIs use the same stack as the kernel, and we can +- * add a workaround to the iret problem in C (preventing nested +- * NMIs if an NMI takes a trap). Simply have 3 states the NMI +- * can be in: ++ * NMIs can page fault or hit breakpoints which will cause it to lose ++ * its NMI context with the CPU when the breakpoint or page fault does an IRET. ++ * ++ * As a result, NMIs can nest if NMIs get unmasked due an IRET during ++ * NMI processing. On x86_64, the asm glue protects us from nested NMIs ++ * if the outer NMI came from kernel mode, but we can still nest if the ++ * outer NMI came from user mode. ++ * ++ * To handle these nested NMIs, we have three states: + * + * 1) not running + * 2) executing +@@ -430,15 +431,14 @@ NOKPROBE_SYMBOL(default_do_nmi); + * (Note, the latch is binary, thus multiple NMIs triggering, + * when one is running, are ignored. Only one NMI is restarted.) + * +- * If an NMI hits a breakpoint that executes an iret, another +- * NMI can preempt it. We do not want to allow this new NMI +- * to run, but we want to execute it when the first one finishes. +- * We set the state to "latched", and the exit of the first NMI will +- * perform a dec_return, if the result is zero (NOT_RUNNING), then +- * it will simply exit the NMI handler. If not, the dec_return +- * would have set the state to NMI_EXECUTING (what we want it to +- * be when we are running). In this case, we simply jump back +- * to rerun the NMI handler again, and restart the 'latched' NMI. ++ * If an NMI executes an iret, another NMI can preempt it. We do not ++ * want to allow this new NMI to run, but we want to execute it when the ++ * first one finishes. We set the state to "latched", and the exit of ++ * the first NMI will perform a dec_return, if the result is zero ++ * (NOT_RUNNING), then it will simply exit the NMI handler. If not, the ++ * dec_return would have set the state to NMI_EXECUTING (what we want it ++ * to be when we are running). In this case, we simply jump back to ++ * rerun the NMI handler again, and restart the 'latched' NMI. + * + * No trap (breakpoint or page fault) should be hit before nmi_restart, + * thus there is no race between the first check of state for NOT_RUNNING +@@ -461,49 +461,47 @@ enum nmi_states { + static DEFINE_PER_CPU(enum nmi_states, nmi_state); + static DEFINE_PER_CPU(unsigned long, nmi_cr2); + +-#define nmi_nesting_preprocess(regs) \ +- do { \ +- if (this_cpu_read(nmi_state) != NMI_NOT_RUNNING) { \ +- this_cpu_write(nmi_state, NMI_LATCHED); \ +- return; \ +- } \ +- this_cpu_write(nmi_state, NMI_EXECUTING); \ +- this_cpu_write(nmi_cr2, read_cr2()); \ +- } while (0); \ +- nmi_restart: +- +-#define nmi_nesting_postprocess() \ +- do { \ +- if (unlikely(this_cpu_read(nmi_cr2) != read_cr2())) \ +- write_cr2(this_cpu_read(nmi_cr2)); \ +- if (this_cpu_dec_return(nmi_state)) \ +- goto nmi_restart; \ +- } while (0) +-#else /* x86_64 */ ++#ifdef CONFIG_X86_64 + /* +- * In x86_64 things are a bit more difficult. This has the same problem +- * where an NMI hitting a breakpoint that calls iret will remove the +- * NMI context, allowing a nested NMI to enter. What makes this more +- * difficult is that both NMIs and breakpoints have their own stack. +- * When a new NMI or breakpoint is executed, the stack is set to a fixed +- * point. If an NMI is nested, it will have its stack set at that same +- * fixed address that the first NMI had, and will start corrupting the +- * stack. This is handled in entry_64.S, but the same problem exists with +- * the breakpoint stack. ++ * In x86_64, we need to handle breakpoint -> NMI -> breakpoint. Without ++ * some care, the inner breakpoint will clobber the outer breakpoint's ++ * stack. + * +- * If a breakpoint is being processed, and the debug stack is being used, +- * if an NMI comes in and also hits a breakpoint, the stack pointer +- * will be set to the same fixed address as the breakpoint that was +- * interrupted, causing that stack to be corrupted. To handle this case, +- * check if the stack that was interrupted is the debug stack, and if +- * so, change the IDT so that new breakpoints will use the current stack +- * and not switch to the fixed address. On return of the NMI, switch back +- * to the original IDT. ++ * If a breakpoint is being processed, and the debug stack is being ++ * used, if an NMI comes in and also hits a breakpoint, the stack ++ * pointer will be set to the same fixed address as the breakpoint that ++ * was interrupted, causing that stack to be corrupted. To handle this ++ * case, check if the stack that was interrupted is the debug stack, and ++ * if so, change the IDT so that new breakpoints will use the current ++ * stack and not switch to the fixed address. On return of the NMI, ++ * switch back to the original IDT. + */ + static DEFINE_PER_CPU(int, update_debug_stack); ++#endif + +-static inline void nmi_nesting_preprocess(struct pt_regs *regs) ++dotraplinkage notrace void ++do_nmi(struct pt_regs *regs, long error_code) { + +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC) @@ -26229,9 +26637,61 @@ index c3e985d..110a36a 100644 + } +#endif + - nmi_nesting_preprocess(regs); ++ if (this_cpu_read(nmi_state) != NMI_NOT_RUNNING) { ++ this_cpu_write(nmi_state, NMI_LATCHED); ++ return; ++ } ++ this_cpu_write(nmi_state, NMI_EXECUTING); ++ this_cpu_write(nmi_cr2, read_cr2()); ++nmi_restart: ++ ++#ifdef CONFIG_X86_64 + /* + * If we interrupted a breakpoint, it is possible that + * the nmi handler will have breakpoints too. We need to +@@ -514,22 +512,8 @@ static inline void nmi_nesting_preprocess(struct pt_regs *regs) + debug_stack_set_zero(); + this_cpu_write(update_debug_stack, 1); + } +-} +- +-static inline void nmi_nesting_postprocess(void) +-{ +- if (unlikely(this_cpu_read(update_debug_stack))) { +- debug_stack_reset(); +- this_cpu_write(update_debug_stack, 0); +- } +-} + #endif +-dotraplinkage notrace void +-do_nmi(struct pt_regs *regs, long error_code) +-{ +- nmi_nesting_preprocess(regs); +- nmi_enter(); + + inc_irq_stat(__nmi_count); +@@ -539,8 +523,17 @@ do_nmi(struct pt_regs *regs, long error_code) + + nmi_exit(); + +- /* On i386, may loop back to preprocess */ +- nmi_nesting_postprocess(); ++#ifdef CONFIG_X86_64 ++ if (unlikely(this_cpu_read(update_debug_stack))) { ++ debug_stack_reset(); ++ this_cpu_write(update_debug_stack, 0); ++ } ++#endif ++ ++ if (unlikely(this_cpu_read(nmi_cr2) != read_cr2())) ++ write_cr2(this_cpu_read(nmi_cr2)); ++ if (this_cpu_dec_return(nmi_state)) ++ goto nmi_restart; + } + NOKPROBE_SYMBOL(do_nmi); + diff --git a/arch/x86/kernel/nmi_selftest.c b/arch/x86/kernel/nmi_selftest.c index 6d9582e..f746287 100644 --- a/arch/x86/kernel/nmi_selftest.c @@ -26268,7 +26728,7 @@ index bbb6c73..24a58ef 100644 .lock_spinning = __PV_IS_CALLEE_SAVE(paravirt_nop), .unlock_kick = paravirt_nop, diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c -index 548d25f..f8fb99c 100644 +index c614dd4..9ad659e 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c @@ -56,6 +56,9 @@ u64 _paravirt_ident_64(u64 x) @@ -26389,7 +26849,7 @@ index 548d25f..f8fb99c 100644 .set_pgd = native_set_pgd, + .set_pgd_batched = native_set_pgd_batched, #endif - #endif /* PAGETABLE_LEVELS >= 3 */ + #endif /* CONFIG_PGTABLE_LEVELS >= 3 */ @@ -479,6 +492,12 @@ struct pv_mmu_ops pv_mmu_ops = { }, @@ -26472,20 +26932,28 @@ index 77dd0ad..9ec4723 100644 dma_generic_free_coherent(dev, size, vaddr, dma_addr, attrs); } diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c -index a388bb8..97064ad 100644 +index 6e338e3..82f946e 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -38,7 +38,8 @@ * section. Since TSS's are completely CPU-local, we want them * on exact cacheline boundaries, to eliminate cacheline ping-pong. */ --__visible DEFINE_PER_CPU_SHARED_ALIGNED(struct tss_struct, init_tss) = INIT_TSS; -+struct tss_struct init_tss[NR_CPUS] __visible ____cacheline_internodealigned_in_smp = { [0 ... NR_CPUS-1] = INIT_TSS }; -+EXPORT_SYMBOL(init_tss); +-__visible DEFINE_PER_CPU_SHARED_ALIGNED(struct tss_struct, cpu_tss) = { ++struct tss_struct cpu_tss[NR_CPUS] __visible ____cacheline_internodealigned_in_smp = { ++ [0 ... NR_CPUS-1] = { + .x86_tss = { + .sp0 = TOP_OF_INIT_STACK, + #ifdef CONFIG_X86_32 +@@ -56,6 +57,7 @@ __visible DEFINE_PER_CPU_SHARED_ALIGNED(struct tss_struct, cpu_tss) = { + */ + .io_bitmap = { [0 ... IO_BITMAP_LONGS] = ~0 }, + #endif ++} + }; + EXPORT_PER_CPU_SYMBOL(cpu_tss); - #ifdef CONFIG_X86_64 - static DEFINE_PER_CPU(unsigned char, is_idle); -@@ -96,7 +97,7 @@ void arch_task_cache_init(void) +@@ -115,7 +117,7 @@ void arch_task_cache_init(void) task_xstate_cachep = kmem_cache_create("task_xstate", xstate_size, __alignof__(union thread_xstate), @@ -26494,16 +26962,16 @@ index a388bb8..97064ad 100644 setup_xstate_comp(); } -@@ -110,7 +111,7 @@ void exit_thread(void) +@@ -129,7 +131,7 @@ void exit_thread(void) unsigned long *bp = t->io_bitmap_ptr; if (bp) { -- struct tss_struct *tss = &per_cpu(init_tss, get_cpu()); -+ struct tss_struct *tss = init_tss + get_cpu(); +- struct tss_struct *tss = &per_cpu(cpu_tss, get_cpu()); ++ struct tss_struct *tss = cpu_tss + get_cpu(); t->io_bitmap_ptr = NULL; clear_thread_flag(TIF_IO_BITMAP); -@@ -130,6 +131,9 @@ void flush_thread(void) +@@ -149,6 +151,9 @@ void flush_thread(void) { struct task_struct *tsk = current; @@ -26512,8 +26980,8 @@ index a388bb8..97064ad 100644 +#endif flush_ptrace_hw_breakpoint(tsk); memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); - drop_init_fpu(tsk); -@@ -276,7 +280,7 @@ static void __exit_idle(void) + +@@ -302,7 +307,7 @@ static void __exit_idle(void) void exit_idle(void) { /* idle loop has pid 0 */ @@ -26522,7 +26990,7 @@ index a388bb8..97064ad 100644 return; __exit_idle(); } -@@ -329,7 +333,7 @@ bool xen_set_default_idle(void) +@@ -355,7 +360,7 @@ bool xen_set_default_idle(void) return ret; } #endif @@ -26531,32 +26999,35 @@ index a388bb8..97064ad 100644 { local_irq_disable(); /* -@@ -508,16 +512,37 @@ static int __init idle_setup(char *str) +@@ -531,16 +536,43 @@ static int __init idle_setup(char *str) } early_param("idle", idle_setup); -unsigned long arch_align_stack(unsigned long sp) -+#ifdef CONFIG_PAX_RANDKSTACK -+void pax_randomize_kstack(struct pt_regs *regs) - { +-{ - if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space) - sp -= get_random_int() % 8192; - return sp & ~0xf; -} +- + unsigned long arch_randomize_brk(struct mm_struct *mm) + { + unsigned long range_end = mm->brk + 0x02000000; + return randomize_range(mm->brk, range_end, 0) ? : mm->brk; + } + ++#ifdef CONFIG_PAX_RANDKSTACK ++void pax_randomize_kstack(struct pt_regs *regs) ++{ + struct thread_struct *thread = ¤t->thread; + unsigned long time; - --unsigned long arch_randomize_brk(struct mm_struct *mm) --{ -- unsigned long range_end = mm->brk + 0x02000000; -- return randomize_range(mm->brk, range_end, 0) ? : mm->brk; --} ++ + if (!randomize_va_space) + return; + + if (v8086_mode(regs)) + return; - ++ + rdtscl(time); + + /* P4 seems to return a 0 LSB, ignore it */ @@ -26572,7 +27043,7 @@ index a388bb8..97064ad 100644 +#endif + + thread->sp0 ^= time; -+ load_sp0(init_tss + smp_processor_id(), thread); ++ load_sp0(cpu_tss + smp_processor_id(), thread); + +#ifdef CONFIG_X86_64 + this_cpu_write(kernel_stack, thread->sp0); @@ -26580,7 +27051,7 @@ index a388bb8..97064ad 100644 +} +#endif diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c -index 603c4f9..3a105d7 100644 +index 8ed2106..1345704 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c @@ -64,6 +64,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread"); @@ -26591,12 +27062,8 @@ index 603c4f9..3a105d7 100644 } void __show_regs(struct pt_regs *regs, int all) -@@ -73,19 +74,18 @@ void __show_regs(struct pt_regs *regs, int all) - unsigned long sp; - unsigned short ss, gs; - -- if (user_mode_vm(regs)) { -+ if (user_mode(regs)) { +@@ -76,16 +77,15 @@ void __show_regs(struct pt_regs *regs, int all) + if (user_mode(regs)) { sp = regs->sp; ss = regs->ss & 0xffff; - gs = get_user_gs(regs); @@ -26641,16 +27108,16 @@ index 603c4f9..3a105d7 100644 childregs->fs = __KERNEL_PERCPU; childregs->bx = sp; /* function */ childregs->bp = arg; -@@ -248,7 +249,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -244,7 +245,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) struct thread_struct *prev = &prev_p->thread, *next = &next_p->thread; int cpu = smp_processor_id(); -- struct tss_struct *tss = &per_cpu(init_tss, cpu); -+ struct tss_struct *tss = init_tss + cpu; +- struct tss_struct *tss = &per_cpu(cpu_tss, cpu); ++ struct tss_struct *tss = cpu_tss + cpu; fpu_switch_t fpu; /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ -@@ -272,6 +273,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -263,6 +264,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) */ lazy_save_gs(prev->gs); @@ -26661,20 +27128,24 @@ index 603c4f9..3a105d7 100644 /* * Load the per-thread Thread-Local Storage descriptor. */ -@@ -310,9 +315,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -306,12 +311,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) + * current_thread_info(). */ - arch_end_context_switch(next_p); - + load_sp0(tss, next); - this_cpu_write(kernel_stack, -- (unsigned long)task_stack_page(next_p) + -- THREAD_SIZE - KERNEL_STACK_OFFSET); +- (unsigned long)task_stack_page(next_p) + +- THREAD_SIZE); +- this_cpu_write(cpu_current_top_of_stack, +- (unsigned long)task_stack_page(next_p) + +- THREAD_SIZE); + this_cpu_write(current_task, next_p); + this_cpu_write(current_tinfo, &next_p->tinfo); + this_cpu_write(kernel_stack, next->sp0); ++ this_cpu_write(cpu_current_top_of_stack, next->sp0); /* * Restore %gs if needed (which is common) -@@ -322,8 +327,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -321,8 +324,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) switch_fpu_finish(next_p, fpu); @@ -26683,16 +27154,16 @@ index 603c4f9..3a105d7 100644 return prev_p; } -@@ -353,4 +356,3 @@ unsigned long get_wchan(struct task_struct *p) +@@ -352,4 +353,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 67fcc43..0d2c630 100644 +index ddfdbf7..625417c 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c -@@ -158,10 +158,11 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, +@@ -158,9 +158,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, struct pt_regs *childregs; struct task_struct *me = current; @@ -26700,12 +27171,11 @@ index 67fcc43..0d2c630 100644 + p->thread.sp0 = (unsigned long)task_stack_page(p) + THREAD_SIZE - 16; childregs = task_pt_regs(p); p->thread.sp = (unsigned long) childregs; - p->thread.usersp = me->thread.usersp; + p->tinfo.lowest_stack = (unsigned long)task_stack_page(p) + 2 * sizeof(unsigned long); set_tsk_thread_flag(p, TIF_FORK); p->thread.io_bitmap_ptr = NULL; -@@ -171,6 +172,8 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, +@@ -170,6 +171,8 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, p->thread.fs = p->thread.fsindex ? 0 : me->thread.fs; savesegment(es, p->thread.es); savesegment(ds, p->thread.ds); @@ -26714,16 +27184,16 @@ index 67fcc43..0d2c630 100644 memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); if (unlikely(p->flags & PF_KTHREAD)) { -@@ -277,7 +280,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -275,7 +278,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; +- struct tss_struct *tss = &per_cpu(cpu_tss, cpu); ++ struct tss_struct *tss = cpu_tss + cpu; unsigned fsindex, gsindex; fpu_switch_t fpu; -@@ -331,6 +334,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) +@@ -326,6 +329,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) if (unlikely(next->ds | prev->ds)) loadsegment(ds, next->ds); @@ -26734,26 +27204,25 @@ index 67fcc43..0d2c630 100644 /* * Switch FS and GS. * -@@ -404,6 +411,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) - prev->usersp = this_cpu_read(old_rsp); - this_cpu_write(old_rsp, next->usersp); +@@ -397,6 +404,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) + * Switch the PDA and FPU contexts. + */ this_cpu_write(current_task, next_p); + this_cpu_write(current_tinfo, &next_p->tinfo); /* * If it were not for PREEMPT_ACTIVE we could guarantee that the -@@ -413,9 +421,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) - task_thread_info(prev_p)->saved_preempt_count = this_cpu_read(__preempt_count); - this_cpu_write(__preempt_count, task_thread_info(next_p)->saved_preempt_count); +@@ -409,8 +417,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) + /* Reload esp0 and ss1. This changes current_thread_info(). */ + load_sp0(tss, next); - this_cpu_write(kernel_stack, -- (unsigned long)task_stack_page(next_p) + -- THREAD_SIZE - KERNEL_STACK_OFFSET); +- (unsigned long)task_stack_page(next_p) + THREAD_SIZE); + this_cpu_write(kernel_stack, next->sp0); /* * Now maybe reload the debug registers and handle I/O bitmaps -@@ -485,12 +491,11 @@ unsigned long get_wchan(struct task_struct *p) +@@ -508,12 +515,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); @@ -26769,7 +27238,7 @@ index 67fcc43..0d2c630 100644 ip = *(u64 *)(fp+8); if (!in_sched_functions(ip)) diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c -index e510618..5165ac0 100644 +index a7bc794..094ee8e 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -186,10 +186,10 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs) @@ -26785,7 +27254,7 @@ index e510618..5165ac0 100644 if (prev_esp) return (unsigned long)prev_esp; -@@ -452,6 +452,20 @@ static int putreg(struct task_struct *child, +@@ -446,6 +446,20 @@ static int putreg(struct task_struct *child, if (child->thread.gs != value) return do_arch_prctl(child, ARCH_SET_GS, value); return 0; @@ -26806,7 +27275,7 @@ index e510618..5165ac0 100644 #endif } -@@ -588,7 +602,7 @@ static void ptrace_triggered(struct perf_event *bp, +@@ -582,7 +596,7 @@ static void ptrace_triggered(struct perf_event *bp, static unsigned long ptrace_get_dr7(struct perf_event *bp[]) { int i; @@ -26815,7 +27284,7 @@ index e510618..5165ac0 100644 struct arch_hw_breakpoint *info; for (i = 0; i < HBP_NUM; i++) { -@@ -822,7 +836,7 @@ long arch_ptrace(struct task_struct *child, long request, +@@ -816,7 +830,7 @@ long arch_ptrace(struct task_struct *child, long request, unsigned long addr, unsigned long data) { int ret; @@ -26824,7 +27293,7 @@ index e510618..5165ac0 100644 switch (request) { /* read the word at location addr in the USER area. */ -@@ -907,14 +921,14 @@ long arch_ptrace(struct task_struct *child, long request, +@@ -901,14 +915,14 @@ long arch_ptrace(struct task_struct *child, long request, if ((int) addr < 0) return -EIO; ret = do_get_thread_area(child, addr, @@ -26841,7 +27310,7 @@ index e510618..5165ac0 100644 break; #endif -@@ -1292,7 +1306,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, +@@ -1286,7 +1300,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, #ifdef CONFIG_X86_64 @@ -26850,7 +27319,7 @@ index e510618..5165ac0 100644 [REGSET_GENERAL] = { .core_note_type = NT_PRSTATUS, .n = sizeof(struct user_regs_struct) / sizeof(long), -@@ -1333,7 +1347,7 @@ static const struct user_regset_view user_x86_64_view = { +@@ -1327,7 +1341,7 @@ static const struct user_regset_view user_x86_64_view = { #endif /* CONFIG_X86_64 */ #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION @@ -26859,7 +27328,7 @@ index e510618..5165ac0 100644 [REGSET_GENERAL] = { .core_note_type = NT_PRSTATUS, .n = sizeof(struct user_regs_struct32) / sizeof(u32), -@@ -1386,7 +1400,7 @@ static const struct user_regset_view user_x86_32_view = { +@@ -1380,7 +1394,7 @@ static const struct user_regset_view user_x86_32_view = { */ u64 xstate_fx_sw_bytes[USER_XSTATE_FX_SW_WORDS]; @@ -26868,16 +27337,16 @@ index e510618..5165ac0 100644 { #ifdef CONFIG_X86_64 x86_64_regsets[REGSET_XSTATE].n = size / sizeof(u64); -@@ -1421,7 +1435,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, +@@ -1415,7 +1429,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, memset(info, 0, sizeof(*info)); info->si_signo = SIGTRAP; info->si_code = si_code; -- info->si_addr = user_mode_vm(regs) ? (void __user *)regs->ip : NULL; +- info->si_addr = user_mode(regs) ? (void __user *)regs->ip : NULL; + info->si_addr = user_mode(regs) ? (__force void __user *)regs->ip : NULL; } void user_single_step_siginfo(struct task_struct *tsk, -@@ -1455,6 +1469,10 @@ static void do_audit_syscall_entry(struct pt_regs *regs, u32 arch) +@@ -1449,6 +1463,10 @@ static void do_audit_syscall_entry(struct pt_regs *regs, u32 arch) } } @@ -26888,7 +27357,7 @@ index e510618..5165ac0 100644 /* * We can return 0 to resume the syscall or anything else to go to phase * 2. If we resume the syscall, we need to put something appropriate in -@@ -1562,6 +1580,11 @@ long syscall_trace_enter_phase2(struct pt_regs *regs, u32 arch, +@@ -1556,6 +1574,11 @@ long syscall_trace_enter_phase2(struct pt_regs *regs, u32 arch, BUG_ON(regs != task_pt_regs(current)); @@ -26900,7 +27369,7 @@ index e510618..5165ac0 100644 /* * If we stepped into a sysenter/syscall insn, it trapped in * kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP. -@@ -1620,6 +1643,11 @@ void syscall_trace_leave(struct pt_regs *regs) +@@ -1614,6 +1637,11 @@ void syscall_trace_leave(struct pt_regs *regs) */ user_exit(); @@ -26913,7 +27382,7 @@ index e510618..5165ac0 100644 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c -index e5ecd20..60f7eef 100644 +index 2f355d2..e75ed0a 100644 --- a/arch/x86/kernel/pvclock.c +++ b/arch/x86/kernel/pvclock.c @@ -51,11 +51,11 @@ void pvclock_touch_watchdogs(void) @@ -27069,7 +27538,7 @@ index c8e41e9..64049ef 100644 /* * PCI ids solely used for fixups_table go here diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S -index 3fd2c69..a444264 100644 +index 98111b3..73ca125 100644 --- a/arch/x86/kernel/relocate_kernel_64.S +++ b/arch/x86/kernel/relocate_kernel_64.S @@ -96,8 +96,7 @@ relocate_kernel: @@ -27083,7 +27552,7 @@ index 3fd2c69..a444264 100644 identity_mapped: /* set return address to 0 if not preserving context */ diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index 0a2421c..11f3f36 100644 +index d74ac33..d9efe04 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -111,6 +111,7 @@ @@ -27128,7 +27597,7 @@ index 0a2421c..11f3f36 100644 u64 size = __pa_symbol(_end) - start; /* -@@ -855,8 +858,12 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) +@@ -860,8 +863,12 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) void __init setup_arch(char **cmdline_p) { @@ -27141,7 +27610,7 @@ index 0a2421c..11f3f36 100644 early_reserve_initrd(); -@@ -954,16 +961,16 @@ void __init setup_arch(char **cmdline_p) +@@ -959,16 +966,16 @@ void __init setup_arch(char **cmdline_p) if (!boot_params.hdr.root_flags) root_mountflags &= ~MS_RDONLY; @@ -27240,10 +27709,10 @@ index e4fcb87..9c06c55 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 e504246..ba10432 100644 +index 1ea14fd..b16147f 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c -@@ -190,7 +190,7 @@ static unsigned long align_sigframe(unsigned long sp) +@@ -183,7 +183,7 @@ static unsigned long align_sigframe(unsigned long sp) * Align the stack pointer according to the i386 ABI, * i.e. so that on function entry ((sp + 4) & 15) == 0. */ @@ -27252,7 +27721,7 @@ index e504246..ba10432 100644 #else /* !CONFIG_X86_32 */ sp = round_down(sp, 16) - 8; #endif -@@ -298,10 +298,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set, +@@ -291,10 +291,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set, } if (current->mm->context.vdso) @@ -27265,7 +27734,7 @@ index e504246..ba10432 100644 if (ksig->ka.sa.sa_flags & SA_RESTORER) restorer = ksig->ka.sa.sa_restorer; -@@ -315,7 +314,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set, +@@ -308,7 +307,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set, * reasons and because gdb uses it as a signature to notice * signal handler stack frames. */ @@ -27274,7 +27743,7 @@ index e504246..ba10432 100644 if (err) return -EFAULT; -@@ -362,8 +361,10 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig, +@@ -355,8 +354,10 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig, save_altstack_ex(&frame->uc.uc_stack, regs->sp); /* Set up to return from userspace. */ @@ -27287,7 +27756,7 @@ index e504246..ba10432 100644 if (ksig->ka.sa.sa_flags & SA_RESTORER) restorer = ksig->ka.sa.sa_restorer; put_user_ex(restorer, &frame->pretcode); -@@ -375,7 +376,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig, +@@ -368,7 +369,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig, * reasons and because gdb uses it as a signature to notice * signal handler stack frames. */ @@ -27296,9 +27765,9 @@ index e504246..ba10432 100644 } put_user_catch(err); err |= copy_siginfo_to_user(&frame->info, &ksig->info); -@@ -611,7 +612,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) +@@ -598,7 +599,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) { - int usig = signr_convert(ksig->sig); + int usig = ksig->sig; sigset_t *set = sigmask_to_save(); - compat_sigset_t *cset = (compat_sigset_t *) set; + sigset_t sigcopy; @@ -27310,7 +27779,7 @@ index e504246..ba10432 100644 /* Set up the stack frame */ if (is_ia32_frame()) { -@@ -622,7 +628,7 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) +@@ -609,7 +615,7 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) } else if (is_x32_frame()) { return x32_setup_rt_frame(ksig, cset, regs); } else { @@ -27333,10 +27802,10 @@ index be8e1bd..a3d93fa 100644 .smp_prepare_cpus = native_smp_prepare_cpus, .smp_cpus_done = native_smp_cpus_done, diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c -index febc6aa..37d8edf 100644 +index 50e547e..d59d06a 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c -@@ -229,14 +229,17 @@ static void notrace start_secondary(void *unused) +@@ -226,14 +226,17 @@ static void notrace start_secondary(void *unused) enable_start_cpu0 = 0; @@ -27358,34 +27827,44 @@ index febc6aa..37d8edf 100644 /* * Check TSC synchronization with the BP: */ -@@ -800,8 +803,9 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle) +@@ -782,18 +785,17 @@ void common_cpu_up(unsigned int cpu, struct task_struct *idle) alternatives_enable_smp(); - idle->thread.sp = (unsigned long) (((struct pt_regs *) -- (THREAD_SIZE + task_stack_page(idle))) - 1); -+ (THREAD_SIZE - 16 + task_stack_page(idle))) - 1); per_cpu(current_task, cpu) = idle; + per_cpu(current_tinfo, cpu) = &idle->tinfo; #ifdef CONFIG_X86_32 /* Stack for startup_32 can be just as for start_secondary onwards */ -@@ -810,10 +814,10 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle) + irq_ctx_init(cpu); +- per_cpu(cpu_current_top_of_stack, cpu) = +- (unsigned long)task_stack_page(idle) + THREAD_SIZE; ++ per_cpu(cpu_current_top_of_stack, cpu) = (unsigned long)task_stack_page(idle) - 16 + THREAD_SIZE; + #else clear_tsk_thread_flag(idle, TIF_FORK); initial_gs = per_cpu_offset(cpu); #endif - per_cpu(kernel_stack, cpu) = -- (unsigned long)task_stack_page(idle) - -- KERNEL_STACK_OFFSET + THREAD_SIZE; +- (unsigned long)task_stack_page(idle) + THREAD_SIZE; + per_cpu(kernel_stack, cpu) = (unsigned long)task_stack_page(idle) - 16 + THREAD_SIZE; + } + + /* +@@ -814,9 +816,11 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle) + unsigned long timeout; + + idle->thread.sp = (unsigned long) (((struct pt_regs *) +- (THREAD_SIZE + task_stack_page(idle))) - 1); ++ (THREAD_SIZE - 16 + task_stack_page(idle))) - 1); + + pax_open_kernel(); early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu); + pax_close_kernel(); initial_code = (unsigned long)start_secondary; stack_start = idle->thread.sp; -@@ -953,6 +957,15 @@ int native_cpu_up(unsigned int cpu, struct task_struct *tidle) - /* the FPU context is blank, nobody can own it */ - __cpu_disable_lazy_restore(cpu); +@@ -961,6 +965,15 @@ int native_cpu_up(unsigned int cpu, struct task_struct *tidle) + + common_cpu_up(cpu, tidle); +#ifdef CONFIG_PAX_PER_CPU_PGD + clone_pgd_range(get_cpu_pgd(cpu, kernel) + KERNEL_PGD_BOUNDARY, @@ -27632,10 +28111,10 @@ index 0000000..5877189 + return arch_get_unmapped_area(filp, addr0, len, pgoff, flags); +} diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c -index 30277e2..5664a29 100644 +index 10e0272..b4bb9a7 100644 --- a/arch/x86/kernel/sys_x86_64.c +++ b/arch/x86/kernel/sys_x86_64.c -@@ -81,8 +81,8 @@ out: +@@ -97,8 +97,8 @@ out: return error; } @@ -27646,7 +28125,7 @@ index 30277e2..5664a29 100644 { if (!test_thread_flag(TIF_ADDR32) && (flags & MAP_32BIT)) { unsigned long new_begin; -@@ -101,7 +101,7 @@ static void find_start_end(unsigned long flags, unsigned long *begin, +@@ -117,7 +117,7 @@ static void find_start_end(unsigned long flags, unsigned long *begin, *begin = new_begin; } } else { @@ -27655,7 +28134,7 @@ index 30277e2..5664a29 100644 *end = TASK_SIZE; } } -@@ -114,20 +114,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -130,20 +130,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, struct vm_area_struct *vma; struct vm_unmapped_area_info info; unsigned long begin, end; @@ -27683,15 +28162,15 @@ index 30277e2..5664a29 100644 return addr; } -@@ -137,6 +141,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, - info.high_limit = end; - info.align_mask = filp ? get_align_mask() : 0; - info.align_offset = pgoff << PAGE_SHIFT; +@@ -157,6 +161,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, + info.align_mask = get_align_mask(); + info.align_offset += get_align_bits(); + } + info.threadstack_offset = offset; return vm_unmapped_area(&info); } -@@ -149,6 +154,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -169,6 +174,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, struct mm_struct *mm = current->mm; unsigned long addr = addr0; struct vm_unmapped_area_info info; @@ -27699,7 +28178,7 @@ index 30277e2..5664a29 100644 /* requested length too big for entire address space */ if (len > TASK_SIZE) -@@ -161,12 +167,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -181,12 +187,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, if (!test_thread_flag(TIF_ADDR32) && (flags & MAP_32BIT)) goto bottomup; @@ -27717,10 +28196,10 @@ index 30277e2..5664a29 100644 return addr; } -@@ -176,6 +185,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, - info.high_limit = mm->mmap_base; - info.align_mask = filp ? get_align_mask() : 0; - info.align_offset = pgoff << PAGE_SHIFT; +@@ -200,6 +209,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, + info.align_mask = get_align_mask(); + info.align_offset += get_align_bits(); + } + info.threadstack_offset = offset; addr = vm_unmapped_area(&info); if (!(addr & ~PAGE_MASK)) @@ -27788,15 +28267,12 @@ index 91a4496..42fc304 100644 #ifdef CONFIG_DEBUG_FS diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c -index 25adc0e..1df4349 100644 +index d39c091..1df4349 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) - { - unsigned long pc = instruction_pointer(regs); +@@ -32,7 +32,7 @@ unsigned long profile_pc(struct pt_regs *regs) -- if (!user_mode_vm(regs) && in_lock_functions(pc)) { -+ if (!user_mode(regs) && in_lock_functions(pc)) { + if (!user_mode(regs) && in_lock_functions(pc)) { #ifdef CONFIG_FRAME_POINTER - return *(unsigned long *)(regs->bp + sizeof(long)); + return ktla_ktva(*(unsigned long *)(regs->bp + sizeof(long))); @@ -27865,7 +28341,7 @@ index 1c113db..287b42e 100644 static int trace_irq_vector_refcount; static DEFINE_MUTEX(irq_vector_mutex); diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c -index 4ff5d16..736e3e1 100644 +index 324ab52..0cfd2d05 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -68,7 +68,7 @@ @@ -27886,43 +28362,16 @@ index 4ff5d16..736e3e1 100644 DECLARE_BITMAP(used_vectors, NR_VECTORS); EXPORT_SYMBOL_GPL(used_vectors); -@@ -112,7 +112,7 @@ enum ctx_state ist_enter(struct pt_regs *regs) - { - enum ctx_state prev_state; +@@ -174,7 +174,7 @@ void ist_begin_non_atomic(struct pt_regs *regs) + * will catch asm bugs and any attempt to use ist_preempt_enable + * from double_fault. + */ +- BUG_ON((unsigned long)(current_top_of_stack() - ++ BUG_ON((unsigned long)(current_top_of_stack(smp_processor_id()) - + current_stack_pointer()) >= THREAD_SIZE); -- if (user_mode_vm(regs)) { -+ if (user_mode(regs)) { - /* Other than that, we're just an exception. */ - prev_state = exception_enter(); - } else { -@@ -146,7 +146,7 @@ void ist_exit(struct pt_regs *regs, enum ctx_state prev_state) - /* Must be before exception_exit. */ preempt_count_sub(HARDIRQ_OFFSET); - -- if (user_mode_vm(regs)) -+ if (user_mode(regs)) - return exception_exit(prev_state); - else - rcu_nmi_exit(); -@@ -158,7 +158,7 @@ void ist_exit(struct pt_regs *regs, enum ctx_state prev_state) - * - * IST exception handlers normally cannot schedule. As a special - * exception, if the exception interrupted userspace code (i.e. -- * user_mode_vm(regs) would return true) and the exception was not -+ * user_mode(regs) would return true) and the exception was not - * a double fault, it can be safe to schedule. ist_begin_non_atomic() - * begins a non-atomic section within an ist_enter()/ist_exit() region. - * Callers are responsible for enabling interrupts themselves inside -@@ -167,7 +167,7 @@ void ist_exit(struct pt_regs *regs, enum ctx_state prev_state) - */ - void ist_begin_non_atomic(struct pt_regs *regs) - { -- BUG_ON(!user_mode_vm(regs)); -+ BUG_ON(!user_mode(regs)); - - /* - * Sanity check: we need to be on the normal thread stack. This -@@ -191,11 +191,11 @@ void ist_end_non_atomic(void) +@@ -191,7 +191,7 @@ void ist_end_non_atomic(void) } static nokprobe_inline int @@ -27930,18 +28379,8 @@ index 4ff5d16..736e3e1 100644 +do_trap_no_signal(struct task_struct *tsk, int trapnr, const char *str, struct pt_regs *regs, long error_code) { - #ifdef CONFIG_X86_32 -- if (regs->flags & X86_VM_MASK) { -+ if (v8086_mode(regs)) { - /* - * Traps 0, 1, 3, 4, and 5 should be forwarded to vm86. - * On nmi (interrupt 2), do_trap should not be called. -@@ -208,12 +208,24 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str, - return -1; - } - #endif -- if (!user_mode(regs)) { -+ if (!user_mode_novm(regs)) { + if (v8086_mode(regs)) { +@@ -211,8 +211,20 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str, if (!fixup_exception(regs)) { tsk->thread.error_code = error_code; tsk->thread.trap_nr = trapnr; @@ -27962,7 +28401,7 @@ index 4ff5d16..736e3e1 100644 return 0; } -@@ -252,7 +264,7 @@ static siginfo_t *fill_trap_info(struct pt_regs *regs, int signr, int trapnr, +@@ -251,7 +263,7 @@ static siginfo_t *fill_trap_info(struct pt_regs *regs, int signr, int trapnr, } static void @@ -27971,7 +28410,7 @@ index 4ff5d16..736e3e1 100644 long error_code, siginfo_t *info) { struct task_struct *tsk = current; -@@ -276,7 +288,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs, +@@ -275,7 +287,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs, if (show_unhandled_signals && unhandled_signal(tsk, signr) && printk_ratelimit()) { pr_info("%s[%d] trap %s ip:%lx sp:%lx error:%lx", @@ -27980,7 +28419,7 @@ index 4ff5d16..736e3e1 100644 regs->ip, regs->sp, error_code); print_vma_addr(" in ", regs->ip); pr_cont("\n"); -@@ -358,6 +370,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code) +@@ -357,6 +369,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code) tsk->thread.error_code = error_code; tsk->thread.trap_nr = X86_TRAP_DF; @@ -27992,33 +28431,7 @@ index 4ff5d16..736e3e1 100644 #ifdef CONFIG_DOUBLEFAULT df_debug(regs, error_code); #endif -@@ -384,7 +401,7 @@ dotraplinkage void do_bounds(struct pt_regs *regs, long error_code) - goto exit; - conditional_sti(regs); - -- if (!user_mode_vm(regs)) -+ if (!user_mode(regs)) - die("bounds", regs, error_code); - - if (!cpu_feature_enabled(X86_FEATURE_MPX)) { -@@ -463,7 +480,7 @@ do_general_protection(struct pt_regs *regs, long error_code) - conditional_sti(regs); - - #ifdef CONFIG_X86_32 -- if (regs->flags & X86_VM_MASK) { -+ if (v8086_mode(regs)) { - local_irq_enable(); - handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code); - goto exit; -@@ -471,18 +488,42 @@ do_general_protection(struct pt_regs *regs, long error_code) - #endif - - tsk = current; -- if (!user_mode(regs)) { -+ if (!user_mode_novm(regs)) { - if (fixup_exception(regs)) - goto exit; - +@@ -475,11 +492,35 @@ do_general_protection(struct pt_regs *regs, long error_code) tsk->thread.error_code = error_code; tsk->thread.trap_nr = X86_TRAP_GP; if (notify_die(DIE_GPF, "general protection fault", regs, error_code, @@ -28055,7 +28468,7 @@ index 4ff5d16..736e3e1 100644 tsk->thread.error_code = error_code; tsk->thread.trap_nr = X86_TRAP_GP; -@@ -581,13 +622,16 @@ struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s) +@@ -578,6 +619,9 @@ struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s) container_of(task_pt_regs(current), struct bad_iret_stack, regs); @@ -28065,50 +28478,6 @@ index 4ff5d16..736e3e1 100644 /* Copy the IRET target to the new stack. */ memmove(&new_stack->regs.ip, (void *)s->regs.sp, 5*8); - /* Copy the remainder of the stack from the current stack. */ - memmove(new_stack, s, offsetof(struct bad_iret_stack, regs.ip)); - -- BUG_ON(!user_mode_vm(&new_stack->regs)); -+ BUG_ON(!user_mode(&new_stack->regs)); - return new_stack; - } - NOKPROBE_SYMBOL(fixup_bad_iret); -@@ -637,7 +681,7 @@ dotraplinkage void do_debug(struct pt_regs *regs, long error_code) - * then it's very likely the result of an icebp/int01 trap. - * User wants a sigtrap for that. - */ -- if (!dr6 && user_mode_vm(regs)) -+ if (!dr6 && user_mode(regs)) - user_icebp = 1; - - /* Catch kmemcheck conditions first of all! */ -@@ -673,7 +717,7 @@ dotraplinkage void 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); - -- if (regs->flags & X86_VM_MASK) { -+ if (v8086_mode(regs)) { - handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, - X86_TRAP_DB); - preempt_conditional_cli(regs); -@@ -688,7 +732,7 @@ dotraplinkage void 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. - */ -- if ((dr6 & DR_STEP) && !user_mode(regs)) { -+ if ((dr6 & DR_STEP) && !user_mode_novm(regs)) { - tsk->thread.debugreg6 &= ~DR_STEP; - set_tsk_thread_flag(tsk, TIF_SINGLESTEP); - regs->flags &= ~X86_EFLAGS_TF; -@@ -721,7 +765,7 @@ static void math_error(struct pt_regs *regs, int error_code, int trapnr) - return; - conditional_sti(regs); - -- if (!user_mode_vm(regs)) -+ if (!user_mode(regs)) - { - if (!fixup_exception(regs)) { - task->thread.error_code = error_code; diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c index 5054497..139f8f8 100644 --- a/arch/x86/kernel/tsc.c @@ -28123,18 +28492,9 @@ index 5054497..139f8f8 100644 /* diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c -index 81f8adb0..fff670e 100644 +index 0b81ad6..fff670e 100644 --- a/arch/x86/kernel/uprobes.c +++ b/arch/x86/kernel/uprobes.c -@@ -912,7 +912,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, - int ret = NOTIFY_DONE; - - /* We are only interested in userspace traps */ -- if (regs && !user_mode_vm(regs)) -+ if (regs && !user_mode(regs)) - return NOTIFY_DONE; - - switch (val) { @@ -986,7 +986,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs if (nleft != rasize) { @@ -28157,7 +28517,7 @@ index b9242ba..50c5edd 100644 * verify_cpu, returns the status of longmode and SSE in register %eax. * 0: Success 1: Failure diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c -index e8edcf5..27f9344 100644 +index fc9db6e..2c5865d 100644 --- a/arch/x86/kernel/vm86_32.c +++ b/arch/x86/kernel/vm86_32.c @@ -44,6 +44,7 @@ @@ -28172,8 +28532,8 @@ index e8edcf5..27f9344 100644 do_exit(SIGSEGV); } -- tss = &per_cpu(init_tss, get_cpu()); -+ tss = init_tss + get_cpu(); +- tss = &per_cpu(cpu_tss, get_cpu()); ++ tss = cpu_tss + get_cpu(); current->thread.sp0 = current->thread.saved_sp0; current->thread.sysenter_cs = __KERNEL_CS; load_sp0(tss, ¤t->thread); @@ -28210,8 +28570,8 @@ index e8edcf5..27f9344 100644 tsk->thread.saved_fs = info->regs32->fs; tsk->thread.saved_gs = get_user_gs(info->regs32); -- tss = &per_cpu(init_tss, get_cpu()); -+ tss = init_tss + get_cpu(); +- tss = &per_cpu(cpu_tss, get_cpu()); ++ tss = cpu_tss + get_cpu(); tsk->thread.sp0 = (unsigned long) &info->VM86_TSS_ESP0; if (cpu_has_sep) tsk->thread.sysenter_cs = 0; @@ -28595,7 +28955,7 @@ index 234b072..b7ab191 100644 .read = native_io_apic_read, .write = native_io_apic_write, diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c -index cdc6cf9..e04f495 100644 +index 87a815b..727dbe6 100644 --- a/arch/x86/kernel/xsave.c +++ b/arch/x86/kernel/xsave.c @@ -168,18 +168,18 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame) @@ -28646,10 +29006,10 @@ index cdc6cf9..e04f495 100644 if ((unsigned long)buf % 64 || fx_only) { u64 init_bv = pcntxt_mask & ~XSTATE_FPSSE; diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c -index 8a80737..bac4961 100644 +index 1d08ad3..c6a4faf 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c -@@ -182,15 +182,20 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu, +@@ -204,15 +204,20 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, struct kvm_cpuid_entry2 __user *entries) { @@ -28673,7 +29033,7 @@ index 8a80737..bac4961 100644 vcpu->arch.cpuid_nent = cpuid->nent; kvm_apic_set_version(vcpu); kvm_x86_ops->cpuid_update(vcpu); -@@ -203,15 +208,19 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu, +@@ -225,15 +230,19 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, struct kvm_cpuid_entry2 __user *entries) { @@ -28697,10 +29057,10 @@ index 8a80737..bac4961 100644 out: diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 106c015..2db7161 100644 +index 630bcb0..a7f6d9e 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c -@@ -3572,7 +3572,7 @@ static int check_cr_write(struct x86_emulate_ctxt *ctxt) +@@ -3569,7 +3569,7 @@ static int check_cr_write(struct x86_emulate_ctxt *ctxt) int cr = ctxt->modrm_reg; u64 efer = 0; @@ -28710,7 +29070,7 @@ index 106c015..2db7161 100644 0, 0, 0, /* CR3 checked later */ CR4_RESERVED_BITS, diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c -index 4ee827d..a14eff9 100644 +index 67d07e0..10769d5 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -56,7 +56,7 @@ @@ -28722,8 +29082,21 @@ index 4ee827d..a14eff9 100644 #define APIC_LVT_NUM 6 /* 14 is the version for Xeon and Pentium 8.4.8*/ +diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h +index 9d28383..c4ea87e 100644 +--- a/arch/x86/kvm/lapic.h ++++ b/arch/x86/kvm/lapic.h +@@ -150,7 +150,7 @@ static inline bool kvm_apic_vid_enabled(struct kvm *kvm) + + static inline bool kvm_apic_has_events(struct kvm_vcpu *vcpu) + { +- return vcpu->arch.apic->pending_events; ++ return kvm_vcpu_has_lapic(vcpu) && vcpu->arch.apic->pending_events; + } + + bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector); diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h -index fd49c86..77e1aa0 100644 +index 6e6d115..43fecbf 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h @@ -343,7 +343,7 @@ retry_walk: @@ -28736,10 +29109,10 @@ index fd49c86..77e1aa0 100644 goto error; walker->ptep_user[walker->level - 1] = ptep_user; diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c -index cc618c8..3f72f76 100644 +index 4911bf1..e7d3ed2 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c -@@ -3568,7 +3568,11 @@ static void reload_tss(struct kvm_vcpu *vcpu) +@@ -3577,7 +3577,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); @@ -28751,7 +29124,7 @@ index cc618c8..3f72f76 100644 load_TR_desc(); } -@@ -3964,6 +3968,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) +@@ -3973,6 +3977,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) #endif #endif @@ -28763,7 +29136,7 @@ index cc618c8..3f72f76 100644 local_irq_disable(); diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c -index a60bd3a..748e856 100644 +index 2d73807..84a0e59 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -1440,12 +1440,12 @@ static void vmcs_write64(unsigned long field, u64 value) @@ -28813,7 +29186,7 @@ index a60bd3a..748e856 100644 { u64 host_tsc, tsc_offset; -@@ -4466,7 +4474,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) +@@ -4467,7 +4475,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) unsigned long cr4; vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS); /* 22.2.3 */ @@ -28824,7 +29197,7 @@ index a60bd3a..748e856 100644 /* Save the most likely value for this task's CR4 in the VMCS. */ cr4 = cr4_read_shadow(); -@@ -4493,7 +4504,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) +@@ -4494,7 +4505,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx) vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */ vmx->host_idt_base = dt.address; @@ -28833,7 +29206,7 @@ index a60bd3a..748e856 100644 rdmsr(MSR_IA32_SYSENTER_CS, low32, high32); vmcs_write32(HOST_IA32_SYSENTER_CS, low32); -@@ -6104,11 +6115,17 @@ static __init int hardware_setup(void) +@@ -6107,11 +6118,17 @@ static __init int hardware_setup(void) * page upon invalidation. No need to do anything if not * using the APIC_ACCESS_ADDR VMCS field. */ @@ -28855,7 +29228,7 @@ index a60bd3a..748e856 100644 if (enable_ept && !cpu_has_vmx_ept_2m_page()) kvm_disable_largepages(); -@@ -6119,14 +6136,16 @@ static __init int hardware_setup(void) +@@ -6122,14 +6139,16 @@ static __init int hardware_setup(void) if (!cpu_has_vmx_apicv()) enable_apicv = 0; @@ -28877,7 +29250,7 @@ index a60bd3a..748e856 100644 vmx_disable_intercept_for_msr(MSR_FS_BASE, false); vmx_disable_intercept_for_msr(MSR_GS_BASE, false); -@@ -6179,10 +6198,12 @@ static __init int hardware_setup(void) +@@ -6182,10 +6201,12 @@ static __init int hardware_setup(void) enable_pml = 0; if (!enable_pml) { @@ -28894,7 +29267,7 @@ index a60bd3a..748e856 100644 } return alloc_kvm_area(); -@@ -8227,6 +8248,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -8230,6 +8251,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) "jmp 2f \n\t" "1: " __ex(ASM_VMX_VMRESUME) "\n\t" "2: " @@ -28907,7 +29280,7 @@ index a60bd3a..748e856 100644 /* Save guest registers, load host registers, keep flags */ "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t" "pop %0 \n\t" -@@ -8279,6 +8306,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -8282,6 +8309,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)) @@ -28919,7 +29292,7 @@ index a60bd3a..748e856 100644 : "cc", "memory" #ifdef CONFIG_X86_64 , "rax", "rbx", "rdi", "rsi" -@@ -8292,7 +8324,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -8295,7 +8327,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) if (debugctlmsr) update_debugctlmsr(debugctlmsr); @@ -28928,7 +29301,7 @@ index a60bd3a..748e856 100644 /* * The sysexit path does not restore ds/es, so we must set them to * a reasonable value ourselves. -@@ -8301,8 +8333,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) +@@ -8304,8 +8336,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) * may be executed in interrupt context, which saves and restore segments * around it, nullifying its effect. */ @@ -28950,10 +29323,10 @@ index a60bd3a..748e856 100644 vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index e222ba5..6f0f2de 100644 +index ea306ad..669f42d 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -1897,8 +1897,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) +@@ -1929,8 +1929,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) { struct kvm *kvm = vcpu->kvm; int lm = is_long_mode(vcpu); @@ -28964,7 +29337,7 @@ index e222ba5..6f0f2de 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; -@@ -2835,6 +2835,8 @@ long kvm_arch_dev_ioctl(struct file *filp, +@@ -2867,6 +2867,8 @@ long kvm_arch_dev_ioctl(struct file *filp, if (n < msr_list.nmsrs) goto out; r = -EFAULT; @@ -28973,7 +29346,7 @@ index e222ba5..6f0f2de 100644 if (copy_to_user(user_msr_list->indices, &msrs_to_save, num_msrs_to_save * sizeof(u32))) goto out; -@@ -5739,7 +5741,7 @@ static struct notifier_block pvclock_gtod_notifier = { +@@ -5784,7 +5786,7 @@ static struct notifier_block pvclock_gtod_notifier = { }; #endif @@ -28983,10 +29356,10 @@ index e222ba5..6f0f2de 100644 int r; struct kvm_x86_ops *ops = opaque; diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c -index ac4453d..1f43bf3 100644 +index 8f9a133..3c7694b 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c -@@ -1340,9 +1340,10 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count) +@@ -1341,9 +1341,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. */ @@ -29258,10 +29631,10 @@ index 00933d5..3a64af9 100644 movl %eax, (v) movl %edx, 4(v) diff --git a/arch/x86/lib/atomic64_cx8_32.S b/arch/x86/lib/atomic64_cx8_32.S -index f5cc9eb..51fa319 100644 +index 082a851..6a963bc 100644 --- a/arch/x86/lib/atomic64_cx8_32.S +++ b/arch/x86/lib/atomic64_cx8_32.S -@@ -35,10 +35,20 @@ ENTRY(atomic64_read_cx8) +@@ -25,10 +25,20 @@ ENTRY(atomic64_read_cx8) CFI_STARTPROC read64 %ecx @@ -29282,7 +29655,7 @@ index f5cc9eb..51fa319 100644 ENTRY(atomic64_set_cx8) CFI_STARTPROC -@@ -48,10 +58,25 @@ ENTRY(atomic64_set_cx8) +@@ -38,10 +48,25 @@ ENTRY(atomic64_set_cx8) cmpxchg8b (%esi) jne 1b @@ -29308,7 +29681,7 @@ index f5cc9eb..51fa319 100644 ENTRY(atomic64_xchg_cx8) CFI_STARTPROC -@@ -60,12 +85,13 @@ ENTRY(atomic64_xchg_cx8) +@@ -50,12 +75,13 @@ ENTRY(atomic64_xchg_cx8) cmpxchg8b (%esi) jne 1b @@ -29322,9 +29695,9 @@ index f5cc9eb..51fa319 100644 +.macro addsub_return func ins insc unchecked="" +ENTRY(atomic64_\func\()_return\unchecked\()_cx8) CFI_STARTPROC - SAVE ebp - SAVE ebx -@@ -82,27 +108,44 @@ ENTRY(atomic64_\func\()_return_cx8) + pushl_cfi_reg ebp + pushl_cfi_reg ebx +@@ -72,27 +98,44 @@ ENTRY(atomic64_\func\()_return_cx8) movl %edx, %ecx \ins\()l %esi, %ebx \insc\()l %edi, %ecx @@ -29351,10 +29724,10 @@ index f5cc9eb..51fa319 100644 +#endif +.endif + - RESTORE edi - RESTORE esi - RESTORE ebx - RESTORE ebp + popl_cfi_reg edi + popl_cfi_reg esi + popl_cfi_reg ebx + popl_cfi_reg ebp + pax_force_retaddr ret CFI_ENDPROC @@ -29372,9 +29745,9 @@ index f5cc9eb..51fa319 100644 +.macro incdec_return func ins insc unchecked="" +ENTRY(atomic64_\func\()_return\unchecked\()_cx8) CFI_STARTPROC - SAVE ebx + pushl_cfi_reg ebx -@@ -112,21 +155,39 @@ ENTRY(atomic64_\func\()_return_cx8) +@@ -102,21 +145,38 @@ ENTRY(atomic64_\func\()_return_cx8) movl %edx, %ecx \ins\()l $1, %ebx \insc\()l $0, %ecx @@ -29390,7 +29763,7 @@ index f5cc9eb..51fa319 100644 LOCK_PREFIX cmpxchg8b (%esi) jne 1b - +- -10: movl %ebx, %eax movl %ecx, %edx @@ -29401,7 +29774,7 @@ index f5cc9eb..51fa319 100644 +#endif +.endif + - RESTORE ebx + popl_cfi_reg ebx + pax_force_retaddr ret CFI_ENDPROC @@ -29416,7 +29789,7 @@ index f5cc9eb..51fa319 100644 ENTRY(atomic64_dec_if_positive_cx8) CFI_STARTPROC -@@ -138,6 +199,13 @@ ENTRY(atomic64_dec_if_positive_cx8) +@@ -128,6 +188,13 @@ ENTRY(atomic64_dec_if_positive_cx8) movl %edx, %ecx subl $1, %ebx sbb $0, %ecx @@ -29430,15 +29803,15 @@ index f5cc9eb..51fa319 100644 js 2f LOCK_PREFIX cmpxchg8b (%esi) -@@ -147,6 +215,7 @@ ENTRY(atomic64_dec_if_positive_cx8) +@@ -137,6 +204,7 @@ ENTRY(atomic64_dec_if_positive_cx8) movl %ebx, %eax movl %ecx, %edx - RESTORE ebx + popl_cfi_reg ebx + pax_force_retaddr ret CFI_ENDPROC ENDPROC(atomic64_dec_if_positive_cx8) -@@ -171,6 +240,13 @@ ENTRY(atomic64_add_unless_cx8) +@@ -161,6 +229,13 @@ ENTRY(atomic64_add_unless_cx8) movl %edx, %ecx addl %ebp, %ebx adcl %edi, %ecx @@ -29452,15 +29825,15 @@ index f5cc9eb..51fa319 100644 LOCK_PREFIX cmpxchg8b (%esi) jne 1b -@@ -181,6 +257,7 @@ ENTRY(atomic64_add_unless_cx8) +@@ -171,6 +246,7 @@ ENTRY(atomic64_add_unless_cx8) CFI_ADJUST_CFA_OFFSET -8 - RESTORE ebx - RESTORE ebp + popl_cfi_reg ebx + popl_cfi_reg ebp + pax_force_retaddr ret 4: cmpl %edx, 4(%esp) -@@ -203,6 +280,13 @@ ENTRY(atomic64_inc_not_zero_cx8) +@@ -193,6 +269,13 @@ ENTRY(atomic64_inc_not_zero_cx8) xorl %ecx, %ecx addl $1, %ebx adcl %edx, %ecx @@ -29474,16 +29847,16 @@ index f5cc9eb..51fa319 100644 LOCK_PREFIX cmpxchg8b (%esi) jne 1b -@@ -210,6 +294,7 @@ ENTRY(atomic64_inc_not_zero_cx8) +@@ -200,6 +283,7 @@ ENTRY(atomic64_inc_not_zero_cx8) movl $1, %eax 3: - RESTORE ebx + popl_cfi_reg ebx + pax_force_retaddr ret CFI_ENDPROC ENDPROC(atomic64_inc_not_zero_cx8) diff --git a/arch/x86/lib/checksum_32.S b/arch/x86/lib/checksum_32.S -index e78b8eee..7e173a8 100644 +index 9bc944a..e52be6c 100644 --- a/arch/x86/lib/checksum_32.S +++ b/arch/x86/lib/checksum_32.S @@ -29,7 +29,8 @@ @@ -29496,7 +29869,7 @@ index e78b8eee..7e173a8 100644 /* * computes a partial checksum, e.g. for TCP/UDP fragments */ -@@ -293,9 +294,24 @@ unsigned int csum_partial_copy_generic (const char *src, char *dst, +@@ -285,9 +286,24 @@ unsigned int csum_partial_copy_generic (const char *src, char *dst, #define ARGBASE 16 #define FP 12 @@ -29522,8 +29895,8 @@ index e78b8eee..7e173a8 100644 +ENTRY(csum_partial_copy_generic) subl $4,%esp CFI_ADJUST_CFA_OFFSET 4 - pushl_cfi %edi -@@ -317,7 +333,7 @@ ENTRY(csum_partial_copy_generic) + pushl_cfi_reg edi +@@ -306,7 +322,7 @@ ENTRY(csum_partial_copy_generic) jmp 4f SRC(1: movw (%esi), %bx ) addl $2, %esi @@ -29532,7 +29905,7 @@ index e78b8eee..7e173a8 100644 addl $2, %edi addw %bx, %ax adcl $0, %eax -@@ -329,30 +345,30 @@ DST( movw %bx, (%edi) ) +@@ -318,30 +334,30 @@ DST( movw %bx, (%edi) ) SRC(1: movl (%esi), %ebx ) SRC( movl 4(%esi), %edx ) adcl %ebx, %eax @@ -29571,7 +29944,7 @@ index e78b8eee..7e173a8 100644 lea 32(%esi), %esi lea 32(%edi), %edi -@@ -366,7 +382,7 @@ DST( movl %edx, 28(%edi) ) +@@ -355,7 +371,7 @@ DST( movl %edx, 28(%edi) ) shrl $2, %edx # This clears CF SRC(3: movl (%esi), %ebx ) adcl %ebx, %eax @@ -29580,7 +29953,7 @@ index e78b8eee..7e173a8 100644 lea 4(%esi), %esi lea 4(%edi), %edi dec %edx -@@ -378,12 +394,12 @@ DST( movl %ebx, (%edi) ) +@@ -367,12 +383,12 @@ DST( movl %ebx, (%edi) ) jb 5f SRC( movw (%esi), %cx ) leal 2(%esi), %esi @@ -29595,7 +29968,7 @@ index e78b8eee..7e173a8 100644 6: addl %ecx, %eax adcl $0, %eax 7: -@@ -394,7 +410,7 @@ DST( movb %cl, (%edi) ) +@@ -383,7 +399,7 @@ DST( movb %cl, (%edi) ) 6001: movl ARGBASE+20(%esp), %ebx # src_err_ptr @@ -29604,7 +29977,7 @@ index e78b8eee..7e173a8 100644 # zero the complete destination - computing the rest # is too much work -@@ -407,11 +423,15 @@ DST( movb %cl, (%edi) ) +@@ -396,37 +412,58 @@ DST( movb %cl, (%edi) ) 6002: movl ARGBASE+24(%esp), %ebx # dst_err_ptr @@ -29618,10 +29991,9 @@ index e78b8eee..7e173a8 100644 + popl_cfi %ds + pushl_cfi %ss + popl_cfi %es - popl_cfi %ebx - CFI_RESTORE ebx - popl_cfi %esi -@@ -421,26 +441,43 @@ DST( movb %cl, (%edi) ) + popl_cfi_reg ebx + popl_cfi_reg esi + popl_cfi_reg edi popl_cfi %ecx # equivalent to addl $4,%esp ret CFI_ENDPROC @@ -29667,10 +30039,10 @@ index e78b8eee..7e173a8 100644 +#endif + +ENTRY(csum_partial_copy_generic) - pushl_cfi %ebx - CFI_REL_OFFSET ebx, 0 - pushl_cfi %edi -@@ -461,7 +498,7 @@ ENTRY(csum_partial_copy_generic) + pushl_cfi_reg ebx + pushl_cfi_reg edi + pushl_cfi_reg esi +@@ -444,7 +481,7 @@ ENTRY(csum_partial_copy_generic) subl %ebx, %edi lea -1(%esi),%edx andl $-32,%edx @@ -29679,7 +30051,7 @@ index e78b8eee..7e173a8 100644 testl %esi, %esi jmp *%ebx 1: addl $64,%esi -@@ -482,19 +519,19 @@ ENTRY(csum_partial_copy_generic) +@@ -465,19 +502,19 @@ ENTRY(csum_partial_copy_generic) jb 5f SRC( movw (%esi), %dx ) leal 2(%esi), %esi @@ -29702,7 +30074,7 @@ index e78b8eee..7e173a8 100644 # zero the complete destination (computing the rest is too much work) movl ARGBASE+8(%esp),%edi # dst movl ARGBASE+12(%esp),%ecx # len -@@ -502,10 +539,17 @@ DST( movb %dl, (%edi) ) +@@ -485,16 +522,23 @@ DST( movb %dl, (%edi) ) rep; stosb jmp 7b 6002: movl ARGBASE+24(%esp), %ebx # dst_err_ptr @@ -29718,11 +30090,9 @@ index e78b8eee..7e173a8 100644 + popl_cfi %es +#endif + - popl_cfi %esi - CFI_RESTORE esi - popl_cfi %edi -@@ -514,7 +558,7 @@ DST( movb %dl, (%edi) ) - CFI_RESTORE ebx + popl_cfi_reg esi + popl_cfi_reg edi + popl_cfi_reg ebx ret CFI_ENDPROC -ENDPROC(csum_partial_copy_generic) @@ -29731,18 +30101,26 @@ index e78b8eee..7e173a8 100644 #undef ROUND #undef ROUND1 diff --git a/arch/x86/lib/clear_page_64.S b/arch/x86/lib/clear_page_64.S -index f2145cf..cea889d 100644 +index e67e579..4782449 100644 --- a/arch/x86/lib/clear_page_64.S +++ b/arch/x86/lib/clear_page_64.S -@@ -11,6 +11,7 @@ ENTRY(clear_page_c) +@@ -23,6 +23,7 @@ ENTRY(clear_page) movl $4096/8,%ecx xorl %eax,%eax rep stosq + pax_force_retaddr ret CFI_ENDPROC - ENDPROC(clear_page_c) -@@ -20,6 +21,7 @@ ENTRY(clear_page_c_e) + ENDPROC(clear_page) +@@ -47,6 +48,7 @@ ENTRY(clear_page_orig) + leaq 64(%rdi),%rdi + jnz .Lloop + nop ++ pax_force_retaddr + ret + CFI_ENDPROC + ENDPROC(clear_page_orig) +@@ -56,6 +58,7 @@ ENTRY(clear_page_c_e) movl $4096,%ecx xorl %eax,%eax rep stosb @@ -29750,23 +30128,6 @@ index f2145cf..cea889d 100644 ret CFI_ENDPROC ENDPROC(clear_page_c_e) -@@ -43,6 +45,7 @@ ENTRY(clear_page) - leaq 64(%rdi),%rdi - jnz .Lloop - nop -+ pax_force_retaddr - ret - CFI_ENDPROC - .Lclear_page_end: -@@ -58,7 +61,7 @@ ENDPROC(clear_page) - - #include - -- .section .altinstr_replacement,"ax" -+ .section .altinstr_replacement,"a" - 1: .byte 0xeb /* jmp */ - .byte (clear_page_c - clear_page) - (2f - 1b) /* offset */ - 2: .byte 0xeb /* jmp */ diff --git a/arch/x86/lib/cmpxchg16b_emu.S b/arch/x86/lib/cmpxchg16b_emu.S index 40a1725..5d12ac4 100644 --- a/arch/x86/lib/cmpxchg16b_emu.S @@ -29795,18 +30156,18 @@ index 40a1725..5d12ac4 100644 CFI_ENDPROC diff --git a/arch/x86/lib/copy_page_64.S b/arch/x86/lib/copy_page_64.S -index 176cca6..e0d658e 100644 +index 8239dbc..e714d2a 100644 --- a/arch/x86/lib/copy_page_64.S +++ b/arch/x86/lib/copy_page_64.S -@@ -9,6 +9,7 @@ copy_page_rep: - CFI_STARTPROC +@@ -17,6 +17,7 @@ ENTRY(copy_page) + ALTERNATIVE "jmp copy_page_regs", "", X86_FEATURE_REP_GOOD movl $4096/8, %ecx rep movsq + pax_force_retaddr ret CFI_ENDPROC - ENDPROC(copy_page_rep) -@@ -24,8 +25,8 @@ ENTRY(copy_page) + ENDPROC(copy_page) +@@ -27,8 +28,8 @@ ENTRY(copy_page_regs) CFI_ADJUST_CFA_OFFSET 2*8 movq %rbx, (%rsp) CFI_REL_OFFSET rbx, 0 @@ -29817,7 +30178,7 @@ index 176cca6..e0d658e 100644 movl $(4096/64)-5, %ecx .p2align 4 -@@ -38,7 +39,7 @@ ENTRY(copy_page) +@@ -41,7 +42,7 @@ ENTRY(copy_page_regs) movq 0x8*4(%rsi), %r9 movq 0x8*5(%rsi), %r10 movq 0x8*6(%rsi), %r11 @@ -29826,7 +30187,7 @@ index 176cca6..e0d658e 100644 prefetcht0 5*64(%rsi) -@@ -49,7 +50,7 @@ ENTRY(copy_page) +@@ -52,7 +53,7 @@ ENTRY(copy_page_regs) movq %r9, 0x8*4(%rdi) movq %r10, 0x8*5(%rdi) movq %r11, 0x8*6(%rdi) @@ -29835,7 +30196,7 @@ index 176cca6..e0d658e 100644 leaq 64 (%rsi), %rsi leaq 64 (%rdi), %rdi -@@ -68,7 +69,7 @@ ENTRY(copy_page) +@@ -71,7 +72,7 @@ ENTRY(copy_page_regs) movq 0x8*4(%rsi), %r9 movq 0x8*5(%rsi), %r10 movq 0x8*6(%rsi), %r11 @@ -29844,7 +30205,7 @@ index 176cca6..e0d658e 100644 movq %rax, 0x8*0(%rdi) movq %rbx, 0x8*1(%rdi) -@@ -77,7 +78,7 @@ ENTRY(copy_page) +@@ -80,7 +81,7 @@ ENTRY(copy_page_regs) movq %r9, 0x8*4(%rdi) movq %r10, 0x8*5(%rdi) movq %r11, 0x8*6(%rdi) @@ -29853,7 +30214,7 @@ index 176cca6..e0d658e 100644 leaq 64(%rdi), %rdi leaq 64(%rsi), %rsi -@@ -85,10 +86,11 @@ ENTRY(copy_page) +@@ -88,10 +89,11 @@ ENTRY(copy_page_regs) movq (%rsp), %rbx CFI_RESTORE rbx @@ -29865,56 +30226,22 @@ index 176cca6..e0d658e 100644 CFI_ADJUST_CFA_OFFSET -2*8 + pax_force_retaddr ret - .Lcopy_page_end: CFI_ENDPROC -@@ -99,7 +101,7 @@ ENDPROC(copy_page) - - #include - -- .section .altinstr_replacement,"ax" -+ .section .altinstr_replacement,"a" - 1: .byte 0xeb /* jmp */ - .byte (copy_page_rep - copy_page) - (2f - 1b) /* offset */ - 2: + ENDPROC(copy_page_regs) diff --git a/arch/x86/lib/copy_user_64.S b/arch/x86/lib/copy_user_64.S -index dee945d..a84067b 100644 +index fa997df..060ab18 100644 --- a/arch/x86/lib/copy_user_64.S +++ b/arch/x86/lib/copy_user_64.S -@@ -18,31 +18,7 @@ +@@ -15,6 +15,7 @@ #include #include #include -- --/* -- * By placing feature2 after feature1 in altinstructions section, we logically -- * implement: -- * If CPU has feature2, jmp to alt2 is used -- * else if CPU has feature1, jmp to alt1 is used -- * else jmp to orig is used. -- */ -- .macro ALTERNATIVE_JUMP feature1,feature2,orig,alt1,alt2 --0: -- .byte 0xe9 /* 32bit jump */ -- .long \orig-1f /* by default jump to orig */ --1: -- .section .altinstr_replacement,"ax" --2: .byte 0xe9 /* near jump with 32bit immediate */ -- .long \alt1-1b /* offset */ /* or alternatively to alt1 */ --3: .byte 0xe9 /* near jump with 32bit immediate */ -- .long \alt2-1b /* offset */ /* or alternatively to alt2 */ -- .previous -- -- .section .altinstructions,"a" -- altinstruction_entry 0b,2b,\feature1,5,5 -- altinstruction_entry 0b,3b,\feature2,5,5 -- .previous -- .endm +#include .macro ALIGN_DESTINATION - #ifdef FIX_ALIGNMENT -@@ -70,52 +46,6 @@ - #endif + /* check for bad alignment of destination */ +@@ -40,56 +41,6 @@ + _ASM_EXTABLE(101b,103b) .endm -/* Standard copy_to_user with segment limit checking */ @@ -29926,9 +30253,11 @@ index dee945d..a84067b 100644 - jc bad_to_user - cmpq TI_addr_limit(%rax),%rcx - ja bad_to_user -- ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,X86_FEATURE_ERMS, \ -- copy_user_generic_unrolled,copy_user_generic_string, \ -- copy_user_enhanced_fast_string +- ALTERNATIVE_2 "jmp copy_user_generic_unrolled", \ +- "jmp copy_user_generic_string", \ +- X86_FEATURE_REP_GOOD, \ +- "jmp copy_user_enhanced_fast_string", \ +- X86_FEATURE_ERMS - CFI_ENDPROC -ENDPROC(_copy_to_user) - @@ -29941,9 +30270,11 @@ index dee945d..a84067b 100644 - jc bad_from_user - cmpq TI_addr_limit(%rax),%rcx - ja bad_from_user -- ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,X86_FEATURE_ERMS, \ -- copy_user_generic_unrolled,copy_user_generic_string, \ -- copy_user_enhanced_fast_string +- ALTERNATIVE_2 "jmp copy_user_generic_unrolled", \ +- "jmp copy_user_generic_string", \ +- X86_FEATURE_REP_GOOD, \ +- "jmp copy_user_enhanced_fast_string", \ +- X86_FEATURE_ERMS - CFI_ENDPROC -ENDPROC(_copy_from_user) - @@ -29966,7 +30297,7 @@ index dee945d..a84067b 100644 /* * copy_user_generic_unrolled - memory copy with exception handling. * This version is for CPUs like P4 that don't have efficient micro -@@ -131,6 +61,7 @@ ENDPROC(bad_from_user) +@@ -105,6 +56,7 @@ ENDPROC(bad_from_user) */ ENTRY(copy_user_generic_unrolled) CFI_STARTPROC @@ -29974,7 +30305,7 @@ index dee945d..a84067b 100644 ASM_STAC cmpl $8,%edx jb 20f /* less then 8 bytes, go to byte copy loop */ -@@ -180,6 +111,8 @@ ENTRY(copy_user_generic_unrolled) +@@ -154,6 +106,8 @@ ENTRY(copy_user_generic_unrolled) jnz 21b 23: xor %eax,%eax ASM_CLAC @@ -29983,7 +30314,7 @@ index dee945d..a84067b 100644 ret .section .fixup,"ax" -@@ -235,6 +168,7 @@ ENDPROC(copy_user_generic_unrolled) +@@ -209,6 +163,7 @@ ENDPROC(copy_user_generic_unrolled) */ ENTRY(copy_user_generic_string) CFI_STARTPROC @@ -29991,7 +30322,7 @@ index dee945d..a84067b 100644 ASM_STAC cmpl $8,%edx jb 2f /* less than 8 bytes, go to byte copy loop */ -@@ -249,6 +183,8 @@ ENTRY(copy_user_generic_string) +@@ -223,6 +178,8 @@ ENTRY(copy_user_generic_string) movsb xorl %eax,%eax ASM_CLAC @@ -30000,7 +30331,7 @@ index dee945d..a84067b 100644 ret .section .fixup,"ax" -@@ -276,12 +212,15 @@ ENDPROC(copy_user_generic_string) +@@ -250,12 +207,15 @@ ENDPROC(copy_user_generic_string) */ ENTRY(copy_user_enhanced_fast_string) CFI_STARTPROC @@ -30064,7 +30395,7 @@ index 6a4f43c..c70fb52 100644 .section .fixup,"ax" diff --git a/arch/x86/lib/csum-copy_64.S b/arch/x86/lib/csum-copy_64.S -index 2419d5f..fe52d0e 100644 +index 9734182..dbee61c 100644 --- a/arch/x86/lib/csum-copy_64.S +++ b/arch/x86/lib/csum-copy_64.S @@ -9,6 +9,7 @@ @@ -30324,7 +30655,7 @@ index a451235..a74bfa3 100644 CFI_ENDPROC END(bad_get_user_8) diff --git a/arch/x86/lib/insn.c b/arch/x86/lib/insn.c -index 85994f5..9929d7f 100644 +index 8f72b33..a43d9969 100644 --- a/arch/x86/lib/insn.c +++ b/arch/x86/lib/insn.c @@ -20,8 +20,10 @@ @@ -30372,41 +30703,26 @@ index 05a95e7..326f2fa 100644 CFI_ENDPROC ENDPROC(__iowrite32_copy) diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S -index 89b53c9..97357ca 100644 +index b046664..dec9465 100644 --- a/arch/x86/lib/memcpy_64.S +++ b/arch/x86/lib/memcpy_64.S -@@ -24,7 +24,7 @@ - * This gets patched over the unrolled variant (below) via the - * alternative instructions framework: - */ -- .section .altinstr_replacement, "ax", @progbits -+ .section .altinstr_replacement, "a", @progbits - .Lmemcpy_c: - movq %rdi, %rax - movq %rdx, %rcx -@@ -33,6 +33,7 @@ +@@ -37,6 +37,7 @@ ENTRY(memcpy) rep movsq movl %edx, %ecx rep movsb + pax_force_retaddr ret - .Lmemcpy_e: - .previous -@@ -44,11 +45,12 @@ - * This gets patched over the unrolled variant (below) via the - * alternative instructions framework: - */ -- .section .altinstr_replacement, "ax", @progbits -+ .section .altinstr_replacement, "a", @progbits - .Lmemcpy_c_e: + ENDPROC(memcpy) + ENDPROC(__memcpy) +@@ -49,6 +50,7 @@ ENTRY(memcpy_erms) movq %rdi, %rax movq %rdx, %rcx rep movsb + pax_force_retaddr ret - .Lmemcpy_e_e: - .previous -@@ -138,6 +140,7 @@ ENTRY(memcpy) + ENDPROC(memcpy_erms) + +@@ -134,6 +136,7 @@ ENTRY(memcpy_orig) movq %r9, 1*8(%rdi) movq %r10, -2*8(%rdi, %rdx) movq %r11, -1*8(%rdi, %rdx) @@ -30414,7 +30730,7 @@ index 89b53c9..97357ca 100644 retq .p2align 4 .Lless_16bytes: -@@ -150,6 +153,7 @@ ENTRY(memcpy) +@@ -146,6 +149,7 @@ ENTRY(memcpy_orig) movq -1*8(%rsi, %rdx), %r9 movq %r8, 0*8(%rdi) movq %r9, -1*8(%rdi, %rdx) @@ -30422,7 +30738,7 @@ index 89b53c9..97357ca 100644 retq .p2align 4 .Lless_8bytes: -@@ -163,6 +167,7 @@ ENTRY(memcpy) +@@ -159,6 +163,7 @@ ENTRY(memcpy_orig) movl -4(%rsi, %rdx), %r8d movl %ecx, (%rdi) movl %r8d, -4(%rdi, %rdx) @@ -30430,74 +30746,56 @@ index 89b53c9..97357ca 100644 retq .p2align 4 .Lless_3bytes: -@@ -181,6 +186,7 @@ ENTRY(memcpy) +@@ -177,6 +182,7 @@ ENTRY(memcpy_orig) movb %cl, (%rdi) .Lend: + pax_force_retaddr retq CFI_ENDPROC - ENDPROC(memcpy) + ENDPROC(memcpy_orig) diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S -index 9c4b530..830b77a 100644 +index 0f8a0d0..f6e0ea4 100644 --- a/arch/x86/lib/memmove_64.S +++ b/arch/x86/lib/memmove_64.S -@@ -205,14 +205,16 @@ ENTRY(__memmove) +@@ -43,7 +43,7 @@ ENTRY(__memmove) + jg 2f + + .Lmemmove_begin_forward: +- ALTERNATIVE "", "movq %rdx, %rcx; rep movsb; retq", X86_FEATURE_ERMS ++ ALTERNATIVE "", "movq %rdx, %rcx; rep movsb; pax_force_retaddr; retq", X86_FEATURE_ERMS + + /* + * movsq instruction have many startup latency +@@ -206,6 +206,7 @@ ENTRY(__memmove) movb (%rsi), %r11b movb %r11b, (%rdi) 13: + pax_force_retaddr retq CFI_ENDPROC - -- .section .altinstr_replacement,"ax" -+ .section .altinstr_replacement,"a" - .Lmemmove_begin_forward_efs: - /* Forward moving data. */ - movq %rdx, %rcx - rep movsb -+ pax_force_retaddr - retq - .Lmemmove_end_forward_efs: - .previous + ENDPROC(__memmove) diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S -index 6f44935..fbf5f6d 100644 +index 93118fb..386ed2a 100644 --- a/arch/x86/lib/memset_64.S +++ b/arch/x86/lib/memset_64.S -@@ -16,7 +16,7 @@ - * - * rax original destination - */ -- .section .altinstr_replacement, "ax", @progbits -+ .section .altinstr_replacement, "a", @progbits - .Lmemset_c: - movq %rdi,%r9 - movq %rdx,%rcx -@@ -30,6 +30,7 @@ +@@ -41,6 +41,7 @@ ENTRY(__memset) movl %edx,%ecx rep stosb movq %r9,%rax + pax_force_retaddr ret - .Lmemset_e: - .previous -@@ -45,13 +46,14 @@ - * - * rax original destination - */ -- .section .altinstr_replacement, "ax", @progbits -+ .section .altinstr_replacement, "a", @progbits - .Lmemset_c_e: - movq %rdi,%r9 - movb %sil,%al + ENDPROC(memset) + ENDPROC(__memset) +@@ -62,6 +63,7 @@ ENTRY(memset_erms) movq %rdx,%rcx rep stosb movq %r9,%rax + pax_force_retaddr ret - .Lmemset_e_e: - .previous -@@ -120,6 +122,7 @@ ENTRY(__memset) + ENDPROC(memset_erms) + +@@ -126,6 +128,7 @@ ENTRY(memset_orig) .Lende: movq %r10,%rax @@ -30825,7 +31123,7 @@ index c9f2d9b..e7fd2c0 100644 from += 64; to += 64; diff --git a/arch/x86/lib/msr-reg.S b/arch/x86/lib/msr-reg.S -index f6d13ee..d789440 100644 +index 3ca5218..c2ae6bc 100644 --- a/arch/x86/lib/msr-reg.S +++ b/arch/x86/lib/msr-reg.S @@ -3,6 +3,7 @@ @@ -30838,8 +31136,8 @@ index f6d13ee..d789440 100644 /* @@ -37,6 +38,7 @@ ENTRY(\op\()_safe_regs) movl %edi, 28(%r10) - popq_cfi %rbp - popq_cfi %rbx + popq_cfi_reg rbp + popq_cfi_reg rbx + pax_force_retaddr ret 3: @@ -30995,18 +31293,18 @@ index fc6ba17..14ad9a5 100644 xor %eax,%eax EXIT diff --git a/arch/x86/lib/rwsem.S b/arch/x86/lib/rwsem.S -index 5dff5f0..cadebf4 100644 +index 2322abe..1e78a75 100644 --- a/arch/x86/lib/rwsem.S +++ b/arch/x86/lib/rwsem.S -@@ -94,6 +94,7 @@ ENTRY(call_rwsem_down_read_failed) - __ASM_SIZE(pop,_cfi) %__ASM_REG(dx) - CFI_RESTORE __ASM_REG(dx) +@@ -92,6 +92,7 @@ ENTRY(call_rwsem_down_read_failed) + call rwsem_down_read_failed + __ASM_SIZE(pop,_cfi_reg) __ASM_REG(dx) restore_common_regs + pax_force_retaddr ret CFI_ENDPROC ENDPROC(call_rwsem_down_read_failed) -@@ -104,6 +105,7 @@ ENTRY(call_rwsem_down_write_failed) +@@ -102,6 +103,7 @@ ENTRY(call_rwsem_down_write_failed) movq %rax,%rdi call rwsem_down_write_failed restore_common_regs @@ -31014,7 +31312,7 @@ index 5dff5f0..cadebf4 100644 ret CFI_ENDPROC ENDPROC(call_rwsem_down_write_failed) -@@ -117,7 +119,8 @@ ENTRY(call_rwsem_wake) +@@ -115,7 +117,8 @@ ENTRY(call_rwsem_wake) movq %rax,%rdi call rwsem_wake restore_common_regs @@ -31024,16 +31322,16 @@ index 5dff5f0..cadebf4 100644 CFI_ENDPROC ENDPROC(call_rwsem_wake) -@@ -131,6 +134,7 @@ ENTRY(call_rwsem_downgrade_wake) - __ASM_SIZE(pop,_cfi) %__ASM_REG(dx) - CFI_RESTORE __ASM_REG(dx) +@@ -127,6 +130,7 @@ ENTRY(call_rwsem_downgrade_wake) + call rwsem_downgrade_wake + __ASM_SIZE(pop,_cfi_reg) __ASM_REG(dx) restore_common_regs + pax_force_retaddr ret CFI_ENDPROC ENDPROC(call_rwsem_downgrade_wake) diff --git a/arch/x86/lib/thunk_64.S b/arch/x86/lib/thunk_64.S -index b30b5eb..2b57052 100644 +index f89ba4e9..512b2de 100644 --- a/arch/x86/lib/thunk_64.S +++ b/arch/x86/lib/thunk_64.S @@ -9,6 +9,7 @@ @@ -31044,34 +31342,27 @@ index b30b5eb..2b57052 100644 /* rdi: arg1 ... normal C conventions. rax is saved/restored. */ .macro THUNK name, func, put_ret_addr_in_rdi=0 -@@ -16,11 +17,11 @@ - \name: - CFI_STARTPROC - -- /* this one pushes 9 elems, the next one would be %rIP */ -- SAVE_ARGS -+ /* this one pushes 15+1 elems, the next one would be %rIP */ -+ SAVE_ARGS 8 - - .if \put_ret_addr_in_rdi -- movq_cfi_restore 9*8, rdi -+ movq_cfi_restore RIP, rdi - .endif - - call \func -@@ -47,9 +48,10 @@ - - /* SAVE_ARGS below is used only for the .cfi directives it contains. */ - CFI_STARTPROC -- SAVE_ARGS -+ SAVE_ARGS 8 - restore: -- RESTORE_ARGS -+ RESTORE_ARGS 1,8 +@@ -69,6 +70,7 @@ restore: + popq_cfi_reg rdx + popq_cfi_reg rsi + popq_cfi_reg rdi + pax_force_retaddr ret CFI_ENDPROC _ASM_NOKPROBE(restore) +diff --git a/arch/x86/lib/usercopy.c b/arch/x86/lib/usercopy.c +index ddf9ecb..e342586 100644 +--- a/arch/x86/lib/usercopy.c ++++ b/arch/x86/lib/usercopy.c +@@ -20,7 +20,7 @@ copy_from_user_nmi(void *to, const void __user *from, unsigned long n) + unsigned long ret; + + if (__range_not_ok(from, n, TASK_SIZE)) +- return 0; ++ return n; + + /* + * Even though this function is typically called from NMI/IRQ context diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c index e2f5e21..4b22130 100644 --- a/arch/x86/lib/usercopy_32.c @@ -31718,17 +32009,17 @@ index 0a42327..7a82465 100644 return len; } diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile -index c4cc740..60a7362 100644 +index a482d10..1a6edb5 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile -@@ -35,3 +35,7 @@ obj-$(CONFIG_NUMA_EMU) += numa_emulation.o - obj-$(CONFIG_MEMTEST) += memtest.o +@@ -33,3 +33,7 @@ obj-$(CONFIG_ACPI_NUMA) += srat.o + obj-$(CONFIG_NUMA_EMU) += numa_emulation.o obj-$(CONFIG_X86_INTEL_MPX) += mpx.o + +quote:=" +obj-$(CONFIG_X86_64) += uderef_64.o -+CFLAGS_uderef_64.o := $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) ++CFLAGS_uderef_64.o := $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) -fcall-saved-rax diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c index 903ec1e..c4166b2 100644 --- a/arch/x86/mm/extable.c @@ -31784,7 +32075,7 @@ index 903ec1e..c4166b2 100644 } diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c -index ede025f..380466b 100644 +index 181c53b..d336596 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -13,12 +13,19 @@ @@ -31807,15 +32098,6 @@ index ede025f..380466b 100644 #define CREATE_TRACE_POINTS #include -@@ -59,7 +66,7 @@ static nokprobe_inline int kprobes_fault(struct pt_regs *regs) - int ret = 0; - - /* kprobe_running() needs smp_processor_id() */ -- if (kprobes_built_in() && !user_mode_vm(regs)) { -+ if (kprobes_built_in() && !user_mode(regs)) { - preempt_disable(); - if (kprobe_running() && kprobe_fault_handler(regs, 14)) - ret = 1; @@ -120,7 +127,10 @@ check_prefetch_opcode(struct pt_regs *regs, unsigned char *instr, return !instr_lo || (instr_lo>>1) == 1; case 0x00: @@ -32005,11 +32287,11 @@ index ede025f..380466b 100644 +#ifdef CONFIG_PAX_KERNEXEC + if (init_mm.start_code <= address && address < init_mm.end_code) { + if (current->signal->curr_ip) -+ printk(KERN_ERR "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", ++ printk(KERN_EMERG "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", + ¤t->signal->curr_ip, current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid())); + else -+ printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid())); + } +#endif @@ -32049,11 +32331,19 @@ index ede025f..380466b 100644 code = BUS_MCEERR_AR; } #endif -@@ -916,6 +1028,99 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte) +@@ -916,6 +1028,107 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte) return 1; } +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) ++static inline unsigned long get_limit(unsigned long segment) ++{ ++ unsigned long __limit; ++ ++ asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); ++ return __limit + 1; ++} ++ +static int pax_handle_pageexec_fault(struct pt_regs *regs, struct mm_struct *mm, unsigned long address, unsigned long error_code) +{ + pte_t *pte; @@ -32100,7 +32390,7 @@ index ede025f..380466b 100644 + } + +#ifdef CONFIG_SMP -+ if (likely(address > get_limit(regs->cs) && cpu_isset(smp_processor_id(), mm->context.cpu_user_cs_mask))) ++ if (likely(address > get_limit(regs->cs) && cpumask_test_cpu(smp_processor_id(), &mm->context.cpu_user_cs_mask))) +#else + if (likely(address > get_limit(regs->cs))) +#endif @@ -32149,7 +32439,7 @@ index ede025f..380466b 100644 /* * Handle a spurious fault caused by a stale TLB entry. * -@@ -1001,6 +1206,9 @@ int show_unhandled_signals = 1; +@@ -1001,6 +1214,9 @@ int show_unhandled_signals = 1; static inline int access_error(unsigned long error_code, struct vm_area_struct *vma) { @@ -32159,30 +32449,21 @@ index ede025f..380466b 100644 if (error_code & PF_WRITE) { /* write, present and write, not present: */ if (unlikely(!(vma->vm_flags & VM_WRITE))) -@@ -1035,7 +1243,7 @@ static inline bool smap_violation(int error_code, struct pt_regs *regs) - if (error_code & PF_USER) - return false; - -- if (!user_mode_vm(regs) && (regs->flags & X86_EFLAGS_AC)) -+ if (!user_mode(regs) && (regs->flags & X86_EFLAGS_AC)) - return false; - - return true; -@@ -1063,6 +1271,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code, +@@ -1063,6 +1279,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code, tsk = current; mm = tsk->mm; +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF) + if (!user_mode(regs) && address < 2 * pax_user_shadow_base) { + if (!search_exception_tables(regs->ip)) { -+ printk(KERN_ERR "PAX: please report this to pageexec@freemail.hu\n"); ++ printk(KERN_EMERG "PAX: please report this to pageexec@freemail.hu\n"); + bad_area_nosemaphore(regs, error_code, address); + return; + } + if (address < pax_user_shadow_base) { -+ printk(KERN_ERR "PAX: please report this to pageexec@freemail.hu\n"); -+ printk(KERN_ERR "PAX: faulting IP: %pS\n", (void *)regs->ip); -+ show_trace_log_lvl(NULL, NULL, (void *)regs->sp, regs->bp, KERN_ERR); ++ printk(KERN_EMERG "PAX: please report this to pageexec@freemail.hu\n"); ++ printk(KERN_EMERG "PAX: faulting IP: %pS\n", (void *)regs->ip); ++ show_trace_log_lvl(NULL, NULL, (void *)regs->sp, regs->bp, KERN_EMERG); + } else + address -= pax_user_shadow_base; + } @@ -32191,16 +32472,7 @@ index ede025f..380466b 100644 /* * Detect and handle instructions that would cause a page fault for * both a tracked kernel page and a userspace page. -@@ -1140,7 +1364,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: - */ -- if (user_mode_vm(regs)) { -+ if (user_mode(regs)) { - local_irq_enable(); - error_code |= PF_USER; - flags |= FAULT_FLAG_USER; -@@ -1187,6 +1411,11 @@ retry: +@@ -1187,6 +1419,11 @@ retry: might_sleep(); } @@ -32212,7 +32484,7 @@ index ede025f..380466b 100644 vma = find_vma(mm, address); if (unlikely(!vma)) { bad_area(regs, error_code, address); -@@ -1198,18 +1427,24 @@ retry: +@@ -1198,18 +1435,24 @@ retry: bad_area(regs, error_code, address); return; } @@ -32248,7 +32520,7 @@ index ede025f..380466b 100644 if (unlikely(expand_stack(vma, address))) { bad_area(regs, error_code, address); return; -@@ -1329,3 +1564,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code) +@@ -1329,3 +1572,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code) } NOKPROBE_SYMBOL(trace_do_page_fault); #endif /* CONFIG_TRACING */ @@ -32684,7 +32956,7 @@ index 42982b2..7168fc3 100644 #endif /* CONFIG_HUGETLB_PAGE */ diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c -index a110efc..a31a18f 100644 +index 1d55318..d58fd6a 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -4,6 +4,7 @@ @@ -32704,7 +32976,7 @@ index a110efc..a31a18f 100644 /* * We need to define the tracepoints somewhere, and tlb.c -@@ -620,7 +623,18 @@ void __init init_mem_mapping(void) +@@ -615,7 +618,18 @@ void __init init_mem_mapping(void) early_ioremap_page_table_range_init(); #endif @@ -32723,7 +32995,7 @@ index a110efc..a31a18f 100644 __flush_tlb_all(); early_memtest(0, max_pfn_mapped << PAGE_SHIFT); -@@ -636,10 +650,40 @@ void __init init_mem_mapping(void) +@@ -631,10 +645,40 @@ void __init init_mem_mapping(void) * Access has to be given to non-kernel-ram areas as well, these contain the PCI * mmio resources as well as potential bios/acpi data regions. */ @@ -32765,7 +33037,7 @@ index a110efc..a31a18f 100644 if (iomem_is_exclusive(pagenr << PAGE_SHIFT)) return 0; if (!page_is_ram(pagenr)) -@@ -685,8 +729,117 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) +@@ -680,8 +724,117 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) #endif } @@ -33137,10 +33409,10 @@ index c8140e1..59257fc 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 30eb05a..ae671ac 100644 +index 3fba623..5ee9802 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c -@@ -150,7 +150,7 @@ early_param("gbpages", parse_direct_gbpages_on); +@@ -136,7 +136,7 @@ int kernel_ident_mapping_init(struct x86_mapping_info *info, pgd_t *pgd_page, * around without checking the pgd every time. */ @@ -33149,7 +33421,7 @@ index 30eb05a..ae671ac 100644 EXPORT_SYMBOL_GPL(__supported_pte_mask); int force_personality32; -@@ -183,7 +183,12 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) +@@ -169,7 +169,12 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) for (address = start; address <= end; address += PGDIR_SIZE) { const pgd_t *pgd_ref = pgd_offset_k(address); @@ -33162,7 +33434,7 @@ index 30eb05a..ae671ac 100644 /* * When it is called after memory hot remove, pgd_none() -@@ -194,6 +199,25 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) +@@ -180,6 +185,25 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) continue; spin_lock(&pgd_lock); @@ -33188,7 +33460,7 @@ index 30eb05a..ae671ac 100644 list_for_each_entry(page, &pgd_list, lru) { pgd_t *pgd; spinlock_t *pgt_lock; -@@ -202,6 +226,7 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) +@@ -188,6 +212,7 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) /* the pgt_lock only for Xen */ pgt_lock = &pgd_page_get_mm(page)->page_table_lock; spin_lock(pgt_lock); @@ -33196,7 +33468,7 @@ index 30eb05a..ae671ac 100644 if (!pgd_none(*pgd_ref) && !pgd_none(*pgd)) BUG_ON(pgd_page_vaddr(*pgd) -@@ -215,7 +240,10 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) +@@ -201,7 +226,10 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed) set_pgd(pgd, *pgd_ref); } @@ -33207,7 +33479,7 @@ index 30eb05a..ae671ac 100644 } spin_unlock(&pgd_lock); } -@@ -248,7 +276,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr) +@@ -234,7 +262,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr) { if (pgd_none(*pgd)) { pud_t *pud = (pud_t *)spp_getpage(); @@ -33216,7 +33488,7 @@ index 30eb05a..ae671ac 100644 if (pud != pud_offset(pgd, 0)) printk(KERN_ERR "PAGETABLE BUG #00! %p <-> %p\n", pud, pud_offset(pgd, 0)); -@@ -260,7 +288,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr) +@@ -246,7 +274,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr) { if (pud_none(*pud)) { pmd_t *pmd = (pmd_t *) spp_getpage(); @@ -33225,7 +33497,7 @@ index 30eb05a..ae671ac 100644 if (pmd != pmd_offset(pud, 0)) printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n", pmd, pmd_offset(pud, 0)); -@@ -289,7 +317,9 @@ void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte) +@@ -275,7 +303,9 @@ void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte) pmd = fill_pmd(pud, vaddr); pte = fill_pte(pmd, vaddr); @@ -33235,7 +33507,7 @@ index 30eb05a..ae671ac 100644 /* * It's enough to flush this one mapping. -@@ -351,14 +381,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size, +@@ -337,14 +367,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size, pgd = pgd_offset_k((unsigned long)__va(phys)); if (pgd_none(*pgd)) { pud = (pud_t *) spp_getpage(); @@ -33252,7 +33524,7 @@ index 30eb05a..ae671ac 100644 } pmd = pmd_offset(pud, phys); BUG_ON(!pmd_none(*pmd)); -@@ -599,7 +627,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, +@@ -585,7 +613,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, prot); spin_lock(&init_mm.page_table_lock); @@ -33261,7 +33533,7 @@ index 30eb05a..ae671ac 100644 spin_unlock(&init_mm.page_table_lock); } __flush_tlb_all(); -@@ -640,7 +668,7 @@ kernel_physical_mapping_init(unsigned long start, +@@ -626,7 +654,7 @@ kernel_physical_mapping_init(unsigned long start, page_size_mask); spin_lock(&init_mm.page_table_lock); @@ -33287,7 +33559,7 @@ index 9ca35fc..4b2b7b7 100644 return (void *)vaddr; diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c -index fdf617c..b9e85bc 100644 +index 70e7444..75b9a13 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -56,8 +56,8 @@ static int __ioremap_check_ram(unsigned long start_pfn, unsigned long nr_pages, @@ -33301,7 +33573,7 @@ index fdf617c..b9e85bc 100644 return 1; WARN_ONCE(1, "ioremap on RAM pfn 0x%lx\n", start_pfn); -@@ -283,7 +283,7 @@ EXPORT_SYMBOL(ioremap_prot); +@@ -288,7 +288,7 @@ EXPORT_SYMBOL(ioremap_prot); * * Caller must ensure there is only one unmapping for the same pointer. */ @@ -33310,39 +33582,52 @@ index fdf617c..b9e85bc 100644 { struct vm_struct *p, *o; -@@ -332,30 +332,29 @@ EXPORT_SYMBOL(iounmap); +@@ -351,32 +351,36 @@ int arch_ioremap_pmd_supported(void) */ void *xlate_dev_mem_ptr(phys_addr_t phys) { -- void *addr; -- unsigned long start = phys & PAGE_MASK; -- - /* If page is RAM, we can use __va. Otherwise ioremap and unmap. */ +- unsigned long start = phys & PAGE_MASK; +- unsigned long offset = phys & ~PAGE_MASK; +- unsigned long vaddr; ++ phys_addr_t pfn = phys >> PAGE_SHIFT; + +- /* If page is RAM, we can use __va. Otherwise ioremap and unmap. */ - if (page_is_ram(start >> PAGE_SHIFT)) -+ if (page_is_ram(phys >> PAGE_SHIFT)) +- return __va(phys); ++ if (page_is_ram(pfn)) { +#ifdef CONFIG_HIGHMEM -+ if ((phys >> PAGE_SHIFT) < max_low_pfn) ++ if (pfn >= max_low_pfn) ++ return kmap_high(pfn_to_page(pfn)); ++ else +#endif - return __va(phys); ++ return __va(phys); ++ } -- addr = (void __force *)ioremap_cache(start, PAGE_SIZE); -- if (addr) -- addr = (void *)((unsigned long)addr | (phys & ~PAGE_MASK)); +- vaddr = (unsigned long)ioremap_cache(start, PAGE_SIZE); +- /* Only add the offset on success and return NULL if the ioremap() failed: */ +- if (vaddr) +- vaddr += offset; - -- return addr; -+ return (void __force *)ioremap_cache(phys, PAGE_SIZE); +- return (void *)vaddr; ++ return (void __force *)ioremap_cache(phys, 1); } void unxlate_dev_mem_ptr(phys_addr_t phys, void *addr) { - if (page_is_ram(phys >> PAGE_SHIFT)) +- if (page_is_ram(phys >> PAGE_SHIFT)) ++ phys_addr_t pfn = phys >> PAGE_SHIFT; ++ ++ if (page_is_ram(pfn)) { +#ifdef CONFIG_HIGHMEM -+ if ((phys >> PAGE_SHIFT) < max_low_pfn) ++ if (pfn >= max_low_pfn) ++ kunmap_high(pfn_to_page(pfn)); +#endif return; ++ } - iounmap((void __iomem *)((unsigned long)addr & PAGE_MASK)); - return; +- iounmap((void __iomem *)((unsigned long)addr & PAGE_MASK)); +- return; ++ iounmap((void __iomem __force *)addr); } -static pte_t bm_pte[PAGE_SIZE/sizeof(pte_t)] __page_aligned_bss; @@ -33350,7 +33635,7 @@ index fdf617c..b9e85bc 100644 static inline pmd_t * __init early_ioremap_pmd(unsigned long addr) { -@@ -391,8 +390,7 @@ void __init early_ioremap_init(void) +@@ -412,8 +416,7 @@ void __init early_ioremap_init(void) early_ioremap_setup(); pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); @@ -33377,7 +33662,7 @@ index b4f2e7e..96c9c3e 100644 pte = kmemcheck_pte_lookup(address); diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c -index df4552b..12c129c 100644 +index 9d518d6..8a091f5 100644 --- a/arch/x86/mm/mmap.c +++ b/arch/x86/mm/mmap.c @@ -52,7 +52,7 @@ static unsigned long stack_maxrandom_size(void) @@ -33389,12 +33674,12 @@ index df4552b..12c129c 100644 static int mmap_is_legacy(void) { -@@ -82,27 +82,40 @@ static unsigned long mmap_rnd(void) +@@ -81,27 +81,40 @@ unsigned long arch_mmap_rnd(void) return rnd << PAGE_SHIFT; } --static unsigned long mmap_base(void) -+static unsigned long mmap_base(struct mm_struct *mm) +-static unsigned long mmap_base(unsigned long rnd) ++static unsigned long mmap_base(struct mm_struct *mm, unsigned long rnd) { unsigned long gap = rlimit(RLIMIT_STACK); + unsigned long pax_task_size = TASK_SIZE; @@ -33409,16 +33694,16 @@ index df4552b..12c129c 100644 else if (gap > MAX_GAP) gap = MAX_GAP; -- return PAGE_ALIGN(TASK_SIZE - gap - mmap_rnd()); -+ return PAGE_ALIGN(pax_task_size - gap - mmap_rnd()); +- return PAGE_ALIGN(TASK_SIZE - gap - rnd); ++ return PAGE_ALIGN(pax_task_size - gap - rnd); } /* * Bottom-up (legacy) layout on X86_32 did not support randomization, X86_64 * does, but not when emulating X86_32 */ --static unsigned long mmap_legacy_base(void) -+static unsigned long mmap_legacy_base(struct mm_struct *mm) +-static unsigned long mmap_legacy_base(unsigned long rnd) ++static unsigned long mmap_legacy_base(struct mm_struct *mm, unsigned long rnd) { - if (mmap_is_ia32()) + if (mmap_is_ia32()) { @@ -33432,17 +33717,30 @@ index df4552b..12c129c 100644 return TASK_UNMAPPED_BASE; - else + } else - return TASK_UNMAPPED_BASE + mmap_rnd(); + return TASK_UNMAPPED_BASE + rnd; } -@@ -112,8 +125,15 @@ static unsigned long mmap_legacy_base(void) - */ - void arch_pick_mmap_layout(struct mm_struct *mm) +@@ -113,16 +126,27 @@ void arch_pick_mmap_layout(struct mm_struct *mm) { -- mm->mmap_legacy_base = mmap_legacy_base(); -- mm->mmap_base = mmap_base(); -+ mm->mmap_legacy_base = mmap_legacy_base(mm); -+ mm->mmap_base = mmap_base(mm); + unsigned long random_factor = 0UL; + ++#ifdef CONFIG_PAX_RANDMMAP ++ if (!(mm->pax_flags & MF_PAX_RANDMMAP)) ++#endif + if (current->flags & PF_RANDOMIZE) + random_factor = arch_mmap_rnd(); + +- mm->mmap_legacy_base = mmap_legacy_base(random_factor); ++ mm->mmap_legacy_base = mmap_legacy_base(mm, random_factor); + + if (mmap_is_legacy()) { + mm->mmap_base = mm->mmap_legacy_base; + mm->get_unmapped_area = arch_get_unmapped_area; + } else { +- mm->mmap_base = mmap_base(random_factor); ++ mm->mmap_base = mmap_base(mm, random_factor); + mm->get_unmapped_area = arch_get_unmapped_area_topdown; + } + +#ifdef CONFIG_PAX_RANDMMAP + if (mm->pax_flags & MF_PAX_RANDMMAP) { @@ -33450,9 +33748,8 @@ index df4552b..12c129c 100644 + mm->mmap_base -= mm->delta_mmap + mm->delta_stack; + } +#endif - - if (mmap_is_legacy()) { - mm->mmap_base = mm->mmap_legacy_base; ++ + } diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c index 0057a7a..95c7edd 100644 --- a/arch/x86/mm/mmio-mod.c @@ -33503,10 +33800,10 @@ index 0057a7a..95c7edd 100644 might_sleep(); if (is_enabled()) /* recheck and proper locking in *_core() */ diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c -index cd4785b..25188b6 100644 +index 4053bb5..b1ad3dc 100644 --- a/arch/x86/mm/numa.c +++ b/arch/x86/mm/numa.c -@@ -499,7 +499,7 @@ static void __init numa_clear_kernel_node_hotplug(void) +@@ -506,7 +506,7 @@ static void __init numa_clear_kernel_node_hotplug(void) } } @@ -33516,10 +33813,10 @@ index cd4785b..25188b6 100644 unsigned long uninitialized_var(pfn_align); int i, nid; diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c -index 536ea2f..f42c293 100644 +index 89af288..05381957 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c -@@ -262,7 +262,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, +@@ -260,7 +260,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, */ #ifdef CONFIG_PCI_BIOS if (pcibios_enabled && within(pfn, BIOS_BEGIN >> PAGE_SHIFT, BIOS_END >> PAGE_SHIFT)) @@ -33528,7 +33825,7 @@ index 536ea2f..f42c293 100644 #endif /* -@@ -270,9 +270,10 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, +@@ -268,9 +268,10 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, * Does not cover __inittext since that is gone later on. On * 64bit we do not enforce !NX on the low mapping */ @@ -33541,7 +33838,7 @@ index 536ea2f..f42c293 100644 /* * The .rodata section needs to be read-only. Using the pfn * catches all aliases. -@@ -280,6 +281,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, +@@ -278,6 +279,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, if (within(pfn, __pa_symbol(__start_rodata) >> PAGE_SHIFT, __pa_symbol(__end_rodata) >> PAGE_SHIFT)) pgprot_val(forbidden) |= _PAGE_RW; @@ -33549,7 +33846,7 @@ index 536ea2f..f42c293 100644 #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA) /* -@@ -318,6 +320,13 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, +@@ -316,6 +318,13 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address, } #endif @@ -33563,7 +33860,7 @@ index 536ea2f..f42c293 100644 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden)); return prot; -@@ -440,23 +449,37 @@ EXPORT_SYMBOL_GPL(slow_virt_to_phys); +@@ -438,23 +447,37 @@ EXPORT_SYMBOL_GPL(slow_virt_to_phys); static void __set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte) { /* change init_mm */ @@ -33604,7 +33901,7 @@ index 536ea2f..f42c293 100644 static int diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c -index 7ac6869..c0ba541 100644 +index 35af677..e7bf11f 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c @@ -89,7 +89,7 @@ static inline enum page_cache_mode get_page_memtype(struct page *pg) @@ -33651,10 +33948,10 @@ index 7ac6869..c0ba541 100644 while (cursor < to) { if (!devmem_is_allowed(pfn)) { -- printk(KERN_INFO "Program %s tried to access /dev/mem between [mem %#010Lx-%#010Lx]\n", -- current->comm, from, to - 1); -+ printk(KERN_INFO "Program %s tried to access /dev/mem between [mem %#010Lx-%#010Lx] (%#010Lx)\n", -+ current->comm, from, to - 1, cursor); +- printk(KERN_INFO "Program %s tried to access /dev/mem between [mem %#010Lx-%#010Lx], PAT prevents it\n", +- current->comm, from, to - 1); ++ printk(KERN_INFO "Program %s tried to access /dev/mem between [mem %#010Lx-%#010Lx] (%#010Lx), PAT prevents it\n", ++ current->comm, from, to - 1, cursor); return 0; } cursor += PAGE_SIZE; @@ -33748,10 +34045,10 @@ 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 7b22ada..b11e66f 100644 +index 0b97d2c..597bb38 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c -@@ -97,10 +97,75 @@ static inline void pgd_list_del(pgd_t *pgd) +@@ -98,10 +98,75 @@ static inline void pgd_list_del(pgd_t *pgd) list_del(&page->lru); } @@ -33829,7 +34126,7 @@ index 7b22ada..b11e66f 100644 static void pgd_set_mm(pgd_t *pgd, struct mm_struct *mm) { BUILD_BUG_ON(sizeof(virt_to_page(pgd)->index) < sizeof(mm)); -@@ -141,6 +206,7 @@ static void pgd_dtor(pgd_t *pgd) +@@ -142,6 +207,7 @@ static void pgd_dtor(pgd_t *pgd) pgd_list_del(pgd); spin_unlock(&pgd_lock); } @@ -33837,7 +34134,7 @@ index 7b22ada..b11e66f 100644 /* * List of all pgd's needed for non-PAE so it can invalidate entries -@@ -153,7 +219,7 @@ static void pgd_dtor(pgd_t *pgd) +@@ -154,7 +220,7 @@ static void pgd_dtor(pgd_t *pgd) * -- nyc */ @@ -33846,7 +34143,7 @@ index 7b22ada..b11e66f 100644 /* * In PAE mode, we need to do a cr3 reload (=tlb flush) when * updating the top-level pagetable entries to guarantee the -@@ -165,7 +231,7 @@ static void pgd_dtor(pgd_t *pgd) +@@ -166,7 +232,7 @@ static void pgd_dtor(pgd_t *pgd) * not shared between pagetables (!SHARED_KERNEL_PMDS), we allocate * and initialize the kernel pmds here. */ @@ -33855,7 +34152,7 @@ index 7b22ada..b11e66f 100644 void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) { -@@ -183,46 +249,48 @@ void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) +@@ -184,46 +250,48 @@ void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) */ flush_tlb_mm(mm); } @@ -33922,7 +34219,7 @@ index 7b22ada..b11e66f 100644 return -ENOMEM; } -@@ -235,50 +303,54 @@ static int preallocate_pmds(struct mm_struct *mm, pmd_t *pmds[]) +@@ -236,43 +304,47 @@ static int preallocate_pmds(struct mm_struct *mm, pmd_t *pmds[]) * preallocate which never got a corresponding vma will need to be * freed manually. */ @@ -33986,15 +34283,16 @@ index 7b22ada..b11e66f 100644 } } +@@ -354,7 +426,7 @@ static inline void _pgd_free(pgd_t *pgd) pgd_t *pgd_alloc(struct mm_struct *mm) { pgd_t *pgd; - pmd_t *pmds[PREALLOCATED_PMDS]; + pxd_t *pxds[PREALLOCATED_PXDS]; - pgd = (pgd_t *)__get_free_page(PGALLOC_GFP); + pgd = _pgd_alloc(); -@@ -287,11 +359,11 @@ pgd_t *pgd_alloc(struct mm_struct *mm) +@@ -363,11 +435,11 @@ pgd_t *pgd_alloc(struct mm_struct *mm) mm->pgd = pgd; @@ -34008,7 +34306,7 @@ index 7b22ada..b11e66f 100644 /* * Make sure that pre-populating the pmds is atomic with -@@ -301,14 +373,14 @@ pgd_t *pgd_alloc(struct mm_struct *mm) +@@ -377,14 +449,14 @@ pgd_t *pgd_alloc(struct mm_struct *mm) spin_lock(&pgd_lock); pgd_ctor(mm, pgd); @@ -34024,9 +34322,9 @@ index 7b22ada..b11e66f 100644 +out_free_pxds: + free_pxds(mm, pxds); out_free_pgd: - free_page((unsigned long)pgd); + _pgd_free(pgd); out: -@@ -317,7 +389,7 @@ out: +@@ -393,7 +465,7 @@ out: void pgd_free(struct mm_struct *mm, pgd_t *pgd) { @@ -34034,7 +34332,7 @@ index 7b22ada..b11e66f 100644 + pgd_mop_up_pxds(mm, pgd); pgd_dtor(pgd); paravirt_pgd_free(mm, pgd); - free_page((unsigned long)pgd); + _pgd_free(pgd); diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index 75cc097..79a097f 100644 --- a/arch/x86/mm/pgtable_32.c @@ -34126,7 +34424,7 @@ index 3250f23..7a97ba2 100644 * functions differently. Tracing normally diff --git a/arch/x86/mm/uderef_64.c b/arch/x86/mm/uderef_64.c new file mode 100644 -index 0000000..dace51c +index 0000000..3fda3f3 --- /dev/null +++ b/arch/x86/mm/uderef_64.c @@ -0,0 +1,37 @@ @@ -34139,7 +34437,7 @@ index 0000000..dace51c + * - remain leaf functions under all configurations, + * - never be called directly, only dereferenced from the wrappers. + */ -+void __pax_open_userland(void) ++void __used __pax_open_userland(void) +{ + unsigned int cpu; + @@ -34148,12 +34446,12 @@ index 0000000..dace51c + + cpu = raw_get_cpu(); + BUG_ON((read_cr3() & ~PAGE_MASK) != PCID_KERNEL); -+ write_cr3(__pa(get_cpu_pgd(cpu, user)) | PCID_USER | PCID_NOFLUSH); ++ write_cr3(__pa_nodebug(get_cpu_pgd(cpu, user)) | PCID_USER | PCID_NOFLUSH); + raw_put_cpu_no_resched(); +} +EXPORT_SYMBOL(__pax_open_userland); + -+void __pax_close_userland(void) ++void __used __pax_close_userland(void) +{ + unsigned int cpu; + @@ -34162,7 +34460,7 @@ index 0000000..dace51c + + cpu = raw_get_cpu(); + BUG_ON((read_cr3() & ~PAGE_MASK) != PCID_USER); -+ write_cr3(__pa(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL | PCID_NOFLUSH); ++ write_cr3(__pa_nodebug(get_cpu_pgd(cpu, kernel)) | PCID_KERNEL | PCID_NOFLUSH); + raw_put_cpu_no_resched(); +} +EXPORT_SYMBOL(__pax_close_userland); @@ -34257,7 +34555,7 @@ index 6440221..f84b5c7 100644 + pax_force_retaddr ret diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c -index 9875143..36776ae 100644 +index ddeff48..877ead6 100644 --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c @@ -13,7 +13,11 @@ @@ -34282,49 +34580,7 @@ index 9875143..36776ae 100644 } struct jit_context { -@@ -559,6 +565,13 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image, - if (is_ereg(dst_reg)) - EMIT1(0x41); - EMIT3(0xC1, add_1reg(0xC8, dst_reg), 8); -+ -+ /* emit 'movzwl eax, ax' */ -+ if (is_ereg(dst_reg)) -+ EMIT3(0x45, 0x0F, 0xB7); -+ else -+ EMIT2(0x0F, 0xB7); -+ EMIT1(add_2reg(0xC0, dst_reg, dst_reg)); - break; - case 32: - /* emit 'bswap eax' to swap lower 4 bytes */ -@@ -577,6 +590,27 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image, - break; - - case BPF_ALU | BPF_END | BPF_FROM_LE: -+ switch (imm32) { -+ case 16: -+ /* emit 'movzwl eax, ax' to zero extend 16-bit -+ * into 64 bit -+ */ -+ if (is_ereg(dst_reg)) -+ EMIT3(0x45, 0x0F, 0xB7); -+ else -+ EMIT2(0x0F, 0xB7); -+ EMIT1(add_2reg(0xC0, dst_reg, dst_reg)); -+ break; -+ case 32: -+ /* emit 'mov eax, eax' to clear upper 32-bits */ -+ if (is_ereg(dst_reg)) -+ EMIT1(0x45); -+ EMIT2(0x89, add_2reg(0xC0, dst_reg, dst_reg)); -+ break; -+ case 64: -+ /* nop */ -+ break; -+ } - break; - - /* ST: *(u8*)(dst_reg + off) = imm */ -@@ -896,7 +930,9 @@ common_load: +@@ -924,7 +930,9 @@ common_load: pr_err("bpf_jit_compile fatal error\n"); return -EFAULT; } @@ -34334,7 +34590,7 @@ index 9875143..36776ae 100644 } proglen += ilen; addrs[i] = proglen; -@@ -968,7 +1004,6 @@ void bpf_int_jit_compile(struct bpf_prog *prog) +@@ -1001,7 +1009,6 @@ void bpf_int_jit_compile(struct bpf_prog *prog) if (image) { bpf_flush_icache(header, image + proglen); @@ -34342,7 +34598,7 @@ index 9875143..36776ae 100644 prog->bpf_func = (void *)image; prog->jited = true; } -@@ -981,12 +1016,8 @@ void bpf_jit_free(struct bpf_prog *fp) +@@ -1014,12 +1021,8 @@ void bpf_jit_free(struct bpf_prog *fp) unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK; struct bpf_binary_header *header = (void *)addr; @@ -34358,7 +34614,7 @@ index 9875143..36776ae 100644 bpf_prog_unlock_free(fp); } diff --git a/arch/x86/oprofile/backtrace.c b/arch/x86/oprofile/backtrace.c -index 5d04be5..2beeaa2 100644 +index 4e664bd..2beeaa2 100644 --- a/arch/x86/oprofile/backtrace.c +++ b/arch/x86/oprofile/backtrace.c @@ -46,11 +46,11 @@ dump_user_backtrace_32(struct stack_frame_ia32 *head) @@ -34384,15 +34640,6 @@ index 5d04be5..2beeaa2 100644 if (bytes != 0) return NULL; -@@ -111,7 +111,7 @@ x86_backtrace(struct pt_regs * const regs, unsigned int depth) - { - struct stack_frame *head = (struct stack_frame *)frame_pointer(regs); - -- if (!user_mode_vm(regs)) { -+ if (!user_mode(regs)) { - unsigned long stack = kernel_stack_pointer(regs); - if (depth) - dump_trace(NULL, regs, (unsigned long *)stack, 0, diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c index 1d2e639..f6ef82a 100644 --- a/arch/x86/oprofile/nmi_int.c @@ -34832,19 +35079,24 @@ index 9b83b90..4112152 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 40e7cda..c7e6672 100644 +index ed5b673..24d2d53 100644 --- a/arch/x86/platform/efi/efi_32.c +++ b/arch/x86/platform/efi/efi_32.c -@@ -61,11 +61,22 @@ void __init efi_call_phys_prolog(void) - { +@@ -61,11 +61,27 @@ pgd_t * __init efi_call_phys_prolog(void) struct desc_ptr gdt_descr; + pgd_t *save_pgd; +#ifdef CONFIG_PAX_KERNEXEC + struct desc_struct d; +#endif + - local_irq_save(efi_rt_eflags); - + /* Current pgd is swapper_pg_dir, we'll restore it later: */ ++#ifdef CONFIG_PAX_PER_CPU_PGD ++ save_pgd = get_cpu_pgd(smp_processor_id(), kernel); ++#else + save_pgd = swapper_pg_dir; ++#endif ++ load_cr3(initial_page_table); __flush_tlb_all(); @@ -34858,7 +35110,7 @@ index 40e7cda..c7e6672 100644 gdt_descr.address = __pa(get_cpu_gdt_table(0)); gdt_descr.size = GDT_SIZE - 1; load_gdt(&gdt_descr); -@@ -75,11 +86,24 @@ void __init efi_call_phys_epilog(void) +@@ -77,6 +93,14 @@ void __init efi_call_phys_epilog(pgd_t *save_pgd) { struct desc_ptr gdt_descr; @@ -34873,21 +35125,11 @@ index 40e7cda..c7e6672 100644 gdt_descr.address = (unsigned long)get_cpu_gdt_table(0); gdt_descr.size = GDT_SIZE - 1; load_gdt(&gdt_descr); - -+#ifdef CONFIG_PAX_PER_CPU_PGD -+ load_cr3(get_cpu_pgd(smp_processor_id(), kernel)); -+#else - load_cr3(swapper_pg_dir); -+#endif -+ - __flush_tlb_all(); - - local_irq_restore(efi_rt_eflags); diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c -index 17e80d8..9fa6e41 100644 +index a0ac0f9..f41d324 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c -@@ -98,6 +98,11 @@ void __init efi_call_phys_prolog(void) +@@ -96,6 +96,11 @@ pgd_t * __init efi_call_phys_prolog(void) vaddress = (unsigned long)__va(pgd * PGDIR_SIZE); set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress)); } @@ -34897,21 +35139,20 @@ index 17e80d8..9fa6e41 100644 +#endif + __flush_tlb_all(); - } -@@ -115,6 +120,11 @@ void __init efi_call_phys_epilog(void) - for (pgd = 0; pgd < n_pgds; pgd++) - set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]); + return save_pgd; +@@ -119,6 +124,10 @@ void __init efi_call_phys_epilog(pgd_t *save_pgd) + kfree(save_pgd); -+ + +#ifdef CONFIG_PAX_PER_CPU_PGD + load_cr3(get_cpu_pgd(smp_processor_id(), kernel)); +#endif + __flush_tlb_all(); - local_irq_restore(efi_flags); early_code_mapping_set_exec(0); -@@ -145,8 +155,23 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) + } +@@ -148,8 +157,23 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) unsigned npages; pgd_t *pgd; @@ -35157,10 +35398,10 @@ index aaca917..66eadbc 100644 return &tangier_ops; } diff --git a/arch/x86/platform/intel-quark/imr_selftest.c b/arch/x86/platform/intel-quark/imr_selftest.c -index c9a0838..fae0977 100644 +index 278e4da..55e8d8a 100644 --- a/arch/x86/platform/intel-quark/imr_selftest.c +++ b/arch/x86/platform/intel-quark/imr_selftest.c -@@ -54,7 +54,7 @@ static void __init imr_self_test_result(int res, const char *fmt, ...) +@@ -55,7 +55,7 @@ static void __init imr_self_test_result(int res, const char *fmt, ...) */ static void __init imr_self_test(void) { @@ -35183,19 +35424,19 @@ index d6ee929..3637cb5 100644 .getproplen = olpc_dt_getproplen, .getproperty = olpc_dt_getproperty, diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c -index 3e32ed5..cc0adc5 100644 +index 757678f..9895d9b 100644 --- a/arch/x86/power/cpu.c +++ b/arch/x86/power/cpu.c @@ -134,11 +134,8 @@ static void do_fpu_end(void) static void fix_processor_context(void) { int cpu = smp_processor_id(); -- struct tss_struct *t = &per_cpu(init_tss, cpu); +- struct tss_struct *t = &per_cpu(cpu_tss, cpu); -#ifdef CONFIG_X86_64 - struct desc_struct *desc = get_cpu_gdt_table(cpu); - tss_desc tss; -#endif -+ struct tss_struct *t = init_tss + cpu; ++ struct tss_struct *t = cpu_tss + cpu; + set_tss_desc(cpu, t); /* * This just modifies memory; should not be @@ -35620,7 +35861,7 @@ index 80ffa5b..a33bd15 100644 return 0; diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile -index 7b9be98..39bb57f 100644 +index e970320..c006fea 100644 --- a/arch/x86/vdso/Makefile +++ b/arch/x86/vdso/Makefile @@ -175,7 +175,7 @@ quiet_cmd_vdso = VDSO $@ @@ -35783,7 +36024,7 @@ index e88fda8..76ce7ce 100644 This is the Linux Xen port. Enabling this will allow the kernel to boot in a paravirtualized environment under the diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c -index 5240f56..0c12163 100644 +index 46957ea..ef7b714 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -125,8 +125,6 @@ EXPORT_SYMBOL_GPL(xen_start_info); @@ -35824,16 +36065,7 @@ index 5240f56..0c12163 100644 BUG_ON(va & ~PAGE_MASK); for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { -@@ -991,7 +987,7 @@ static u32 xen_safe_apic_wait_icr_idle(void) - return 0; - } - --static void set_xen_basic_apic_ops(void) -+static void __init set_xen_basic_apic_ops(void) - { - apic->read = xen_apic_read; - apic->write = xen_apic_write; -@@ -1308,30 +1304,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = { +@@ -1223,30 +1219,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = { #endif }; @@ -35871,7 +36103,7 @@ index 5240f56..0c12163 100644 { if (pm_power_off) pm_power_off(); -@@ -1484,8 +1480,11 @@ static void __ref xen_setup_gdt(int cpu) +@@ -1399,8 +1395,11 @@ static void __ref xen_setup_gdt(int cpu) pv_cpu_ops.write_gdt_entry = xen_write_gdt_entry_boot; pv_cpu_ops.load_gdt = xen_load_gdt_boot; @@ -35885,7 +36117,7 @@ index 5240f56..0c12163 100644 pv_cpu_ops.write_gdt_entry = xen_write_gdt_entry; pv_cpu_ops.load_gdt = xen_load_gdt; -@@ -1600,7 +1599,17 @@ asmlinkage __visible void __init xen_start_kernel(void) +@@ -1515,7 +1514,17 @@ asmlinkage __visible void __init xen_start_kernel(void) __userpte_alloc_gfp &= ~__GFP_HIGHMEM; /* Work out if we support NX */ @@ -35904,7 +36136,7 @@ index 5240f56..0c12163 100644 /* Get mfn list */ xen_build_dynamic_phys_to_machine(); -@@ -1628,13 +1637,6 @@ asmlinkage __visible void __init xen_start_kernel(void) +@@ -1543,13 +1552,6 @@ asmlinkage __visible void __init xen_start_kernel(void) machine_ops = xen_machine_ops; @@ -35919,7 +36151,7 @@ index 5240f56..0c12163 100644 #ifdef CONFIG_ACPI_NUMA diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c -index adca9e2..cdba9d1 100644 +index dd151b2..d5ab952 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c @@ -379,7 +379,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val) @@ -35965,7 +36197,7 @@ index adca9e2..cdba9d1 100644 pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE, @@ -2048,6 +2059,7 @@ static void __init xen_post_allocator_init(void) pv_mmu_ops.set_pud = xen_set_pud; - #if PAGETABLE_LEVELS == 4 + #if CONFIG_PGTABLE_LEVELS == 4 pv_mmu_ops.set_pgd = xen_set_pgd; + pv_mmu_ops.set_pgd_batched = xen_set_pgd; #endif @@ -35980,10 +36212,10 @@ index adca9e2..cdba9d1 100644 .alloc_pud = xen_alloc_pmd_init, .release_pud = xen_release_pmd_init, diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c -index 08e8489..b1e182f 100644 +index 8648438..18bac20 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c -@@ -288,17 +288,13 @@ static void __init xen_smp_prepare_boot_cpu(void) +@@ -284,17 +284,13 @@ static void __init xen_smp_prepare_boot_cpu(void) if (xen_pv_domain()) { if (!xen_feature(XENFEAT_writable_page_tables)) @@ -36003,7 +36235,7 @@ index 08e8489..b1e182f 100644 #endif xen_filter_cpu_maps(); -@@ -379,7 +375,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) +@@ -375,7 +371,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) #ifdef CONFIG_X86_32 /* Note: PVH is not yet supported on x86_32. */ ctxt->user_regs.fs = __KERNEL_PERCPU; @@ -36012,7 +36244,7 @@ index 08e8489..b1e182f 100644 #endif memset(&ctxt->fpu_ctxt, 0, sizeof(ctxt->fpu_ctxt)); -@@ -387,8 +383,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) +@@ -383,8 +379,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle; ctxt->flags = VGCF_IN_KERNEL; ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */ @@ -36023,24 +36255,7 @@ index 08e8489..b1e182f 100644 ctxt->user_regs.ss = __KERNEL_DS; xen_copy_trap_info(ctxt->trap_ctxt); -@@ -446,14 +442,13 @@ static int xen_cpu_up(unsigned int cpu, struct task_struct *idle) - int rc; - - per_cpu(current_task, cpu) = idle; -+ per_cpu(current_tinfo, cpu) = &idle->tinfo; - #ifdef CONFIG_X86_32 - irq_ctx_init(cpu); - #else - clear_tsk_thread_flag(idle, TIF_FORK); - #endif -- per_cpu(kernel_stack, cpu) = -- (unsigned long)task_stack_page(idle) - -- KERNEL_STACK_OFFSET + THREAD_SIZE; -+ per_cpu(kernel_stack, cpu) = (unsigned long)task_stack_page(idle) - 16 + THREAD_SIZE; - - xen_setup_runstate_info(cpu); - xen_setup_timer(cpu); -@@ -732,7 +727,7 @@ static const struct smp_ops xen_smp_ops __initconst = { +@@ -720,7 +716,7 @@ static const struct smp_ops xen_smp_ops __initconst = { void __init xen_smp_init(void) { @@ -36063,10 +36278,10 @@ index fd92a64..1f72641 100644 #else movl %ss:xen_vcpu, %eax diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S -index 674b2225..f1f5dc1 100644 +index 8afdfcc..79239db 100644 --- a/arch/x86/xen/xen-head.S +++ b/arch/x86/xen/xen-head.S -@@ -39,6 +39,17 @@ ENTRY(startup_xen) +@@ -41,6 +41,17 @@ ENTRY(startup_xen) #ifdef CONFIG_X86_32 mov %esi,xen_start_info mov $init_thread_union+THREAD_SIZE,%esp @@ -36171,7 +36386,7 @@ index 0736729..2ec3b48 100644 struct list_head *list = this_cpu_ptr(&blk_cpu_iopoll); int rearm = 0, budget = blk_iopoll_budget; diff --git a/block/blk-map.c b/block/blk-map.c -index b8d2725..08c52b0 100644 +index da310a1..213b5c9 100644 --- a/block/blk-map.c +++ b/block/blk-map.c @@ -192,7 +192,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf, @@ -36183,6 +36398,19 @@ index b8d2725..08c52b0 100644 if (do_copy) bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading); else +diff --git a/block/blk-mq.c b/block/blk-mq.c +index 594eea0..2dc1fd6 100644 +--- a/block/blk-mq.c ++++ b/block/blk-mq.c +@@ -1968,7 +1968,7 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, + goto err_hctxs; + + setup_timer(&q->timeout, blk_mq_rq_timer, (unsigned long) q); +- blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30000); ++ blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30 * HZ); + + q->nr_queues = nr_cpu_ids; + q->nr_hw_queues = set->nr_hw_queues; diff --git a/block/blk-softirq.c b/block/blk-softirq.c index 53b1737..08177d2e 100644 --- a/block/blk-softirq.c @@ -36250,7 +36478,7 @@ index f678c73..f35aa18 100644 err = -EFAULT; goto out; diff --git a/block/genhd.c b/block/genhd.c -index 0a536dc..b8f7aca 100644 +index ea982ea..86e0f9e 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -469,21 +469,24 @@ static char *bdevt_str(dev_t devt, char *buf) @@ -36307,7 +36535,7 @@ index 26cb624..a49c3a5 100644 (u8 *) pte, count) < count) { kfree(pte); diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c -index e1f71c3..02d295a 100644 +index 55b6f15..b602c9a 100644 --- a/block/scsi_ioctl.c +++ b/block/scsi_ioctl.c @@ -67,7 +67,7 @@ static int scsi_get_bus(struct request_queue *q, int __user *p) @@ -36341,7 +36569,7 @@ index e1f71c3..02d295a 100644 if (blk_verify_command(rq->cmd, mode & FMODE_WRITE)) return -EPERM; -@@ -422,6 +434,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, +@@ -420,6 +432,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]; @@ -36350,7 +36578,7 @@ index e1f71c3..02d295a 100644 if (!sic) return -EINVAL; -@@ -460,9 +474,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, +@@ -458,9 +472,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode, */ err = -EFAULT; rq->cmd_len = cmdlen; @@ -36371,7 +36599,7 @@ index e1f71c3..02d295a 100644 goto error; diff --git a/crypto/cryptd.c b/crypto/cryptd.c -index 650afac1..f3307de 100644 +index b0602ba..fb71850 100644 --- a/crypto/cryptd.c +++ b/crypto/cryptd.c @@ -63,7 +63,7 @@ struct cryptd_blkcipher_ctx { @@ -36497,7 +36725,7 @@ index a83e3c6..c3d617f 100644 bgrt_kobj = kobject_create_and_add("bgrt", acpi_kobj); if (!bgrt_kobj) diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c -index 9b693d5..8953d54 100644 +index 1d17919..315e955 100644 --- a/drivers/acpi/blacklist.c +++ b/drivers/acpi/blacklist.c @@ -51,7 +51,7 @@ struct acpi_blacklist_item { @@ -36519,7 +36747,7 @@ index 9b693d5..8953d54 100644 .callback = dmi_disable_osi_vista, .ident = "Fujitsu Siemens", diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c -index 8b67bd0..b59593e 100644 +index 513e7230e..802015a 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -67,7 +67,7 @@ static int set_copy_dsdt(const struct dmi_system_id *id) @@ -36556,10 +36784,10 @@ index c68e724..e863008 100644 /* parse the table header to get the table length */ if (count <= sizeof(struct acpi_table_header)) diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c -index 735db11..91e07ff 100644 +index 8217e0b..3294cb6 100644 --- a/drivers/acpi/device_pm.c +++ b/drivers/acpi/device_pm.c -@@ -1025,6 +1025,8 @@ EXPORT_SYMBOL_GPL(acpi_subsys_freeze); +@@ -1026,6 +1026,8 @@ EXPORT_SYMBOL_GPL(acpi_subsys_freeze); #endif /* CONFIG_PM_SLEEP */ @@ -36568,7 +36796,7 @@ index 735db11..91e07ff 100644 static struct dev_pm_domain acpi_general_pm_domain = { .ops = { .runtime_suspend = acpi_subsys_runtime_suspend, -@@ -1041,6 +1043,7 @@ static struct dev_pm_domain acpi_general_pm_domain = { +@@ -1042,6 +1044,7 @@ static struct dev_pm_domain acpi_general_pm_domain = { .restore_early = acpi_subsys_resume_early, #endif }, @@ -36576,7 +36804,7 @@ index 735db11..91e07ff 100644 }; /** -@@ -1110,7 +1113,6 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on) +@@ -1111,7 +1114,6 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on) acpi_device_wakeup(adev, ACPI_STATE_S0, false); } @@ -36585,10 +36813,10 @@ index 735db11..91e07ff 100644 } EXPORT_SYMBOL_GPL(acpi_dev_pm_attach); diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c -index a8dd2f7..e15950e 100644 +index 5e8fed4..d9bb545 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c -@@ -1242,7 +1242,7 @@ static int ec_clear_on_resume(const struct dmi_system_id *id) +@@ -1293,7 +1293,7 @@ static int ec_clear_on_resume(const struct dmi_system_id *id) return 0; } @@ -36624,10 +36852,10 @@ index d9f7158..168e742 100644 }; diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c -index f98db0b..8309c83 100644 +index 39e0c8e..b5ae20c 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c -@@ -912,7 +912,7 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr) +@@ -910,7 +910,7 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr) { int i, count = CPUIDLE_DRIVER_STATE_START; struct acpi_processor_cx *cx; @@ -36650,7 +36878,7 @@ index e5dd808..1eceed1 100644 set_no_mwait, "Extensa 5220", { DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c -index 7f251dd..47b262c 100644 +index 2f0d4db..b9e9b15 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c @@ -148,7 +148,7 @@ static int __init init_nvs_nosave(const struct dmi_system_id *d) @@ -36663,7 +36891,7 @@ index 7f251dd..47b262c 100644 .callback = init_old_suspend_ordering, .ident = "Abit KN9 (nForce4 variant)", diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c -index 13e577c..cef11ee 100644 +index 0876d77b..3ba0127 100644 --- a/drivers/acpi/sysfs.c +++ b/drivers/acpi/sysfs.c @@ -423,11 +423,11 @@ static u32 num_counters; @@ -36694,10 +36922,10 @@ index d24fa19..782f1e6 100644 * Award BIOS on this AOpen makes thermal control almost worthless. * http://bugzilla.kernel.org/show_bug.cgi?id=8842 diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c -index 26eb70c..4d66ddf 100644 +index cc79d3f..28adb33 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c -@@ -418,7 +418,7 @@ static int __init video_disable_native_backlight(const struct dmi_system_id *d) +@@ -431,7 +431,7 @@ static int __init video_enable_native_backlight(const struct dmi_system_id *d) return 0; } @@ -36707,7 +36935,7 @@ index 26eb70c..4d66ddf 100644 * Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121 */ diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c -index 61a9c07..ea98fa1 100644 +index 287c4ba..6a600bc 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -1252,7 +1252,7 @@ int ahci_kick_engine(struct ata_port *ap) @@ -36720,10 +36948,10 @@ index 61a9c07..ea98fa1 100644 unsigned long timeout_msec) { diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c -index 23dac3b..89ada44 100644 +index 577849c..920847c 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c -@@ -99,7 +99,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev); +@@ -102,7 +102,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev); static void ata_dev_xfermask(struct ata_device *dev); static unsigned long ata_dev_blacklisted(const struct ata_device *dev); @@ -36732,7 +36960,7 @@ index 23dac3b..89ada44 100644 struct ata_force_param { const char *name; -@@ -4780,7 +4780,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) +@@ -4801,7 +4801,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) struct ata_port *ap; unsigned int tag; @@ -36741,7 +36969,7 @@ index 23dac3b..89ada44 100644 ap = qc->ap; qc->flags = 0; -@@ -4797,7 +4797,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc) +@@ -4818,7 +4818,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc) struct ata_port *ap; struct ata_link *link; @@ -36750,7 +36978,7 @@ index 23dac3b..89ada44 100644 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE)); ap = qc->ap; link = qc->dev->link; -@@ -5901,6 +5901,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) +@@ -5925,6 +5925,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) return; spin_lock(&lock); @@ -36758,7 +36986,7 @@ index 23dac3b..89ada44 100644 for (cur = ops->inherits; cur; cur = cur->inherits) { void **inherit = (void **)cur; -@@ -5914,8 +5915,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) +@@ -5938,8 +5939,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) if (IS_ERR(*pp)) *pp = NULL; @@ -36769,7 +36997,7 @@ index 23dac3b..89ada44 100644 spin_unlock(&lock); } -@@ -6111,7 +6113,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht) +@@ -6135,7 +6137,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht) /* give ports names and add SCSI hosts */ for (i = 0; i < host->n_ports; i++) { @@ -36779,10 +37007,10 @@ index 23dac3b..89ada44 100644 } diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c -index b061ba2..fdcd85f 100644 +index 3131adc..93e7aa0 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c -@@ -4172,7 +4172,7 @@ int ata_sas_port_init(struct ata_port *ap) +@@ -4209,7 +4209,7 @@ int ata_sas_port_init(struct ata_port *ap) if (rc) return rc; @@ -36792,7 +37020,7 @@ index b061ba2..fdcd85f 100644 } EXPORT_SYMBOL_GPL(ata_sas_port_init); diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h -index f840ca1..edd6ef3 100644 +index a998a17..8de4bf4 100644 --- a/drivers/ata/libata.h +++ b/drivers/ata/libata.h @@ -53,7 +53,7 @@ enum { @@ -37495,10 +37723,10 @@ index ce43ae3..969de38 100644 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4]; cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr); diff --git a/drivers/atm/nicstar.c b/drivers/atm/nicstar.c -index b7e1cc0..eb336bfe 100644 +index ddc4ceb..36e29aa 100644 --- a/drivers/atm/nicstar.c +++ b/drivers/atm/nicstar.c -@@ -1640,7 +1640,7 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) +@@ -1632,7 +1632,7 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) if ((vc = (vc_map *) vcc->dev_data) == NULL) { printk("nicstar%d: vcc->dev_data == NULL on ns_send().\n", card->index); @@ -37507,7 +37735,7 @@ index b7e1cc0..eb336bfe 100644 dev_kfree_skb_any(skb); return -EINVAL; } -@@ -1648,7 +1648,7 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) +@@ -1640,7 +1640,7 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) if (!vc->tx) { printk("nicstar%d: Trying to transmit on a non-tx VC.\n", card->index); @@ -37516,7 +37744,7 @@ index b7e1cc0..eb336bfe 100644 dev_kfree_skb_any(skb); return -EINVAL; } -@@ -1656,14 +1656,14 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) +@@ -1648,14 +1648,14 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) if (vcc->qos.aal != ATM_AAL5 && vcc->qos.aal != ATM_AAL0) { printk("nicstar%d: Only AAL0 and AAL5 are supported.\n", card->index); @@ -37533,7 +37761,7 @@ index b7e1cc0..eb336bfe 100644 dev_kfree_skb_any(skb); return -EINVAL; } -@@ -1711,11 +1711,11 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) +@@ -1703,11 +1703,11 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb) } if (push_scqe(card, vc, scq, &scqe, skb) != 0) { @@ -37547,7 +37775,7 @@ index b7e1cc0..eb336bfe 100644 return 0; } -@@ -2032,14 +2032,14 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2024,14 +2024,14 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) printk ("nicstar%d: Can't allocate buffers for aal0.\n", card->index); @@ -37564,7 +37792,7 @@ index b7e1cc0..eb336bfe 100644 dev_kfree_skb_any(sb); break; } -@@ -2054,7 +2054,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2046,7 +2046,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) ATM_SKB(sb)->vcc = vcc; __net_timestamp(sb); vcc->push(vcc, sb); @@ -37573,7 +37801,7 @@ index b7e1cc0..eb336bfe 100644 cell += ATM_CELL_PAYLOAD; } -@@ -2071,7 +2071,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2063,7 +2063,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) if (iovb == NULL) { printk("nicstar%d: Out of iovec buffers.\n", card->index); @@ -37582,7 +37810,7 @@ index b7e1cc0..eb336bfe 100644 recycle_rx_buf(card, skb); return; } -@@ -2095,7 +2095,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2087,7 +2087,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) small or large buffer itself. */ } else if (NS_PRV_IOVCNT(iovb) >= NS_MAX_IOVECS) { printk("nicstar%d: received too big AAL5 SDU.\n", card->index); @@ -37591,7 +37819,7 @@ index b7e1cc0..eb336bfe 100644 recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data, NS_MAX_IOVECS); NS_PRV_IOVCNT(iovb) = 0; -@@ -2115,7 +2115,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2107,7 +2107,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) ("nicstar%d: Expected a small buffer, and this is not one.\n", card->index); which_list(card, skb); @@ -37600,7 +37828,7 @@ index b7e1cc0..eb336bfe 100644 recycle_rx_buf(card, skb); vc->rx_iov = NULL; recycle_iov_buf(card, iovb); -@@ -2128,7 +2128,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2120,7 +2120,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) ("nicstar%d: Expected a large buffer, and this is not one.\n", card->index); which_list(card, skb); @@ -37609,7 +37837,7 @@ index b7e1cc0..eb336bfe 100644 recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data, NS_PRV_IOVCNT(iovb)); vc->rx_iov = NULL; -@@ -2151,7 +2151,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2143,7 +2143,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) printk(" - PDU size mismatch.\n"); else printk(".\n"); @@ -37618,7 +37846,7 @@ index b7e1cc0..eb336bfe 100644 recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data, NS_PRV_IOVCNT(iovb)); vc->rx_iov = NULL; -@@ -2165,7 +2165,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2157,14 +2157,14 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) /* skb points to a small buffer */ if (!atm_charge(vcc, skb->truesize)) { push_rxbufs(card, skb); @@ -37627,7 +37855,6 @@ index b7e1cc0..eb336bfe 100644 } else { skb_put(skb, len); dequeue_sm_buf(card, skb); -@@ -2175,7 +2175,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) ATM_SKB(skb)->vcc = vcc; __net_timestamp(skb); vcc->push(vcc, skb); @@ -37636,7 +37863,7 @@ index b7e1cc0..eb336bfe 100644 } } else if (NS_PRV_IOVCNT(iovb) == 2) { /* One small plus one large buffer */ struct sk_buff *sb; -@@ -2186,7 +2186,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2175,14 +2175,14 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) if (len <= NS_SMBUFSIZE) { if (!atm_charge(vcc, sb->truesize)) { push_rxbufs(card, sb); @@ -37645,7 +37872,6 @@ index b7e1cc0..eb336bfe 100644 } else { skb_put(sb, len); dequeue_sm_buf(card, sb); -@@ -2196,7 +2196,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) ATM_SKB(sb)->vcc = vcc; __net_timestamp(sb); vcc->push(vcc, sb); @@ -37654,7 +37880,7 @@ index b7e1cc0..eb336bfe 100644 } push_rxbufs(card, skb); -@@ -2205,7 +2205,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2191,7 +2191,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) if (!atm_charge(vcc, skb->truesize)) { push_rxbufs(card, skb); @@ -37662,8 +37888,8 @@ index b7e1cc0..eb336bfe 100644 + atomic_inc_unchecked(&vcc->stats->rx_drop); } else { dequeue_lg_buf(card, skb); - #ifdef NS_USE_DESTRUCTORS -@@ -2218,7 +2218,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) + skb_push(skb, NS_SMBUFSIZE); +@@ -2201,7 +2201,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) ATM_SKB(skb)->vcc = vcc; __net_timestamp(skb); vcc->push(vcc, skb); @@ -37672,7 +37898,7 @@ index b7e1cc0..eb336bfe 100644 } push_rxbufs(card, sb); -@@ -2239,7 +2239,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2222,7 +2222,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) printk ("nicstar%d: Out of huge buffers.\n", card->index); @@ -37681,7 +37907,7 @@ index b7e1cc0..eb336bfe 100644 recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data, -@@ -2290,7 +2290,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) +@@ -2273,7 +2273,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) card->hbpool.count++; } else dev_kfree_skb_any(hb); @@ -37690,8 +37916,8 @@ index b7e1cc0..eb336bfe 100644 } else { /* Copy the small buffer to the huge buffer */ sb = (struct sk_buff *)iov->iov_base; -@@ -2327,7 +2327,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) - #endif /* NS_USE_DESTRUCTORS */ +@@ -2307,7 +2307,7 @@ static void dequeue_rx(ns_dev * card, ns_rsqe * rsqe) + ATM_SKB(hb)->vcc = vcc; __net_timestamp(hb); vcc->push(vcc, hb); - atomic_inc(&vcc->stats->rx); @@ -37838,7 +38064,7 @@ index 79bc203..fa3945b 100644 subsys_dev_iter_init(&iter, subsys, NULL, NULL); while ((dev = subsys_dev_iter_next(&iter))) diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c -index 25798db..15f130e 100644 +index 68f0314..ca2a609 100644 --- a/drivers/base/devtmpfs.c +++ b/drivers/base/devtmpfs.c @@ -354,7 +354,7 @@ int devtmpfs_mount(const char *mntdir) @@ -37866,10 +38092,10 @@ index 25798db..15f130e 100644 while (1) { spin_lock(&req_lock); diff --git a/drivers/base/node.c b/drivers/base/node.c -index 36fabe43..8cfc112 100644 +index a2aa65b..8831326 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c -@@ -615,7 +615,7 @@ static ssize_t print_nodes_state(enum node_states state, char *buf) +@@ -613,7 +613,7 @@ static ssize_t print_nodes_state(enum node_states state, char *buf) struct node_attr { struct device_attribute attr; enum node_states state; @@ -37879,10 +38105,10 @@ index 36fabe43..8cfc112 100644 static ssize_t show_node_state(struct device *dev, struct device_attribute *attr, char *buf) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c -index 45937f8..b9a342e 100644 +index 2327613..211d7f5 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c -@@ -1698,7 +1698,7 @@ int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state) +@@ -1725,7 +1725,7 @@ int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state) { struct cpuidle_driver *cpuidle_drv; struct gpd_cpuidle_data *cpuidle_data; @@ -37891,7 +38117,7 @@ index 45937f8..b9a342e 100644 int ret = 0; if (IS_ERR_OR_NULL(genpd) || state < 0) -@@ -1766,7 +1766,7 @@ int pm_genpd_name_attach_cpuidle(const char *name, int state) +@@ -1793,7 +1793,7 @@ int pm_genpd_name_attach_cpuidle(const char *name, int state) int pm_genpd_detach_cpuidle(struct generic_pm_domain *genpd) { struct gpd_cpuidle_data *cpuidle_data; @@ -37900,13 +38126,15 @@ index 45937f8..b9a342e 100644 int ret = 0; if (IS_ERR_OR_NULL(genpd)) -@@ -2195,7 +2195,10 @@ int genpd_dev_pm_attach(struct device *dev) +@@ -2222,8 +2222,11 @@ int genpd_dev_pm_attach(struct device *dev) return ret; } - dev->pm_domain->detach = genpd_dev_pm_detach; +- dev->pm_domain->sync = genpd_dev_pm_sync; + pax_open_kernel(); + *(void **)&dev->pm_domain->detach = genpd_dev_pm_detach; ++ *(void **)&dev->pm_domain->sync = genpd_dev_pm_sync; + pax_close_kernel(); + pm_genpd_poweron(pd); @@ -37926,7 +38154,7 @@ index d2be3f9..0a3167a 100644 static DEVICE_ATTR(runtime_status, 0444, rtpm_status_show, NULL); diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c -index aab7158..b172db2 100644 +index 7726200..a417da7 100644 --- a/drivers/base/power/wakeup.c +++ b/drivers/base/power/wakeup.c @@ -32,14 +32,14 @@ static bool pm_abort_suspend __read_mostly; @@ -38161,7 +38389,7 @@ index 7fda30e..2f27946 100644 struct board_type { diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c -index 2b94403..fd6ad1f 100644 +index f749df9..5f8b9c4 100644 --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c @@ -404,7 +404,7 @@ static int cpqarray_register_ctlr(int i, struct pci_dev *pdev) @@ -38170,8 +38398,8 @@ index 2b94403..fd6ad1f 100644 } - hba[i]->access.set_intr_mask(hba[i], 0); + hba[i]->access->set_intr_mask(hba[i], 0); - if (request_irq(hba[i]->intr, do_ida_intr, - IRQF_DISABLED|IRQF_SHARED, hba[i]->devname, hba[i])) + if (request_irq(hba[i]->intr, do_ida_intr, IRQF_SHARED, + hba[i]->devname, hba[i])) { @@ -459,7 +459,7 @@ static int cpqarray_register_ctlr(int i, struct pci_dev *pdev) add_timer(&hba[i]->timer); @@ -38340,7 +38568,7 @@ index b905e98..0812ed8 100644 int rs_last_events; /* counter of read or write "events" (unit sectors) * on the lower level device when we last looked. */ diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c -index 1fc8342..7e7742b 100644 +index 81fde9e..9948c05 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c @@ -1328,7 +1328,7 @@ static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet @@ -38372,7 +38600,7 @@ index 1fc8342..7e7742b 100644 atomic_set(&device->ap_in_flight, 0); atomic_set(&device->md_io.in_use, 0); -@@ -2684,8 +2684,8 @@ void drbd_destroy_connection(struct kref *kref) +@@ -2683,8 +2683,8 @@ void drbd_destroy_connection(struct kref *kref) struct drbd_connection *connection = container_of(kref, struct drbd_connection, kref); struct drbd_resource *resource = connection->resource; @@ -38589,19 +38817,6 @@ index d0fae55..4469096 100644 device->rs_in_flight = 0; device->rs_last_events = (int)part_stat_read(&disk->part0, sectors[0]) + -diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 773e964..e85af00 100644 ---- a/drivers/block/loop.c -+++ b/drivers/block/loop.c -@@ -234,7 +234,7 @@ static int __do_lo_send_write(struct file *file, - - file_start_write(file); - set_fs(get_ds()); -- bw = file->f_op->write(file, buf, len, &pos); -+ bw = file->f_op->write(file, (const char __force_user *)buf, len, &pos); - set_fs(old_fs); - file_end_write(file); - if (likely(bw == len)) diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index 09e628da..7607aaa 100644 --- a/drivers/block/pktcdvd.c @@ -38625,7 +38840,7 @@ index 09e628da..7607aaa 100644 if (ti.nwa_v) { pd->nwa = be32_to_cpu(ti.next_writable); diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c -index b67066d..515b7f4 100644 +index ec6c5c6..820ee2abc 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -64,7 +64,7 @@ @@ -38867,10 +39082,10 @@ index 5c0baa9..44011b1 100644 { struct hpet_timer __iomem *timer; diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c -index 24cc4ed..f9807cf 100644 +index a43048b..14724d5 100644 --- a/drivers/char/i8k.c +++ b/drivers/char/i8k.c -@@ -788,7 +788,7 @@ static const struct i8k_config_data i8k_config_data[] = { +@@ -790,7 +790,7 @@ static const struct i8k_config_data i8k_config_data[] = { }, }; @@ -38880,7 +39095,7 @@ index 24cc4ed..f9807cf 100644 .ident = "Dell Inspiron", .matches = { diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c -index 9bb5928..57a7801 100644 +index bf75f63..359fa10 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c @@ -436,7 +436,7 @@ struct ipmi_smi { @@ -38914,7 +39129,7 @@ index 9bb5928..57a7801 100644 intf->proc_dir = NULL; diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c -index 518585c..6c985cef 100644 +index 8a45e92..e41b1c7 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c @@ -289,7 +289,7 @@ struct smi_info { @@ -38938,7 +39153,7 @@ index 518585c..6c985cef 100644 #define SI_MAX_PARMS 4 -@@ -3498,7 +3498,7 @@ static int try_smi_init(struct smi_info *new_smi) +@@ -3500,7 +3500,7 @@ static int try_smi_init(struct smi_info *new_smi) atomic_set(&new_smi->req_events, 0); new_smi->run_to_completion = false; for (i = 0; i < SI_NUM_STATS; i++) @@ -38948,7 +39163,7 @@ index 518585c..6c985cef 100644 new_smi->interrupt_disabled = true; atomic_set(&new_smi->need_watch, 0); diff --git a/drivers/char/mem.c b/drivers/char/mem.c -index 297110c..3f69b43 100644 +index 6b1721f..fda9398 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -18,6 +18,7 @@ @@ -39077,7 +39292,7 @@ index 297110c..3f69b43 100644 return -EFAULT; buf += sz; p += sz; -@@ -804,6 +853,9 @@ static const struct memdev { +@@ -802,6 +851,9 @@ static const struct memdev { #ifdef CONFIG_PRINTK [11] = { "kmsg", 0644, &kmsg_fops, 0 }, #endif @@ -39087,7 +39302,7 @@ index 297110c..3f69b43 100644 }; static int memory_open(struct inode *inode, struct file *filp) -@@ -865,7 +917,7 @@ static int __init chr_dev_init(void) +@@ -863,7 +915,7 @@ static int __init chr_dev_init(void) continue; device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor), @@ -39346,7 +39561,7 @@ index 3a56a13..f8cbd25 100644 return 0; } diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c -index 72d7028..1586601 100644 +index 50754d20..9561cdc 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c @@ -685,7 +685,7 @@ static ssize_t fill_readbuf(struct port *port, char __user *out_buf, @@ -39380,156 +39595,41 @@ index 956b7e5..b655045 100644 composite = kzalloc(sizeof(*composite), GFP_KERNEL); if (!composite) { -diff --git a/drivers/clk/hisilicon/clk-hi3620.c b/drivers/clk/hisilicon/clk-hi3620.c -index 2e4f6d4..b4cf487 100644 ---- a/drivers/clk/hisilicon/clk-hi3620.c -+++ b/drivers/clk/hisilicon/clk-hi3620.c -@@ -38,44 +38,44 @@ - #include "clk.h" - - /* clock parent list */ --static const char *timer0_mux_p[] __initconst = { "osc32k", "timerclk01", }; --static const char *timer1_mux_p[] __initconst = { "osc32k", "timerclk01", }; --static const char *timer2_mux_p[] __initconst = { "osc32k", "timerclk23", }; --static const char *timer3_mux_p[] __initconst = { "osc32k", "timerclk23", }; --static const char *timer4_mux_p[] __initconst = { "osc32k", "timerclk45", }; --static const char *timer5_mux_p[] __initconst = { "osc32k", "timerclk45", }; --static const char *timer6_mux_p[] __initconst = { "osc32k", "timerclk67", }; --static const char *timer7_mux_p[] __initconst = { "osc32k", "timerclk67", }; --static const char *timer8_mux_p[] __initconst = { "osc32k", "timerclk89", }; --static const char *timer9_mux_p[] __initconst = { "osc32k", "timerclk89", }; --static const char *uart0_mux_p[] __initconst = { "osc26m", "pclk", }; --static const char *uart1_mux_p[] __initconst = { "osc26m", "pclk", }; --static const char *uart2_mux_p[] __initconst = { "osc26m", "pclk", }; --static const char *uart3_mux_p[] __initconst = { "osc26m", "pclk", }; --static const char *uart4_mux_p[] __initconst = { "osc26m", "pclk", }; --static const char *spi0_mux_p[] __initconst = { "osc26m", "rclk_cfgaxi", }; --static const char *spi1_mux_p[] __initconst = { "osc26m", "rclk_cfgaxi", }; --static const char *spi2_mux_p[] __initconst = { "osc26m", "rclk_cfgaxi", }; -+static const char * const timer0_mux_p[] __initconst = { "osc32k", "timerclk01", }; -+static const char * const timer1_mux_p[] __initconst = { "osc32k", "timerclk01", }; -+static const char * const timer2_mux_p[] __initconst = { "osc32k", "timerclk23", }; -+static const char * const timer3_mux_p[] __initconst = { "osc32k", "timerclk23", }; -+static const char * const timer4_mux_p[] __initconst = { "osc32k", "timerclk45", }; -+static const char * const timer5_mux_p[] __initconst = { "osc32k", "timerclk45", }; -+static const char * const timer6_mux_p[] __initconst = { "osc32k", "timerclk67", }; -+static const char * const timer7_mux_p[] __initconst = { "osc32k", "timerclk67", }; -+static const char * const timer8_mux_p[] __initconst = { "osc32k", "timerclk89", }; -+static const char * const timer9_mux_p[] __initconst = { "osc32k", "timerclk89", }; -+static const char * const uart0_mux_p[] __initconst = { "osc26m", "pclk", }; -+static const char * const uart1_mux_p[] __initconst = { "osc26m", "pclk", }; -+static const char * const uart2_mux_p[] __initconst = { "osc26m", "pclk", }; -+static const char * const uart3_mux_p[] __initconst = { "osc26m", "pclk", }; -+static const char * const uart4_mux_p[] __initconst = { "osc26m", "pclk", }; -+static const char * const spi0_mux_p[] __initconst = { "osc26m", "rclk_cfgaxi", }; -+static const char * const spi1_mux_p[] __initconst = { "osc26m", "rclk_cfgaxi", }; -+static const char * const spi2_mux_p[] __initconst = { "osc26m", "rclk_cfgaxi", }; - /* share axi parent */ --static const char *saxi_mux_p[] __initconst = { "armpll3", "armpll2", }; --static const char *pwm0_mux_p[] __initconst = { "osc32k", "osc26m", }; --static const char *pwm1_mux_p[] __initconst = { "osc32k", "osc26m", }; --static const char *sd_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *mmc1_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *mmc1_mux2_p[] __initconst = { "osc26m", "mmc1_div", }; --static const char *g2d_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *venc_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *vdec_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *vpp_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *edc0_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *ldi0_mux_p[] __initconst = { "armpll2", "armpll4", -+static const char * const saxi_mux_p[] __initconst = { "armpll3", "armpll2", }; -+static const char * const pwm0_mux_p[] __initconst = { "osc32k", "osc26m", }; -+static const char * const pwm1_mux_p[] __initconst = { "osc32k", "osc26m", }; -+static const char * const sd_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const mmc1_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const mmc1_mux2_p[] __initconst = { "osc26m", "mmc1_div", }; -+static const char * const g2d_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const venc_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const vdec_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const vpp_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const edc0_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const ldi0_mux_p[] __initconst = { "armpll2", "armpll4", - "armpll3", "armpll5", }; --static const char *edc1_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *ldi1_mux_p[] __initconst = { "armpll2", "armpll4", -+static const char * const edc1_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const ldi1_mux_p[] __initconst = { "armpll2", "armpll4", - "armpll3", "armpll5", }; --static const char *rclk_hsic_p[] __initconst = { "armpll3", "armpll2", }; --static const char *mmc2_mux_p[] __initconst = { "armpll2", "armpll3", }; --static const char *mmc3_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const rclk_hsic_p[] __initconst = { "armpll3", "armpll2", }; -+static const char * const mmc2_mux_p[] __initconst = { "armpll2", "armpll3", }; -+static const char * const mmc3_mux_p[] __initconst = { "armpll2", "armpll3", }; - - - /* fixed rate clocks */ -diff --git a/drivers/clk/hisilicon/clk-hix5hd2.c b/drivers/clk/hisilicon/clk-hix5hd2.c -index 3f369c6..05f9ffd 100644 ---- a/drivers/clk/hisilicon/clk-hix5hd2.c -+++ b/drivers/clk/hisilicon/clk-hix5hd2.c -@@ -46,15 +46,15 @@ static struct hisi_fixed_rate_clock hix5hd2_fixed_rate_clks[] __initdata = { - { HIX5HD2_FIXED_83M, "83m", NULL, CLK_IS_ROOT, 83333333, }, - }; - --static const char *sfc_mux_p[] __initconst = { -+static const char * const sfc_mux_p[] __initconst = { - "24m", "150m", "200m", "100m", "75m", }; - static u32 sfc_mux_table[] = {0, 4, 5, 6, 7}; - --static const char *sdio_mux_p[] __initconst = { -+static const char * const sdio_mux_p[] __initconst = { - "75m", "100m", "50m", "15m", }; - static u32 sdio_mux_table[] = {0, 1, 2, 3}; - --static const char *fephy_mux_p[] __initconst = { "25m", "125m"}; -+static const char * const fephy_mux_p[] __initconst = { "25m", "125m"}; - static u32 fephy_mux_table[] = {0, 1}; - - -diff --git a/drivers/clk/rockchip/clk-rk3188.c b/drivers/clk/rockchip/clk-rk3188.c -index 7eb684c..147c6fc 100644 ---- a/drivers/clk/rockchip/clk-rk3188.c -+++ b/drivers/clk/rockchip/clk-rk3188.c -@@ -704,7 +704,7 @@ static struct rockchip_clk_branch rk3188_clk_branches[] __initdata = { - GATE(ACLK_GPS, "aclk_gps", "aclk_peri", 0, RK2928_CLKGATE_CON(8), 13, GFLAGS), - }; - --static const char *rk3188_critical_clocks[] __initconst = { -+static const char * const rk3188_critical_clocks[] __initconst = { - "aclk_cpu", - "aclk_peri", - "hclk_peri", -diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c -index 05d7a0b..4fc131c 100644 ---- a/drivers/clk/rockchip/clk-rk3288.c -+++ b/drivers/clk/rockchip/clk-rk3288.c -@@ -771,7 +771,7 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = { - GATE(0, "pclk_isp_in", "ext_isp", 0, RK3288_CLKGATE_CON(16), 3, GFLAGS), - }; - --static const char *rk3288_critical_clocks[] __initconst = { -+static const char * const rk3288_critical_clocks[] __initconst = { - "aclk_cpu", - "aclk_peri", - "hclk_peri", -diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h -index 58d2e3b..0c21b0d 100644 ---- a/drivers/clk/rockchip/clk.h -+++ b/drivers/clk/rockchip/clk.h -@@ -182,7 +182,7 @@ struct clk *rockchip_clk_register_mmc(const char *name, - const char **parent_names, u8 num_parents, - void __iomem *reg, int shift); - --#define PNAME(x) static const char *x[] __initconst -+#define PNAME(x) static const char * const x[] __initconst - - enum rockchip_clk_branch_type { - branch_composite, +diff --git a/drivers/clk/clk-mux.c b/drivers/clk/clk-mux.c +index 69a094c..1fa2a8d 100644 +--- a/drivers/clk/clk-mux.c ++++ b/drivers/clk/clk-mux.c +@@ -114,7 +114,7 @@ const struct clk_ops clk_mux_ro_ops = { + EXPORT_SYMBOL_GPL(clk_mux_ro_ops); + + struct clk *clk_register_mux_table(struct device *dev, const char *name, +- const char **parent_names, u8 num_parents, unsigned long flags, ++ const char * const *parent_names, u8 num_parents, unsigned long flags, + void __iomem *reg, u8 shift, u32 mask, + u8 clk_mux_flags, u32 *table, spinlock_t *lock) + { +@@ -166,7 +166,7 @@ struct clk *clk_register_mux_table(struct device *dev, const char *name, + EXPORT_SYMBOL_GPL(clk_register_mux_table); + + struct clk *clk_register_mux(struct device *dev, const char *name, +- const char **parent_names, u8 num_parents, unsigned long flags, ++ const char * const *parent_names, u8 num_parents, unsigned long flags, + void __iomem *reg, u8 shift, u8 width, + u8 clk_mux_flags, spinlock_t *lock) + { diff --git a/drivers/clk/samsung/clk.h b/drivers/clk/samsung/clk.h -index e4c7538..99c50cd 100644 +index e4c7538..9d5c18a 100644 --- a/drivers/clk/samsung/clk.h +++ b/drivers/clk/samsung/clk.h +@@ -121,7 +121,7 @@ struct samsung_mux_clock { + unsigned int id; + const char *dev_name; + const char *name; +- const char **parent_names; ++ const char * const *parent_names; + u8 num_parents; + unsigned long flags; + unsigned long offset; @@ -260,7 +260,7 @@ struct samsung_gate_clock { #define GATE_DA(_id, dname, cname, pname, o, b, f, gf, a) \ __GATE(_id, dname, cname, pname, o, b, f, gf, a) @@ -39607,58 +39707,6 @@ index de6da95..c98278b 100644 clk = clk_register(NULL, &pll_clk->hw.hw); if (WARN_ON(IS_ERR(clk))) { -diff --git a/drivers/clk/ti/composite.c b/drivers/clk/ti/composite.c -index 3654f61..81abe81 100644 ---- a/drivers/clk/ti/composite.c -+++ b/drivers/clk/ti/composite.c -@@ -69,7 +69,7 @@ struct component_clk { - struct list_head link; - }; - --static const char * __initconst component_clk_types[] = { -+static const char * const __initconst component_clk_types[] = { - "gate", "divider", "mux" - }; - -diff --git a/drivers/clk/zynq/clkc.c b/drivers/clk/zynq/clkc.c -index f870aad..04ba1e4 100644 ---- a/drivers/clk/zynq/clkc.c -+++ b/drivers/clk/zynq/clkc.c -@@ -85,22 +85,22 @@ static DEFINE_SPINLOCK(canmioclk_lock); - static DEFINE_SPINLOCK(dbgclk_lock); - static DEFINE_SPINLOCK(aperclk_lock); - --static const char *armpll_parents[] __initconst = {"armpll_int", "ps_clk"}; --static const char *ddrpll_parents[] __initconst = {"ddrpll_int", "ps_clk"}; --static const char *iopll_parents[] __initconst = {"iopll_int", "ps_clk"}; --static const char *gem0_mux_parents[] __initconst = {"gem0_div1", "dummy_name"}; --static const char *gem1_mux_parents[] __initconst = {"gem1_div1", "dummy_name"}; --static const char *can0_mio_mux2_parents[] __initconst = {"can0_gate", -+static const char * const armpll_parents[] __initconst = {"armpll_int", "ps_clk"}; -+static const char * const ddrpll_parents[] __initconst = {"ddrpll_int", "ps_clk"}; -+static const char * const iopll_parents[] __initconst = {"iopll_int", "ps_clk"}; -+static const char * gem0_mux_parents[] __initdata = {"gem0_div1", "dummy_name"}; -+static const char * gem1_mux_parents[] __initdata = {"gem1_div1", "dummy_name"}; -+static const char * const can0_mio_mux2_parents[] __initconst = {"can0_gate", - "can0_mio_mux"}; --static const char *can1_mio_mux2_parents[] __initconst = {"can1_gate", -+static const char * const can1_mio_mux2_parents[] __initconst = {"can1_gate", - "can1_mio_mux"}; --static const char *dbg_emio_mux_parents[] __initconst = {"dbg_div", -+static const char * dbg_emio_mux_parents[] __initdata = {"dbg_div", - "dummy_name"}; - --static const char *dbgtrc_emio_input_names[] __initconst = {"trace_emio_clk"}; --static const char *gem0_emio_input_names[] __initconst = {"gem0_emio_clk"}; --static const char *gem1_emio_input_names[] __initconst = {"gem1_emio_clk"}; --static const char *swdt_ext_clk_input_names[] __initconst = {"swdt_ext_clk"}; -+static const char * const dbgtrc_emio_input_names[] __initconst = {"trace_emio_clk"}; -+static const char * const gem0_emio_input_names[] __initconst = {"gem0_emio_clk"}; -+static const char * const gem1_emio_input_names[] __initconst = {"gem1_emio_clk"}; -+static const char * const swdt_ext_clk_input_names[] __initconst = {"swdt_ext_clk"}; - - static void __init zynq_clk_register_fclk(enum zynq_clk fclk, - const char *clk_name, void __iomem *fclk_ctrl_reg, diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c index b0c18ed..1713a80 100644 --- a/drivers/cpufreq/acpi-cpufreq.c @@ -39873,10 +39921,10 @@ index ad3f38f..8f086cd 100644 } EXPORT_SYMBOL_GPL(od_unregister_powersave_bias_handler); diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c -index 872c577..5fb3c20 100644 +index c45d274..0f469f7 100644 --- a/drivers/cpufreq/intel_pstate.c +++ b/drivers/cpufreq/intel_pstate.c -@@ -133,10 +133,10 @@ struct pstate_funcs { +@@ -134,10 +134,10 @@ struct pstate_funcs { struct cpu_defaults { struct pstate_adjust_policy pid_policy; struct pstate_funcs funcs; @@ -39889,7 +39937,7 @@ index 872c577..5fb3c20 100644 static int hwp_active; struct perf_limits { -@@ -690,18 +690,18 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate) +@@ -721,18 +721,18 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate) cpu->pstate.current_pstate = pstate; @@ -39915,10 +39963,10 @@ index 872c577..5fb3c20 100644 intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate); } -@@ -1030,9 +1030,9 @@ static int intel_pstate_msrs_not_valid(void) - rdmsrl(MSR_IA32_APERF, aperf); - rdmsrl(MSR_IA32_MPERF, mperf); +@@ -1056,15 +1056,15 @@ static unsigned int force_load; + static int intel_pstate_msrs_not_valid(void) + { - if (!pstate_funcs.get_max() || - !pstate_funcs.get_min() || - !pstate_funcs.get_turbo()) @@ -39927,8 +39975,6 @@ index 872c577..5fb3c20 100644 + !pstate_funcs->get_turbo()) return -ENODEV; - rdmsrl(MSR_IA32_APERF, tmp); -@@ -1046,7 +1046,7 @@ static int intel_pstate_msrs_not_valid(void) return 0; } @@ -39937,7 +39983,7 @@ index 872c577..5fb3c20 100644 { pid_params.sample_rate_ms = policy->sample_rate_ms; pid_params.p_gain_pct = policy->p_gain_pct; -@@ -1058,12 +1058,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy) +@@ -1076,12 +1076,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy) static void copy_cpu_funcs(struct pstate_funcs *funcs) { @@ -40112,10 +40158,10 @@ index 7d4a315..21bb886 100644 if (policy->cpu != 0) return -ENODEV; diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c -index 2697e87..c32476c 100644 +index 5db1478..e90e25e 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c -@@ -194,7 +194,7 @@ static int poll_idle(struct cpuidle_device *dev, +@@ -193,7 +193,7 @@ static int poll_idle(struct cpuidle_device *dev, static void poll_idle_init(struct cpuidle_driver *drv) { @@ -40172,11 +40218,25 @@ index 8d2a772..33826c9 100644 err = pci_request_regions(pdev, name); if (err) +diff --git a/drivers/crypto/omap-des.c b/drivers/crypto/omap-des.c +index 4630709..0a70e46 100644 +--- a/drivers/crypto/omap-des.c ++++ b/drivers/crypto/omap-des.c +@@ -536,9 +536,6 @@ static int omap_des_crypt_dma_stop(struct omap_des_dev *dd) + dmaengine_terminate_all(dd->dma_lch_in); + dmaengine_terminate_all(dd->dma_lch_out); + +- dma_unmap_sg(dd->dev, dd->in_sg, dd->in_sg_len, DMA_TO_DEVICE); +- dma_unmap_sg(dd->dev, dd->out_sg, dd->out_sg_len, DMA_FROM_DEVICE); +- + return err; + } + diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c -index 30b538d8..1610d75 100644 +index ca1b362..01cae6a 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c -@@ -673,7 +673,7 @@ int devfreq_add_governor(struct devfreq_governor *governor) +@@ -672,7 +672,7 @@ int devfreq_add_governor(struct devfreq_governor *governor) goto err_out; } @@ -40185,7 +40245,7 @@ index 30b538d8..1610d75 100644 list_for_each_entry(devfreq, &devfreq_list, node) { int ret = 0; -@@ -761,7 +761,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor) +@@ -760,7 +760,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor) } } @@ -40195,10 +40255,10 @@ index 30b538d8..1610d75 100644 mutex_unlock(&devfreq_list_lock); diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c -index 8ee383d..736b5de 100644 +index 10fcaba..326f709 100644 --- a/drivers/dma/sh/shdma-base.c +++ b/drivers/dma/sh/shdma-base.c -@@ -228,8 +228,8 @@ static int shdma_alloc_chan_resources(struct dma_chan *chan) +@@ -227,8 +227,8 @@ static int shdma_alloc_chan_resources(struct dma_chan *chan) schan->slave_id = -EINVAL; } @@ -40210,7 +40270,7 @@ index 8ee383d..736b5de 100644 ret = -ENOMEM; goto edescalloc; diff --git a/drivers/dma/sh/shdmac.c b/drivers/dma/sh/shdmac.c -index 9f1d4c7..fceff78 100644 +index 11707df..2ea96f7 100644 --- a/drivers/dma/sh/shdmac.c +++ b/drivers/dma/sh/shdmac.c @@ -513,7 +513,7 @@ static int sh_dmae_nmi_handler(struct notifier_block *self, @@ -40239,7 +40299,7 @@ index 592af5f..bb1d583 100644 EXPORT_SYMBOL_GPL(edac_device_alloc_index); diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c -index c84eecb..4d7381d 100644 +index 112d63a..5443a61 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -154,7 +154,7 @@ static const char * const edac_caps[] = { @@ -40251,28 +40311,6 @@ index c84eecb..4d7381d 100644 #define DEVICE_CHANNEL(_name, _mode, _show, _store, _var) \ static struct dev_ch_attribute dev_attr_legacy_##_name = \ -@@ -1009,15 +1009,17 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) - } - - if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) { -+ pax_open_kernel(); - if (mci->get_sdram_scrub_rate) { -- dev_attr_sdram_scrub_rate.attr.mode |= S_IRUGO; -- dev_attr_sdram_scrub_rate.show = &mci_sdram_scrub_rate_show; -+ *(umode_t *)&dev_attr_sdram_scrub_rate.attr.mode |= S_IRUGO; -+ *(void **)&dev_attr_sdram_scrub_rate.show = &mci_sdram_scrub_rate_show; - } - - if (mci->set_sdram_scrub_rate) { -- dev_attr_sdram_scrub_rate.attr.mode |= S_IWUSR; -- dev_attr_sdram_scrub_rate.store = &mci_sdram_scrub_rate_store; -+ *(umode_t *)&dev_attr_sdram_scrub_rate.attr.mode |= S_IWUSR; -+ *(void **)&dev_attr_sdram_scrub_rate.store = &mci_sdram_scrub_rate_store; - } -+ pax_close_kernel(); - - err = device_create_file(&mci->dev, &dev_attr_sdram_scrub_rate); - if (err) { diff --git a/drivers/edac/edac_pci.c b/drivers/edac/edac_pci.c index 2cf44b4d..6dd2dc7 100644 --- a/drivers/edac/edac_pci.c @@ -40507,19 +40545,6 @@ index 94a58a0..f5eba42 100644 #define to_dmi_dev_attr(_dev_attr) \ container_of(_dev_attr, struct dmi_device_attribute, dev_attr) -diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c -index 2eebd28b..4261350 100644 ---- a/drivers/firmware/dmi_scan.c -+++ b/drivers/firmware/dmi_scan.c -@@ -893,7 +893,7 @@ int dmi_walk(void (*decode)(const struct dmi_header *, void *), - if (buf == NULL) - return -1; - -- dmi_table(buf, dmi_len, dmi_num, decode, private_data); -+ dmi_table((char __force_kernel *)buf, dmi_len, dmi_num, decode, private_data); - - dmi_unmap(buf); - return 0; diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c index 4fd9961..52d60ce 100644 --- a/drivers/firmware/efi/cper.c @@ -40542,10 +40567,10 @@ index 4fd9961..52d60ce 100644 EXPORT_SYMBOL_GPL(cper_next_record_id); diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index 3061bb8..92b5fcc 100644 +index e14363d..c3d5d84 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c -@@ -160,14 +160,16 @@ static struct attribute_group efi_subsys_attr_group = { +@@ -159,14 +159,16 @@ static struct attribute_group efi_subsys_attr_group = { }; static struct efivars generic_efivars; @@ -40581,7 +40606,7 @@ index 7b2e049..a253334 100644 /* new_var */ diff --git a/drivers/firmware/efi/runtime-map.c b/drivers/firmware/efi/runtime-map.c -index 87b8e3b..c4afb35 100644 +index 5c55227..97f4978 100644 --- a/drivers/firmware/efi/runtime-map.c +++ b/drivers/firmware/efi/runtime-map.c @@ -97,7 +97,7 @@ static void map_release(struct kobject *kobj) @@ -40658,7 +40683,7 @@ index 3cfcfc6..09d6f117 100644 int ret; diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c -index 7818cd1..1be40e5 100644 +index 4ba7ed5..1536b5d 100644 --- a/drivers/gpio/gpio-ich.c +++ b/drivers/gpio/gpio-ich.c @@ -94,7 +94,7 @@ struct ichx_desc { @@ -40671,10 +40696,19 @@ index 7818cd1..1be40e5 100644 static struct { spinlock_t lock; diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c -index f476ae2..05e1bdd 100644 +index b232397..ce8c4dc 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c -@@ -1188,7 +1188,7 @@ static int omap_gpio_probe(struct platform_device *pdev) +@@ -1054,7 +1054,7 @@ static void omap_gpio_mod_init(struct gpio_bank *bank) + dev_err(bank->dev, "Could not get gpio dbck\n"); + } + +-static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) ++static int omap_gpio_chip_init(struct gpio_bank *bank, irq_chip_no_const *irqc) + { + static int gpio; + int irq_base = 0; +@@ -1137,7 +1137,7 @@ static int omap_gpio_probe(struct platform_device *pdev) const struct omap_gpio_platform_data *pdata; struct resource *res; struct gpio_bank *bank; @@ -40684,10 +40718,10 @@ index f476ae2..05e1bdd 100644 match = of_match_device(of_match_ptr(omap_gpio_match), dev); diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c -index c49522e..9a7ee54 100644 +index 1e14a6c..0442450 100644 --- a/drivers/gpio/gpio-rcar.c +++ b/drivers/gpio/gpio-rcar.c -@@ -348,7 +348,7 @@ static int gpio_rcar_probe(struct platform_device *pdev) +@@ -379,7 +379,7 @@ static int gpio_rcar_probe(struct platform_device *pdev) struct gpio_rcar_priv *p; struct resource *io, *irq; struct gpio_chip *gpio_chip; @@ -40710,10 +40744,10 @@ index c1caa45..f0f97d2 100644 return -EINVAL; } diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index 1ca9295..9f3d481 100644 +index 6bc612b..3932464 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c -@@ -554,8 +554,10 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) +@@ -558,8 +558,10 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) } if (gpiochip->irqchip) { @@ -40726,7 +40760,7 @@ index 1ca9295..9f3d481 100644 gpiochip->irqchip = NULL; } } -@@ -621,8 +623,11 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip, +@@ -625,8 +627,11 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip, gpiochip->irqchip = NULL; return -EINVAL; } @@ -40918,10 +40952,10 @@ index 9b23525..65f4110 100644 dev->driver->context_dtor(dev, ctx->handle); drm_legacy_ctxbitmap_free(dev, ctx->handle); diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c -index b6f076b..2918de2 100644 +index 3007b44..420b4a3 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c -@@ -4118,7 +4118,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev, +@@ -4176,7 +4176,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev, goto done; } @@ -40931,7 +40965,7 @@ index b6f076b..2918de2 100644 ret = -EFAULT; goto done; diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c -index d512134..a80a8e4 100644 +index 48f7359..8c3b594 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -448,7 +448,7 @@ void drm_unplug_dev(struct drm_device *dev) @@ -41076,10 +41110,10 @@ index 3d2e91c..d31c4c9 100644 item->object = NULL; } diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c -index f1b32f9..394f791 100644 +index cbb4fc0..5c756cb9 100644 --- a/drivers/gpu/drm/drm_info.c +++ b/drivers/gpu/drm/drm_info.c -@@ -76,10 +76,13 @@ int drm_vm_info(struct seq_file *m, void *data) +@@ -77,10 +77,13 @@ int drm_vm_info(struct seq_file *m, void *data) struct drm_local_map *map; struct drm_map_list *r_list; @@ -41097,7 +41131,7 @@ index f1b32f9..394f791 100644 const char *type; int i; -@@ -90,7 +93,7 @@ int drm_vm_info(struct seq_file *m, void *data) +@@ -91,7 +94,7 @@ int drm_vm_info(struct seq_file *m, void *data) map = r_list->map; if (!map) continue; @@ -41107,7 +41141,7 @@ index f1b32f9..394f791 100644 else type = types[map->type]; diff --git a/drivers/gpu/drm/drm_ioc32.c b/drivers/gpu/drm/drm_ioc32.c -index 2f4c4343..dd12cd2 100644 +index aa8bbb4..0f62630 100644 --- a/drivers/gpu/drm/drm_ioc32.c +++ b/drivers/gpu/drm/drm_ioc32.c @@ -457,7 +457,7 @@ static int compat_drm_infobufs(struct file *file, unsigned int cmd, @@ -41132,12 +41166,12 @@ index 2f4c4343..dd12cd2 100644 return 0; } --drm_ioctl_compat_t *drm_compat_ioctls[] = { -+drm_ioctl_compat_t drm_compat_ioctls[] = { +-static drm_ioctl_compat_t *drm_compat_ioctls[] = { ++static drm_ioctl_compat_t drm_compat_ioctls[] = { [DRM_IOCTL_NR(DRM_IOCTL_VERSION32)] = compat_drm_version, [DRM_IOCTL_NR(DRM_IOCTL_GET_UNIQUE32)] = compat_drm_getunique, [DRM_IOCTL_NR(DRM_IOCTL_GET_MAP32)] = compat_drm_getmap, -@@ -1062,7 +1062,6 @@ drm_ioctl_compat_t *drm_compat_ioctls[] = { +@@ -1062,7 +1062,6 @@ static drm_ioctl_compat_t *drm_compat_ioctls[] = { long drm_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { unsigned int nr = DRM_IOCTL_NR(cmd); @@ -41159,10 +41193,10 @@ index 2f4c4343..dd12cd2 100644 ret = drm_ioctl(filp, cmd, arg); diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c -index 3785d66..1c489ef 100644 +index 266dcd6..d0194d9 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c -@@ -655,7 +655,7 @@ long drm_ioctl(struct file *filp, +@@ -663,7 +663,7 @@ long drm_ioctl(struct file *filp, struct drm_file *file_priv = filp->private_data; struct drm_device *dev; const struct drm_ioctl_desc *ioctl = NULL; @@ -41253,20 +41287,19 @@ index 93ec5dc..82acbaf 100644 int front_offset; } drm_i810_private_t; diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c -index 1a46787..7fb387c 100644 +index 68e0c85..3303192 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c -@@ -149,6 +149,9 @@ static int i915_getparam(struct drm_device *dev, void *data, - case I915_PARAM_MMAP_VERSION: - value = 1; - break; +@@ -162,6 +162,8 @@ static int i915_getparam(struct drm_device *dev, void *data, + value = INTEL_INFO(dev)->eu_total; + if (!value) + return -ENODEV; + case I915_PARAM_HAS_LEGACY_CONTEXT: + value = drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT); -+ break; + break; default: DRM_DEBUG("Unknown parameter %d\n", param->param); - return -EINVAL; -@@ -362,7 +365,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev) +@@ -376,7 +378,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev) * locking inversion with the driver load path. And the access here is * completely racy anyway. So don't bother with locking for now. */ @@ -41276,10 +41309,10 @@ index 1a46787..7fb387c 100644 static const struct vga_switcheroo_client_ops i915_switcheroo_ops = { diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -index 38a7425..5322b16 100644 +index a3190e79..86b06cb 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -@@ -872,12 +872,12 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) +@@ -936,12 +936,12 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) static int validate_exec_list(struct drm_device *dev, struct drm_i915_gem_exec_object2 *exec, @@ -41353,10 +41386,10 @@ index 176de63..b50b66a 100644 ret = drm_ioctl(filp, cmd, arg); diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index f75173c..f283e45 100644 +index d0f3cbc..f3ab4cc 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c -@@ -13056,13 +13056,13 @@ struct intel_quirk { +@@ -13604,13 +13604,13 @@ struct intel_quirk { int subsystem_vendor; int subsystem_device; void (*hook)(struct drm_device *dev); @@ -41372,7 +41405,7 @@ index f75173c..f283e45 100644 static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) { -@@ -13070,18 +13070,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) +@@ -13618,18 +13618,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) return 1; } @@ -41404,7 +41437,7 @@ index f75173c..f283e45 100644 }, }; diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c -index a002f53..0d60514 100644 +index 74f505b..21f6914 100644 --- a/drivers/gpu/drm/imx/imx-drm-core.c +++ b/drivers/gpu/drm/imx/imx-drm-core.c @@ -355,7 +355,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc, @@ -41519,10 +41552,10 @@ index 0190b69..60c3eaf 100644 #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry }) diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c -index 8763deb..936b423 100644 +index 8904933..9624b38 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c -@@ -940,7 +940,8 @@ static struct drm_driver +@@ -941,7 +941,8 @@ static struct drm_driver driver_stub = { .driver_features = DRIVER_USE_AGP | @@ -41533,10 +41566,10 @@ index 8763deb..936b423 100644 .load = nouveau_drm_load, .unload = nouveau_drm_unload, diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h -index fc68f09..0511d71 100644 +index dd72652..1fd2368 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.h +++ b/drivers/gpu/drm/nouveau/nouveau_drm.h -@@ -121,7 +121,6 @@ struct nouveau_drm { +@@ -123,7 +123,6 @@ struct nouveau_drm { struct drm_global_reference mem_global_ref; struct ttm_bo_global_ref bo_global_ref; struct ttm_bo_device bdev; @@ -41558,10 +41591,10 @@ index 462679a..88e32a7 100644 if (nr < DRM_COMMAND_BASE) diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c -index 273e501..3b6c0a2 100644 +index 18f4497..10f6025 100644 --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c -@@ -127,11 +127,11 @@ nouveau_vram_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) +@@ -130,11 +130,11 @@ nouveau_vram_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) } const struct ttm_mem_type_manager_func nouveau_vram_manager = { @@ -41578,7 +41611,7 @@ index 273e501..3b6c0a2 100644 }; static int -@@ -195,11 +195,11 @@ nouveau_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) +@@ -198,11 +198,11 @@ nouveau_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) } const struct ttm_mem_type_manager_func nouveau_gart_manager = { @@ -41595,7 +41628,7 @@ index 273e501..3b6c0a2 100644 }; /*XXX*/ -@@ -268,11 +268,11 @@ nv04_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) +@@ -271,11 +271,11 @@ nv04_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix) } const struct ttm_mem_type_manager_func nv04_gart_manager = { @@ -41973,7 +42006,7 @@ index b928c17..e5d9400 100644 if (regcomp (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) { diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c -index bd7519f..e1c2cd95 100644 +index a7fdfa4..04a3964 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -1247,7 +1247,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev) @@ -42111,10 +42144,10 @@ index edafd3c..3af7c9c 100644 vma->vm_ops = &radeon_ttm_vm_ops; return 0; diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c -index 1a52522..8e78043 100644 +index a287e4f..df1d5dd 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c -@@ -1585,7 +1585,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor) +@@ -1594,7 +1594,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor) } for (i = 0; i < ARRAY_SIZE(debugfs_files); i++) @@ -42137,7 +42170,7 @@ index ed970f6..4eeea42 100644 struct dentry *debugfs; diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c -index 7eaaee74..cc2bc04 100644 +index 06ab178..b5324e4 100644 --- a/drivers/gpu/drm/tegra/hdmi.c +++ b/drivers/gpu/drm/tegra/hdmi.c @@ -64,7 +64,7 @@ struct tegra_hdmi { @@ -42149,6 +42182,24 @@ index 7eaaee74..cc2bc04 100644 struct drm_minor *minor; struct dentry *debugfs; }; +diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c +index 7591d89..463e2b6 100644 +--- a/drivers/gpu/drm/tegra/sor.c ++++ b/drivers/gpu/drm/tegra/sor.c +@@ -826,8 +826,11 @@ static int tegra_sor_debugfs_init(struct tegra_sor *sor, + goto remove; + } + +- for (i = 0; i < ARRAY_SIZE(debugfs_files); i++) +- sor->debugfs_files[i].data = sor; ++ for (i = 0; i < ARRAY_SIZE(debugfs_files); i++) { ++ pax_open_kernel(); ++ *(void **)&sor->debugfs_files[i].data = sor; ++ pax_close_kernel(); ++ } + + err = drm_debugfs_create_files(sor->debugfs_files, + ARRAY_SIZE(debugfs_files), diff --git a/drivers/gpu/drm/ttm/ttm_bo_manager.c b/drivers/gpu/drm/ttm/ttm_bo_manager.c index aa0bd054..aea6a01 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_manager.c @@ -42606,10 +42657,10 @@ index 37ac7b5..d52a5c9 100644 /* copy over all the bus versions */ if (dev->bus && dev->bus->pm) { diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c -index 56ce8c2..32ce524 100644 +index 722a925..594c312 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c -@@ -2531,7 +2531,7 @@ EXPORT_SYMBOL_GPL(hid_ignore); +@@ -2552,7 +2552,7 @@ EXPORT_SYMBOL_GPL(hid_ignore); int hid_add_device(struct hid_device *hdev) { @@ -42618,7 +42669,7 @@ index 56ce8c2..32ce524 100644 int ret; if (WARN_ON(hdev->status & HID_STAT_ADDED)) -@@ -2574,7 +2574,7 @@ int hid_add_device(struct hid_device *hdev) +@@ -2595,7 +2595,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, @@ -42627,6 +42678,28 @@ index 56ce8c2..32ce524 100644 hid_debug_register(hdev, dev_name(&hdev->dev)); ret = device_add(&hdev->dev); +diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-sensor-custom.c +index 5614fee..8301fbf 100644 +--- a/drivers/hid/hid-sensor-custom.c ++++ b/drivers/hid/hid-sensor-custom.c +@@ -34,7 +34,7 @@ struct hid_sensor_custom_field { + int report_id; + char group_name[HID_CUSTOM_NAME_LENGTH]; + struct hid_sensor_hub_attribute_info attribute; +- struct device_attribute sd_attrs[HID_CUSTOM_MAX_CORE_ATTRS]; ++ device_attribute_no_const sd_attrs[HID_CUSTOM_MAX_CORE_ATTRS]; + char attr_name[HID_CUSTOM_TOTAL_ATTRS][HID_CUSTOM_NAME_LENGTH]; + struct attribute *attrs[HID_CUSTOM_TOTAL_ATTRS]; + struct attribute_group hid_custom_attribute_group; +@@ -590,7 +590,7 @@ static int hid_sensor_custom_add_attributes(struct hid_sensor_custom + j = 0; + while (j < HID_CUSTOM_TOTAL_ATTRS && + hid_custom_attrs[j].name) { +- struct device_attribute *device_attr; ++ device_attribute_no_const *device_attr; + + device_attr = &sensor_inst->fields[i].sd_attrs[j]; + diff --git a/drivers/hid/hid-wiimote-debug.c b/drivers/hid/hid-wiimote-debug.c index c13fb5b..55a3802 100644 --- a/drivers/hid/hid-wiimote-debug.c @@ -42641,10 +42714,10 @@ index c13fb5b..55a3802 100644 *off += size; diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c -index 00bc30e..d8e5097 100644 +index 54da66d..aa3a3d7 100644 --- a/drivers/hv/channel.c +++ b/drivers/hv/channel.c -@@ -370,7 +370,7 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer, +@@ -373,7 +373,7 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer, int ret = 0; next_gpadl_handle = @@ -42654,7 +42727,7 @@ index 00bc30e..d8e5097 100644 ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount); if (ret) diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c -index 50e51a5..b0bfd78 100644 +index d3943bc..3de28a9 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -118,7 +118,7 @@ static u64 do_hypercall(u64 control, void *input, void *output) @@ -42676,10 +42749,10 @@ index 50e51a5..b0bfd78 100644 if (!virtaddr) goto cleanup; diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c -index ff16938..e60879c 100644 +index cb5b7dc..6052f22 100644 --- a/drivers/hv/hv_balloon.c +++ b/drivers/hv/hv_balloon.c -@@ -470,7 +470,7 @@ MODULE_PARM_DESC(hot_add, "If set attempt memory hot_add"); +@@ -469,7 +469,7 @@ MODULE_PARM_DESC(hot_add, "If set attempt memory hot_add"); module_param(pressure_report_delay, uint, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(pressure_report_delay, "Delay in secs in reporting pressure"); @@ -42688,7 +42761,7 @@ index ff16938..e60879c 100644 static int dm_ring_size = (5 * PAGE_SIZE); -@@ -947,7 +947,7 @@ static void hot_add_req(struct work_struct *dummy) +@@ -941,7 +941,7 @@ static void hot_add_req(struct work_struct *dummy) pr_info("Memory hot add failed\n"); dm->state = DM_INITIALIZED; @@ -42697,7 +42770,7 @@ index ff16938..e60879c 100644 vmbus_sendpacket(dm->dev->channel, &resp, sizeof(struct dm_hot_add_response), (unsigned long)NULL, -@@ -1028,7 +1028,7 @@ static void post_status(struct hv_dynmem_device *dm) +@@ -1022,7 +1022,7 @@ static void post_status(struct hv_dynmem_device *dm) memset(&status, 0, sizeof(struct dm_status)); status.hdr.type = DM_STATUS_REPORT; status.hdr.size = sizeof(struct dm_status); @@ -42705,8 +42778,8 @@ index ff16938..e60879c 100644 + status.hdr.trans_id = atomic_inc_return_unchecked(&trans_id); /* - * The host expects the guest to report free memory. -@@ -1048,7 +1048,7 @@ static void post_status(struct hv_dynmem_device *dm) + * The host expects the guest to report free and committed memory. +@@ -1046,7 +1046,7 @@ static void post_status(struct hv_dynmem_device *dm) * send the status. This can happen if we were interrupted * after we picked our transaction ID. */ @@ -42715,7 +42788,7 @@ index ff16938..e60879c 100644 return; /* -@@ -1188,7 +1188,7 @@ static void balloon_up(struct work_struct *dummy) +@@ -1191,7 +1191,7 @@ static void balloon_up(struct work_struct *dummy) */ do { @@ -42724,7 +42797,7 @@ index ff16938..e60879c 100644 ret = vmbus_sendpacket(dm_device.dev->channel, bl_resp, bl_resp->hdr.size, -@@ -1234,7 +1234,7 @@ static void balloon_down(struct hv_dynmem_device *dm, +@@ -1237,7 +1237,7 @@ static void balloon_down(struct hv_dynmem_device *dm, memset(&resp, 0, sizeof(struct dm_unballoon_response)); resp.hdr.type = DM_UNBALLOON_RESPONSE; @@ -42733,7 +42806,7 @@ index ff16938..e60879c 100644 resp.hdr.size = sizeof(struct dm_unballoon_response); vmbus_sendpacket(dm_device.dev->channel, &resp, -@@ -1295,7 +1295,7 @@ static void version_resp(struct hv_dynmem_device *dm, +@@ -1298,7 +1298,7 @@ static void version_resp(struct hv_dynmem_device *dm, memset(&version_req, 0, sizeof(struct dm_version_request)); version_req.hdr.type = DM_VERSION_REQUEST; version_req.hdr.size = sizeof(struct dm_version_request); @@ -42742,7 +42815,7 @@ index ff16938..e60879c 100644 version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN7; version_req.is_last_attempt = 1; -@@ -1468,7 +1468,7 @@ static int balloon_probe(struct hv_device *dev, +@@ -1471,7 +1471,7 @@ static int balloon_probe(struct hv_device *dev, memset(&version_req, 0, sizeof(struct dm_version_request)); version_req.hdr.type = DM_VERSION_REQUEST; version_req.hdr.size = sizeof(struct dm_version_request); @@ -42751,7 +42824,7 @@ index ff16938..e60879c 100644 version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN8; version_req.is_last_attempt = 0; -@@ -1499,7 +1499,7 @@ static int balloon_probe(struct hv_device *dev, +@@ -1502,7 +1502,7 @@ static int balloon_probe(struct hv_device *dev, memset(&cap_msg, 0, sizeof(struct dm_capabilities)); cap_msg.hdr.type = DM_CAPABILITIES_REPORT; cap_msg.hdr.size = sizeof(struct dm_capabilities); @@ -42761,10 +42834,10 @@ index ff16938..e60879c 100644 cap_msg.caps.cap_bits.balloon = 1; cap_msg.caps.cap_bits.hot_add = 1; diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h -index 44b1c94..6dccc2c 100644 +index 887287a..238a626 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h -@@ -632,7 +632,7 @@ enum vmbus_connect_state { +@@ -645,7 +645,7 @@ enum vmbus_connect_state { struct vmbus_connection { enum vmbus_connect_state conn_state; @@ -42773,23 +42846,6 @@ index 44b1c94..6dccc2c 100644 /* * Represents channel interrupts. Each bit position represents a -diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c -index f518b8d7..4bc0b64 100644 ---- a/drivers/hv/vmbus_drv.c -+++ b/drivers/hv/vmbus_drv.c -@@ -840,10 +840,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 579bdf9..0dac21d5 100644 --- a/drivers/hwmon/acpi_power_meter.c @@ -42863,10 +42919,10 @@ index cccef87..06ce8ec 100644 { sysfs_attr_init(&attr->attr); diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c -index 5b7fec8..05c957a 100644 +index ed303ba..e24bd26f 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c -@@ -783,7 +783,7 @@ static int coretemp_cpu_callback(struct notifier_block *nfb, +@@ -782,7 +782,7 @@ static int coretemp_cpu_callback(struct notifier_block *nfb, return NOTIFY_OK; } @@ -42902,7 +42958,7 @@ index 17ae2eb..21b71dd 100644 int in_i = 1, temp_i = 1, curr_i = 1, humidity_i = 1; enum iio_chan_type type; diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c -index f3830db..9f4d6d5 100644 +index 37f0170..414ec2c 100644 --- a/drivers/hwmon/nct6683.c +++ b/drivers/hwmon/nct6683.c @@ -397,11 +397,11 @@ static struct attribute_group * @@ -42921,10 +42977,10 @@ index f3830db..9f4d6d5 100644 int i, j, count; diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c -index 1be4117..88ae1e1 100644 +index bd1c99d..2fa55ad 100644 --- a/drivers/hwmon/nct6775.c +++ b/drivers/hwmon/nct6775.c -@@ -952,10 +952,10 @@ static struct attribute_group * +@@ -953,10 +953,10 @@ static struct attribute_group * nct6775_create_attr_group(struct device *dev, struct sensor_template_group *tg, int repeat) { @@ -43131,7 +43187,7 @@ index 4df97f6..c751151 100644 struct iio_chan_spec const *chan, ssize_t (*readfunc)(struct device *dev, diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c -index e28a494..f7c2671 100644 +index 0271608..81998c5 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c @@ -115,7 +115,7 @@ static char const counter_group_names[CM_COUNTER_GROUPS] @@ -43143,7 +43199,7 @@ index e28a494..f7c2671 100644 }; struct cm_counter_attribute { -@@ -1398,7 +1398,7 @@ static void cm_dup_req_handler(struct cm_work *work, +@@ -1397,7 +1397,7 @@ static void cm_dup_req_handler(struct cm_work *work, struct ib_mad_send_buf *msg = NULL; int ret; @@ -43152,7 +43208,7 @@ index e28a494..f7c2671 100644 counter[CM_REQ_COUNTER]); /* Quick state check to discard duplicate REQs. */ -@@ -1785,7 +1785,7 @@ static void cm_dup_rep_handler(struct cm_work *work) +@@ -1784,7 +1784,7 @@ static void cm_dup_rep_handler(struct cm_work *work) if (!cm_id_priv) return; @@ -43161,7 +43217,7 @@ index e28a494..f7c2671 100644 counter[CM_REP_COUNTER]); ret = cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg); if (ret) -@@ -1952,7 +1952,7 @@ static int cm_rtu_handler(struct cm_work *work) +@@ -1951,7 +1951,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); @@ -43170,7 +43226,7 @@ index e28a494..f7c2671 100644 counter[CM_RTU_COUNTER]); goto out; } -@@ -2135,7 +2135,7 @@ static int cm_dreq_handler(struct cm_work *work) +@@ -2134,7 +2134,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) { @@ -43179,7 +43235,7 @@ index e28a494..f7c2671 100644 counter[CM_DREQ_COUNTER]); cm_issue_drep(work->port, work->mad_recv_wc); return -EINVAL; -@@ -2160,7 +2160,7 @@ static int cm_dreq_handler(struct cm_work *work) +@@ -2159,7 +2159,7 @@ static int cm_dreq_handler(struct cm_work *work) case IB_CM_MRA_REP_RCVD: break; case IB_CM_TIMEWAIT: @@ -43188,7 +43244,7 @@ index e28a494..f7c2671 100644 counter[CM_DREQ_COUNTER]); if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg)) goto unlock; -@@ -2174,7 +2174,7 @@ static int cm_dreq_handler(struct cm_work *work) +@@ -2173,7 +2173,7 @@ static int cm_dreq_handler(struct cm_work *work) cm_free_msg(msg); goto deref; case IB_CM_DREQ_RCVD: @@ -43197,7 +43253,7 @@ index e28a494..f7c2671 100644 counter[CM_DREQ_COUNTER]); goto unlock; default: -@@ -2541,7 +2541,7 @@ static int cm_mra_handler(struct cm_work *work) +@@ -2540,7 +2540,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) @@ -43206,7 +43262,7 @@ index e28a494..f7c2671 100644 counter_group[CM_RECV_DUPLICATES]. counter[CM_MRA_COUNTER]); goto out; -@@ -2550,7 +2550,7 @@ static int cm_mra_handler(struct cm_work *work) +@@ -2549,7 +2549,7 @@ static int cm_mra_handler(struct cm_work *work) break; case IB_CM_MRA_REQ_RCVD: case IB_CM_MRA_REP_RCVD: @@ -43215,7 +43271,7 @@ index e28a494..f7c2671 100644 counter[CM_MRA_COUNTER]); /* fall through */ default: -@@ -2712,7 +2712,7 @@ static int cm_lap_handler(struct cm_work *work) +@@ -2711,7 +2711,7 @@ static int cm_lap_handler(struct cm_work *work) case IB_CM_LAP_IDLE: break; case IB_CM_MRA_LAP_SENT: @@ -43224,7 +43280,7 @@ index e28a494..f7c2671 100644 counter[CM_LAP_COUNTER]); if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg)) goto unlock; -@@ -2728,7 +2728,7 @@ static int cm_lap_handler(struct cm_work *work) +@@ -2727,7 +2727,7 @@ static int cm_lap_handler(struct cm_work *work) cm_free_msg(msg); goto deref; case IB_CM_LAP_RCVD: @@ -43233,7 +43289,7 @@ index e28a494..f7c2671 100644 counter[CM_LAP_COUNTER]); goto unlock; default: -@@ -3012,7 +3012,7 @@ static int cm_sidr_req_handler(struct cm_work *work) +@@ -3011,7 +3011,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); @@ -43242,7 +43298,7 @@ index e28a494..f7c2671 100644 counter[CM_SIDR_REQ_COUNTER]); goto out; /* Duplicate message. */ } -@@ -3224,10 +3224,10 @@ static void cm_send_handler(struct ib_mad_agent *mad_agent, +@@ -3223,10 +3223,10 @@ static void cm_send_handler(struct ib_mad_agent *mad_agent, if (!msg->context[0] && (attr_index != CM_REJ_COUNTER)) msg->retries = 1; @@ -43255,7 +43311,7 @@ index e28a494..f7c2671 100644 &port->counter_group[CM_XMIT_RETRIES]. counter[attr_index]); -@@ -3437,7 +3437,7 @@ static void cm_recv_handler(struct ib_mad_agent *mad_agent, +@@ -3436,7 +3436,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); @@ -43264,7 +43320,7 @@ index e28a494..f7c2671 100644 counter[attr_id - CM_ATTR_ID_OFFSET]); work = kmalloc(sizeof *work + sizeof(struct ib_sa_path_rec) * paths, -@@ -3668,7 +3668,7 @@ static ssize_t cm_show_counter(struct kobject *obj, struct attribute *attr, +@@ -3667,7 +3667,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", @@ -43359,7 +43415,7 @@ index a9f0489..27a161b 100644 (unsigned long) cmd.response + sizeof resp, in_len - sizeof cmd, out_len - sizeof resp); diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c -index 6791fd1..78bdcdf 100644 +index cff815b..75576dd 100644 --- a/drivers/infiniband/hw/cxgb4/mem.c +++ b/drivers/infiniband/hw/cxgb4/mem.c @@ -256,7 +256,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry, @@ -43435,7 +43491,7 @@ index 1f95bba..9530f87 100644 sdata, wqe->wr.wr.atomic.swap); goto send_comp; diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c -index 5904026..f1c30e5 100644 +index 9cd2b00..7486df4 100644 --- a/drivers/infiniband/hw/mlx4/mad.c +++ b/drivers/infiniband/hw/mlx4/mad.c @@ -106,7 +106,7 @@ __be64 mlx4_ib_gen_node_guid(void) @@ -43461,10 +43517,10 @@ index ed327e6..ca1739e0 100644 ctx->mcg_wq = create_singlethread_workqueue(name); if (!ctx->mcg_wq) diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h -index f829fd9..1a8d436 100644 +index fce39343..9d8fdff 100644 --- a/drivers/infiniband/hw/mlx4/mlx4_ib.h +++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h -@@ -439,7 +439,7 @@ struct mlx4_ib_demux_ctx { +@@ -435,7 +435,7 @@ struct mlx4_ib_demux_ctx { struct list_head mcg_mgid0_list; struct workqueue_struct *mcg_wq; struct mlx4_ib_demux_pv_ctx **tun; @@ -43571,7 +43627,7 @@ index 415f8e1..e34214e 100644 struct mthca_dev *dev = to_mdev(ibcq->device); struct mthca_cq *cq = to_mcq(ibcq); diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c -index 3b2a6dc..bce26ff 100644 +index 9f9d5c5..3c19aac 100644 --- a/drivers/infiniband/hw/nes/nes.c +++ b/drivers/infiniband/hw/nes/nes.c @@ -97,7 +97,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes"); @@ -43583,7 +43639,7 @@ index 3b2a6dc..bce26ff 100644 static unsigned int ee_flsh_adapter; static unsigned int sysfs_nonidx_addr; -@@ -278,7 +278,7 @@ static void nes_cqp_rem_ref_callback(struct nes_device *nesdev, struct nes_cqp_r +@@ -279,7 +279,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; @@ -43652,7 +43708,7 @@ index bd9d132..70d84f4 100644 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 6f09a72..cf4399d 100644 +index 72b4341..2600332 100644 --- a/drivers/infiniband/hw/nes/nes_cm.c +++ b/drivers/infiniband/hw/nes/nes_cm.c @@ -69,14 +69,14 @@ u32 cm_packets_dropped; @@ -43724,7 +43780,7 @@ index 6f09a72..cf4399d 100644 int nes_add_ref_cm_node(struct nes_cm_node *cm_node) { -@@ -1436,7 +1436,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core, +@@ -1461,7 +1461,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core, kfree(listener); listener = NULL; ret = 0; @@ -43733,7 +43789,7 @@ index 6f09a72..cf4399d 100644 } else { spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); } -@@ -1637,7 +1637,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core, +@@ -1667,7 +1667,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); @@ -43742,7 +43798,7 @@ index 6f09a72..cf4399d 100644 return cm_node; } -@@ -1698,7 +1698,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core, +@@ -1728,7 +1728,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core, } atomic_dec(&cm_core->node_cnt); @@ -43751,7 +43807,7 @@ index 6f09a72..cf4399d 100644 nesqp = cm_node->nesqp; if (nesqp) { nesqp->cm_node = NULL; -@@ -1762,7 +1762,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc, +@@ -1792,7 +1792,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc, static void drop_packet(struct sk_buff *skb) { @@ -43760,7 +43816,7 @@ index 6f09a72..cf4399d 100644 dev_kfree_skb_any(skb); } -@@ -1825,7 +1825,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb, +@@ -1855,7 +1855,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.. */ @@ -43769,7 +43825,7 @@ index 6f09a72..cf4399d 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)); -@@ -2492,7 +2492,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core, +@@ -2523,7 +2523,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; } @@ -43778,7 +43834,7 @@ index 6f09a72..cf4399d 100644 loopbackremotenode->loopbackpartner = cm_node; loopbackremotenode->tcp_cntxt.rcv_wscale = NES_CM_DEFAULT_RCV_WND_SCALE; -@@ -2773,7 +2773,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core, +@@ -2804,7 +2804,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); @@ -43787,7 +43843,7 @@ index 6f09a72..cf4399d 100644 dev_kfree_skb_any(skb); } break; -@@ -3081,7 +3081,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp) +@@ -3112,7 +3112,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp) if ((cm_id) && (cm_id->event_handler)) { if (issue_disconn) { @@ -43796,7 +43852,7 @@ index 6f09a72..cf4399d 100644 cm_event.event = IW_CM_EVENT_DISCONNECT; cm_event.status = disconn_status; cm_event.local_addr = cm_id->local_addr; -@@ -3103,7 +3103,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp) +@@ -3134,7 +3134,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp) } if (issue_close) { @@ -43805,7 +43861,7 @@ index 6f09a72..cf4399d 100644 nes_disconnect(nesqp, 1); cm_id->provider_data = nesqp; -@@ -3241,7 +3241,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) +@@ -3272,7 +3272,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); @@ -43814,7 +43870,7 @@ index 6f09a72..cf4399d 100644 nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n", netdev_refcnt_read(nesvnic->netdev)); -@@ -3439,7 +3439,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len) +@@ -3470,7 +3470,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; @@ -43823,7 +43879,7 @@ index 6f09a72..cf4399d 100644 cm_node = (struct nes_cm_node *)cm_id->provider_data; loopback = cm_node->loopbackpartner; cm_core = cm_node->cm_core; -@@ -3504,7 +3504,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) +@@ -3535,7 +3535,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) ntohs(raddr->sin_port), ntohl(laddr->sin_addr.s_addr), ntohs(laddr->sin_port)); @@ -43832,7 +43888,7 @@ index 6f09a72..cf4399d 100644 nesqp->active_conn = 1; /* cache the cm_id in the qp */ -@@ -3649,7 +3649,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog) +@@ -3680,7 +3680,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; } @@ -43841,7 +43897,7 @@ index 6f09a72..cf4399d 100644 } cm_id->add_ref(cm_id); -@@ -3756,7 +3756,7 @@ static void cm_event_connected(struct nes_cm_event *event) +@@ -3787,7 +3787,7 @@ static void cm_event_connected(struct nes_cm_event *event) if (nesqp->destroyed) return; @@ -43850,7 +43906,7 @@ index 6f09a72..cf4399d 100644 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, ntohl(raddr->sin_addr.s_addr), -@@ -3941,7 +3941,7 @@ static void cm_event_reset(struct nes_cm_event *event) +@@ -3972,7 +3972,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); @@ -43859,7 +43915,7 @@ index 6f09a72..cf4399d 100644 cm_event.event = IW_CM_EVENT_CLOSE; cm_event.status = 0; cm_event.provider_data = cm_id->provider_data; -@@ -3981,7 +3981,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event) +@@ -4012,7 +4012,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event) return; cm_id = cm_node->cm_id; @@ -43868,7 +43924,7 @@ index 6f09a72..cf4399d 100644 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n", cm_node, cm_id, jiffies); -@@ -4030,7 +4030,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event) +@@ -4061,7 +4061,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event) return; cm_id = cm_node->cm_id; @@ -44010,7 +44066,7 @@ index c0d0296..3185f57 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 ffd48bf..83cdb56 100644 +index 7df16f7..7e1b21e 100644 --- a/drivers/infiniband/hw/qib/qib.h +++ b/drivers/infiniband/hw/qib/qib.h @@ -52,6 +52,7 @@ @@ -44090,10 +44146,10 @@ index 4a95b22..874c182 100644 #include #include diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c -index 3aa2f3f..53c00ea 100644 +index 61c7611..e1bfa38 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c -@@ -886,7 +886,7 @@ static void xpad_led_set(struct led_classdev *led_cdev, +@@ -905,7 +905,7 @@ static void xpad_led_set(struct led_classdev *led_cdev, static int xpad_led_probe(struct usb_xpad *xpad) { @@ -44102,7 +44158,7 @@ index 3aa2f3f..53c00ea 100644 unsigned long led_no; struct xpad_led *led; struct led_classdev *led_cdev; -@@ -899,7 +899,7 @@ static int xpad_led_probe(struct usb_xpad *xpad) +@@ -918,7 +918,7 @@ static int xpad_led_probe(struct usb_xpad *xpad) if (!led) return -ENOMEM; @@ -44134,10 +44190,10 @@ index ac1fa5f..5f7502c 100644 /* * PCU-B devices, both GEN_1 and GEN_2 do not have OFN sensor diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h -index d02e1bd..d719719 100644 +index ad5a5a1..5eac214 100644 --- a/drivers/input/mouse/psmouse.h +++ b/drivers/input/mouse/psmouse.h -@@ -124,7 +124,7 @@ struct psmouse_attribute { +@@ -125,7 +125,7 @@ struct psmouse_attribute { ssize_t (*set)(struct psmouse *psmouse, void *data, const char *buf, size_t count); bool protect; @@ -44217,10 +44273,10 @@ index 92e2243..8fd9092 100644 .ident = "Shift", .matches = { diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c -index 48882c1..93e0987 100644 +index ca9f4ed..b860ff1 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c -@@ -823,11 +823,21 @@ static void copy_cmd_to_buffer(struct amd_iommu *iommu, +@@ -829,11 +829,21 @@ static void copy_cmd_to_buffer(struct amd_iommu *iommu, static void build_completion_wait(struct iommu_cmd *cmd, u64 address) { @@ -44245,10 +44301,10 @@ index 48882c1..93e0987 100644 CMD_SET_TYPE(cmd, CMD_COMPL_WAIT); } diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c -index a3adde6..988ee96 100644 +index 65075ef..53823f9 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c -@@ -338,7 +338,7 @@ enum arm_smmu_domain_stage { +@@ -331,7 +331,7 @@ enum arm_smmu_domain_stage { struct arm_smmu_domain { struct arm_smmu_device *smmu; @@ -44257,7 +44313,7 @@ index a3adde6..988ee96 100644 spinlock_t pgtbl_lock; struct arm_smmu_cfg cfg; enum arm_smmu_domain_stage stage; -@@ -833,7 +833,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, +@@ -817,7 +817,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, { int irq, start, ret = 0; unsigned long ias, oas; @@ -44265,8 +44321,8 @@ index a3adde6..988ee96 100644 + struct io_pgtable *pgtbl; struct io_pgtable_cfg pgtbl_cfg; enum io_pgtable_fmt fmt; - struct arm_smmu_domain *smmu_domain = domain->priv; -@@ -918,14 +918,16 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, + struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); +@@ -902,14 +902,16 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, }; smmu_domain->smmu = smmu; @@ -44286,7 +44342,7 @@ index a3adde6..988ee96 100644 /* Initialise the context bank with our page table cfg */ arm_smmu_init_context_bank(smmu_domain, &pgtbl_cfg); -@@ -946,7 +948,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, +@@ -930,7 +932,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, mutex_unlock(&smmu_domain->init_mutex); /* Publish page table ops for map/unmap */ @@ -44295,7 +44351,7 @@ index a3adde6..988ee96 100644 return 0; out_clear_smmu: -@@ -979,8 +981,7 @@ static void arm_smmu_destroy_domain_context(struct iommu_domain *domain) +@@ -963,8 +965,7 @@ static void arm_smmu_destroy_domain_context(struct iommu_domain *domain) free_irq(irq, domain); } @@ -44305,10 +44361,10 @@ index a3adde6..988ee96 100644 __arm_smmu_free_bitmap(smmu->context_map, cfg->cbndx); } -@@ -1204,13 +1205,13 @@ static int arm_smmu_map(struct iommu_domain *domain, unsigned long iova, +@@ -1190,13 +1191,13 @@ static int arm_smmu_map(struct iommu_domain *domain, unsigned long iova, int ret; unsigned long flags; - struct arm_smmu_domain *smmu_domain = domain->priv; + struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); - struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops; + struct io_pgtable *iop = smmu_domain->pgtbl; @@ -44322,10 +44378,10 @@ index a3adde6..988ee96 100644 spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); return ret; } -@@ -1221,13 +1222,13 @@ static size_t arm_smmu_unmap(struct iommu_domain *domain, unsigned long iova, +@@ -1207,13 +1208,13 @@ static size_t arm_smmu_unmap(struct iommu_domain *domain, unsigned long iova, size_t ret; unsigned long flags; - struct arm_smmu_domain *smmu_domain = domain->priv; + struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); - struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops; + struct io_pgtable *iop = smmu_domain->pgtbl; @@ -44339,8 +44395,8 @@ index a3adde6..988ee96 100644 spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); return ret; } -@@ -1238,7 +1239,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain, - struct arm_smmu_domain *smmu_domain = domain->priv; +@@ -1224,7 +1225,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain, + struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); struct arm_smmu_device *smmu = smmu_domain->smmu; struct arm_smmu_cfg *cfg = &smmu_domain->cfg; - struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops; @@ -44348,7 +44404,7 @@ index a3adde6..988ee96 100644 struct device *dev = smmu->dev; void __iomem *cb_base; u32 tmp; -@@ -1261,7 +1262,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain, +@@ -1247,7 +1248,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain, dev_err(dev, "iova to phys timed out on 0x%pad. Falling back to software table walk.\n", &iova); @@ -44357,10 +44413,10 @@ index a3adde6..988ee96 100644 } phys = readl_relaxed(cb_base + ARM_SMMU_CB_PAR_LO); -@@ -1282,9 +1283,9 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain, +@@ -1268,9 +1269,9 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain, phys_addr_t ret; unsigned long flags; - struct arm_smmu_domain *smmu_domain = domain->priv; + struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); - struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops; + struct io_pgtable *iop = smmu_domain->pgtbl; @@ -44369,7 +44425,7 @@ index a3adde6..988ee96 100644 return 0; spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags); -@@ -1292,7 +1293,7 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain, +@@ -1278,7 +1279,7 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain, smmu_domain->stage == ARM_SMMU_DOMAIN_S1) { ret = arm_smmu_iova_to_phys_hard(domain, iova); } else { @@ -44378,7 +44434,7 @@ index a3adde6..988ee96 100644 } spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags); -@@ -1651,7 +1652,9 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu) +@@ -1668,7 +1669,9 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu) size |= SZ_64K | SZ_512M; } @@ -44389,8 +44445,36 @@ index a3adde6..988ee96 100644 dev_notice(smmu->dev, "\tSupported page sizes: 0x%08lx\n", size); if (smmu->features & ARM_SMMU_FEAT_TRANS_S1) +diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c +index 5ecfaf2..c87c4b1 100644 +--- a/drivers/iommu/intel-iommu.c ++++ b/drivers/iommu/intel-iommu.c +@@ -1756,8 +1756,9 @@ static int domain_init(struct dmar_domain *domain, int guest_width) + + static void domain_exit(struct dmar_domain *domain) + { ++ struct dmar_drhd_unit *drhd; ++ struct intel_iommu *iommu; + struct page *freelist = NULL; +- int i; + + /* Domain 0 is reserved, so dont process it */ + if (!domain) +@@ -1777,8 +1778,10 @@ static void domain_exit(struct dmar_domain *domain) + + /* clear attached or cached domains */ + rcu_read_lock(); +- for_each_set_bit(i, domain->iommu_bmp, g_num_of_iommus) +- iommu_detach_domain(domain, g_iommus[i]); ++ for_each_active_iommu(iommu, drhd) ++ if (domain_type_is_vm(domain) || ++ test_bit(iommu->seq_id, domain->iommu_bmp)) ++ iommu_detach_domain(domain, iommu); + rcu_read_unlock(); + + dma_free_pagelist(freelist); diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c -index b610a8d..08eb879 100644 +index 4e46021..f0a24fef 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c @@ -36,12 +36,6 @@ @@ -44406,7 +44490,7 @@ index b610a8d..08eb879 100644 /* * For consistency with the architecture, we always consider * ARM_LPAE_MAX_LEVELS levels, with the walk starting at level n >=0 -@@ -302,10 +296,10 @@ static arm_lpae_iopte arm_lpae_prot_to_pte(struct arm_lpae_io_pgtable *data, +@@ -304,10 +298,10 @@ static arm_lpae_iopte arm_lpae_prot_to_pte(struct arm_lpae_io_pgtable *data, return pte; } @@ -44419,7 +44503,7 @@ index b610a8d..08eb879 100644 arm_lpae_iopte *ptep = data->pgd; int lvl = ARM_LPAE_START_LVL(data); arm_lpae_iopte prot; -@@ -445,12 +439,11 @@ static int __arm_lpae_unmap(struct arm_lpae_io_pgtable *data, +@@ -447,12 +441,11 @@ static int __arm_lpae_unmap(struct arm_lpae_io_pgtable *data, return __arm_lpae_unmap(data, iova, size, lvl + 1, ptep); } @@ -44434,7 +44518,7 @@ index b610a8d..08eb879 100644 arm_lpae_iopte *ptep = data->pgd; int lvl = ARM_LPAE_START_LVL(data); -@@ -461,10 +454,10 @@ static int arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova, +@@ -463,10 +456,10 @@ static int arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova, return unmapped; } @@ -44447,7 +44531,7 @@ index b610a8d..08eb879 100644 arm_lpae_iopte pte, *ptep = data->pgd; int lvl = ARM_LPAE_START_LVL(data); -@@ -531,6 +524,12 @@ static void arm_lpae_restrict_pgsizes(struct io_pgtable_cfg *cfg) +@@ -533,6 +526,12 @@ static void arm_lpae_restrict_pgsizes(struct io_pgtable_cfg *cfg) } } @@ -44460,7 +44544,7 @@ index b610a8d..08eb879 100644 static struct arm_lpae_io_pgtable * arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg) { -@@ -562,11 +561,7 @@ arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg) +@@ -564,11 +563,7 @@ arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg) pgd_bits = va_bits - (data->bits_per_level * (data->levels - 1)); data->pgd_size = 1UL << (pgd_bits + ilog2(sizeof(arm_lpae_iopte))); @@ -44473,7 +44557,7 @@ index b610a8d..08eb879 100644 return data; } -@@ -825,9 +820,9 @@ static struct iommu_gather_ops dummy_tlb_ops __initdata = { +@@ -830,9 +825,9 @@ static struct iommu_gather_ops dummy_tlb_ops __initdata = { .flush_pgtable = dummy_flush_pgtable, }; @@ -44485,7 +44569,7 @@ index b610a8d..08eb879 100644 struct io_pgtable_cfg *cfg = &data->iop.cfg; pr_err("cfg: pgsize_bitmap 0x%lx, ias %u-bit\n", -@@ -837,9 +832,9 @@ static void __init arm_lpae_dump_ops(struct io_pgtable_ops *ops) +@@ -842,9 +837,9 @@ static void __init arm_lpae_dump_ops(struct io_pgtable_ops *ops) data->bits_per_level, data->pgd); } @@ -44497,7 +44581,7 @@ index b610a8d..08eb879 100644 selftest_running = false; \ -EFAULT; \ }) -@@ -854,30 +849,32 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) +@@ -859,30 +854,32 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) int i, j; unsigned long iova; size_t size; @@ -44539,7 +44623,7 @@ index b610a8d..08eb879 100644 /* * Distinct mappings of different granule sizes. -@@ -887,19 +884,19 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) +@@ -892,19 +889,19 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) while (j != BITS_PER_LONG) { size = 1UL << j; @@ -44565,7 +44649,7 @@ index b610a8d..08eb879 100644 iova += SZ_1G; j++; -@@ -908,15 +905,15 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) +@@ -913,15 +910,15 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) /* Partial unmap */ size = 1UL << __ffs(cfg->pgsize_bitmap); @@ -44587,7 +44671,7 @@ index b610a8d..08eb879 100644 /* Full unmap */ iova = 0; -@@ -924,25 +921,25 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) +@@ -929,25 +926,25 @@ static int __init arm_lpae_run_tests(struct io_pgtable_cfg *cfg) while (j != BITS_PER_LONG) { size = 1UL << j; @@ -44719,7 +44803,7 @@ index 10e32f6..0b276c8 100644 /** diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c -index 72e683d..c9db262 100644 +index d4f527e..8e4a4fd 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -802,7 +802,7 @@ static int iommu_bus_notifier(struct notifier_block *nb, @@ -44732,11 +44816,11 @@ index 72e683d..c9db262 100644 .ops = ops, }; diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c -index bc39bdf..e2de272 100644 +index 1a67c53..23181d8 100644 --- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c @@ -41,7 +41,7 @@ struct ipmmu_vmsa_domain { - struct iommu_domain *io_domain; + struct iommu_domain io_domain; struct io_pgtable_cfg cfg; - struct io_pgtable_ops *iop; @@ -44744,7 +44828,7 @@ index bc39bdf..e2de272 100644 unsigned int context_id; spinlock_t lock; /* Protects mappings */ -@@ -323,8 +323,7 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain) +@@ -328,8 +328,7 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain) domain->cfg.oas = 40; domain->cfg.tlb = &ipmmu_gather_ops; @@ -44754,7 +44838,7 @@ index bc39bdf..e2de272 100644 if (!domain->iop) return -EINVAL; -@@ -482,7 +481,7 @@ static void ipmmu_domain_destroy(struct iommu_domain *io_domain) +@@ -487,7 +486,7 @@ static void ipmmu_domain_free(struct iommu_domain *io_domain) * been detached. */ ipmmu_domain_destroy_context(domain); @@ -44763,7 +44847,7 @@ index bc39bdf..e2de272 100644 kfree(domain); } -@@ -551,7 +550,7 @@ static int ipmmu_map(struct iommu_domain *io_domain, unsigned long iova, +@@ -556,7 +555,7 @@ static int ipmmu_map(struct iommu_domain *io_domain, unsigned long iova, if (!domain) return -ENODEV; @@ -44772,16 +44856,16 @@ index bc39bdf..e2de272 100644 } static size_t ipmmu_unmap(struct iommu_domain *io_domain, unsigned long iova, -@@ -559,7 +558,7 @@ static size_t ipmmu_unmap(struct iommu_domain *io_domain, unsigned long iova, +@@ -564,7 +563,7 @@ static size_t ipmmu_unmap(struct iommu_domain *io_domain, unsigned long iova, { - struct ipmmu_vmsa_domain *domain = io_domain->priv; + struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain); - return domain->iop->unmap(domain->iop, iova, size); + return domain->iop->ops->unmap(domain->iop, iova, size); } static phys_addr_t ipmmu_iova_to_phys(struct iommu_domain *io_domain, -@@ -569,7 +568,7 @@ static phys_addr_t ipmmu_iova_to_phys(struct iommu_domain *io_domain, +@@ -574,7 +573,7 @@ static phys_addr_t ipmmu_iova_to_phys(struct iommu_domain *io_domain, /* TODO: Is locking needed ? */ @@ -44821,19 +44905,10 @@ index 390079e..1da9d6c 100644 bool setup_remapped_irq(int irq, struct irq_cfg *cfg, struct irq_chip *chip) diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c -index 471e1cd..b53b870 100644 +index 01999d7..4f14bb7 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c -@@ -84,7 +84,7 @@ static u8 gic_cpu_map[NR_GIC_CPU_IF] __read_mostly; - * Supported arch specific GIC irq extension. - * Default make them NULL. - */ --struct irq_chip gic_arch_extn = { -+irq_chip_no_const gic_arch_extn = { - .irq_eoi = NULL, - .irq_mask = NULL, - .irq_unmask = NULL, -@@ -318,7 +318,7 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) +@@ -313,7 +313,7 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc) chained_irq_exit(chip, desc); } @@ -44856,10 +44931,10 @@ index 9a0767b..5e5f86f 100644 void (*disable_fn)(struct irq_data *d); const char *name = dev_name(dev); diff --git a/drivers/irqchip/irq-renesas-irqc.c b/drivers/irqchip/irq-renesas-irqc.c -index 384e6ed..7a771b2 100644 +index cdf80b7..e5c3ade 100644 --- a/drivers/irqchip/irq-renesas-irqc.c +++ b/drivers/irqchip/irq-renesas-irqc.c -@@ -151,7 +151,7 @@ static int irqc_probe(struct platform_device *pdev) +@@ -179,7 +179,7 @@ static int irqc_probe(struct platform_device *pdev) struct irqc_priv *p; struct resource *io; struct resource *irq; @@ -45233,7 +45308,7 @@ index 358a574..b4987ea 100644 } else memcpy(msg, buf, count); diff --git a/drivers/isdn/mISDN/dsp_cmx.c b/drivers/isdn/mISDN/dsp_cmx.c -index 87f7dff..7300125 100644 +index 52c4382..09e0c7c 100644 --- a/drivers/isdn/mISDN/dsp_cmx.c +++ b/drivers/isdn/mISDN/dsp_cmx.c @@ -1625,7 +1625,7 @@ unsigned long dsp_spl_jiffies; /* calculate the next time to fire */ @@ -45246,7 +45321,7 @@ index 87f7dff..7300125 100644 { struct dsp_conf *conf; diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c -index 7dc93aa..8272379 100644 +index 312ffd3..9263d05 100644 --- a/drivers/lguest/core.c +++ b/drivers/lguest/core.c @@ -96,9 +96,17 @@ static __init int map_switcher(void) @@ -45410,10 +45485,10 @@ index a08e3ee..df8ade2 100644 cl->fn = fn; cl->wq = wq; diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c -index 3a57679..c58cdaf 100644 +index 135a090..f7872f6 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c -@@ -1786,7 +1786,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) +@@ -1927,7 +1927,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) chunk_kb ? "KB" : "B"); if (bitmap->storage.file) { seq_printf(seq, ", file: "); @@ -45423,10 +45498,10 @@ index 3a57679..c58cdaf 100644 seq_printf(seq, "\n"); diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c -index c8a18e4..0ab43e5 100644 +index 720ceeb..030f1d4 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c -@@ -1772,7 +1772,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param) +@@ -1773,7 +1773,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param) cmd == DM_LIST_VERSIONS_CMD) return 0; @@ -45578,10 +45653,10 @@ index f8b37d4..5c5cafd 100644 schedule_work(&sc->trigger_event); } diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c -index 6554d91..b0221c2 100644 +index 16ba55a..31af906 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c -@@ -303,7 +303,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev, +@@ -305,7 +305,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev, if (!dev_size) return 0; @@ -45613,10 +45688,10 @@ index 79f6941..b33b4e0 100644 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 8001fe9..abdd0d0 100644 +index 2caf492..0c0dcac 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c -@@ -188,9 +188,9 @@ struct mapped_device { +@@ -191,9 +191,9 @@ struct mapped_device { /* * Event handling. */ @@ -45628,7 +45703,7 @@ index 8001fe9..abdd0d0 100644 struct list_head uevent_list; spinlock_t uevent_lock; /* Protect access to uevent_list */ -@@ -2163,8 +2163,8 @@ static struct mapped_device *alloc_dev(int minor) +@@ -2298,8 +2298,8 @@ static struct mapped_device *alloc_dev(int minor) spin_lock_init(&md->deferred_lock); atomic_set(&md->holders, 1); atomic_set(&md->open_count, 0); @@ -45639,7 +45714,7 @@ index 8001fe9..abdd0d0 100644 INIT_LIST_HEAD(&md->uevent_list); INIT_LIST_HEAD(&md->table_devices); spin_lock_init(&md->uevent_lock); -@@ -2329,7 +2329,7 @@ static void event_callback(void *context) +@@ -2466,7 +2466,7 @@ static void event_callback(void *context) dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj); @@ -45648,7 +45723,7 @@ index 8001fe9..abdd0d0 100644 wake_up(&md->eventq); } -@@ -3175,18 +3175,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action, +@@ -3465,18 +3465,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action, uint32_t dm_next_uevent_seq(struct mapped_device *md) { @@ -45671,10 +45746,10 @@ index 8001fe9..abdd0d0 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 e47d1dd..ebc3480 100644 +index 4dbed4a..bed2a6a 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c -@@ -191,10 +191,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev); +@@ -197,10 +197,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev); * start build, activate spare */ static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters); @@ -45687,7 +45762,7 @@ index e47d1dd..ebc3480 100644 wake_up(&md_event_waiters); } EXPORT_SYMBOL_GPL(md_new_event); -@@ -204,7 +204,7 @@ EXPORT_SYMBOL_GPL(md_new_event); +@@ -210,7 +210,7 @@ EXPORT_SYMBOL_GPL(md_new_event); */ static void md_new_event_inintr(struct mddev *mddev) { @@ -45696,7 +45771,7 @@ index e47d1dd..ebc3480 100644 wake_up(&md_event_waiters); } -@@ -1442,7 +1442,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ +@@ -1449,7 +1449,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ if ((le32_to_cpu(sb->feature_map) & MD_FEATURE_RESHAPE_ACTIVE) && (le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET)) rdev->new_data_offset += (s32)le32_to_cpu(sb->new_offset); @@ -45705,7 +45780,7 @@ index e47d1dd..ebc3480 100644 rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256; bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1; -@@ -1693,7 +1693,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev) +@@ -1700,7 +1700,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev) else sb->resync_offset = cpu_to_le64(0); @@ -45714,7 +45789,7 @@ index e47d1dd..ebc3480 100644 sb->raid_disks = cpu_to_le32(mddev->raid_disks); sb->size = cpu_to_le64(mddev->dev_sectors); -@@ -2564,7 +2564,7 @@ __ATTR_PREALLOC(state, S_IRUGO|S_IWUSR, state_show, state_store); +@@ -2624,7 +2624,7 @@ __ATTR_PREALLOC(state, S_IRUGO|S_IWUSR, state_show, state_store); static ssize_t errors_show(struct md_rdev *rdev, char *page) { @@ -45723,7 +45798,7 @@ index e47d1dd..ebc3480 100644 } static ssize_t -@@ -2573,7 +2573,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len) +@@ -2633,7 +2633,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')) { @@ -45732,7 +45807,7 @@ index e47d1dd..ebc3480 100644 return len; } return -EINVAL; -@@ -3009,8 +3009,8 @@ int md_rdev_init(struct md_rdev *rdev) +@@ -3069,8 +3069,8 @@ int md_rdev_init(struct md_rdev *rdev) rdev->sb_loaded = 0; rdev->bb_page = NULL; atomic_set(&rdev->nr_pending, 0); @@ -45743,7 +45818,7 @@ index e47d1dd..ebc3480 100644 INIT_LIST_HEAD(&rdev->same_set); init_waitqueue_head(&rdev->blocked_wait); -@@ -7083,7 +7083,7 @@ static int md_seq_show(struct seq_file *seq, void *v) +@@ -7232,7 +7232,7 @@ static int md_seq_show(struct seq_file *seq, void *v) spin_unlock(&pers_lock); seq_printf(seq, "\n"); @@ -45752,7 +45827,7 @@ index e47d1dd..ebc3480 100644 return 0; } if (v == (void*)2) { -@@ -7186,7 +7186,7 @@ static int md_seq_open(struct inode *inode, struct file *file) +@@ -7335,7 +7335,7 @@ static int md_seq_open(struct inode *inode, struct file *file) return error; seq = file->private_data; @@ -45761,7 +45836,7 @@ index e47d1dd..ebc3480 100644 return error; } -@@ -7203,7 +7203,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) +@@ -7352,7 +7352,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) /* always allow read */ mask = POLLIN | POLLRDNORM; @@ -45770,7 +45845,7 @@ index e47d1dd..ebc3480 100644 mask |= POLLERR | POLLPRI; return mask; } -@@ -7250,7 +7250,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) +@@ -7448,7 +7448,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]) - @@ -45780,10 +45855,10 @@ index e47d1dd..ebc3480 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 318ca8f..31e4478 100644 +index 4046a6c..e2f2997 100644 --- a/drivers/md/md.h +++ b/drivers/md/md.h -@@ -94,13 +94,13 @@ struct md_rdev { +@@ -95,13 +95,13 @@ struct md_rdev { * only maintained for arrays that * support hot removal */ @@ -45799,7 +45874,7 @@ index 318ca8f..31e4478 100644 * for reporting to userspace and storing * in superblock. */ -@@ -476,7 +476,7 @@ extern void mddev_unlock(struct mddev *mddev); +@@ -486,7 +486,7 @@ extern void mddev_unlock(struct mddev *mddev); static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors) { @@ -45842,33 +45917,11 @@ index 3e6d115..ffecdeb 100644 /*----------------------------------------------------------------*/ -diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c -index 3b5d7f7..903391c 100644 ---- a/drivers/md/raid0.c -+++ b/drivers/md/raid0.c -@@ -517,6 +517,9 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio) - ? (sector & (chunk_sects-1)) - : sector_div(sector, chunk_sects)); - -+ /* Restore due to sector_div */ -+ sector = bio->bi_iter.bi_sector; -+ - if (sectors < bio_sectors(bio)) { - split = bio_split(bio, sectors, GFP_NOIO, fs_bio_set); - bio_chain(split, bio); -@@ -524,7 +527,6 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio) - split = bio; - } - -- sector = bio->bi_iter.bi_sector; - zone = find_zone(mddev->private, §or); - tmp_dev = map_sector(mddev, zone, sector, §or); - split->bi_bdev = tmp_dev->bdev; diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c -index d34e238..34f8d98 100644 +index 9157a29..0d462f0 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c -@@ -1922,7 +1922,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) +@@ -1934,7 +1934,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) @@ -45877,7 +45930,7 @@ index d34e238..34f8d98 100644 } sectors -= s; sect += s; -@@ -2155,7 +2155,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk, +@@ -2167,7 +2167,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk, !test_bit(Faulty, &rdev->flags)) { if (r1_sync_page_io(rdev, sect, s, conf->tmppage, READ)) { @@ -45887,7 +45940,7 @@ index d34e238..34f8d98 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 a7196c4..439f012 100644 +index f55c3f3..4cca8c8 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -1934,7 +1934,7 @@ static void end_sync_read(struct bio *bio, int error) @@ -45950,10 +46003,10 @@ index a7196c4..439f012 100644 rdev_dec_pending(rdev, mddev); diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index cd2f96b..3876e63 100644 +index b6793d2..92be2bc 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c -@@ -947,23 +947,23 @@ async_copy_data(int frombio, struct bio *bio, struct page **page, +@@ -1108,23 +1108,23 @@ async_copy_data(int frombio, struct bio *bio, struct page **page, struct bio_vec bvl; struct bvec_iter iter; struct page *bio_page; @@ -45983,7 +46036,7 @@ index cd2f96b..3876e63 100644 if (page_offset < 0) { b_offset = -page_offset; -@@ -1727,6 +1727,10 @@ static int grow_one_stripe(struct r5conf *conf, int hash) +@@ -2017,6 +2017,10 @@ static int grow_one_stripe(struct r5conf *conf, gfp_t gfp) return 1; } @@ -45994,7 +46047,7 @@ index cd2f96b..3876e63 100644 static int grow_stripes(struct r5conf *conf, int num) { struct kmem_cache *sc; -@@ -1738,7 +1742,11 @@ static int grow_stripes(struct r5conf *conf, int num) +@@ -2027,7 +2031,11 @@ static int grow_stripes(struct r5conf *conf, int num) "raid%d-%s", conf->level, mdname(conf->mddev)); else sprintf(conf->cache_name[0], @@ -46006,7 +46059,7 @@ index cd2f96b..3876e63 100644 sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]); conf->active_name = 0; -@@ -2014,21 +2022,21 @@ static void raid5_end_read_request(struct bio * bi, int error) +@@ -2315,21 +2323,21 @@ static void raid5_end_read_request(struct bio * bi, int error) mdname(conf->mddev), STRIPE_SECTORS, (unsigned long long)s, bdevname(rdev->bdev, b)); @@ -46032,7 +46085,7 @@ index cd2f96b..3876e63 100644 if (test_bit(R5_ReadRepl, &sh->dev[i].flags)) printk_ratelimited( KERN_WARNING -@@ -2056,7 +2064,7 @@ static void raid5_end_read_request(struct bio * bi, int error) +@@ -2357,7 +2365,7 @@ static void raid5_end_read_request(struct bio * bi, int error) mdname(conf->mddev), (unsigned long long)s, bdn); @@ -46042,10 +46095,10 @@ index cd2f96b..3876e63 100644 printk(KERN_WARNING "md/raid:%s: Too many read errors, failing device %s.\n", diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c -index 983db75..ef9248c 100644 +index 13bb57f..0ca21b2 100644 --- a/drivers/media/dvb-core/dvbdev.c +++ b/drivers/media/dvb-core/dvbdev.c -@@ -185,7 +185,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, +@@ -272,7 +272,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, const struct dvb_device *template, void *priv, int type) { struct dvb_device *dvbdev; @@ -46067,7 +46120,7 @@ index 6ad22b6..6e90e2a 100644 #endif /* AF9033_H */ diff --git a/drivers/media/dvb-frontends/dib3000.h b/drivers/media/dvb-frontends/dib3000.h -index 9b6c3bb..baeb5c7 100644 +index 6ae9899..07d8543 100644 --- a/drivers/media/dvb-frontends/dib3000.h +++ b/drivers/media/dvb-frontends/dib3000.h @@ -39,7 +39,7 @@ struct dib_fe_xfer_ops @@ -46077,10 +46130,10 @@ index 9b6c3bb..baeb5c7 100644 -}; +} __no_const; - #if IS_ENABLED(CONFIG_DVB_DIB3000MB) + #if IS_REACHABLE(CONFIG_DVB_DIB3000MB) extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config, diff --git a/drivers/media/dvb-frontends/dib7000p.h b/drivers/media/dvb-frontends/dib7000p.h -index 1fea0e9..321ce8f 100644 +index baa2789..c8de7fe 100644 --- a/drivers/media/dvb-frontends/dib7000p.h +++ b/drivers/media/dvb-frontends/dib7000p.h @@ -64,7 +64,7 @@ struct dib7000p_ops { @@ -46090,10 +46143,10 @@ index 1fea0e9..321ce8f 100644 -}; +} __no_const; - #if IS_ENABLED(CONFIG_DVB_DIB7000P) + #if IS_REACHABLE(CONFIG_DVB_DIB7000P) void *dib7000p_attach(struct dib7000p_ops *ops); diff --git a/drivers/media/dvb-frontends/dib8000.h b/drivers/media/dvb-frontends/dib8000.h -index 84cc103..5780c54 100644 +index 780c37b..50e2620 100644 --- a/drivers/media/dvb-frontends/dib8000.h +++ b/drivers/media/dvb-frontends/dib8000.h @@ -61,7 +61,7 @@ struct dib8000_ops { @@ -46103,10 +46156,10 @@ index 84cc103..5780c54 100644 -}; +} __no_const; - #if IS_ENABLED(CONFIG_DVB_DIB8000) + #if IS_REACHABLE(CONFIG_DVB_DIB8000) void *dib8000_attach(struct dib8000_ops *ops); diff --git a/drivers/media/pci/cx88/cx88-video.c b/drivers/media/pci/cx88/cx88-video.c -index 860c98fc..497fa25 100644 +index c9decd8..7849cec 100644 --- a/drivers/media/pci/cx88/cx88-video.c +++ b/drivers/media/pci/cx88/cx88-video.c @@ -50,9 +50,9 @@ MODULE_VERSION(CX88_VERSION); @@ -46123,7 +46176,7 @@ index 860c98fc..497fa25 100644 module_param_array(video_nr, int, NULL, 0444); module_param_array(vbi_nr, int, NULL, 0444); diff --git a/drivers/media/pci/ivtv/ivtv-driver.c b/drivers/media/pci/ivtv/ivtv-driver.c -index 802642d..5534900 100644 +index c2e60b4..5eeccc0 100644 --- a/drivers/media/pci/ivtv/ivtv-driver.c +++ b/drivers/media/pci/ivtv/ivtv-driver.c @@ -83,7 +83,7 @@ static struct pci_device_id ivtv_pci_tbl[] = { @@ -46201,7 +46254,7 @@ index c135165..dc69499 100644 /* ------------------------------------------------------------------ */ diff --git a/drivers/media/platform/omap/omap_vout.c b/drivers/media/platform/omap/omap_vout.c -index ba2d8f9..1566684 100644 +index 17b189a..b78aa6b 100644 --- a/drivers/media/platform/omap/omap_vout.c +++ b/drivers/media/platform/omap/omap_vout.c @@ -63,7 +63,6 @@ enum omap_vout_channels { @@ -46276,7 +46329,7 @@ index b713403..53cb5ad 100644 if (done && done != layer->shadow_buf) vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE); diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c -index 72d4f2e..4b2ea0d 100644 +index 751f3b6..d829203 100644 --- a/drivers/media/platform/s5p-tv/mixer_video.c +++ b/drivers/media/platform/s5p-tv/mixer_video.c @@ -210,7 +210,7 @@ static void mxr_layer_default_geo(struct mxr_layer *layer) @@ -46978,19 +47031,6 @@ index 733a7ff..f8b52e3 100644 return ret; } EXPORT_SYMBOL(usb_cypress_load_firmware); -diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c -index 1a3df10..57997a5 100644 ---- a/drivers/media/usb/dvb-usb/dw2102.c -+++ b/drivers/media/usb/dvb-usb/dw2102.c -@@ -118,7 +118,7 @@ struct su3000_state { - - struct s6x0_state { - int (*old_set_voltage)(struct dvb_frontend *f, fe_sec_voltage_t v); --}; -+} __no_const; - - /* debug */ - static int dvb_usb_dw2102_debug; diff --git a/drivers/media/usb/dvb-usb/technisat-usb2.c b/drivers/media/usb/dvb-usb/technisat-usb2.c index 5801ae7..83f71fa 100644 --- a/drivers/media/usb/dvb-usb/technisat-usb2.c @@ -47256,10 +47296,10 @@ index af63543..0436f20 100644 } diff --git a/drivers/media/v4l2-core/v4l2-device.c b/drivers/media/v4l2-core/v4l2-device.c -index 015f92a..59e311e 100644 +index 5b0a30b..1974b38 100644 --- a/drivers/media/v4l2-core/v4l2-device.c +++ b/drivers/media/v4l2-core/v4l2-device.c -@@ -75,9 +75,9 @@ int v4l2_device_put(struct v4l2_device *v4l2_dev) +@@ -74,9 +74,9 @@ int v4l2_device_put(struct v4l2_device *v4l2_dev) EXPORT_SYMBOL_GPL(v4l2_device_put); int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename, @@ -47272,7 +47312,7 @@ index 015f92a..59e311e 100644 if (basename[len - 1] >= '0' && basename[len - 1] <= '9') diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index b084072..36706d7 100644 +index aa407cb..ee847d4 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -2151,7 +2151,8 @@ struct v4l2_ioctl_info { @@ -47331,10 +47371,10 @@ index b084072..36706d7 100644 err = -EFAULT; goto out_array_args; diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c -index 24696f5..3637780 100644 +index c94ea0d..b8a9f88 100644 --- a/drivers/memory/omap-gpmc.c +++ b/drivers/memory/omap-gpmc.c -@@ -211,7 +211,6 @@ struct omap3_gpmc_regs { +@@ -232,7 +232,6 @@ struct omap3_gpmc_regs { }; static struct gpmc_client_irq gpmc_client_irq[GPMC_NR_IRQ]; @@ -47342,7 +47382,7 @@ index 24696f5..3637780 100644 static int gpmc_irq_start; static struct resource gpmc_mem_root; -@@ -939,6 +938,17 @@ static void gpmc_irq_noop(struct irq_data *data) { } +@@ -1146,6 +1145,17 @@ static void gpmc_irq_noop(struct irq_data *data) { } static unsigned int gpmc_irq_noop_ret(struct irq_data *data) { return 0; } @@ -47360,7 +47400,7 @@ index 24696f5..3637780 100644 static int gpmc_setup_irq(void) { int i; -@@ -953,15 +963,6 @@ static int gpmc_setup_irq(void) +@@ -1160,15 +1170,6 @@ static int gpmc_setup_irq(void) return gpmc_irq_start; } @@ -47459,7 +47499,7 @@ index 5bdaae1..eced16f 100644 mptsas_get_port(struct mptsas_phyinfo *phy_info) { diff --git a/drivers/mfd/ab8500-debugfs.c b/drivers/mfd/ab8500-debugfs.c -index 9a8e185..27ff17d 100644 +index cdd6f3d..1907a98 100644 --- a/drivers/mfd/ab8500-debugfs.c +++ b/drivers/mfd/ab8500-debugfs.c @@ -100,7 +100,7 @@ static int irq_last; @@ -47472,7 +47512,7 @@ index 9a8e185..27ff17d 100644 static u8 avg_sample = SAMPLE_16; diff --git a/drivers/mfd/kempld-core.c b/drivers/mfd/kempld-core.c -index 5615522..1eb6f3dc 100644 +index 8057849..0550fdf 100644 --- a/drivers/mfd/kempld-core.c +++ b/drivers/mfd/kempld-core.c @@ -499,7 +499,7 @@ static struct platform_driver kempld_driver = { @@ -47591,7 +47631,7 @@ index 36f5d52..32311c3 100644 if (memcmp(before, after, BREAK_INSTR_SIZE)) { printk(KERN_CRIT "kgdbts: ERROR kgdb corrupted memory\n"); diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c -index 3ef4627..8d00486 100644 +index 4739689..8a52950 100644 --- a/drivers/misc/lis3lv02d/lis3lv02d.c +++ b/drivers/misc/lis3lv02d/lis3lv02d.c @@ -497,7 +497,7 @@ static irqreturn_t lis302dl_interrupt(int irq, void *data) @@ -47925,7 +47965,7 @@ index b94d5f7..7f494c5 100644 extern int xpc_disengage_timedout; extern int xpc_activate_IRQ_rcvd; diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c -index 82dc574..8539ab2 100644 +index 7f32712..8539ab2 100644 --- a/drivers/misc/sgi-xp/xpc_main.c +++ b/drivers/misc/sgi-xp/xpc_main.c @@ -166,7 +166,7 @@ static struct notifier_block xpc_die_notifier = { @@ -47937,17 +47977,8 @@ index 82dc574..8539ab2 100644 /* * Timer function to enforce the timelimit on the partition disengage. -@@ -1210,7 +1210,7 @@ xpc_system_die(struct notifier_block *nb, unsigned long event, void *_die_args) - - if (((die_args->trapnr == X86_TRAP_MF) || - (die_args->trapnr == X86_TRAP_XF)) && -- !user_mode_vm(die_args->regs)) -+ !user_mode(die_args->regs)) - xpc_die_deactivate(); - - break; diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c -index ed2e71a..54c498e 100644 +index 60f7141..ba97c1a 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -577,7 +577,7 @@ static int mmc_blk_ioctl_cmd(struct block_device *bdev, @@ -47960,21 +47991,21 @@ index ed2e71a..54c498e 100644 goto cmd_rel_host; } diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h -index 18c4afe..43be71e 100644 +index f45ab91..9f50d8f 100644 --- a/drivers/mmc/host/dw_mmc.h +++ b/drivers/mmc/host/dw_mmc.h -@@ -271,5 +271,5 @@ struct dw_mci_drv_data { - void (*set_ios)(struct dw_mci *host, struct mmc_ios *ios); - int (*parse_dt)(struct dw_mci *host); +@@ -287,5 +287,5 @@ struct dw_mci_drv_data { int (*execute_tuning)(struct dw_mci_slot *slot); + int (*prepare_hs400_tuning)(struct dw_mci *host, + struct mmc_ios *ios); -}; +} __do_const; #endif /* _DW_MMC_H_ */ diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 7fe1619..ae0781b 100644 +index fb26674..3172c2b 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c -@@ -1630,7 +1630,9 @@ static int mmci_probe(struct amba_device *dev, +@@ -1633,7 +1633,9 @@ static int mmci_probe(struct amba_device *dev, mmc->caps |= MMC_CAP_CMD23; if (variant->busy_detect) { @@ -47986,10 +48017,10 @@ index 7fe1619..ae0781b 100644 mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY; mmc->max_busy_timeout = 0; diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c -index f84cfb0..aebe5d6 100644 +index 9df2b68..6d5ed1a 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c -@@ -2054,7 +2054,9 @@ static int omap_hsmmc_probe(struct platform_device *pdev) +@@ -2004,7 +2004,9 @@ static int omap_hsmmc_probe(struct platform_device *pdev) if (host->pdata->controller_flags & OMAP_HSMMC_BROKEN_MULTIBLOCK_READ) { dev_info(&pdev->dev, "multiblock reads disabled due to 35xx erratum 2.1.1.128; MMC read performance may suffer\n"); @@ -48001,10 +48032,10 @@ index f84cfb0..aebe5d6 100644 pm_runtime_enable(host->dev); diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c -index 10ef824..88461a2 100644 +index 82f512d..5a228bb 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c -@@ -989,9 +989,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) +@@ -993,9 +993,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) host->mmc->caps |= MMC_CAP_1_8V_DDR; } @@ -48039,7 +48070,7 @@ index c6d2dd7..81b1ca3 100644 /* It supports additional host capabilities if needed */ diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c -index 423666b..81ff5eb 100644 +index 9a1a6ff..b8f1a57 100644 --- a/drivers/mtd/chips/cfi_cmdset_0020.c +++ b/drivers/mtd/chips/cfi_cmdset_0020.c @@ -666,7 +666,7 @@ cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs, @@ -48052,7 +48083,7 @@ index 423666b..81ff5eb 100644 if (!ECCBUF_SIZE) { /* We should fall back to a general writev implementation. diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c -index f44c606..aa4e804 100644 +index 870c7fc..c7d6440 100644 --- a/drivers/mtd/nand/denali.c +++ b/drivers/mtd/nand/denali.c @@ -24,6 +24,7 @@ @@ -48064,7 +48095,7 @@ index f44c606..aa4e804 100644 #include "denali.h" diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c -index 33f3c3c..d6bbe6a 100644 +index 1b8f350..990f2e9 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c @@ -386,7 +386,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr) @@ -48128,7 +48159,7 @@ index b3b922a..80bba38 100644 .priv_size = sizeof(struct cfhsi), .setup = cfhsi_setup, diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig -index 58808f65..0bdc7b3 100644 +index e8c96b8..516a96c 100644 --- a/drivers/net/can/Kconfig +++ b/drivers/net/can/Kconfig @@ -98,7 +98,7 @@ config CAN_JANZ_ICAN3 @@ -48141,10 +48172,10 @@ index 58808f65..0bdc7b3 100644 Say Y here if you want to support for Freescale FlexCAN. diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c -index b0f6924..59e9640 100644 +index e9b1810..5c2f3f9 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c -@@ -959,7 +959,7 @@ static int can_newlink(struct net *src_net, struct net_device *dev, +@@ -964,7 +964,7 @@ static int can_newlink(struct net *src_net, struct net_device *dev, return -EOPNOTSUPP; } @@ -48154,10 +48185,10 @@ index b0f6924..59e9640 100644 .maxtype = IFLA_CAN_MAX, .policy = can_policy, diff --git a/drivers/net/can/vcan.c b/drivers/net/can/vcan.c -index 674f367..ec3a31f 100644 +index 0ce868d..e5dc8bd 100644 --- a/drivers/net/can/vcan.c +++ b/drivers/net/can/vcan.c -@@ -163,7 +163,7 @@ static void vcan_setup(struct net_device *dev) +@@ -166,7 +166,7 @@ static void vcan_setup(struct net_device *dev) dev->destructor = free_netdev; } @@ -48197,10 +48228,10 @@ index 0443654..4f0aa18 100644 if (!request_mem_region(mem->start, mem_size, pdev->name)) { diff --git a/drivers/net/ethernet/altera/altera_tse_main.c b/drivers/net/ethernet/altera/altera_tse_main.c -index 6725dc0..163549c 100644 +index da48e66..2dbec80 100644 --- a/drivers/net/ethernet/altera/altera_tse_main.c +++ b/drivers/net/ethernet/altera/altera_tse_main.c -@@ -1216,7 +1216,7 @@ static int tse_shutdown(struct net_device *dev) +@@ -1256,7 +1256,7 @@ static int tse_shutdown(struct net_device *dev) return 0; } @@ -48209,7 +48240,7 @@ index 6725dc0..163549c 100644 .ndo_open = tse_open, .ndo_stop = tse_shutdown, .ndo_start_xmit = tse_start_xmit, -@@ -1453,11 +1453,13 @@ static int altera_tse_probe(struct platform_device *pdev) +@@ -1493,11 +1493,13 @@ static int altera_tse_probe(struct platform_device *pdev) ndev->netdev_ops = &altera_tse_netdev_ops; altera_tse_set_ethtool_ops(ndev); @@ -48224,10 +48255,10 @@ index 6725dc0..163549c 100644 /* Scatter/gather IO is not supported, * so it is turned off diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h -index 29a0927..5a348e24 100644 +index 34c28aa..5e06567 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h -@@ -1122,14 +1122,14 @@ do { \ +@@ -1124,14 +1124,14 @@ do { \ * operations, everything works on mask values. */ #define XMDIO_READ(_pdata, _mmd, _reg) \ @@ -48267,7 +48298,7 @@ index 8a50b01..39c1ad0 100644 return 0; } diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c -index d81fc6b..6f8ab25 100644 +index 5c92fb7..08be735 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c @@ -347,7 +347,7 @@ static int xgbe_map_rx_buffer(struct xgbe_prv_data *pdata, @@ -48306,7 +48337,7 @@ index d81fc6b..6f8ab25 100644 - - DBGPR("<--xgbe_init_function_ptrs_desc\n"); -} -+const struct xgbe_desc_if default_xgbe_desc_if = { ++struct xgbe_desc_if default_xgbe_desc_if = { + .alloc_ring_resources = xgbe_alloc_ring_resources, + .free_ring_resources = xgbe_free_ring_resources, + .map_tx_skb = xgbe_map_tx_skb, @@ -48316,10 +48347,10 @@ index d81fc6b..6f8ab25 100644 + .wrapper_rx_desc_init = xgbe_wrapper_rx_descriptor_init, +}; diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c -index 400757b..d8c53f6 100644 +index 21d9497..c74b40f 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c -@@ -2748,7 +2748,7 @@ static void xgbe_powerdown_rx(struct xgbe_prv_data *pdata) +@@ -2772,7 +2772,7 @@ static void xgbe_powerdown_rx(struct xgbe_prv_data *pdata) static int xgbe_init(struct xgbe_prv_data *pdata) { @@ -48328,7 +48359,7 @@ index 400757b..d8c53f6 100644 int ret; DBGPR("-->xgbe_init\n"); -@@ -2813,108 +2813,103 @@ static int xgbe_init(struct xgbe_prv_data *pdata) +@@ -2838,106 +2838,101 @@ static int xgbe_init(struct xgbe_prv_data *pdata) return 0; } @@ -48338,10 +48369,8 @@ index 400757b..d8c53f6 100644 - - hw_if->tx_complete = xgbe_tx_complete; - -- hw_if->set_promiscuous_mode = xgbe_set_promiscuous_mode; -- hw_if->set_all_multicast_mode = xgbe_set_all_multicast_mode; -- hw_if->add_mac_addresses = xgbe_add_mac_addresses; - hw_if->set_mac_address = xgbe_set_mac_address; +- hw_if->config_rx_mode = xgbe_config_rx_mode; - - hw_if->enable_rx_csum = xgbe_enable_rx_csum; - hw_if->disable_rx_csum = xgbe_disable_rx_csum; @@ -48375,13 +48404,11 @@ index 400757b..d8c53f6 100644 - hw_if->disable_int = xgbe_disable_int; - hw_if->init = xgbe_init; - hw_if->exit = xgbe_exit; -+const struct xgbe_hw_if default_xgbe_hw_if = { ++struct xgbe_hw_if default_xgbe_hw_if = { + .tx_complete = xgbe_tx_complete, + -+ .set_promiscuous_mode = xgbe_set_promiscuous_mode, -+ .set_all_multicast_mode = xgbe_set_all_multicast_mode, -+ .add_mac_addresses = xgbe_add_mac_addresses, + .set_mac_address = xgbe_set_mac_address, ++ .config_rx_mode = xgbe_config_rx_mode, + + .enable_rx_csum = xgbe_enable_rx_csum, + .disable_rx_csum = xgbe_disable_rx_csum, @@ -48516,10 +48543,10 @@ index 400757b..d8c53f6 100644 + .set_rss_lookup_table = xgbe_set_rss_lookup_table, +}; diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c -index 885b02b..4b31a4c 100644 +index 9fd6c69..588ff02 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c -@@ -244,7 +244,7 @@ static int xgbe_maybe_stop_tx_queue(struct xgbe_channel *channel, +@@ -243,7 +243,7 @@ static int xgbe_maybe_stop_tx_queue(struct xgbe_channel *channel, * support, tell it now */ if (ring->tx.xmit_more) @@ -48528,7 +48555,7 @@ index 885b02b..4b31a4c 100644 return NETDEV_TX_BUSY; } -@@ -272,7 +272,7 @@ static int xgbe_calc_rx_buf_size(struct net_device *netdev, unsigned int mtu) +@@ -271,7 +271,7 @@ static int xgbe_calc_rx_buf_size(struct net_device *netdev, unsigned int mtu) static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata) { @@ -48537,7 +48564,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_channel *channel; enum xgbe_int int_id; unsigned int i; -@@ -294,7 +294,7 @@ static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata) +@@ -293,7 +293,7 @@ static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata) static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata) { @@ -48546,7 +48573,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_channel *channel; enum xgbe_int int_id; unsigned int i; -@@ -317,7 +317,7 @@ static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata) +@@ -316,7 +316,7 @@ static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata) static irqreturn_t xgbe_isr(int irq, void *data) { struct xgbe_prv_data *pdata = data; @@ -48555,7 +48582,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_channel *channel; unsigned int dma_isr, dma_ch_isr; unsigned int mac_isr, mac_tssr; -@@ -673,7 +673,7 @@ static void xgbe_free_irqs(struct xgbe_prv_data *pdata) +@@ -682,7 +682,7 @@ static void xgbe_free_irqs(struct xgbe_prv_data *pdata) void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata) { @@ -48564,7 +48591,7 @@ index 885b02b..4b31a4c 100644 DBGPR("-->xgbe_init_tx_coalesce\n"); -@@ -687,7 +687,7 @@ void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata) +@@ -696,7 +696,7 @@ void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata) void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata) { @@ -48573,7 +48600,7 @@ index 885b02b..4b31a4c 100644 DBGPR("-->xgbe_init_rx_coalesce\n"); -@@ -701,7 +701,7 @@ void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata) +@@ -711,7 +711,7 @@ void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata) static void xgbe_free_tx_data(struct xgbe_prv_data *pdata) { @@ -48582,7 +48609,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_channel *channel; struct xgbe_ring *ring; struct xgbe_ring_data *rdata; -@@ -726,7 +726,7 @@ static void xgbe_free_tx_data(struct xgbe_prv_data *pdata) +@@ -736,7 +736,7 @@ static void xgbe_free_tx_data(struct xgbe_prv_data *pdata) static void xgbe_free_rx_data(struct xgbe_prv_data *pdata) { @@ -48591,7 +48618,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_channel *channel; struct xgbe_ring *ring; struct xgbe_ring_data *rdata; -@@ -752,7 +752,7 @@ static void xgbe_free_rx_data(struct xgbe_prv_data *pdata) +@@ -762,7 +762,7 @@ static void xgbe_free_rx_data(struct xgbe_prv_data *pdata) static void xgbe_adjust_link(struct net_device *netdev) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48600,7 +48627,7 @@ index 885b02b..4b31a4c 100644 struct phy_device *phydev = pdata->phydev; int new_state = 0; -@@ -860,7 +860,7 @@ static void xgbe_phy_exit(struct xgbe_prv_data *pdata) +@@ -870,7 +870,7 @@ static void xgbe_phy_exit(struct xgbe_prv_data *pdata) int xgbe_powerdown(struct net_device *netdev, unsigned int caller) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48609,7 +48636,7 @@ index 885b02b..4b31a4c 100644 unsigned long flags; DBGPR("-->xgbe_powerdown\n"); -@@ -898,7 +898,7 @@ int xgbe_powerdown(struct net_device *netdev, unsigned int caller) +@@ -908,7 +908,7 @@ int xgbe_powerdown(struct net_device *netdev, unsigned int caller) int xgbe_powerup(struct net_device *netdev, unsigned int caller) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48618,7 +48645,7 @@ index 885b02b..4b31a4c 100644 unsigned long flags; DBGPR("-->xgbe_powerup\n"); -@@ -935,7 +935,7 @@ int xgbe_powerup(struct net_device *netdev, unsigned int caller) +@@ -945,7 +945,7 @@ int xgbe_powerup(struct net_device *netdev, unsigned int caller) static int xgbe_start(struct xgbe_prv_data *pdata) { @@ -48627,7 +48654,7 @@ index 885b02b..4b31a4c 100644 struct net_device *netdev = pdata->netdev; int ret; -@@ -976,7 +976,7 @@ err_napi: +@@ -984,7 +984,7 @@ err_napi: static void xgbe_stop(struct xgbe_prv_data *pdata) { @@ -48636,7 +48663,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_channel *channel; struct net_device *netdev = pdata->netdev; struct netdev_queue *txq; -@@ -1203,7 +1203,7 @@ static int xgbe_set_hwtstamp_settings(struct xgbe_prv_data *pdata, +@@ -1211,7 +1211,7 @@ static int xgbe_set_hwtstamp_settings(struct xgbe_prv_data *pdata, return -ERANGE; } @@ -48645,7 +48672,7 @@ index 885b02b..4b31a4c 100644 memcpy(&pdata->tstamp_config, &config, sizeof(config)); -@@ -1352,7 +1352,7 @@ static void xgbe_packet_info(struct xgbe_prv_data *pdata, +@@ -1360,7 +1360,7 @@ static void xgbe_packet_info(struct xgbe_prv_data *pdata, static int xgbe_open(struct net_device *netdev) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48654,7 +48681,7 @@ index 885b02b..4b31a4c 100644 int ret; DBGPR("-->xgbe_open\n"); -@@ -1424,7 +1424,7 @@ err_phy_init: +@@ -1432,7 +1432,7 @@ err_phy_init: static int xgbe_close(struct net_device *netdev) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48663,7 +48690,7 @@ index 885b02b..4b31a4c 100644 DBGPR("-->xgbe_close\n"); -@@ -1452,8 +1452,8 @@ static int xgbe_close(struct net_device *netdev) +@@ -1460,8 +1460,8 @@ static int xgbe_close(struct net_device *netdev) static int xgbe_xmit(struct sk_buff *skb, struct net_device *netdev) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48674,16 +48701,16 @@ index 885b02b..4b31a4c 100644 struct xgbe_channel *channel; struct xgbe_ring *ring; struct xgbe_packet_data *packet; -@@ -1521,7 +1521,7 @@ tx_netdev_return: +@@ -1529,7 +1529,7 @@ tx_netdev_return: static void xgbe_set_rx_mode(struct net_device *netdev) { struct xgbe_prv_data *pdata = netdev_priv(netdev); - struct xgbe_hw_if *hw_if = &pdata->hw_if; + struct xgbe_hw_if *hw_if = pdata->hw_if; - unsigned int pr_mode, am_mode; DBGPR("-->xgbe_set_rx_mode\n"); -@@ -1540,7 +1540,7 @@ static void xgbe_set_rx_mode(struct net_device *netdev) + +@@ -1541,7 +1541,7 @@ static void xgbe_set_rx_mode(struct net_device *netdev) static int xgbe_set_mac_address(struct net_device *netdev, void *addr) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48692,7 +48719,7 @@ index 885b02b..4b31a4c 100644 struct sockaddr *saddr = addr; DBGPR("-->xgbe_set_mac_address\n"); -@@ -1607,7 +1607,7 @@ static struct rtnl_link_stats64 *xgbe_get_stats64(struct net_device *netdev, +@@ -1616,7 +1616,7 @@ static struct rtnl_link_stats64 *xgbe_get_stats64(struct net_device *netdev, DBGPR("-->%s\n", __func__); @@ -48701,7 +48728,7 @@ index 885b02b..4b31a4c 100644 s->rx_packets = pstats->rxframecount_gb; s->rx_bytes = pstats->rxoctetcount_gb; -@@ -1634,7 +1634,7 @@ static int xgbe_vlan_rx_add_vid(struct net_device *netdev, __be16 proto, +@@ -1643,7 +1643,7 @@ static int xgbe_vlan_rx_add_vid(struct net_device *netdev, __be16 proto, u16 vid) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48710,7 +48737,7 @@ index 885b02b..4b31a4c 100644 DBGPR("-->%s\n", __func__); -@@ -1650,7 +1650,7 @@ static int xgbe_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto, +@@ -1659,7 +1659,7 @@ static int xgbe_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto, u16 vid) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48719,7 +48746,7 @@ index 885b02b..4b31a4c 100644 DBGPR("-->%s\n", __func__); -@@ -1716,7 +1716,7 @@ static int xgbe_set_features(struct net_device *netdev, +@@ -1725,7 +1725,7 @@ static int xgbe_set_features(struct net_device *netdev, netdev_features_t features) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48728,7 +48755,7 @@ index 885b02b..4b31a4c 100644 netdev_features_t rxhash, rxcsum, rxvlan, rxvlan_filter; int ret = 0; -@@ -1781,8 +1781,8 @@ struct net_device_ops *xgbe_get_netdev_ops(void) +@@ -1791,8 +1791,8 @@ struct net_device_ops *xgbe_get_netdev_ops(void) static void xgbe_rx_refresh(struct xgbe_channel *channel) { struct xgbe_prv_data *pdata = channel->pdata; @@ -48739,7 +48766,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_ring *ring = channel->rx_ring; struct xgbe_ring_data *rdata; -@@ -1835,8 +1835,8 @@ static struct sk_buff *xgbe_create_skb(struct xgbe_prv_data *pdata, +@@ -1847,8 +1847,8 @@ static struct sk_buff *xgbe_create_skb(struct napi_struct *napi, static int xgbe_tx_poll(struct xgbe_channel *channel) { struct xgbe_prv_data *pdata = channel->pdata; @@ -48750,7 +48777,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_ring *ring = channel->tx_ring; struct xgbe_ring_data *rdata; struct xgbe_ring_desc *rdesc; -@@ -1901,7 +1901,7 @@ static int xgbe_tx_poll(struct xgbe_channel *channel) +@@ -1913,7 +1913,7 @@ static int xgbe_tx_poll(struct xgbe_channel *channel) static int xgbe_rx_poll(struct xgbe_channel *channel, int budget) { struct xgbe_prv_data *pdata = channel->pdata; @@ -48760,7 +48787,7 @@ index 885b02b..4b31a4c 100644 struct xgbe_ring_data *rdata; struct xgbe_packet_data *packet; diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c -index ebf4893..a8f51c6 100644 +index 5f149e8..6736bf4 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c @@ -203,7 +203,7 @@ static void xgbe_get_ethtool_stats(struct net_device *netdev, @@ -48772,25 +48799,16 @@ index ebf4893..a8f51c6 100644 for (i = 0; i < XGBE_STATS_COUNT; i++) { stat = (u8 *)pdata + xgbe_gstring_stats[i].stat_offset; *data++ = *(u64 *)stat; -@@ -378,7 +378,7 @@ static int xgbe_get_coalesce(struct net_device *netdev, - struct ethtool_coalesce *ec) - { - struct xgbe_prv_data *pdata = netdev_priv(netdev); -- struct xgbe_hw_if *hw_if = &pdata->hw_if; -+ struct xgbe_hw_if *hw_if = pdata->hw_if; - unsigned int riwt; - - DBGPR("-->xgbe_get_coalesce\n"); -@@ -401,7 +401,7 @@ static int xgbe_set_coalesce(struct net_device *netdev, +@@ -396,7 +396,7 @@ static int xgbe_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec) { struct xgbe_prv_data *pdata = netdev_priv(netdev); - struct xgbe_hw_if *hw_if = &pdata->hw_if; + struct xgbe_hw_if *hw_if = pdata->hw_if; unsigned int rx_frames, rx_riwt, rx_usecs; - unsigned int tx_frames, tx_usecs; + unsigned int tx_frames; -@@ -536,7 +536,7 @@ static int xgbe_set_rxfh(struct net_device *netdev, const u32 *indir, +@@ -521,7 +521,7 @@ static int xgbe_set_rxfh(struct net_device *netdev, const u32 *indir, const u8 *key, const u8 hfunc) { struct xgbe_prv_data *pdata = netdev_priv(netdev); @@ -48800,7 +48818,7 @@ index ebf4893..a8f51c6 100644 if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-main.c b/drivers/net/ethernet/amd/xgbe/xgbe-main.c -index 32dd651..225cca3 100644 +index 7149053..889c5492 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-main.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-main.c @@ -159,12 +159,6 @@ static void xgbe_default_config(struct xgbe_prv_data *pdata) @@ -48816,7 +48834,7 @@ index 32dd651..225cca3 100644 #ifdef CONFIG_ACPI static int xgbe_acpi_support(struct xgbe_prv_data *pdata) { -@@ -396,9 +390,8 @@ static int xgbe_probe(struct platform_device *pdev) +@@ -387,9 +381,8 @@ static int xgbe_probe(struct platform_device *pdev) memcpy(netdev->dev_addr, pdata->mac_addr, netdev->addr_len); /* Set all the function pointers */ @@ -48851,7 +48869,7 @@ index 59e267f..0842a88 100644 DBGPR_MDIO("-->xgbe_mdio_write: prtad=%#x mmd_reg=%#x mmd_data=%#x\n", diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c b/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c -index f326178..8bd7daf 100644 +index b03e4f5..78e4cc4 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c @@ -129,7 +129,7 @@ static cycle_t xgbe_cc_read(const struct cyclecounter *cc) @@ -48873,10 +48891,10 @@ index f326178..8bd7daf 100644 spin_unlock_irqrestore(&pdata->tstamp_lock, flags); diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h -index 13e8f95..1d8beef 100644 +index e62dfa2..7df28d5 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h -@@ -675,8 +675,8 @@ struct xgbe_prv_data { +@@ -673,8 +673,8 @@ struct xgbe_prv_data { int dev_irq; unsigned int per_channel_irq; @@ -48887,18 +48905,31 @@ index 13e8f95..1d8beef 100644 /* AXI DMA settings */ unsigned int coherent; -@@ -798,6 +798,9 @@ struct xgbe_prv_data { +@@ -797,6 +797,9 @@ struct xgbe_prv_data { #endif }; -+extern const struct xgbe_hw_if default_xgbe_hw_if; -+extern const struct xgbe_desc_if default_xgbe_desc_if; ++extern struct xgbe_hw_if default_xgbe_hw_if; ++extern struct xgbe_desc_if default_xgbe_desc_if; + /* Function prototypes*/ void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *); +diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c +index 783543a..a472348 100644 +--- a/drivers/net/ethernet/broadcom/bcmsysport.c ++++ b/drivers/net/ethernet/broadcom/bcmsysport.c +@@ -1721,7 +1721,7 @@ static int bcm_sysport_probe(struct platform_device *pdev) + macaddr = of_get_mac_address(dn); + if (!macaddr || !is_valid_ether_addr(macaddr)) { + dev_warn(&pdev->dev, "using random Ethernet MAC\n"); +- random_ether_addr(dev->dev_addr); ++ eth_hw_addr_random(dev); + } else { + ether_addr_copy(dev->dev_addr, macaddr); + } diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h -index adcacda..fa6e0ae 100644 +index d7a7175..7011194 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h @@ -1065,7 +1065,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp) @@ -48962,10 +48993,10 @@ index 31c9f82..e65e986 100644 #define CHIPREV_ID_5752_A0_HW 0x5000 #define CHIPREV_ID_5752_A0 0x6000 diff --git a/drivers/net/ethernet/brocade/bna/bna_enet.c b/drivers/net/ethernet/brocade/bna/bna_enet.c -index 903466e..b285864 100644 +index deb8da6..45d473b 100644 --- a/drivers/net/ethernet/brocade/bna/bna_enet.c +++ b/drivers/net/ethernet/brocade/bna/bna_enet.c -@@ -1693,10 +1693,10 @@ bna_cb_ioceth_reset(void *arg) +@@ -1694,10 +1694,10 @@ bna_cb_ioceth_reset(void *arg) } static struct bfa_ioc_cbfn bna_ioceth_cbfn = { @@ -48993,19 +49024,6 @@ index 8cffcdf..aadf043 100644 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb) -diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c -index d929951..a2c23f5 100644 ---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c -+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c -@@ -2215,7 +2215,7 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs, - - int i; - struct adapter *ap = netdev2adap(dev); -- static const unsigned int *reg_ranges; -+ const unsigned int *reg_ranges; - int arr_size = 0, buf_size = 0; - - if (is_t4(ap->params.chip)) { diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c index badff18..e15c4ec 100644 --- a/drivers/net/ethernet/dec/tulip/de4x5.c @@ -49029,10 +49047,10 @@ index badff18..e15c4ec 100644 break; } diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c -index e6b790f..051ba2d 100644 +index e43cc8a..f1cf67c 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c -@@ -536,7 +536,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val) +@@ -539,7 +539,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val) if (wrapped) newacc += 65536; @@ -49068,7 +49086,7 @@ index dce5f7b..2433466 100644 #include "ftmac100.h" diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c -index fabcfa1..188fd22 100644 +index a92b772..250fe69 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c @@ -419,7 +419,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf) @@ -49081,10 +49099,10 @@ index fabcfa1..188fd22 100644 } diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c -index 79c00f5..8da39f6 100644 +index e5ba040..d47531c 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c -@@ -785,7 +785,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) +@@ -782,7 +782,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) } /* update the base incval used to calculate frequency adjustment */ @@ -49093,11 +49111,79 @@ index 79c00f5..8da39f6 100644 smp_mb(); /* need lock to prevent incorrect read while modifying cyclecounter */ +diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c +index 74d0389..086ac03 100644 +--- a/drivers/net/ethernet/marvell/mvneta.c ++++ b/drivers/net/ethernet/marvell/mvneta.c +@@ -1462,7 +1462,7 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, + struct mvneta_rx_queue *rxq) + { + struct net_device *dev = pp->dev; +- int rx_done, rx_filled; ++ int rx_done; + u32 rcvd_pkts = 0; + u32 rcvd_bytes = 0; + +@@ -1473,7 +1473,6 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, + rx_todo = rx_done; + + rx_done = 0; +- rx_filled = 0; + + /* Fairness NAPI loop */ + while (rx_done < rx_todo) { +@@ -1484,7 +1483,6 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, + int rx_bytes, err; + + rx_done++; +- rx_filled++; + rx_status = rx_desc->status; + rx_bytes = rx_desc->data_size - (ETH_FCS_LEN + MVNETA_MH_SIZE); + data = (unsigned char *)rx_desc->buf_cookie; +@@ -1524,6 +1522,14 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, + continue; + } + ++ /* Refill processing */ ++ err = mvneta_rx_refill(pp, rx_desc); ++ if (err) { ++ netdev_err(dev, "Linux processing - Can't refill\n"); ++ rxq->missed++; ++ goto err_drop_frame; ++ } ++ + skb = build_skb(data, pp->frag_size > PAGE_SIZE ? 0 : pp->frag_size); + if (!skb) + goto err_drop_frame; +@@ -1543,14 +1549,6 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, + mvneta_rx_csum(pp, rx_status, skb); + + napi_gro_receive(&pp->napi, skb); +- +- /* Refill processing */ +- err = mvneta_rx_refill(pp, rx_desc); +- if (err) { +- netdev_err(dev, "Linux processing - Can't refill\n"); +- rxq->missed++; +- rx_filled--; +- } + } + + if (rcvd_pkts) { +@@ -1563,7 +1561,7 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, + } + + /* Update rxq management counters */ +- mvneta_rxq_desc_num_update(pp, rxq, rx_done, rx_filled); ++ mvneta_rxq_desc_num_update(pp, rxq, rx_done, rx_done); + + return rx_done; + } diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c -index 8c234ec..757331f 100644 +index c10d98f..72914c6 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c -@@ -468,8 +468,8 @@ static bool mlx4_en_process_tx_cq(struct net_device *dev, +@@ -475,8 +475,8 @@ static bool mlx4_en_process_tx_cq(struct net_device *dev, wmb(); /* we want to dirty this cache line once */ @@ -49134,7 +49220,7 @@ index 6223930..975033d 100644 __vxge_hw_mempool_create(vpath->hldev, fifo->config->memblock_size, diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c -index 2bb48d5..d1a865d 100644 +index 33669c2..a29c75e 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c @@ -2324,7 +2324,9 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter) @@ -49193,7 +49279,7 @@ index 332bb8a..e6adcd1 100644 u32 entry_offset, dump, no_entries, buf_offset = 0; int i, k, ops_cnt, ops_index, dump_size = 0; diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c -index c70ab40..00b28e0 100644 +index 3df51fa..e9b517f 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c @@ -788,22 +788,22 @@ struct rtl8169_private { @@ -49224,7 +49310,7 @@ index c70ab40..00b28e0 100644 int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv); int (*get_settings)(struct net_device *, struct ethtool_cmd *); diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c -index 6b861e3..204ac86 100644 +index a2e9aee..af41a0e 100644 --- a/drivers/net/ethernet/sfc/ptp.c +++ b/drivers/net/ethernet/sfc/ptp.c @@ -822,7 +822,7 @@ static int efx_ptp_synchronize(struct efx_nic *efx, unsigned int num_readings) @@ -49236,19 +49322,6 @@ index 6b861e3..204ac86 100644 rc = efx_mcdi_rpc_start(efx, MC_CMD_PTP, synch_buf, MC_CMD_PTP_IN_SYNCHRONIZE_LEN); EFX_BUG_ON_PARANOID(rc); -diff --git a/drivers/net/ethernet/sfc/selftest.c b/drivers/net/ethernet/sfc/selftest.c -index 10b6173..b605dfd5 100644 ---- a/drivers/net/ethernet/sfc/selftest.c -+++ b/drivers/net/ethernet/sfc/selftest.c -@@ -46,7 +46,7 @@ struct efx_loopback_payload { - struct iphdr ip; - struct udphdr udp; - __be16 iteration; -- const char msg[64]; -+ char msg[64]; - } __packed; - - /* Loopback test source MAC address */ diff --git a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c index 08c483b..2c4a553 100644 --- a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c @@ -49265,10 +49338,10 @@ index 08c483b..2c4a553 100644 /* To mask all all interrupts.*/ diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c -index 17e2766..c332f1e 100644 +index de28504..7f1c1cd 100644 --- a/drivers/net/ethernet/via/via-rhine.c +++ b/drivers/net/ethernet/via/via-rhine.c -@@ -2514,7 +2514,7 @@ static struct platform_driver rhine_driver_platform = { +@@ -2525,7 +2525,7 @@ static struct platform_driver rhine_driver_platform = { } }; @@ -49278,10 +49351,10 @@ index 17e2766..c332f1e 100644 .ident = "EPIA-M", .matches = { diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h -index 384ca4f..dd7d4f9 100644 +index 41071d3..6e362e1 100644 --- a/drivers/net/hyperv/hyperv_net.h +++ b/drivers/net/hyperv/hyperv_net.h -@@ -171,7 +171,7 @@ struct rndis_device { +@@ -176,7 +176,7 @@ struct rndis_device { enum rndis_device_state state; bool link_state; bool link_change; @@ -49291,10 +49364,10 @@ index 384ca4f..dd7d4f9 100644 spinlock_t request_lock; struct list_head req_list; diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c -index 7816d98..7890614 100644 +index 9118cea..1a8e06a 100644 --- a/drivers/net/hyperv/rndis_filter.c +++ b/drivers/net/hyperv/rndis_filter.c -@@ -102,7 +102,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev, +@@ -100,7 +100,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev, * template */ set = &rndis_msg->msg.set_req; @@ -49303,7 +49376,7 @@ index 7816d98..7890614 100644 /* Add to the request list */ spin_lock_irqsave(&dev->request_lock, flags); -@@ -918,7 +918,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev) +@@ -923,7 +923,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev) /* Setup the rndis set */ halt = &request->request_msg.msg.halt_req; @@ -49313,7 +49386,7 @@ index 7816d98..7890614 100644 /* Ignore return since this msg is optional. */ rndis_filter_send_request(dev, request); diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c -index 34f846b..4a0d5b1 100644 +index 94570aa..1a798e1 100644 --- a/drivers/net/ifb.c +++ b/drivers/net/ifb.c @@ -253,7 +253,7 @@ static int ifb_validate(struct nlattr *tb[], struct nlattr *data[]) @@ -49325,8 +49398,37 @@ index 34f846b..4a0d5b1 100644 .kind = "ifb", .priv_size = sizeof(struct ifb_private), .setup = ifb_setup, +diff --git a/drivers/net/ipvlan/ipvlan.h b/drivers/net/ipvlan/ipvlan.h +index 54549a6..0799442 100644 +--- a/drivers/net/ipvlan/ipvlan.h ++++ b/drivers/net/ipvlan/ipvlan.h +@@ -102,6 +102,11 @@ static inline struct ipvl_port *ipvlan_port_get_rcu(const struct net_device *d) + return rcu_dereference(d->rx_handler_data); + } + ++static inline struct ipvl_port *ipvlan_port_get_rcu_bh(const struct net_device *d) ++{ ++ return rcu_dereference_bh(d->rx_handler_data); ++} ++ + static inline struct ipvl_port *ipvlan_port_get_rtnl(const struct net_device *d) + { + return rtnl_dereference(d->rx_handler_data); +diff --git a/drivers/net/ipvlan/ipvlan_core.c b/drivers/net/ipvlan/ipvlan_core.c +index c30b5c3..b349dad 100644 +--- a/drivers/net/ipvlan/ipvlan_core.c ++++ b/drivers/net/ipvlan/ipvlan_core.c +@@ -507,7 +507,7 @@ static int ipvlan_xmit_mode_l2(struct sk_buff *skb, struct net_device *dev) + int ipvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev) + { + struct ipvl_dev *ipvlan = netdev_priv(dev); +- struct ipvl_port *port = ipvlan_port_get_rcu(ipvlan->phy_dev); ++ struct ipvl_port *port = ipvlan_port_get_rcu_bh(ipvlan->phy_dev); + + if (!port) + goto out; diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c -index 1df38bd..4bc20b0 100644 +index 9f59f17..52cb38f 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -335,7 +335,7 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port, @@ -49338,7 +49440,7 @@ index 1df38bd..4bc20b0 100644 } static void macvlan_flush_sources(struct macvlan_port *port, -@@ -1459,13 +1459,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = { +@@ -1480,13 +1480,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = { int macvlan_link_register(struct rtnl_link_ops *ops) { /* common fields */ @@ -49361,7 +49463,7 @@ index 1df38bd..4bc20b0 100644 return rtnl_link_register(ops); }; -@@ -1551,7 +1553,7 @@ static int macvlan_device_event(struct notifier_block *unused, +@@ -1572,7 +1574,7 @@ static int macvlan_device_event(struct notifier_block *unused, return NOTIFY_DONE; } @@ -49371,7 +49473,7 @@ index 1df38bd..4bc20b0 100644 }; diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c -index 27ecc5c..f636328 100644 +index 8c350c5..30fdc98 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c @@ -436,7 +436,7 @@ static void macvtap_setup(struct net_device *dev) @@ -49392,7 +49494,7 @@ index 27ecc5c..f636328 100644 put_user(u, &ifr->ifr_flags)) ret = -EFAULT; macvtap_put_vlan(vlan); -@@ -1217,7 +1217,7 @@ static int macvtap_device_event(struct notifier_block *unused, +@@ -1214,7 +1214,7 @@ static int macvtap_device_event(struct notifier_block *unused, return NOTIFY_DONE; } @@ -49401,6 +49503,14 @@ index 27ecc5c..f636328 100644 .notifier_call = macvtap_device_event, }; +@@ -1268,6 +1268,7 @@ static void macvtap_exit(void) + class_unregister(macvtap_class); + cdev_del(&macvtap_cdev); + unregister_chrdev_region(macvtap_major, MACVTAP_NUM_DEVS); ++ idr_destroy(&minor_idr); + } + module_exit(macvtap_exit); + diff --git a/drivers/net/nlmon.c b/drivers/net/nlmon.c index 34924df..a747360 100644 --- a/drivers/net/nlmon.c @@ -49415,7 +49525,7 @@ index 34924df..a747360 100644 .priv_size = sizeof(struct nlmon), .setup = nlmon_setup, diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c -index bdfe51f..e7845c7 100644 +index d551df6..fa4c2df 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -218,7 +218,7 @@ EXPORT_SYMBOL(phy_device_create); @@ -49481,10 +49591,10 @@ index 079f7ad..b2a2bfa7 100644 /* We've got a compressed packet; read the change byte */ diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c -index 7d39484..d58499d 100644 +index 6928448..e30c57f 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c -@@ -2099,7 +2099,7 @@ static unsigned int team_get_num_rx_queues(void) +@@ -2103,7 +2103,7 @@ static unsigned int team_get_num_rx_queues(void) return TEAM_DEFAULT_NUM_RX_QUEUES; } @@ -49493,7 +49603,7 @@ index 7d39484..d58499d 100644 .kind = DRV_NAME, .priv_size = sizeof(struct team), .setup = team_setup, -@@ -2889,7 +2889,7 @@ static int team_device_event(struct notifier_block *unused, +@@ -2893,7 +2893,7 @@ static int team_device_event(struct notifier_block *unused, return NOTIFY_DONE; } @@ -49503,7 +49613,7 @@ index 7d39484..d58499d 100644 }; diff --git a/drivers/net/tun.c b/drivers/net/tun.c -index 857dca4..642f532 100644 +index e470ae5..e812f5e 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1421,7 +1421,7 @@ static int tun_validate(struct nlattr *tb[], struct nlattr *data[]) @@ -49515,7 +49625,7 @@ index 857dca4..642f532 100644 .kind = DRV_NAME, .priv_size = sizeof(struct tun_struct), .setup = tun_setup, -@@ -1830,7 +1830,7 @@ unlock: +@@ -1828,7 +1828,7 @@ unlock: } static long __tun_chr_ioctl(struct file *file, unsigned int cmd, @@ -49524,7 +49634,7 @@ index 857dca4..642f532 100644 { struct tun_file *tfile = file->private_data; struct tun_struct *tun; -@@ -1844,6 +1844,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, +@@ -1842,6 +1842,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, int le; int ret; @@ -49535,7 +49645,7 @@ index 857dca4..642f532 100644 if (copy_from_user(&ifr, argp, ifreq_len)) return -EFAULT; diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c -index 778e915..58c4d95 100644 +index 111d907..1ee643e 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c @@ -70,7 +70,7 @@ @@ -49607,7 +49717,7 @@ index 778e915..58c4d95 100644 _hso_serial_set_termios(tty, old); else tty->termios = *old; -@@ -1886,7 +1885,7 @@ static void intr_callback(struct urb *urb) +@@ -1891,7 +1890,7 @@ static void intr_callback(struct urb *urb) D1("Pending read interrupt on port %d\n", i); spin_lock(&serial->serial_lock); if (serial->rx_state == RX_IDLE && @@ -49616,7 +49726,7 @@ index 778e915..58c4d95 100644 /* Setup and send a ctrl req read on * port i */ if (!serial->rx_urb_filled[0]) { -@@ -3053,7 +3052,7 @@ static int hso_resume(struct usb_interface *iface) +@@ -3058,7 +3057,7 @@ static int hso_resume(struct usb_interface *iface) /* Start all serial ports */ for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) { if (serial_table[i] && (serial_table[i]->interface == iface)) { @@ -49626,10 +49736,10 @@ index 778e915..58c4d95 100644 hso_start_serial_device(serial_table[i], GFP_NOIO); hso_kick_transmit(dev2ser(serial_table[i])); diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c -index 9f7c0ab..1577b4a 100644 +index aafa1a1..f59c651 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c -@@ -601,7 +601,7 @@ struct r8152 { +@@ -602,7 +602,7 @@ struct r8152 { void (*unload)(struct r8152 *); int (*eee_get)(struct r8152 *, struct ethtool_eee *); int (*eee_set)(struct r8152 *, struct ethtool_eee *); @@ -49660,30 +49770,8 @@ index a2515887..6d13233 100644 dev->net->dev_addr[ETH_ALEN-1] = ifacenum; /* we will have to manufacture ethernet headers, prepare template */ -diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c -index 777757a..395a767 100644 ---- a/drivers/net/usb/usbnet.c -+++ b/drivers/net/usb/usbnet.c -@@ -1285,7 +1285,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb, - struct net_device *net) - { - struct usbnet *dev = netdev_priv(net); -- int length; -+ unsigned int length; - struct urb *urb = NULL; - struct skb_data *entry; - struct driver_info *info = dev->driver_info; -@@ -1413,7 +1413,7 @@ not_drop: - } - } else - netif_dbg(dev, tx_queued, dev->net, -- "> tx, len %d, type 0x%x\n", length, skb->protocol); -+ "> tx, len %u, type 0x%x\n", length, skb->protocol); - #ifdef CONFIG_PM - deferred: - #endif diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c -index 59b0e97..a6ed579 100644 +index 63c7810..4ad33aa 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -48,7 +48,7 @@ module_param(gso, bool, 0444); @@ -49695,11 +49783,56 @@ index 59b0e97..a6ed579 100644 #define VIRTNET_DRIVER_VERSION "1.0.0" +diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c +index 61c0840..92e7f7e 100644 +--- a/drivers/net/vmxnet3/vmxnet3_drv.c ++++ b/drivers/net/vmxnet3/vmxnet3_drv.c +@@ -1167,7 +1167,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, + static const u32 rxprod_reg[2] = { + VMXNET3_REG_RXPROD, VMXNET3_REG_RXPROD2 + }; +- u32 num_rxd = 0; ++ u32 num_pkts = 0; + bool skip_page_frags = false; + struct Vmxnet3_RxCompDesc *rcd; + struct vmxnet3_rx_ctx *ctx = &rq->rx_ctx; +@@ -1185,13 +1185,12 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, + struct Vmxnet3_RxDesc *rxd; + u32 idx, ring_idx; + struct vmxnet3_cmd_ring *ring = NULL; +- if (num_rxd >= quota) { ++ if (num_pkts >= quota) { + /* we may stop even before we see the EOP desc of + * the current pkt + */ + break; + } +- num_rxd++; + BUG_ON(rcd->rqID != rq->qid && rcd->rqID != rq->qid2); + idx = rcd->rxdIdx; + ring_idx = rcd->rqID < adapter->num_rx_queues ? 0 : 1; +@@ -1323,6 +1322,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, + napi_gro_receive(&rq->napi, skb); + + ctx->skb = NULL; ++ num_pkts++; + } + + rcd_done: +@@ -1353,7 +1353,7 @@ rcd_done: + &rq->comp_ring.base[rq->comp_ring.next2proc].rcd, &rxComp); + } + +- return num_rxd; ++ return num_pkts; + } + + diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c -index fceb637..37c70fd 100644 +index 21a0fbf..055b54f 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c -@@ -2935,7 +2935,7 @@ static struct net *vxlan_get_link_net(const struct net_device *dev) +@@ -2878,7 +2878,7 @@ static struct net *vxlan_get_link_net(const struct net_device *dev) return vxlan->net; } @@ -49708,7 +49841,7 @@ index fceb637..37c70fd 100644 .kind = "vxlan", .maxtype = IFLA_VXLAN_MAX, .policy = vxlan_policy, -@@ -2983,7 +2983,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused, +@@ -2926,7 +2926,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused, return NOTIFY_DONE; } @@ -49899,7 +50032,7 @@ index 0b60295..b8bfa5b 100644 if (rd == NULL) { result = -ENOMEM; diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c -index e71a2ce..2268d61 100644 +index d0c97c2..108f59b 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c @@ -7846,7 +7846,7 @@ static int writerids(struct net_device *dev, aironet_ioctl *comp) { @@ -49912,7 +50045,7 @@ index e71a2ce..2268d61 100644 /* Only super-user can write RIDs */ diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c -index da92bfa..5a9001a 100644 +index 49219c5..3625441 100644 --- a/drivers/net/wireless/at76c50x-usb.c +++ b/drivers/net/wireless/at76c50x-usb.c @@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state) @@ -50193,19 +50326,19 @@ index da84b70..83e4978 100644 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 e82e570..8c3cf90 100644 +index c1d2d03..08352db 100644 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -646,7 +646,7 @@ struct ath_hw_private_ops { - - /* ANI */ - void (*ani_cache_ini_regs)(struct ath_hw *ah); +@@ -671,7 +671,7 @@ struct ath_hw_private_ops { + #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT + bool (*is_aic_enabled)(struct ath_hw *ah); + #endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */ -}; +} __no_const; /** * struct ath_spec_scan - parameters for Atheros spectral scan -@@ -722,7 +722,7 @@ struct ath_hw_ops { +@@ -747,7 +747,7 @@ struct ath_hw_ops { #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT void (*set_bt_ant_diversity)(struct ath_hw *hw, bool enable); #endif @@ -50215,10 +50348,10 @@ index e82e570..8c3cf90 100644 struct ath_nf_limits { s16 max; diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c -index 9ede991..a8f08fb 100644 +index b0badef..3e3464c 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -2537,16 +2537,18 @@ void ath9k_fill_chanctx_ops(void) +@@ -2573,16 +2573,18 @@ void ath9k_fill_chanctx_ops(void) if (!ath9k_is_chanctx_enabled()) return; @@ -50412,10 +50545,10 @@ index 0ffb6ff..c0b7f0e 100644 memset(buf, 0, sizeof(buf)); buf_size = min(count, sizeof(buf) - 1); diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c -index 69935aa..c1ca128 100644 +index dc17909..989c9fb 100644 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c -@@ -1836,7 +1836,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, +@@ -1919,7 +1919,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file, struct isr_statistics *isr_stats = &trans_pcie->isr_stats; char buf[8]; @@ -50424,7 +50557,7 @@ index 69935aa..c1ca128 100644 u32 reset_flag; memset(buf, 0, sizeof(buf)); -@@ -1857,7 +1857,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, +@@ -1940,7 +1940,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file, { struct iwl_trans *trans = file->private_data; char buf[8]; @@ -50434,10 +50567,10 @@ index 69935aa..c1ca128 100644 memset(buf, 0, sizeof(buf)); diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c -index 8908be6..fe97ddd 100644 +index d5c0a1a..d056b20 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c -@@ -3070,20 +3070,20 @@ static int __init init_mac80211_hwsim(void) +@@ -3149,20 +3149,20 @@ static int __init init_mac80211_hwsim(void) if (channels < 1) return -EINVAL; @@ -50473,7 +50606,7 @@ index 8908be6..fe97ddd 100644 spin_lock_init(&hwsim_radio_lock); INIT_LIST_HEAD(&hwsim_radios); diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c -index 60d44ce..884dd1c 100644 +index d72ff8e..c209a45 100644 --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c @@ -1236,7 +1236,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold) @@ -50541,10 +50674,10 @@ index b661f896..ddf7d2b 100644 wl1251_info("using SDIO interrupt"); } diff --git a/drivers/net/wireless/ti/wl12xx/main.c b/drivers/net/wireless/ti/wl12xx/main.c -index 144d1f8..7030936 100644 +index af0fe2e..d04986b 100644 --- a/drivers/net/wireless/ti/wl12xx/main.c +++ b/drivers/net/wireless/ti/wl12xx/main.c -@@ -657,7 +657,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl) +@@ -655,7 +655,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl) sizeof(wl->conf.mem)); /* read data preparation is only needed by wl127x */ @@ -50555,7 +50688,7 @@ index 144d1f8..7030936 100644 wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER, WL127X_IFTYPE_SR_VER, WL127X_MAJOR_SR_VER, -@@ -682,7 +684,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl) +@@ -680,7 +682,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl) sizeof(wl->conf.mem)); /* read data preparation is only needed by wl127x */ @@ -50596,6 +50729,27 @@ index a912dc0..a8225ba 100644 u16 int_num; ZD_ASSERT(in_interrupt()); +diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c +index 0d25943..0866c5d 100644 +--- a/drivers/net/xen-netback/netback.c ++++ b/drivers/net/xen-netback/netback.c +@@ -1571,13 +1571,13 @@ static inline void xenvif_tx_dealloc_action(struct xenvif_queue *queue) + smp_rmb(); + + while (dc != dp) { +- BUG_ON(gop - queue->tx_unmap_ops > MAX_PENDING_REQS); ++ BUG_ON(gop - queue->tx_unmap_ops >= MAX_PENDING_REQS); + pending_idx = + queue->dealloc_ring[pending_index(dc++)]; + +- pending_idx_release[gop-queue->tx_unmap_ops] = ++ pending_idx_release[gop - queue->tx_unmap_ops] = + pending_idx; +- queue->pages_to_unmap[gop-queue->tx_unmap_ops] = ++ queue->pages_to_unmap[gop - queue->tx_unmap_ops] = + queue->mmap_pages[pending_idx]; + gnttab_set_unmap_op(gop, + idx_to_kaddr(queue, pending_idx), diff --git a/drivers/nfc/nfcwilink.c b/drivers/nfc/nfcwilink.c index ce2e2cf..f81e500 100644 --- a/drivers/nfc/nfcwilink.c @@ -50610,23 +50764,63 @@ index ce2e2cf..f81e500 100644 __u32 protocols; diff --git a/drivers/nfc/st21nfca/st21nfca.c b/drivers/nfc/st21nfca/st21nfca.c -index 24d3d24..ff70d28 100644 +index d251f72..0512865 100644 --- a/drivers/nfc/st21nfca/st21nfca.c +++ b/drivers/nfc/st21nfca/st21nfca.c -@@ -588,7 +588,7 @@ static int st21nfca_get_iso14443_3_uid(struct nfc_hci_dev *hdev, u8 *gate, - goto exit; +@@ -148,14 +148,14 @@ static int st21nfca_hci_load_session(struct nfc_hci_dev *hdev) + ST21NFCA_DEVICE_MGNT_GATE, + ST21NFCA_DEVICE_MGNT_PIPE); + if (r < 0) +- goto free_info; ++ return r; + + /* Get pipe list */ + r = nfc_hci_send_cmd(hdev, ST21NFCA_DEVICE_MGNT_GATE, + ST21NFCA_DM_GETINFO, pipe_list, sizeof(pipe_list), + &skb_pipe_list); + if (r < 0) +- goto free_info; ++ return r; + + /* Complete the existing gate_pipe table */ + for (i = 0; i < skb_pipe_list->len; i++) { +@@ -181,6 +181,7 @@ static int st21nfca_hci_load_session(struct nfc_hci_dev *hdev) + info->src_host_id != ST21NFCA_ESE_HOST_ID) { + pr_err("Unexpected apdu_reader pipe on host %x\n", + info->src_host_id); ++ kfree_skb(skb_pipe_info); + continue; + } + +@@ -200,6 +201,7 @@ static int st21nfca_hci_load_session(struct nfc_hci_dev *hdev) + hdev->pipes[st21nfca_gates[j].pipe].dest_host = + info->src_host_id; + } ++ kfree_skb(skb_pipe_info); + } + + /* +@@ -214,13 +216,12 @@ static int st21nfca_hci_load_session(struct nfc_hci_dev *hdev) + st21nfca_gates[i].gate, + st21nfca_gates[i].pipe); + if (r < 0) +- goto free_info; ++ goto free_list; + } } -- gate = uid_skb->data; -+ memcpy(gate, uid_skb->data, uid_skb->len); - *len = uid_skb->len; - exit: - kfree_skb(uid_skb); + memcpy(hdev->init_data.gates, st21nfca_gates, sizeof(st21nfca_gates)); +-free_info: +- kfree_skb(skb_pipe_info); ++free_list: + kfree_skb(skb_pipe_list); + return r; + } diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c -index 3a896c9..ac7b1c8 100644 +index cde35c5d01..2dbfdbbf 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c -@@ -1118,7 +1118,9 @@ static int __init of_fdt_raw_init(void) +@@ -1136,7 +1136,9 @@ static int __init of_fdt_raw_init(void) pr_warn("fdt: not creating '/sys/firmware/fdt': CRC check failed\n"); return 0; } @@ -50638,10 +50832,10 @@ index 3a896c9..ac7b1c8 100644 } late_initcall(of_fdt_raw_init); diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c -index d93b2b6..ae50401 100644 +index 82f7000..d6d0447 100644 --- a/drivers/oprofile/buffer_sync.c +++ b/drivers/oprofile/buffer_sync.c -@@ -332,7 +332,7 @@ static void add_data(struct op_entry *entry, struct mm_struct *mm) +@@ -345,7 +345,7 @@ static void add_data(struct op_entry *entry, struct mm_struct *mm) if (cookie == NO_COOKIE) offset = pc; if (cookie == INVALID_COOKIE) { @@ -50650,7 +50844,7 @@ index d93b2b6..ae50401 100644 offset = pc; } if (cookie != last_cookie) { -@@ -376,14 +376,14 @@ add_sample(struct mm_struct *mm, struct op_sample *s, int in_kernel) +@@ -389,14 +389,14 @@ add_sample(struct mm_struct *mm, struct op_sample *s, int in_kernel) /* add userspace sample */ if (!mm) { @@ -50667,7 +50861,7 @@ index d93b2b6..ae50401 100644 return 0; } -@@ -552,7 +552,7 @@ void sync_buffer(int cpu) +@@ -554,7 +554,7 @@ void sync_buffer(int cpu) /* ignore backtraces if failed to add a sample */ if (state == sb_bt_start) { state = sb_bt_ignore; @@ -50758,7 +50952,7 @@ index 1fc622b..8c48fc3 100644 extern struct oprofile_stat_struct oprofile_stats; diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c -index 3f49345..c750d0b 100644 +index dd92c5e..dfc04b5 100644 --- a/drivers/oprofile/oprofilefs.c +++ b/drivers/oprofile/oprofilefs.c @@ -176,8 +176,8 @@ int oprofilefs_create_ro_ulong(struct dentry *root, @@ -51074,7 +51268,7 @@ index 312f23a..d21181c 100644 if (!sysfs_initialized) return -EACCES; diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h -index 4091f82..7d98eef 100644 +index 9bd762c2..6fb9504 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -99,7 +99,7 @@ struct pci_vpd_ops { @@ -51087,7 +51281,7 @@ index 4091f82..7d98eef 100644 int pci_vpd_pci22_init(struct pci_dev *dev); diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c -index 820740a..8b1c673 100644 +index 7d4fcdc..2f6d8f8 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -27,9 +27,9 @@ @@ -51117,10 +51311,10 @@ index be35da2..ec16cdb 100644 * Boxes that should not use MSI for PCIe PME signaling. */ diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c -index 8d2f400..c97cc91 100644 +index c911857..56f3f9d 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c -@@ -175,7 +175,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, +@@ -176,7 +176,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, u16 orig_cmd; struct pci_bus_region region, inverted_region; @@ -51223,10 +51417,10 @@ index 7543a56..367ca8ed 100644 1, asus->debug.method_id, &input, &output); diff --git a/drivers/platform/x86/compal-laptop.c b/drivers/platform/x86/compal-laptop.c -index bceb30b..bf063d4 100644 +index b4e9447..9dc6ec34 100644 --- a/drivers/platform/x86/compal-laptop.c +++ b/drivers/platform/x86/compal-laptop.c -@@ -766,7 +766,7 @@ static int dmi_check_cb_extra(const struct dmi_system_id *id) +@@ -765,7 +765,7 @@ static int dmi_check_cb_extra(const struct dmi_system_id *id) return 1; } @@ -51262,7 +51456,7 @@ index 97c2be1..2ee50ce 100644 .matches = { \ DMI_MATCH(DMI_SYS_VENDOR, "IBM"), \ diff --git a/drivers/platform/x86/intel_oaktrail.c b/drivers/platform/x86/intel_oaktrail.c -index a4a4258..a58a04c 100644 +index 8037c8b..f88445c 100644 --- a/drivers/platform/x86/intel_oaktrail.c +++ b/drivers/platform/x86/intel_oaktrail.c @@ -298,7 +298,7 @@ static int dmi_check_cb(const struct dmi_system_id *id) @@ -51415,19 +51609,10 @@ index e51c1e7..71bb385 100644 .ident = "Sony Vaio", .matches = { diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c -index 3b8ceee..e18652c 100644 +index 28f3281..171d8c3 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c -@@ -2093,7 +2093,7 @@ static int hotkey_mask_get(void) - return 0; - } - --void static hotkey_mask_warn_incomplete_mask(void) -+static void hotkey_mask_warn_incomplete_mask(void) - { - /* log only what the user can fix... */ - const u32 wantedmask = hotkey_driver_mask & -@@ -2437,10 +2437,10 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn, +@@ -2459,10 +2459,10 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn, && !tp_features.bright_unkfw) TPACPI_MAY_SEND_KEY(TP_ACPI_HOTKEYSCAN_FNHOME); } @@ -51513,10 +51698,10 @@ index facd43b..b291260 100644 .callback = exploding_pnp_bios, .ident = "Higraded P14H", diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c -index 0c52e2a..3421ab7 100644 +index dfe1ee8..67e820c 100644 --- a/drivers/power/pda_power.c +++ b/drivers/power/pda_power.c -@@ -37,7 +37,11 @@ static int polling; +@@ -38,7 +38,11 @@ static struct power_supply *pda_psy_ac, *pda_psy_usb; #if IS_ENABLED(CONFIG_USB_PHY) static struct usb_phy *transceiver; @@ -51529,7 +51714,7 @@ index 0c52e2a..3421ab7 100644 #endif static struct regulator *ac_draw; -@@ -369,7 +373,6 @@ static int pda_power_probe(struct platform_device *pdev) +@@ -373,7 +377,6 @@ static int pda_power_probe(struct platform_device *pdev) #if IS_ENABLED(CONFIG_USB_PHY) if (!IS_ERR_OR_NULL(transceiver) && pdata->use_otg_notifier) { @@ -51557,7 +51742,7 @@ index cc439fd..8fa30df 100644 #endif /* CONFIG_SYSFS */ diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c -index 694e8cd..9f03483 100644 +index 4bc0c7f..198c99d 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c @@ -28,7 +28,10 @@ EXPORT_SYMBOL_GPL(power_supply_class); @@ -51570,9 +51755,9 @@ index 694e8cd..9f03483 100644 + .groups = power_supply_attr_groups, +}; - static bool __power_supply_is_supplied_by(struct power_supply *supplier, - struct power_supply *supply) -@@ -637,7 +640,7 @@ static int __init power_supply_class_init(void) + #define POWER_SUPPLY_DEFERRED_REGISTER_TIME msecs_to_jiffies(10) + +@@ -921,7 +924,7 @@ static int __init power_supply_class_init(void) return PTR_ERR(power_supply_class); power_supply_class->dev_uevent = power_supply_uevent; @@ -51582,7 +51767,7 @@ index 694e8cd..9f03483 100644 return 0; } diff --git a/drivers/power/power_supply_sysfs.c b/drivers/power/power_supply_sysfs.c -index 62653f5..d0bb485 100644 +index 9134e3d..45eee1e 100644 --- a/drivers/power/power_supply_sysfs.c +++ b/drivers/power/power_supply_sysfs.c @@ -238,17 +238,15 @@ static struct attribute_group power_supply_attr_group = { @@ -51821,10 +52006,10 @@ index 302e626..12579af 100644 da->attr.name = info->pin_config[i].name; da->attr.mode = 0644; diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c -index a4a8a6d..a3456f4 100644 +index 8a28116..05b0ad5 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c -@@ -3529,7 +3529,7 @@ regulator_register(const struct regulator_desc *regulator_desc, +@@ -3603,7 +3603,7 @@ regulator_register(const struct regulator_desc *regulator_desc, const struct regulation_constraints *constraints = NULL; const struct regulator_init_data *init_data; struct regulator_config *config = NULL; @@ -51833,7 +52018,7 @@ index a4a8a6d..a3456f4 100644 struct regulator_dev *rdev; struct device *dev; int ret, i; -@@ -3613,7 +3613,7 @@ regulator_register(const struct regulator_desc *regulator_desc, +@@ -3686,7 +3686,7 @@ regulator_register(const struct regulator_desc *regulator_desc, rdev->dev.class = ®ulator_class; rdev->dev.parent = dev; dev_set_name(&rdev->dev, "regulator.%lu", @@ -51843,10 +52028,10 @@ index a4a8a6d..a3456f4 100644 if (ret != 0) { put_device(&rdev->dev); diff --git a/drivers/regulator/max8660.c b/drivers/regulator/max8660.c -index 7eee2ca..4024513 100644 +index 4071d74..260b15a 100644 --- a/drivers/regulator/max8660.c +++ b/drivers/regulator/max8660.c -@@ -424,8 +424,10 @@ static int max8660_probe(struct i2c_client *client, +@@ -423,8 +423,10 @@ static int max8660_probe(struct i2c_client *client, max8660->shadow_regs[MAX8660_OVER1] = 5; } else { /* Otherwise devices can be toggled via software */ @@ -51899,10 +52084,10 @@ index 0d17c92..a29f627 100644 mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators, diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c -index 5b2e761..c8c8a4a 100644 +index a82556a0..e842923 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c -@@ -789,7 +789,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq) +@@ -793,7 +793,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq) hpet_rtc_timer_init(); /* export at least the first block of NVRAM */ @@ -51962,6 +52147,36 @@ index 90abb5b..e0bf6dd 100644 ret = sysfs_create_bin_file(&pdev->dev.kobj, &m48t59_nvram_attr); if (ret) +diff --git a/drivers/rtc/rtc-test.c b/drivers/rtc/rtc-test.c +index 3a2da4c..e88493c 100644 +--- a/drivers/rtc/rtc-test.c ++++ b/drivers/rtc/rtc-test.c +@@ -112,8 +112,10 @@ static int test_probe(struct platform_device *plat_dev) + struct rtc_device *rtc; + + if (test_mmss64) { +- test_rtc_ops.set_mmss64 = test_rtc_set_mmss64; +- test_rtc_ops.set_mmss = NULL; ++ pax_open_kernel(); ++ *(void **)&test_rtc_ops.set_mmss64 = test_rtc_set_mmss64; ++ *(void **)&test_rtc_ops.set_mmss = NULL; ++ pax_close_kernel(); + } + + rtc = devm_rtc_device_register(&plat_dev->dev, "test", +diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c +index 1f74760..8e00a89 100644 +--- a/drivers/scsi/be2iscsi/be_main.c ++++ b/drivers/scsi/be2iscsi/be_main.c +@@ -3165,7 +3165,7 @@ be_sgl_create_contiguous(void *virtual_address, + { + WARN_ON(!virtual_address); + WARN_ON(!physical_address); +- WARN_ON(!length > 0); ++ WARN_ON(!length); + WARN_ON(!sgl); + + sgl->va = virtual_address; diff --git a/drivers/scsi/bfa/bfa_fcpim.h b/drivers/scsi/bfa/bfa_fcpim.h index e693af6..2e525b6 100644 --- a/drivers/scsi/bfa/bfa_fcpim.h @@ -52157,7 +52372,7 @@ index 8bb173e..20236b4 100644 /* These three are default values which can be overridden */ diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c -index a1cfbd3..d7f8ebc 100644 +index 8eab107..599cd79 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -697,10 +697,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q) @@ -52212,7 +52427,7 @@ index a1cfbd3..d7f8ebc 100644 pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM); -@@ -6649,7 +6649,7 @@ static void controller_lockup_detected(struct ctlr_info *h) +@@ -6647,7 +6647,7 @@ static void controller_lockup_detected(struct ctlr_info *h) unsigned long flags; u32 lockup_detected; @@ -52221,7 +52436,7 @@ index a1cfbd3..d7f8ebc 100644 spin_lock_irqsave(&h->lock, flags); lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET); if (!lockup_detected) { -@@ -6924,7 +6924,7 @@ reinit_after_soft_reset: +@@ -6922,7 +6922,7 @@ reinit_after_soft_reset: } /* make sure the board interrupts are off */ @@ -52230,7 +52445,7 @@ index a1cfbd3..d7f8ebc 100644 if (hpsa_request_irqs(h, do_hpsa_intr_msi, do_hpsa_intr_intx)) goto clean2; -@@ -6960,7 +6960,7 @@ reinit_after_soft_reset: +@@ -6958,7 +6958,7 @@ reinit_after_soft_reset: * fake ones to scoop up any residual completions. */ spin_lock_irqsave(&h->lock, flags); @@ -52239,7 +52454,7 @@ index a1cfbd3..d7f8ebc 100644 spin_unlock_irqrestore(&h->lock, flags); hpsa_free_irqs(h); rc = hpsa_request_irqs(h, hpsa_msix_discard_completions, -@@ -6979,9 +6979,9 @@ reinit_after_soft_reset: +@@ -6977,9 +6977,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"); @@ -52251,7 +52466,7 @@ index a1cfbd3..d7f8ebc 100644 rc = controller_reset_failed(h->cfgtable); if (rc) -@@ -7006,7 +7006,7 @@ reinit_after_soft_reset: +@@ -7004,7 +7004,7 @@ reinit_after_soft_reset: /* Turn the interrupts on so we can service requests */ @@ -52260,7 +52475,7 @@ index a1cfbd3..d7f8ebc 100644 hpsa_hba_inquiry(h); hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */ -@@ -7079,7 +7079,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) +@@ -7077,7 +7077,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) * To write all data in the battery backed cache to disks */ hpsa_flush_cache(h); @@ -52269,7 +52484,7 @@ index a1cfbd3..d7f8ebc 100644 hpsa_free_irqs_and_disable_msix(h); } -@@ -7200,7 +7200,7 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) +@@ -7198,7 +7198,7 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) CFGTBL_Trans_enable_directed_msix | (trans_support & (CFGTBL_Trans_io_accel1 | CFGTBL_Trans_io_accel2)); @@ -52278,7 +52493,7 @@ index a1cfbd3..d7f8ebc 100644 /* This is a bit complicated. There are 8 registers on * the controller which we write to to tell it 8 different -@@ -7242,7 +7242,7 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) +@@ -7240,7 +7240,7 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) * perform the superfluous readl() after each command submission. */ if (trans_support & (CFGTBL_Trans_io_accel1 | CFGTBL_Trans_io_accel2)) @@ -52287,7 +52502,7 @@ index a1cfbd3..d7f8ebc 100644 /* Controller spec: zero out this buffer. */ for (i = 0; i < h->nreply_queues; i++) -@@ -7272,12 +7272,12 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) +@@ -7270,12 +7270,12 @@ static int hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) * enable outbound interrupt coalescing in accelerator mode; */ if (trans_support & CFGTBL_Trans_io_accel1) { @@ -52533,10 +52748,10 @@ index 9c706d8..d3e3ed2 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 434e903..5a4a79b 100644 +index 9b81a34..a9b7b8c 100644 --- a/drivers/scsi/lpfc/lpfc.h +++ b/drivers/scsi/lpfc/lpfc.h -@@ -430,7 +430,7 @@ struct lpfc_vport { +@@ -433,7 +433,7 @@ struct lpfc_vport { struct dentry *debug_nodelist; struct dentry *vport_debugfs_root; struct lpfc_debugfs_trc *disc_trc; @@ -52545,7 +52760,7 @@ index 434e903..5a4a79b 100644 #endif uint8_t stat_data_enabled; uint8_t stat_data_blocked; -@@ -880,8 +880,8 @@ struct lpfc_hba { +@@ -883,8 +883,8 @@ struct lpfc_hba { struct timer_list fabric_block_timer; unsigned long bit_flags; #define FABRIC_COMANDS_BLOCKED 0 @@ -52556,7 +52771,7 @@ index 434e903..5a4a79b 100644 unsigned long last_rsrc_error_time; unsigned long last_ramp_down_time; #ifdef CONFIG_SCSI_LPFC_DEBUG_FS -@@ -916,7 +916,7 @@ struct lpfc_hba { +@@ -919,7 +919,7 @@ struct lpfc_hba { struct dentry *debug_slow_ring_trc; struct lpfc_debugfs_trc *slow_ring_trc; @@ -52566,7 +52781,7 @@ index 434e903..5a4a79b 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 5633e7d..8272114 100644 +index 513edcb..805c6a8 100644 --- a/drivers/scsi/lpfc/lpfc_debugfs.c +++ b/drivers/scsi/lpfc/lpfc_debugfs.c @@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc, @@ -52649,10 +52864,10 @@ index 5633e7d..8272114 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 0b2c53a..aec2b45 100644 +index e8c8c1e..5f2e11c 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c -@@ -11290,8 +11290,10 @@ lpfc_init(void) +@@ -11406,8 +11406,10 @@ lpfc_init(void) "misc_register returned with status %d", error); if (lpfc_enable_npiv) { @@ -52666,7 +52881,7 @@ index 0b2c53a..aec2b45 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 4f9222e..f1850e3 100644 +index c140f99..11b2505 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c @@ -261,7 +261,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba) @@ -52885,7 +53100,7 @@ index 7686bfe..4710893 100644 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *, bool); extern void qla2x00_init_host_attr(scsi_qla_host_t *); diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c -index cce1cbc..5b9f0fe 100644 +index 7462dd7..5b64c24 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -1435,8 +1435,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha) @@ -52942,6 +53157,19 @@ index 6d25879..3031a9f 100644 def_timeout = le16_to_cpu(ddb_entry->fw_ddb_entry.def_timeout); ddb_entry->default_relogin_timeout = (def_timeout > LOGIN_TOV) && (def_timeout < LOGIN_TOV * 10) ? +diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c +index 3833bf5..95feaf1 100644 +--- a/drivers/scsi/scsi.c ++++ b/drivers/scsi/scsi.c +@@ -637,7 +637,7 @@ void scsi_finish_command(struct scsi_cmnd *cmd) + + good_bytes = scsi_bufflen(cmd); + if (cmd->request->cmd_type != REQ_TYPE_BLOCK_PC) { +- int old_good_bytes = good_bytes; ++ unsigned int old_good_bytes = good_bytes; + drv = scsi_cmd_to_driver(cmd); + if (drv->done) + good_bytes = drv->done(cmd); diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index b1a2631..5bcd9c8 100644 --- a/drivers/scsi/scsi_lib.c @@ -52990,10 +53218,10 @@ index 1ac38e7..6acc656 100644 } \ static DEVICE_ATTR(field, S_IRUGO, show_iostat_##field, NULL) diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c -index 5d6f348..18778a6b 100644 +index 24eaaf6..de30ec9 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c -@@ -501,7 +501,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class, +@@ -502,7 +502,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class, * Netlink Infrastructure */ @@ -53002,7 +53230,7 @@ index 5d6f348..18778a6b 100644 /** * fc_get_event_number - Obtain the next sequential FC event number -@@ -514,7 +514,7 @@ static atomic_t fc_event_seq; +@@ -515,7 +515,7 @@ static atomic_t fc_event_seq; u32 fc_get_event_number(void) { @@ -53011,7 +53239,7 @@ index 5d6f348..18778a6b 100644 } EXPORT_SYMBOL(fc_get_event_number); -@@ -658,7 +658,7 @@ static __init int fc_transport_init(void) +@@ -659,7 +659,7 @@ static __init int fc_transport_init(void) { int error; @@ -53020,7 +53248,7 @@ index 5d6f348..18778a6b 100644 error = transport_class_register(&fc_host_class); if (error) -@@ -848,7 +848,7 @@ static int fc_str_to_dev_loss(const char *buf, unsigned long *val) +@@ -849,7 +849,7 @@ static int fc_str_to_dev_loss(const char *buf, unsigned long *val) char *cp; *val = simple_strtoul(buf, &cp, 0); @@ -53061,7 +53289,7 @@ index 67d43e3..8cee73c 100644 err = class_register(&iscsi_transport_class); if (err) diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c -index ae45bd9..c32a586 100644 +index f115f67..b80b2c1 100644 --- a/drivers/scsi/scsi_transport_srp.c +++ b/drivers/scsi/scsi_transport_srp.c @@ -35,7 +35,7 @@ @@ -53082,7 +53310,7 @@ index ae45bd9..c32a586 100644 return 0; } -@@ -734,7 +734,7 @@ struct srp_rport *srp_rport_add(struct Scsi_Host *shost, +@@ -744,7 +744,7 @@ struct srp_rport *srp_rport_add(struct Scsi_Host *shost, rport_fast_io_fail_timedout); INIT_DELAYED_WORK(&rport->dev_loss_work, rport_dev_loss_timedout); @@ -53092,10 +53320,28 @@ index ae45bd9..c32a586 100644 transport_setup_device(&rport->dev); diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c -index 3290a3e..d65ac1c 100644 +index 7f9d65f..e856438 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c -@@ -3006,7 +3006,7 @@ static int sd_probe(struct device *dev) +@@ -111,7 +111,7 @@ static int sd_resume(struct device *); + static void sd_rescan(struct device *); + static int sd_init_command(struct scsi_cmnd *SCpnt); + static void sd_uninit_command(struct scsi_cmnd *SCpnt); +-static int sd_done(struct scsi_cmnd *); ++static unsigned int sd_done(struct scsi_cmnd *); + static int sd_eh_action(struct scsi_cmnd *, int); + static void sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer); + static void scsi_disk_release(struct device *cdev); +@@ -1646,7 +1646,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd) + * + * Note: potentially run from within an ISR. Must not block. + **/ +-static int sd_done(struct scsi_cmnd *SCpnt) ++static unsigned int sd_done(struct scsi_cmnd *SCpnt) + { + int result = SCpnt->result; + unsigned int good_bytes = result ? 0 : scsi_bufflen(SCpnt); +@@ -2973,7 +2973,7 @@ static int sd_probe(struct device *dev) sdkp->disk = gd; sdkp->index = index; atomic_set(&sdkp->openers, 0); @@ -53105,7 +53351,7 @@ index 3290a3e..d65ac1c 100644 if (!sdp->request_queue->rq_timeout) { if (sdp->type != TYPE_MOD) diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c -index 2270bd5..98408a5 100644 +index 9d7b7db..33ecc51 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c @@ -1083,7 +1083,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) @@ -53117,6 +53363,49 @@ index 2270bd5..98408a5 100644 case BLKTRACESTART: return blk_trace_startstop(sdp->device->request_queue, 1); case BLKTRACESTOP: +diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c +index 8bd54a6..dd037a5 100644 +--- a/drivers/scsi/sr.c ++++ b/drivers/scsi/sr.c +@@ -80,7 +80,7 @@ static DEFINE_MUTEX(sr_mutex); + static int sr_probe(struct device *); + static int sr_remove(struct device *); + static int sr_init_command(struct scsi_cmnd *SCpnt); +-static int sr_done(struct scsi_cmnd *); ++static unsigned int sr_done(struct scsi_cmnd *); + static int sr_runtime_suspend(struct device *dev); + + static struct dev_pm_ops sr_pm_ops = { +@@ -312,11 +312,11 @@ do_tur: + * It will be notified on the end of a SCSI read / write, and will take one + * of several actions based on success or failure. + */ +-static int sr_done(struct scsi_cmnd *SCpnt) ++static unsigned int sr_done(struct scsi_cmnd *SCpnt) + { + int result = SCpnt->result; +- int this_count = scsi_bufflen(SCpnt); +- int good_bytes = (result == 0 ? this_count : 0); ++ unsigned int this_count = scsi_bufflen(SCpnt); ++ unsigned int good_bytes = (result == 0 ? this_count : 0); + int block_sectors = 0; + long error_sector; + struct scsi_cd *cd = scsi_cd(SCpnt->request->rq_disk); +diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c +index 9a1c342..525ab4c 100644 +--- a/drivers/scsi/st.c ++++ b/drivers/scsi/st.c +@@ -1274,9 +1274,9 @@ static int st_open(struct inode *inode, struct file *filp) + spin_lock(&st_use_lock); + STp->in_use = 0; + spin_unlock(&st_use_lock); +- scsi_tape_put(STp); + if (resumed) + scsi_autopm_put_device(STp->device); ++ scsi_tape_put(STp); + return retval; + + } diff --git a/drivers/soc/tegra/fuse/fuse-tegra.c b/drivers/soc/tegra/fuse/fuse-tegra.c index c0d660f..24a5854 100644 --- a/drivers/soc/tegra/fuse/fuse-tegra.c @@ -53131,10 +53420,10 @@ index c0d660f..24a5854 100644 .read = fuse_read, }; diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c -index 57a1950..ae54e21 100644 +index d35c1a1..eda08dc 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -2307,7 +2307,7 @@ int spi_bus_unlock(struct spi_master *master) +@@ -2206,7 +2206,7 @@ int spi_bus_unlock(struct spi_master *master) EXPORT_SYMBOL_GPL(spi_bus_unlock); /* portable code must never pass more than 32 bytes */ @@ -53175,7 +53464,7 @@ index b41429f..2de5373 100644 MKDEV(0, tdev->index), NULL, "%s", tdev->name); if (IS_ERR(tdev->dev)) diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c -index 727640e..55bf61c 100644 +index e78ddbe..ac437c0 100644 --- a/drivers/staging/comedi/comedi_fops.c +++ b/drivers/staging/comedi/comedi_fops.c @@ -297,8 +297,8 @@ static void comedi_file_reset(struct file *file) @@ -53189,7 +53478,7 @@ index 727640e..55bf61c 100644 } static void comedi_file_check(struct file *file) -@@ -1924,7 +1924,7 @@ static int do_setrsubd_ioctl(struct comedi_device *dev, unsigned long arg, +@@ -1951,7 +1951,7 @@ static int do_setrsubd_ioctl(struct comedi_device *dev, unsigned long arg, !(s_old->async->cmd.flags & CMDF_WRITE)) return -EBUSY; @@ -53198,7 +53487,7 @@ index 727640e..55bf61c 100644 return 0; } -@@ -1966,7 +1966,7 @@ static int do_setwsubd_ioctl(struct comedi_device *dev, unsigned long arg, +@@ -1993,7 +1993,7 @@ static int do_setwsubd_ioctl(struct comedi_device *dev, unsigned long arg, (s_old->async->cmd.flags & CMDF_WRITE)) return -EBUSY; @@ -53208,10 +53497,10 @@ index 727640e..55bf61c 100644 } diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c -index 37dcf7e..f3c2016 100644 +index 53b748b..a5ae0b3 100644 --- a/drivers/staging/fbtft/fbtft-core.c +++ b/drivers/staging/fbtft/fbtft-core.c -@@ -689,7 +689,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display, +@@ -680,7 +680,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display, { struct fb_info *info; struct fbtft_par *par; @@ -53221,7 +53510,7 @@ index 37dcf7e..f3c2016 100644 struct fbtft_platform_data *pdata = dev->platform_data; u8 *vmem = NULL; diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h -index 0dbf3f9..fed0063 100644 +index 9fd98cb..a9cf912 100644 --- a/drivers/staging/fbtft/fbtft.h +++ b/drivers/staging/fbtft/fbtft.h @@ -106,7 +106,7 @@ struct fbtft_ops { @@ -53260,10 +53549,10 @@ index d23c3c2..eb63c81 100644 and pointers */ #endif diff --git a/drivers/staging/i2o/i2o_proc.c b/drivers/staging/i2o/i2o_proc.c -index ad84f33..c5bdf65 100644 +index 780fee3..ca9dcae 100644 --- a/drivers/staging/i2o/i2o_proc.c +++ b/drivers/staging/i2o/i2o_proc.c -@@ -255,12 +255,6 @@ static char *scsi_devices[] = { +@@ -253,12 +253,6 @@ static char *scsi_devices[] = { "Array Controller Device" }; @@ -53276,7 +53565,7 @@ index ad84f33..c5bdf65 100644 static int i2o_report_query_status(struct seq_file *seq, int block_status, char *group) { -@@ -707,9 +701,9 @@ static int i2o_seq_show_status(struct seq_file *seq, void *v) +@@ -711,9 +705,9 @@ static int i2o_seq_show_status(struct seq_file *seq, void *v) static int i2o_seq_show_hw(struct seq_file *seq, void *v) { struct i2o_controller *c = (struct i2o_controller *)seq->private; @@ -53289,7 +53578,7 @@ index ad84f33..c5bdf65 100644 int token; u32 hwcap; -@@ -790,7 +784,6 @@ static int i2o_seq_show_ddm_table(struct seq_file *seq, void *v) +@@ -794,7 +788,6 @@ static int i2o_seq_show_ddm_table(struct seq_file *seq, void *v) } *result; i2o_exec_execute_ddm_table ddm_table; @@ -53297,7 +53586,7 @@ index ad84f33..c5bdf65 100644 result = kmalloc(sizeof(*result), GFP_KERNEL); if (!result) -@@ -825,8 +818,7 @@ static int i2o_seq_show_ddm_table(struct seq_file *seq, void *v) +@@ -829,8 +822,7 @@ static int i2o_seq_show_ddm_table(struct seq_file *seq, void *v) seq_printf(seq, "%-#7x", ddm_table.i2o_vendor_id); seq_printf(seq, "%-#8x", ddm_table.module_id); @@ -53307,7 +53596,7 @@ index ad84f33..c5bdf65 100644 seq_printf(seq, "%9d ", ddm_table.data_size); seq_printf(seq, "%8d", ddm_table.code_size); -@@ -893,7 +885,6 @@ static int i2o_seq_show_drivers_stored(struct seq_file *seq, void *v) +@@ -897,7 +889,6 @@ static int i2o_seq_show_drivers_stored(struct seq_file *seq, void *v) i2o_driver_result_table *result; i2o_driver_store_table *dst; @@ -53315,7 +53604,7 @@ index ad84f33..c5bdf65 100644 result = kmalloc(sizeof(i2o_driver_result_table), GFP_KERNEL); if (result == NULL) -@@ -928,9 +919,8 @@ static int i2o_seq_show_drivers_stored(struct seq_file *seq, void *v) +@@ -932,9 +923,8 @@ static int i2o_seq_show_drivers_stored(struct seq_file *seq, void *v) seq_printf(seq, "%-#7x", dst->i2o_vendor_id); seq_printf(seq, "%-#8x", dst->module_id); @@ -53327,7 +53616,7 @@ index ad84f33..c5bdf65 100644 seq_printf(seq, "%8d ", dst->module_size); seq_printf(seq, "%8d ", dst->mpb_size); seq_printf(seq, "0x%04x", dst->module_flags); -@@ -1246,11 +1236,10 @@ static int i2o_seq_show_authorized_users(struct seq_file *seq, void *v) +@@ -1250,11 +1240,10 @@ static int i2o_seq_show_authorized_users(struct seq_file *seq, void *v) static int i2o_seq_show_dev_identity(struct seq_file *seq, void *v) { struct i2o_device *d = (struct i2o_device *)seq->private; @@ -53341,7 +53630,7 @@ index ad84f33..c5bdf65 100644 token = i2o_parm_field_get(d, 0xF100, -1, &work32, sizeof(work32)); -@@ -1262,14 +1251,10 @@ static int i2o_seq_show_dev_identity(struct seq_file *seq, void *v) +@@ -1266,14 +1255,10 @@ static int i2o_seq_show_dev_identity(struct seq_file *seq, void *v) seq_printf(seq, "Device Class : %s\n", i2o_get_class_name(work16[0])); seq_printf(seq, "Owner TID : %0#5x\n", work16[2]); seq_printf(seq, "Parent TID : %0#5x\n", work16[3]); @@ -53360,7 +53649,7 @@ index ad84f33..c5bdf65 100644 seq_printf(seq, "Serial number : "); print_serial_number(seq, (u8 *) (work32 + 16), -@@ -1306,8 +1291,6 @@ static int i2o_seq_show_ddm_identity(struct seq_file *seq, void *v) +@@ -1310,8 +1295,6 @@ static int i2o_seq_show_ddm_identity(struct seq_file *seq, void *v) u8 pad[256]; // allow up to 256 byte (max) serial number } result; @@ -53369,7 +53658,7 @@ index ad84f33..c5bdf65 100644 token = i2o_parm_field_get(d, 0xF101, -1, &result, sizeof(result)); if (token < 0) { -@@ -1316,10 +1299,8 @@ static int i2o_seq_show_ddm_identity(struct seq_file *seq, void *v) +@@ -1320,10 +1303,8 @@ static int i2o_seq_show_ddm_identity(struct seq_file *seq, void *v) } seq_printf(seq, "Registering DDM TID : 0x%03x\n", result.ddm_tid); @@ -53382,7 +53671,7 @@ index ad84f33..c5bdf65 100644 seq_printf(seq, "Serial number : "); print_serial_number(seq, result.serial_number, sizeof(result) - 36); -@@ -1343,8 +1324,6 @@ static int i2o_seq_show_uinfo(struct seq_file *seq, void *v) +@@ -1347,8 +1328,6 @@ static int i2o_seq_show_uinfo(struct seq_file *seq, void *v) u8 instance_number[4]; } result; @@ -53391,7 +53680,7 @@ index ad84f33..c5bdf65 100644 token = i2o_parm_field_get(d, 0xF102, -1, &result, sizeof(result)); if (token < 0) { -@@ -1352,14 +1331,10 @@ static int i2o_seq_show_uinfo(struct seq_file *seq, void *v) +@@ -1356,14 +1335,10 @@ static int i2o_seq_show_uinfo(struct seq_file *seq, void *v) return 0; } @@ -53410,7 +53699,7 @@ index ad84f33..c5bdf65 100644 return 0; } -@@ -1368,9 +1343,9 @@ static int i2o_seq_show_uinfo(struct seq_file *seq, void *v) +@@ -1372,9 +1347,9 @@ static int i2o_seq_show_uinfo(struct seq_file *seq, void *v) static int i2o_seq_show_sgl_limits(struct seq_file *seq, void *v) { struct i2o_device *d = (struct i2o_device *)seq->private; @@ -53424,7 +53713,7 @@ index ad84f33..c5bdf65 100644 token = i2o_parm_field_get(d, 0xF103, -1, &work32, sizeof(work32)); diff --git a/drivers/staging/i2o/iop.c b/drivers/staging/i2o/iop.c -index 52334fc..d7f40b3 100644 +index 23bdbe4..4e1f340 100644 --- a/drivers/staging/i2o/iop.c +++ b/drivers/staging/i2o/iop.c @@ -111,10 +111,10 @@ u32 i2o_cntxt_list_add(struct i2o_controller * c, void *ptr) @@ -53450,11 +53739,39 @@ index 52334fc..d7f40b3 100644 INIT_LIST_HEAD(&c->context_list); #endif +diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c +index b892f2c..9b4898a 100644 +--- a/drivers/staging/iio/accel/lis3l02dq_ring.c ++++ b/drivers/staging/iio/accel/lis3l02dq_ring.c +@@ -118,7 +118,7 @@ static int lis3l02dq_get_buffer_element(struct iio_dev *indio_dev, + int scan_count = bitmap_weight(indio_dev->active_scan_mask, + indio_dev->masklength); + +- rx_array = kcalloc(4, scan_count, GFP_KERNEL); ++ rx_array = kcalloc(scan_count, 4, GFP_KERNEL); + if (!rx_array) + return -ENOMEM; + ret = lis3l02dq_read_all(indio_dev, rx_array); +diff --git a/drivers/staging/iio/adc/ad7280a.c b/drivers/staging/iio/adc/ad7280a.c +index d98e229..9c59bc2 100644 +--- a/drivers/staging/iio/adc/ad7280a.c ++++ b/drivers/staging/iio/adc/ad7280a.c +@@ -547,8 +547,8 @@ static int ad7280_attr_init(struct ad7280_state *st) + { + int dev, ch, cnt; + +- st->iio_attr = kcalloc(2, sizeof(*st->iio_attr) * +- (st->slave_num + 1) * AD7280A_CELLS_PER_DEV, ++ st->iio_attr = kcalloc(sizeof(*st->iio_attr) * ++ (st->slave_num + 1) * AD7280A_CELLS_PER_DEV, 2, + GFP_KERNEL); + if (st->iio_attr == NULL) + return -ENOMEM; diff --git a/drivers/staging/lustre/lnet/selftest/brw_test.c b/drivers/staging/lustre/lnet/selftest/brw_test.c -index 463da07..e791ce9 100644 +index 658f458..0564216 100644 --- a/drivers/staging/lustre/lnet/selftest/brw_test.c +++ b/drivers/staging/lustre/lnet/selftest/brw_test.c -@@ -488,13 +488,11 @@ brw_server_handle(struct srpc_server_rpc *rpc) +@@ -487,13 +487,11 @@ brw_server_handle(struct srpc_server_rpc *rpc) return 0; } @@ -53474,7 +53791,7 @@ index 463da07..e791ce9 100644 srpc_service_t brw_test_service; diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c -index 5709148..ccd9e0d 100644 +index a93a90d..c51dde6 100644 --- a/drivers/staging/lustre/lnet/selftest/framework.c +++ b/drivers/staging/lustre/lnet/selftest/framework.c @@ -1628,12 +1628,10 @@ static srpc_service_t sfw_services[] = { @@ -53490,21 +53807,21 @@ index 5709148..ccd9e0d 100644 extern void brw_init_test_service(void); -@@ -1675,12 +1673,10 @@ sfw_startup (void) +@@ -1675,12 +1673,10 @@ sfw_startup(void) INIT_LIST_HEAD(&sfw_data.fw_zombie_rpcs); INIT_LIST_HEAD(&sfw_data.fw_zombie_sessions); - brw_init_test_client(); brw_init_test_service(); rc = sfw_register_test(&brw_test_service, &brw_test_client); - LASSERT (rc == 0); + LASSERT(rc == 0); - ping_init_test_client(); ping_init_test_service(); rc = sfw_register_test(&ping_test_service, &ping_test_client); - LASSERT (rc == 0); + LASSERT(rc == 0); diff --git a/drivers/staging/lustre/lnet/selftest/ping_test.c b/drivers/staging/lustre/lnet/selftest/ping_test.c -index d8c0df6..5041cbb 100644 +index 644069a..83cbd26 100644 --- a/drivers/staging/lustre/lnet/selftest/ping_test.c +++ b/drivers/staging/lustre/lnet/selftest/ping_test.c @@ -211,14 +211,12 @@ ping_server_handle(struct srpc_server_rpc *rpc) @@ -53529,7 +53846,7 @@ index d8c0df6..5041cbb 100644 srpc_service_t ping_test_service; void ping_init_test_service(void) diff --git a/drivers/staging/lustre/lustre/include/lustre_dlm.h b/drivers/staging/lustre/lustre/include/lustre_dlm.h -index 83bc0a9..12ba00a 100644 +index bac9902..0225fe1 100644 --- a/drivers/staging/lustre/lustre/include/lustre_dlm.h +++ b/drivers/staging/lustre/lustre/include/lustre_dlm.h @@ -1139,7 +1139,7 @@ struct ldlm_callback_suite { @@ -53567,11 +53884,28 @@ index a4c252f..b21acac 100644 CDEBUG(D_DLMTRACE, "flags %#llx owner %llu pid %u mode %u start %llu end %llu\n", -diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c -index c539e37..743b213 100644 ---- a/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c -+++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c -@@ -237,7 +237,7 @@ static int proc_console_max_delay_cs(struct ctl_table *table, int write, +diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c +index f0ee76a..1d01af9 100644 +--- a/drivers/staging/lustre/lustre/libcfs/module.c ++++ b/drivers/staging/lustre/lustre/libcfs/module.c +@@ -380,11 +380,11 @@ out: + + + struct cfs_psdev_ops libcfs_psdev_ops = { +- libcfs_psdev_open, +- libcfs_psdev_release, +- NULL, +- NULL, +- libcfs_ioctl ++ .p_open = libcfs_psdev_open, ++ .p_close = libcfs_psdev_release, ++ .p_read = NULL, ++ .p_write = NULL, ++ .p_ioctl = libcfs_ioctl + }; + + static int init_libcfs_module(void) +@@ -631,7 +631,7 @@ static int proc_console_max_delay_cs(struct ctl_table *table, int write, loff_t *ppos) { int rc, max_delay_cs; @@ -53580,7 +53914,7 @@ index c539e37..743b213 100644 long d; dummy.data = &max_delay_cs; -@@ -270,7 +270,7 @@ static int proc_console_min_delay_cs(struct ctl_table *table, int write, +@@ -664,7 +664,7 @@ static int proc_console_min_delay_cs(struct ctl_table *table, int write, loff_t *ppos) { int rc, min_delay_cs; @@ -53589,7 +53923,7 @@ index c539e37..743b213 100644 long d; dummy.data = &min_delay_cs; -@@ -302,7 +302,7 @@ static int proc_console_backoff(struct ctl_table *table, int write, +@@ -696,7 +696,7 @@ static int proc_console_backoff(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { int rc, backoff; @@ -53598,27 +53932,6 @@ index c539e37..743b213 100644 dummy.data = &backoff; dummy.proc_handler = &proc_dointvec; -diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c -index 7dc77dd..289d03e 100644 ---- a/drivers/staging/lustre/lustre/libcfs/module.c -+++ b/drivers/staging/lustre/lustre/libcfs/module.c -@@ -313,11 +313,11 @@ out: - - - struct cfs_psdev_ops libcfs_psdev_ops = { -- libcfs_psdev_open, -- libcfs_psdev_release, -- NULL, -- NULL, -- libcfs_ioctl -+ .p_open = libcfs_psdev_open, -+ .p_close = libcfs_psdev_release, -+ .p_read = NULL, -+ .p_write = NULL, -+ .p_ioctl = libcfs_ioctl - }; - - extern int insert_proc(void); diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c index 22667db..8b703b6 100644 --- a/drivers/staging/octeon/ethernet-rx.c @@ -53656,10 +53969,10 @@ index 22667db..8b703b6 100644 #endif dev_kfree_skb_irq(skb); diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c -index 460e854..f926452 100644 +index fbbe866..2943243 100644 --- a/drivers/staging/octeon/ethernet.c +++ b/drivers/staging/octeon/ethernet.c -@@ -241,11 +241,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev) +@@ -251,11 +251,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev) * since the RX tasklet also increments it. */ #ifdef CONFIG_64BIT @@ -53701,11 +54014,61 @@ index 070cc03..6806e37 100644 struct io_req { struct list_head list; +diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c +index dbbb2f8..5232114 100644 +--- a/drivers/staging/sm750fb/sm750.c ++++ b/drivers/staging/sm750fb/sm750.c +@@ -780,6 +780,7 @@ static struct fb_ops lynxfb_ops = { + .fb_set_par = lynxfb_ops_set_par, + .fb_setcolreg = lynxfb_ops_setcolreg, + .fb_blank = lynxfb_ops_blank, ++ .fb_pan_display = lynxfb_ops_pan_display, + .fb_fillrect = cfb_fillrect, + .fb_imageblit = cfb_imageblit, + .fb_copyarea = cfb_copyarea, +@@ -827,8 +828,10 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index) + par->index = index; + output->channel = &crtc->channel; + sm750fb_set_drv(par); +- lynxfb_ops.fb_pan_display = lynxfb_ops_pan_display; + ++ pax_open_kernel(); ++ *(void **)&lynxfb_ops.fb_pan_display = lynxfb_ops_pan_display; ++ pax_close_kernel(); + + /* set current cursor variable and proc pointer, + * must be set after crtc member initialized */ +@@ -850,7 +853,9 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index) + crtc->cursor.share = share; + memset_io(crtc->cursor.vstart, 0, crtc->cursor.size); + if (!g_hwcursor) { +- lynxfb_ops.fb_cursor = NULL; ++ pax_open_kernel(); ++ *(void **)&lynxfb_ops.fb_cursor = NULL; ++ pax_close_kernel(); + crtc->cursor.disable(&crtc->cursor); + } + +@@ -858,9 +863,11 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index) + /* set info->fbops, must be set before fb_find_mode */ + if (!share->accel_off) { + /* use 2d acceleration */ +- lynxfb_ops.fb_fillrect = lynxfb_ops_fillrect; +- lynxfb_ops.fb_copyarea = lynxfb_ops_copyarea; +- lynxfb_ops.fb_imageblit = lynxfb_ops_imageblit; ++ pax_open_kernel(); ++ *(void **)&lynxfb_ops.fb_fillrect = lynxfb_ops_fillrect; ++ *(void **)&lynxfb_ops.fb_copyarea = lynxfb_ops_copyarea; ++ *(void **)&lynxfb_ops.fb_imageblit = lynxfb_ops_imageblit; ++ pax_close_kernel(); + } + info->fbops = &lynxfb_ops; + diff --git a/drivers/staging/unisys/visorchipset/visorchipset.h b/drivers/staging/unisys/visorchipset/visorchipset.h -index 98f3ba4..c6a7fce 100644 +index bd46df9..a0a5274 100644 --- a/drivers/staging/unisys/visorchipset/visorchipset.h +++ b/drivers/staging/unisys/visorchipset/visorchipset.h -@@ -171,7 +171,7 @@ struct visorchipset_busdev_notifiers { +@@ -170,7 +170,7 @@ struct visorchipset_busdev_notifiers { void (*device_resume)(ulong bus_no, ulong dev_no); int (*get_channel_info)(uuid_le type_uuid, ulong *min_size, ulong *max_size); @@ -53714,7 +54077,7 @@ index 98f3ba4..c6a7fce 100644 /* These functions live inside visorchipset, and will be called to indicate * responses to specific events (by code outside of visorchipset). -@@ -186,7 +186,7 @@ struct visorchipset_busdev_responders { +@@ -185,7 +185,7 @@ struct visorchipset_busdev_responders { void (*device_destroy)(ulong bus_no, ulong dev_no, int response); void (*device_pause)(ulong bus_no, ulong dev_no, int response); void (*device_resume)(ulong bus_no, ulong dev_no, int response); @@ -53724,10 +54087,10 @@ index 98f3ba4..c6a7fce 100644 /** Register functions (in the bus driver) to get called by visorchipset * whenever a bus or device appears for which this service partition is diff --git a/drivers/target/sbp/sbp_target.c b/drivers/target/sbp/sbp_target.c -index 9512af6..045bf5a 100644 +index 18b0f97..9c7716e 100644 --- a/drivers/target/sbp/sbp_target.c +++ b/drivers/target/sbp/sbp_target.c -@@ -62,7 +62,7 @@ static const u32 sbp_unit_directory_template[] = { +@@ -61,7 +61,7 @@ static const u32 sbp_unit_directory_template[] = { #define SESSION_MAINTENANCE_INTERVAL HZ @@ -53736,7 +54099,7 @@ index 9512af6..045bf5a 100644 static void session_maintenance_work(struct work_struct *); static int sbp_run_transaction(struct fw_card *, int, int, int, int, -@@ -444,7 +444,7 @@ static void sbp_management_request_login( +@@ -443,7 +443,7 @@ static void sbp_management_request_login( login->lun = se_lun; login->status_fifo_addr = sbp2_pointer_to_addr(&req->orb.status_fifo); login->exclusive = LOGIN_ORB_EXCLUSIVE(be32_to_cpu(req->orb.misc)); @@ -53746,10 +54109,10 @@ index 9512af6..045bf5a 100644 login->tgt_agt = sbp_target_agent_register(login); if (IS_ERR(login->tgt_agt)) { diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c -index 7faa6ae..ae6c410 100644 +index ce5f768..a4f884a 100644 --- a/drivers/target/target_core_device.c +++ b/drivers/target/target_core_device.c -@@ -1495,7 +1495,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) +@@ -1496,7 +1496,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) spin_lock_init(&dev->se_tmr_lock); spin_lock_init(&dev->qf_cmd_lock); sema_init(&dev->caw_sem, 1); @@ -53759,10 +54122,10 @@ index 7faa6ae..ae6c410 100644 spin_lock_init(&dev->t10_wwn.t10_vpd_lock); INIT_LIST_HEAD(&dev->t10_pr.registration_list); diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c -index f786de0..04b643e 100644 +index 675f2d9..1389429 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c -@@ -1168,7 +1168,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd) +@@ -1208,7 +1208,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd) * Used to determine when ORDERED commands should go from * Dormant to Active status. */ @@ -54274,7 +54637,7 @@ index 14c54e0..1efd4f2 100644 tty_port_tty_set(&ch->port, tty); mutex_lock(&ch->port.mutex); diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c -index c434376..114ce13 100644 +index 2c34c32..81d10e1 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -1644,7 +1644,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr) @@ -54296,7 +54659,7 @@ index c434376..114ce13 100644 dlci->modem_rx = 0; diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c -index cf6e0f2..4283167 100644 +index 396344c..875c1d6 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -116,7 +116,7 @@ struct n_tty_data { @@ -54308,7 +54671,7 @@ index cf6e0f2..4283167 100644 size_t line_start; /* protected by output lock */ -@@ -2547,6 +2547,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) +@@ -2572,6 +2572,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) { *ops = tty_ldisc_N_TTY; ops->owner = NULL; @@ -54318,10 +54681,10 @@ index cf6e0f2..4283167 100644 } EXPORT_SYMBOL_GPL(n_tty_inherit_ops); diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c -index e72ee62..d977ad9 100644 +index 4d5e840..a2340a6 100644 --- a/drivers/tty/pty.c +++ b/drivers/tty/pty.c -@@ -848,8 +848,10 @@ static void __init unix98_pty_init(void) +@@ -849,8 +849,10 @@ static void __init unix98_pty_init(void) panic("Couldn't register Unix98 pts driver"); /* Now create the /dev/ptmx special device */ @@ -54364,6 +54727,35 @@ index c8dd8dc..dca6cfd 100644 atomic_dec(&rp_num_ports_open); clear_bit((info->aiop * 8) + info->chan, (void *) &xmit_flags[info->board]); spin_unlock_irqrestore(&info->port.lock, flags); +diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c +index 4506e40..ac0b470 100644 +--- a/drivers/tty/serial/8250/8250_core.c ++++ b/drivers/tty/serial/8250/8250_core.c +@@ -3241,9 +3241,9 @@ static void univ8250_release_port(struct uart_port *port) + + static void univ8250_rsa_support(struct uart_ops *ops) + { +- ops->config_port = univ8250_config_port; +- ops->request_port = univ8250_request_port; +- ops->release_port = univ8250_release_port; ++ *(void **)&ops->config_port = univ8250_config_port; ++ *(void **)&ops->request_port = univ8250_request_port; ++ *(void **)&ops->release_port = univ8250_release_port; + } + + #else +@@ -3286,8 +3286,10 @@ static void __init serial8250_isa_init_ports(void) + } + + /* chain base port ops to support Remote Supervisor Adapter */ +- univ8250_port_ops = *base_ops; ++ pax_open_kernel(); ++ memcpy((void *)&univ8250_port_ops, base_ops, sizeof univ8250_port_ops); + univ8250_rsa_support(&univ8250_port_ops); ++ pax_close_kernel(); + + if (share_irqs) + irqflag = IRQF_SHARED; diff --git a/drivers/tty/serial/ioc4_serial.c b/drivers/tty/serial/ioc4_serial.c index aa28209..e08fb85 100644 --- a/drivers/tty/serial/ioc4_serial.c @@ -54539,7 +54931,7 @@ index b73889c..9f74f0a 100644 if (unlikely(line < 0 || line >= UART_NR)) return -ENXIO; diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c -index cf08876..711e0bf 100644 +index a0ae942..befa48d 100644 --- a/drivers/tty/serial/samsung.c +++ b/drivers/tty/serial/samsung.c @@ -987,11 +987,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port) @@ -54559,7 +54951,7 @@ index cf08876..711e0bf 100644 dbg("s3c24xx_serial_startup: port=%p (%08llx,%p)\n", port, (unsigned long long)port->mapbase, port->membase); -@@ -1697,10 +1702,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport, +@@ -1698,10 +1703,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport, /* setup info for port */ port->dev = &platdev->dev; @@ -54571,10 +54963,10 @@ index cf08876..711e0bf 100644 if (cfg->uart_flags & UPF_CONS_FLOW) { diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c -index 6a1055a..5ca9ad9 100644 +index 0b7bb12..ebe191a 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c -@@ -1377,7 +1377,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) +@@ -1376,7 +1376,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) state = drv->state + tty->index; port = &state->port; spin_lock_irq(&port->lock); @@ -54583,7 +54975,7 @@ index 6a1055a..5ca9ad9 100644 spin_unlock_irq(&port->lock); return; } -@@ -1387,7 +1387,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) +@@ -1386,7 +1386,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) pr_debug("uart_close(%d) called\n", uport ? uport->line : -1); @@ -54592,7 +54984,7 @@ index 6a1055a..5ca9ad9 100644 return; /* -@@ -1511,7 +1511,7 @@ static void uart_hangup(struct tty_struct *tty) +@@ -1510,7 +1510,7 @@ static void uart_hangup(struct tty_struct *tty) uart_flush_buffer(tty); uart_shutdown(tty, state); spin_lock_irqsave(&port->lock, flags); @@ -54601,7 +54993,7 @@ index 6a1055a..5ca9ad9 100644 clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags); spin_unlock_irqrestore(&port->lock, flags); tty_port_tty_set(port, NULL); -@@ -1598,7 +1598,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp) +@@ -1597,7 +1597,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp) pr_debug("uart_open(%d) called\n", line); spin_lock_irq(&port->lock); @@ -54610,6 +55002,26 @@ index 6a1055a..5ca9ad9 100644 spin_unlock_irq(&port->lock); /* +diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c +index b1c6bd3..5f038e2 100644 +--- a/drivers/tty/serial/uartlite.c ++++ b/drivers/tty/serial/uartlite.c +@@ -341,13 +341,13 @@ static int ulite_request_port(struct uart_port *port) + return -EBUSY; + } + +- port->private_data = &uartlite_be; ++ port->private_data = (void *)&uartlite_be; + ret = uart_in32(ULITE_CONTROL, port); + uart_out32(ULITE_CONTROL_RST_TX, ULITE_CONTROL, port); + ret = uart_in32(ULITE_STATUS, port); + /* Endianess detection */ + if ((ret & ULITE_STATUS_TXEMPTY) != ULITE_STATUS_TXEMPTY) +- port->private_data = &uartlite_le; ++ port->private_data = (void *)&uartlite_le; + + return 0; + } diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c index b799170..87dafd5 100644 --- a/drivers/tty/synclink.c @@ -54996,10 +55408,10 @@ index c3f9091..abe4601 100644 if (!retval) port->flags |= ASYNC_NORMAL_ACTIVE; diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c -index 259a4d5..9b0c9e7 100644 +index 843f2cd..7d530a6 100644 --- a/drivers/tty/sysrq.c +++ b/drivers/tty/sysrq.c -@@ -1085,7 +1085,7 @@ EXPORT_SYMBOL(unregister_sysrq_key); +@@ -1086,7 +1086,7 @@ EXPORT_SYMBOL(unregister_sysrq_key); static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { @@ -55009,10 +55421,10 @@ index 259a4d5..9b0c9e7 100644 if (get_user(c, buf)) diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c -index 2bb4dfc..a7f6e86 100644 +index e569546..fbce20c 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c -@@ -3503,7 +3503,7 @@ EXPORT_SYMBOL(tty_devnum); +@@ -3509,7 +3509,7 @@ EXPORT_SYMBOL(tty_devnum); void tty_default_fops(struct file_operations *fops) { @@ -55190,7 +55602,7 @@ index 8a89f6e..50b32af 100644 ret = -EPERM; goto reterr; diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c -index 6276f13..84f2449 100644 +index 65bf067..b3b2e13 100644 --- a/drivers/uio/uio.c +++ b/drivers/uio/uio.c @@ -25,6 +25,7 @@ @@ -55398,7 +55810,7 @@ index 2a3bbdf..91d72cf 100644 file->f_version = event_count; return POLLIN | POLLRDNORM; diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c -index 1163553..f292679 100644 +index 4b0448c..fc84bec 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c @@ -187,7 +187,7 @@ static ssize_t usbdev_read(struct file *file, char __user *buf, size_t nbytes, @@ -55527,10 +55939,10 @@ index d269738..7340cd7 100644 static DEVICE_ATTR_RO(urbnum); diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c -index b1fb9ae..4224885 100644 +index 8d5b2f4..3896940 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c -@@ -431,7 +431,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, +@@ -447,7 +447,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, set_dev_node(&dev->dev, dev_to_node(bus->controller)); dev->state = USB_STATE_ATTACHED; dev->lpm_disable_count = 1; @@ -55580,8 +55992,21 @@ index 8cfc319..4868255 100644 return 0; } +diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c +index 0495c94..289e201 100644 +--- a/drivers/usb/gadget/configfs.c ++++ b/drivers/usb/gadget/configfs.c +@@ -571,7 +571,7 @@ static struct config_group *function_make( + if (IS_ERR(fi)) + return ERR_CAST(fi); + +- ret = config_item_set_name(&fi->group.cg_item, name); ++ ret = config_item_set_name(&fi->group.cg_item, "%s", name); + if (ret) { + usb_put_function_instance(fi); + return ERR_PTR(ret); diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c -index 9719abf..789d5d9 100644 +index 7856b33..8b7fe09 100644 --- a/drivers/usb/gadget/function/f_uac1.c +++ b/drivers/usb/gadget/function/f_uac1.c @@ -14,6 +14,7 @@ @@ -55593,10 +56018,10 @@ index 9719abf..789d5d9 100644 #include "u_uac1.h" diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c -index 491082a..dfd7d17 100644 +index 7ee05793..2e31e99 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c -@@ -729,9 +729,9 @@ static int gs_open(struct tty_struct *tty, struct file *file) +@@ -732,9 +732,9 @@ static int gs_open(struct tty_struct *tty, struct file *file) spin_lock_irq(&port->port_lock); /* already open? Great. */ @@ -55608,7 +56033,7 @@ index 491082a..dfd7d17 100644 /* currently opening/closing? wait ... */ } else if (port->openclose) { -@@ -790,7 +790,7 @@ static int gs_open(struct tty_struct *tty, struct file *file) +@@ -793,7 +793,7 @@ static int gs_open(struct tty_struct *tty, struct file *file) tty->driver_data = port; port->port.tty = tty; @@ -55617,7 +56042,7 @@ index 491082a..dfd7d17 100644 port->openclose = false; /* if connected, start the I/O stream */ -@@ -832,11 +832,11 @@ static void gs_close(struct tty_struct *tty, struct file *file) +@@ -835,11 +835,11 @@ static void gs_close(struct tty_struct *tty, struct file *file) spin_lock_irq(&port->port_lock); @@ -55632,7 +56057,7 @@ index 491082a..dfd7d17 100644 goto exit; } -@@ -846,7 +846,7 @@ static void gs_close(struct tty_struct *tty, struct file *file) +@@ -849,7 +849,7 @@ static void gs_close(struct tty_struct *tty, struct file *file) * and sleep if necessary */ port->openclose = true; @@ -55641,7 +56066,7 @@ index 491082a..dfd7d17 100644 gser = port->port_usb; if (gser && gser->disconnect) -@@ -1062,7 +1062,7 @@ static int gs_closed(struct gs_port *port) +@@ -1065,7 +1065,7 @@ static int gs_closed(struct gs_port *port) int cond; spin_lock_irq(&port->port_lock); @@ -55650,7 +56075,7 @@ index 491082a..dfd7d17 100644 spin_unlock_irq(&port->port_lock); return cond; } -@@ -1205,7 +1205,7 @@ int gserial_connect(struct gserial *gser, u8 port_num) +@@ -1208,7 +1208,7 @@ int gserial_connect(struct gserial *gser, u8 port_num) /* if it's already open, start I/O ... and notify the serial * protocol about open/close status (connect/disconnect). */ @@ -55659,7 +56084,7 @@ index 491082a..dfd7d17 100644 pr_debug("gserial_connect: start ttyGS%d\n", port->port_num); gs_start_io(port); if (gser->connect) -@@ -1252,7 +1252,7 @@ void gserial_disconnect(struct gserial *gser) +@@ -1255,7 +1255,7 @@ void gserial_disconnect(struct gserial *gser) port->port_usb = NULL; gser->ioport = NULL; @@ -55668,7 +56093,7 @@ index 491082a..dfd7d17 100644 wake_up_interruptible(&port->drain_wait); if (port->port.tty) tty_hangup(port->port.tty); -@@ -1268,7 +1268,7 @@ void gserial_disconnect(struct gserial *gser) +@@ -1271,7 +1271,7 @@ void gserial_disconnect(struct gserial *gser) /* finally, free any unused/unusable I/O buffers */ spin_lock_irqsave(&port->port_lock, flags); @@ -55690,7 +56115,7 @@ index c78c841..48fd281 100644 #include "u_uac1.h" diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c -index 7354d01..299478e 100644 +index 6920844..480bb7e 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -772,7 +772,7 @@ static struct urb *request_single_step_set_feature_urb( @@ -55742,7 +56167,7 @@ index 1db0626..4948782 100644 } diff --git a/drivers/usb/misc/appledisplay.c b/drivers/usb/misc/appledisplay.c -index b3d245e..99549ed 100644 +index a0a3827..d7ec10b 100644 --- a/drivers/usb/misc/appledisplay.c +++ b/drivers/usb/misc/appledisplay.c @@ -84,7 +84,7 @@ struct appledisplay { @@ -55830,7 +56255,7 @@ index a863a98..d272795 100644 /* * NOTE: diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c -index 11f6f61..1087910 100644 +index e9ef1ec..c3a0b04 100644 --- a/drivers/usb/usbip/vhci_hcd.c +++ b/drivers/usb/usbip/vhci_hcd.c @@ -440,7 +440,7 @@ static void vhci_tx_urb(struct urb *urb) @@ -55909,10 +56334,10 @@ index 69af4fd..da390d7 100644 /* Return the xfer's ID. */ diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c -index 837d177..170724af 100644 +index e1278fe..7fdeac4 100644 --- a/drivers/vfio/vfio.c +++ b/drivers/vfio/vfio.c -@@ -518,7 +518,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev) +@@ -517,7 +517,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev) return 0; /* TODO Prevent device auto probing */ @@ -56021,7 +56446,7 @@ index 1b0b233..6f34c2c 100644 err = -ENOSPC; } diff --git a/drivers/video/fbdev/aty/aty128fb.c b/drivers/video/fbdev/aty/aty128fb.c -index aedf2fb..47c9aca 100644 +index 0156954..c07d4e0 100644 --- a/drivers/video/fbdev/aty/aty128fb.c +++ b/drivers/video/fbdev/aty/aty128fb.c @@ -149,7 +149,7 @@ enum { @@ -56115,7 +56540,7 @@ index 0705d88..d9429bf 100644 data = (__u32) (unsigned long) fix->smem_start; err |= put_user(data, &fix32->smem_start); diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c -index 4254336..282567e 100644 +index 807ee22..7814cd6 100644 --- a/drivers/video/fbdev/hyperv_fb.c +++ b/drivers/video/fbdev/hyperv_fb.c @@ -240,7 +240,7 @@ static uint screen_fb_size; @@ -56221,10 +56646,10 @@ index fe92eed..106e085 100644 outreg(draw, GDC_REG_DRAW_BASE, 0); outreg(draw, GDC_REG_MODE_MISC, 0x8000); diff --git a/drivers/video/fbdev/nvidia/nvidia.c b/drivers/video/fbdev/nvidia/nvidia.c -index def0412..fed6529 100644 +index 4273c6e..b413013 100644 --- a/drivers/video/fbdev/nvidia/nvidia.c +++ b/drivers/video/fbdev/nvidia/nvidia.c -@@ -669,19 +669,23 @@ static int nvidiafb_set_par(struct fb_info *info) +@@ -665,19 +665,23 @@ static int nvidiafb_set_par(struct fb_info *info) info->fix.line_length = (info->var.xres_virtual * info->var.bits_per_pixel) >> 3; if (info->var.accel_flags) { @@ -56256,7 +56681,7 @@ index def0412..fed6529 100644 info->pixmap.scan_align = 1; info->flags |= FBINFO_HWACCEL_DISABLED; info->flags &= ~FBINFO_READS_FAST; -@@ -1173,8 +1177,11 @@ static int nvidia_set_fbinfo(struct fb_info *info) +@@ -1169,8 +1173,11 @@ static int nvidia_set_fbinfo(struct fb_info *info) info->pixmap.size = 8 * 1024; info->pixmap.flags = FB_PIXMAP_SYSTEM; @@ -56271,7 +56696,7 @@ index def0412..fed6529 100644 info->var.accel_flags = (!noaccel); diff --git a/drivers/video/fbdev/omap2/dss/display.c b/drivers/video/fbdev/omap2/dss/display.c -index 2412a0d..294215b 100644 +index ef5b902..47cf7f5 100644 --- a/drivers/video/fbdev/omap2/dss/display.c +++ b/drivers/video/fbdev/omap2/dss/display.c @@ -161,12 +161,14 @@ int omapdss_register_display(struct omap_dss_device *dssdev) @@ -56310,7 +56735,7 @@ index 83433cb..71e9b98 100644 FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA; break; diff --git a/drivers/video/fbdev/sh_mobile_lcdcfb.c b/drivers/video/fbdev/sh_mobile_lcdcfb.c -index d3013cd..95b8285 100644 +index 82c0a8c..42499a1 100644 --- a/drivers/video/fbdev/sh_mobile_lcdcfb.c +++ b/drivers/video/fbdev/sh_mobile_lcdcfb.c @@ -439,9 +439,9 @@ static unsigned long lcdc_sys_read_data(void *handle) @@ -59415,10 +59840,10 @@ index 3c14e43..2630570 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/xen/events/events_base.c b/drivers/xen/events/events_base.c -index 2b8553b..e1a482b 100644 +index 3838795..0d48d61 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c -@@ -1564,7 +1564,7 @@ void xen_irq_resume(void) +@@ -1568,7 +1568,7 @@ void xen_irq_resume(void) restore_pirqs(); } @@ -59427,7 +59852,7 @@ index 2b8553b..e1a482b 100644 .name = "xen-dyn", .irq_disable = disable_dynirq, -@@ -1578,7 +1578,7 @@ static struct irq_chip xen_dynamic_chip __read_mostly = { +@@ -1582,7 +1582,7 @@ static struct irq_chip xen_dynamic_chip __read_mostly = { .irq_retrigger = retrigger_dynirq, }; @@ -59436,7 +59861,7 @@ index 2b8553b..e1a482b 100644 .name = "xen-pirq", .irq_startup = startup_pirq, -@@ -1598,7 +1598,7 @@ static struct irq_chip xen_pirq_chip __read_mostly = { +@@ -1602,7 +1602,7 @@ static struct irq_chip xen_pirq_chip __read_mostly = { .irq_retrigger = retrigger_dynirq, }; @@ -59445,6 +59870,21 @@ index 2b8553b..e1a482b 100644 .name = "xen-percpu", .irq_disable = disable_dynirq, +diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c +index 00f40f0..e3c0b15 100644 +--- a/drivers/xen/evtchn.c ++++ b/drivers/xen/evtchn.c +@@ -201,8 +201,8 @@ static ssize_t evtchn_read(struct file *file, char __user *buf, + + /* Byte lengths of two chunks. Chunk split (if any) is at ring wrap. */ + if (((c ^ p) & EVTCHN_RING_SIZE) != 0) { +- bytes1 = (EVTCHN_RING_SIZE - EVTCHN_RING_MASK(c)) * +- sizeof(evtchn_port_t); ++ bytes1 = EVTCHN_RING_SIZE - EVTCHN_RING_MASK(c); ++ bytes1 *= sizeof(evtchn_port_t); + bytes2 = EVTCHN_RING_MASK(p) * sizeof(evtchn_port_t); + } else { + bytes1 = (p - c) * sizeof(evtchn_port_t); diff --git a/drivers/xen/xenfs/xenstored.c b/drivers/xen/xenfs/xenstored.c index fef20db..d28b1ab 100644 --- a/drivers/xen/xenfs/xenstored.c @@ -59463,10 +59903,10 @@ index fef20db..d28b1ab 100644 return -ENOMEM; return 0; diff --git a/firmware/Makefile b/firmware/Makefile -index e297e1b..6900c31 100644 +index e297e1b..aeb0982 100644 --- a/firmware/Makefile +++ b/firmware/Makefile -@@ -35,6 +35,7 @@ fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \ +@@ -35,9 +35,11 @@ fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \ bnx2x/bnx2x-e1h-6.2.9.0.fw \ bnx2x/bnx2x-e2-6.2.9.0.fw fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \ @@ -59474,12 +59914,19 @@ index e297e1b..6900c31 100644 bnx2/bnx2-rv2p-09-6.0.17.fw \ bnx2/bnx2-rv2p-09ax-6.0.17.fw \ bnx2/bnx2-mips-06-6.2.1.fw \ ++ bnx2/bnx2-mips-06-6.2.3.fw \ + bnx2/bnx2-rv2p-06-6.0.15.fw + fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin + fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \ diff --git a/firmware/WHENCE b/firmware/WHENCE -index 0c4d96d..7563083 100644 +index 0c4d96d..b17700f 100644 --- a/firmware/WHENCE +++ b/firmware/WHENCE -@@ -655,19 +655,20 @@ Driver: BNX2 - Broadcom NetXtremeII +@@ -653,21 +653,23 @@ Found in hex form in kernel source. + Driver: BNX2 - Broadcom NetXtremeII + File: bnx2/bnx2-mips-06-6.2.1.fw ++File: bnx2/bnx2-mips-06-6.2.3.fw File: bnx2/bnx2-rv2p-06-6.0.15.fw File: bnx2/bnx2-mips-09-6.2.1a.fw +File: bnx2/bnx2-mips-09-6.2.1b.fw @@ -59508,6 +59955,5816 @@ index 0c4d96d..7563083 100644 -------------------------------------------------------------------------- +diff --git a/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex b/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex +new file mode 100644 +index 0000000..da72bf1 +--- /dev/null ++++ b/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex +@@ -0,0 +1,5804 @@ ++:10000000080001180800000000004A68000000C84D ++:1000100000000000000000000000000008004A6826 ++:100020000000001400004B30080000A00800000091 ++:100030000000569400004B44080058200000008443 ++:100040000000A1D808005694000001580000A25CEE ++:100050000800321008000000000072F00000A3B495 ++:10006000000000000000000000000000080072F026 ++:1000700000000024000116A40800049008000400F9 ++:10008000000017D4000116C80000000000000000A6 ++:100090000000000000000000000000000000000060 ++:1000A000080000A80800000000003BFC00012E9C96 ++:1000B0000000000000000000000000000000000040 ++:1000C00000000000000000000A00004600000000E0 ++:1000D000000000000000000D636F6D362E322E33DD ++:1000E0000000000006020302000000000000000300 ++:1000F000000000C800000032000000030000000003 ++:1001000000000000000000000000000000000000EF ++:1001100000000010000001360000EA600000000549 ++:1001200000000000000000000000000000000008C7 ++:1001300000000000000000000000000000000000BF ++:1001400000000000000000000000000000000000AF ++:10015000000000000000000000000000000000009F ++:10016000000000020000000000000000000000008D ++:10017000000000000000000000000000000000007F ++:10018000000000000000000000000010000000005F ++:10019000000000000000000000000000000000005F ++:1001A000000000000000000000000000000000004F ++:1001B000000000000000000000000000000000003F ++:1001C000000000000000000000000000000000002F ++:1001D000000000000000000000000000000000001F ++:1001E0000000000010000003000000000000000DEF ++:1001F0000000000D3C02080024424AA03C03080015 ++:1002000024634B9CAC4000000043202B1480FFFD76 ++:10021000244200043C1D080037BD7FFC03A0F021F0 ++:100220003C100800261001183C1C0800279C4AA01E ++:100230000E000168000000000000000D27470100CB ++:1002400090E3000B2402001A94E5000814620028D1 ++:10025000000020218CE200003C0308008C63004475 ++:1002600094E60014000211C20002104030A4000203 ++:10027000005A10212463000130A50004A446008028 ++:100280003C010800AC23004410A000190004202BFE ++:100290008F4202B804410008240400013C02080017 ++:1002A0008C420060244200013C010800AC22006046 ++:1002B00003E00008008010218CE2002094E3001687 ++:1002C00000002021AF4202808CE20004A743028498 ++:1002D000AF4202883C021000AF4202B83C02080064 ++:1002E0008C42005C244200013C010800AC22005C0E ++:1002F00003E00008008010212747010090E3000B75 ++:100300002402000394E50008146200280000202164 ++:100310008CE200003C0308008C63004494E6001467 ++:10032000000211C20002104030A40002005A102145 ++:100330002463000130A50004A44600803C010800AD ++:10034000AC23004410A000190004202B8F4202B8F7 ++:1003500004410008240400013C0208008C420060B3 ++:10036000244200013C010800AC22006003E00008C8 ++:10037000008010218CE2002094E300160000202170 ++:10038000AF4202808CE20004A7430284AF4202889D ++:100390003C021000AF4202B83C0208008C42005CF4 ++:1003A000244200013C010800AC22005C03E000088C ++:1003B000008010218F4301002402010050620003DD ++:1003C000000311C20000000D000311C20002104022 ++:1003D000005A1021A440008003E000080000102112 ++:1003E0009362000003E00008AF80000003E0000813 ++:1003F0000000102103E00008000010212402010089 ++:1004000014820008000000003C0208008C4200FC3E ++:10041000244200013C010800AC2200FC0A0000DD7F ++:1004200030A200203C0208008C42008424420001DB ++:100430003C010800AC22008430A2002010400008DB ++:1004400030A300103C0208008C4201082442000145 ++:100450003C010800AC22010803E000080000000095 ++:1004600010600008000000003C0208008C420104FB ++:10047000244200013C010800AC22010403E0000812 ++:10048000000000003C0208008C42010024420001F0 ++:100490003C010800AC22010003E00008000000005D ++:1004A00027BDFFE8AFBF0010274401009483000878 ++:1004B000306200041040001B306600028F4202B818 ++:1004C00004410008240500013C0208008C42006041 ++:1004D000244200013C010800AC2200600A0001290E ++:1004E0008FBF00108C82002094830016000028210A ++:1004F000AF4202808C820004A7430284AF4202888C ++:100500003C021000AF4202B83C0208008C42005C82 ++:10051000244200013C010800AC22005C0A000129D1 ++:100520008FBF001010C00006006028218F4401001A ++:100530000E0000CD000000000A0001282405000183 ++:100540008F8200088F4301045043000700002821D8 ++:100550008F4401000E0000CD000000008F42010416 ++:10056000AF820008000028218FBF001000A01021DA ++:1005700003E0000827BD001827BDFFE8AFBF001447 ++:10058000AFB00010974201083043700024022000F1 ++:100590001062000B286220011440002F000010217F ++:1005A00024024000106200250000000024026000C8 ++:1005B00010620026000010210A0001658FBF0014A0 ++:1005C00027500100920200091040001A2403000184 ++:1005D0003C0208008C420020104000160000182148 ++:1005E0000E00049300000000960300083C0608007B ++:1005F00094C64B5E8E0400188F8200209605000C76 ++:1006000000031C0000661825AC440000AC45000443 ++:1006100024040001AC400008AC40000CAC400010C9 ++:10062000AC400014AC4000180E0004B8AC43001CF1 ++:10063000000018210A000164006010210E0003254B ++:10064000000000000A000164000010210E000EE905 ++:1006500000000000000010218FBF00148FB00010B8 ++:1006600003E0000827BD001827BDFFE0AFB2001867 ++:100670003C036010AFBF001CAFB10014AFB000105E ++:100680008C6450002402FF7F3C1A800000822024EA ++:100690003484380C24020037AC6450003C1208004B ++:1006A00026524AD8AF42000824020C80AF420024F0 ++:1006B0003C1B80083C06080024C60324024010218D ++:1006C0002404001D2484FFFFAC4600000481FFFDCC ++:1006D000244200043C020800244204B03C0108000B ++:1006E000AC224AE03C020800244202303C010800EF ++:1006F000AC224AE43C020800244201743C03080096 ++:100700002463032C3C040800248403D83C0508001F ++:1007100024A538F03C010800AC224B403C02080004 ++:10072000244202EC3C010800AC264B243C010800AA ++:10073000AC254B343C010800AC234B3C3C01080089 ++:10074000AC244B443C010800AC224B483C0108005F ++:10075000AC234ADC3C010800AC204AE83C0108001C ++:10076000AC204AEC3C010800AC204AF03C010800F7 ++:10077000AC204AF43C010800AC204AF83C010800D7 ++:10078000AC204AFC3C010800AC204B003C010800B6 ++:10079000AC244B043C010800AC204B083C01080091 ++:1007A000AC204B0C3C010800AC204B103C01080075 ++:1007B000AC204B143C010800AC204B183C01080055 ++:1007C000AC264B1C3C010800AC264B203C01080029 ++:1007D000AC254B303C010800AC234B380E000623FF ++:1007E000000000003C028000344200708C42000097 ++:1007F000AF8200143C0308008C6300208F82000449 ++:10080000104300043C0280000E00045BAF83000430 ++:100810003C028000344600703C0308008C6300A05A ++:100820003C0208008C4200A4104300048F84001492 ++:100830003C010800AC2300A4A743009E8CCA000022 ++:100840003C0308008C6300BC3C0208008C4200B8EA ++:100850000144202300641821000040210064202B63 ++:1008600000481021004410213C010800AC2300BCCA ++:100870003C010800AC2200B88F5100003222000772 ++:100880001040FFDCAF8A00148CC600003C05080055 ++:100890008CA500BC3C0408008C8400B800CA30233E ++:1008A00000A628210000102100A6302B0082202164 ++:1008B00000862021322700013C010800AC2500BC45 ++:1008C0003C010800AC2400B810E0001F32220002F6 ++:1008D0008F420100AF4200208F420104AF4200A8C6 ++:1008E0009342010B0E0000C6305000FF2E02001E86 ++:1008F00054400004001010800E0000C90A000213CA ++:1009000000000000005210218C4200000040F80955 ++:1009100000000000104000053C0240008F4301042D ++:100920003C026020AC4300143C024000AF4201385E ++:100930003C0208008C420034244200013C010800C3 ++:10094000AC220034322200021040000E3222000499 ++:100950008F4201400E0000C6AF4200200E000295FB ++:10096000000000003C024000AF4201783C02080059 ++:100970008C420038244200013C010800AC220038BF ++:10098000322200041040FF983C0280008F42018018 ++:100990000E0000C6AF4200208F43018024020F00EA ++:1009A00014620005000000008F420188A742009CED ++:1009B0000A0002483C0240009362000024030050F9 ++:1009C000304200FF144300083C0240000E00027B4E ++:1009D00000000000544000043C0240000E000D7571 ++:1009E000000000003C024000AF4201B83C02080099 ++:1009F0008C42003C244200013C010800AC22003C37 ++:100A00000A0001C83C0280003C0290003442000110 ++:100A100000822025AF4400208F4200200440FFFECA ++:100A20000000000003E00008000000003C0280001D ++:100A3000344200010082202503E00008AF4400207A ++:100A400027BDFFE0AFB10014AFB0001000808821D7 ++:100A5000AFBF00180E00025030B000FF9362007D5F ++:100A60000220202102028025A370007D8F70007477 ++:100A70003C0280000E000259020280241600000988 ++:100A80008FBF00188F4201F80440FFFE24020002CD ++:100A9000AF5101C0A34201C43C021000AF4201F8B3 ++:100AA0008FBF00188FB100148FB0001003E0000852 ++:100AB00027BD002027BDFFE8AFBF0010974201848B ++:100AC0008F440188304202001040000500002821B8 ++:100AD0000E000FAA000000000A00028D240500018C ++:100AE0003C02FF0004800005008218243C02040040 ++:100AF000506200019362003E240500018FBF001088 ++:100B000000A0102103E0000827BD0018A360002208 ++:100B10008F4401400A00025E2405000127BDFFE862 ++:100B2000AFBF0014AFB0001093620000304400FF6C ++:100B300038830020388200300003182B0002102B6D ++:100B40000062182410600003240200501482008008 ++:100B50008FBF001493620005304200011040007CFA ++:100B60008FBF0014934201482443FFFF2C6200050D ++:100B7000104000788FB00010000310803C03080084 ++:100B800024634A68004310218C42000000400008A2 ++:100B9000000000000E0002508F4401408F70000CD6 ++:100BA0008F4201441602000224020001AF62000CD1 ++:100BB0000E0002598F4401408F420144145000043A ++:100BC0008FBF00148FB000100A000F2027BD00183F ++:100BD0008F62000C0A0003040000000097620010FE ++:100BE0008F4301443042FFFF1462001A00000000EE ++:100BF00024020001A76200108F4202380443001053 ++:100C00008F4201403C02003F3446F0003C0560004A ++:100C10003C04FFC08CA22BBC0044182400461024C6 ++:100C20000002130200031D82106200390000000060 ++:100C30008F4202380440FFF7000000008F4201405D ++:100C4000AF4202003C021000AF4202380A00032209 ++:100C50008FBF0014976200100A0003040000000018 ++:100C60000E0002508F440140976200128F430144EE ++:100C70003050FFFF1603000224020001A762001299 ++:100C80000E0002598F4401408F42014416020004B5 ++:100C90008FBF00148FB000100A00029127BD00180A ++:100CA000976200120A00030400000000976200141B ++:100CB0008F4301443042FFFF14620006240200010A ++:100CC0008FBF00148FB00010A76200140A00124AF0 ++:100CD00027BD0018976200141440001D8FBF001438 ++:100CE0000A00031C00000000976200168F430144B5 ++:100CF0003042FFFF1462000B240200018FBF00147A ++:100D00008FB00010A76200160A000B1227BD001852 ++:100D10009742007824420004A76200100A000322D0 ++:100D20008FBF001497620016240300013042FFFFBA ++:100D3000144300078FBF00143C0208008C4200706F ++:100D4000244200013C010800AC2200708FBF001457 ++:100D50008FB0001003E0000827BD001827BDFFE892 ++:100D6000AFBF0014AFB000108F50010093620000BD ++:100D700093430109304400FF2402001F106200A5C4 ++:100D80002862002010400018240200382862000A5F ++:100D90001040000C2402000B286200081040002CB8 ++:100DA00000000000046000E52862000214400028F2 ++:100DB00024020006106200268FBF00140A00041FE0 ++:100DC0008FB000101062005E2862000B144000DC3F ++:100DD0008FBF00142402000E106200738FB0001049 ++:100DE0000A00041F00000000106200C028620039E1 ++:100DF0001040000A2402008024020036106200CA5B ++:100E000028620037104000B424020035106200C18F ++:100E10008FBF00140A00041F8FB000101062002B57 ++:100E20002862008110400006240200C82402003914 ++:100E3000106200B48FBF00140A00041F8FB00010AE ++:100E4000106200998FBF00140A00041F8FB00010B9 ++:100E50003C0208008C420020104000B98FBF0014F3 ++:100E60000E000493000000008F4201008F830020D9 ++:100E70009745010C97460108AC6200008F420104BF ++:100E80003C04080094844B5E00052C00AC62000416 ++:100E90008F4201180006340000C43025AC620008FF ++:100EA0008F42011C24040001AC62000C9342010A31 ++:100EB00000A22825AC650010AC600014AC600018DE ++:100EC000AC66001C0A0003F58FBF00143C0208004A ++:100ED0008C4200201040009A8FBF00140E00049333 ++:100EE00000000000974401083C03080094634B5E37 ++:100EF0009745010C000422029746010E8F820020C4 ++:100F0000000426000083202500052C003C030080FF ++:100F100000A6282500832025AC400000AC4000043A ++:100F2000AC400008AC40000CAC450010AC400014D4 ++:100F3000AC400018AC44001C0A0003F42404000177 ++:100F40009742010C14400015000000009362000558 ++:100F50003042001014400011000000000E0002504A ++:100F6000020020219362000502002021344200107B ++:100F70000E000259A36200059362000024030020C2 ++:100F8000304200FF1043006D020020218FBF00148B ++:100F90008FB000100A000FC027BD00180000000D20 ++:100FA0000A00041E8FBF00143C0208008C4200207F ++:100FB000104000638FBF00140E0004930000000077 ++:100FC0008F4201048F8300209744010C3C050800E8 ++:100FD00094A54B5EAC6200009762002C00042400D4 ++:100FE0003042FFFF008220253C02400E00A228254F ++:100FF000AC640004AC600008AC60000CAC60001095 ++:10100000AC600014AC600018AC65001C0A0003F46E ++:10101000240400010E00025002002021A7600008F5 ++:101020000E00025902002021020020210E00025E63 ++:10103000240500013C0208008C42002010400040C2 ++:101040008FBF00140E000493000000009742010CB3 ++:101050008F8300203C05080094A54B5E000214001D ++:10106000AC700000AC620004AC6000088F64004CFF ++:101070003C02401F00A22825AC64000C8F62005087 ++:1010800024040001AC6200108F620054AC620014B2 ++:10109000AC600018AC65001C8FBF00148FB000104E ++:1010A0000A0004B827BD0018240200205082002541 ++:1010B0008FB000100E000F0A020020211040002007 ++:1010C0008FBF0014020020218FB0001000002821E3 ++:1010D0000A00025E27BD0018020020218FBF001405 ++:1010E0008FB000100A00058027BD00189745010C3D ++:1010F000020020218FBF00148FB000100A0005A04D ++:1011000027BD0018020020218FB000100A0005C57D ++:1011100027BD00189345010D020020218FB000105B ++:101120000A00060F27BD0018020020218FBF0014FF ++:101130008FB000100A0005EB27BD00188FBF001408 ++:101140008FB0001003E0000827BD00188F4202781E ++:101150000440FFFE2402000234840080AF440240B9 ++:10116000A34202443C02100003E00008AF420278B0 ++:101170003C04080094844B6A3C0208008C424B7487 ++:101180003083FFFF000318C000431021AF42003C32 ++:101190003C0208008C424B70AF4200383C020050C9 ++:1011A00034420008AF4200300000000000000000A0 ++:1011B000000000008F420000304200201040FFFD80 ++:1011C000000000008F4204003C010800AC224B608C ++:1011D0008F4204043C010800AC224B643C02002016 ++:1011E000AF420030000000003C02080094424B680F ++:1011F0003C03080094634B6C3C05080094A54B6EBF ++:1012000024840001004310213083FFFF3C010800CB ++:10121000A4224B683C010800A4244B6A1465000317 ++:10122000000000003C010800A4204B6A03E0000815 ++:10123000000000003C05000A27BDFFE80345282107 ++:101240003C04080024844B50AFBF00100E00051D65 ++:101250002406000A3C02080094424B523C0308005A ++:1012600094634B6E3042000F244200030043180485 ++:1012700024027FFF0043102B10400002AF83001CAC ++:101280000000000D0E00042A000000003C020800CF ++:1012900094424B5A8FBF001027BD001803E000088E ++:1012A000A74200A23C02000A034210219443000618 ++:1012B0003C02080094424B5A3C010800A4234B56C0 ++:1012C000004310238F83001C00021400000214034B ++:1012D0000043102B03E000083842000127BDFFE85F ++:1012E000AFBF00103C02000A0342102194420006E6 ++:1012F0003C010800A4224B560E00047700000000B9 ++:101300005440FFF93C02000A8FBF001003E00008C0 ++:1013100027BD001827BDFFE8AFBF00100E000477FF ++:101320000000000010400003000000000E000485D3 ++:10133000000000003C0208008C424B608FBF001090 ++:1013400027430400AF4200383C0208008C424B6443 ++:1013500027BD0018AF830020AF42003C3C020005CF ++:10136000AF42003003E00008AF8000188F82001801 ++:101370003C0300060002114000431025AF4200303C ++:101380000000000000000000000000008F4200008C ++:10139000304200101040FFFD27420400AF820020C1 ++:1013A00003E00008AF8000183C0608008CC64B64C0 ++:1013B0008F8500188F8300203C02080094424B5A0E ++:1013C00027BDFFE024A50001246300202442000182 ++:1013D00024C70020AFB10014AFB00010AFBF001899 ++:1013E000AF850018AF8300203C010800A4224B5AAF ++:1013F000309000FF3C010800AC274B6404C100089A ++:101400000000882104E00006000000003C02080003 ++:101410008C424B60244200013C010800AC224B602E ++:101420003C02080094424B5A3C03080094634B680A ++:101430000010202B004310262C42000100441025F0 ++:10144000144000048F830018240200101462000F5F ++:10145000000000000E0004A9241100013C03080054 ++:1014600094634B5A3C02080094424B681462000398 ++:10147000000000000E00042A000000001600000317 ++:10148000000000000E000493000000003C03080070 ++:1014900094634B5E3C02080094424B5C2463000161 ++:1014A0003064FFFF3C010800A4234B5E148200035C ++:1014B000000000003C010800A4204B5E1200000662 ++:1014C000000000003C02080094424B5AA74200A2D0 ++:1014D0000A00050B022010210E0004770000000016 ++:1014E00010400004022010210E00048500000000BE ++:1014F000022010218FBF00188FB100148FB0001090 ++:1015000003E0000827BD00203084FFFF30A5FFFF67 ++:101510000000182110800007000000003082000148 ++:101520001040000200042042006518210A00051343 ++:101530000005284003E000080060102110C00006EC ++:1015400024C6FFFF8CA2000024A50004AC8200008A ++:101550000A00051D2484000403E0000800000000C8 ++:1015600010A0000824A3FFFFAC86000000000000CC ++:10157000000000002402FFFF2463FFFF1462FFFA53 ++:101580002484000403E0000800000000240200019D ++:10159000AF62000CA7620010A7620012A7620014DD ++:1015A00003E00008A76200163082007F034210218A ++:1015B0003C08000E004818213C0208008C42002024 ++:1015C00027BDFFD82407FF80AFB3001CAFB20018BF ++:1015D000AFB10014AFB00010AFBF00200080802179 ++:1015E00030B100FF0087202430D200FF1040002FD0 ++:1015F00000009821AF44002C9062000024030050AA ++:10160000304200FF1443000E000000003C020800BE ++:101610008C4200E00202102100471024AF42002C4F ++:101620003C0208008C4200E0020210213042007FA0 ++:101630000342102100481021944200D43053FFFF90 ++:101640000E000493000000003C02080094424B5E30 ++:101650008F8300200011340000C2302500122C00BE ++:101660003C02400000C2302534A50001AC700000EF ++:101670008FBF0020AC6000048FB20018AC7300086C ++:101680008FB10014AC60000C8FB3001CAC6500106F ++:101690008FB00010AC60001424040001AC6000188E ++:1016A00027BD00280A0004B8AC66001C8FBF0020CC ++:1016B0008FB3001C8FB200188FB100148FB00010D0 ++:1016C00003E0000827BD00289343010F2402001007 ++:1016D0001062000E2865001110A0000724020012FD ++:1016E000240200082405003A1062000600003021A0 ++:1016F00003E0000800000000240500351462FFFC30 ++:10170000000030210A000538000000008F420074FC ++:1017100024420FA003E00008AF62000C27BDFFE8E1 ++:10172000AFBF00100E00025E240500018FBF001045 ++:1017300024020001A762001227BD00182402000144 ++:1017400003E00008A360002227BDFFE0AFB1001452 ++:10175000AFB00010AFBF001830B1FFFF0E00025055 ++:10176000008080219362003F24030004304200FF88 ++:101770001443000C02002021122000082402000A59 ++:101780000E00053100000000936200052403FFFEF7 ++:1017900000431024A362000524020012A362003F4C ++:1017A000020020210E000259A360008116200003D0 ++:1017B000020020210E0005950000000002002021FB ++:1017C000322600FF8FBF00188FB100148FB00010B9 ++:1017D000240500380A00053827BD002027BDFFE09A ++:1017E000AFBF001CAFB20018AFB10014AFB0001013 ++:1017F0000E000250008080210E0005310000000024 ++:101800009362003F24120018305100FF123200038F ++:101810000200202124020012A362003F936200050F ++:101820002403FFFE004310240E000259A3620005AA ++:10183000020020212405002016320007000030217C ++:101840008FBF001C8FB200188FB100148FB0001032 ++:101850000A00025E27BD00208FBF001C8FB2001857 ++:101860008FB100148FB00010240500390A0005382C ++:1018700027BD002027BDFFE8AFB00010AFBF0014A8 ++:101880009742010C2405003600808021144000108E ++:10189000304600FF0E00025000000000240200123B ++:1018A000A362003F93620005344200100E00053130 ++:1018B000A36200050E00025902002021020020212F ++:1018C0000E00025E240500200A000604000000004D ++:1018D0000E000538000000000E000250020020211A ++:1018E000936200232403FF9F020020210043102461 ++:1018F0008FBF00148FB00010A36200230A000259AA ++:1019000027BD001827BDFFE0AFBF0018AFB100141E ++:10191000AFB0001030B100FF0E00025000808021F7 ++:10192000240200120E000531A362003F0E0002598E ++:101930000200202102002021022030218FBF001848 ++:101940008FB100148FB00010240500350A0005384F ++:1019500027BD0020A380002C03E00008A380002DF9 ++:101960008F4202780440FFFE8F820034AF42024073 ++:1019700024020002A34202443C02100003E00008DB ++:10198000AF4202783C0360008C6254003042000891 ++:101990001440FFFD000000008C625408AF82000C70 ++:1019A00024020052AC605408AC645430AC6254342D ++:1019B0002402000803E00008AC6254003C0260000E ++:1019C0008C42540030420008104000053C03600087 ++:1019D0008C625400304200081440FFFD00000000FB ++:1019E0008F83000C3C02600003E00008AC43540805 ++:1019F00090A3000024020005008040213063003FD6 ++:101A000000004821146200050000502190A2001C33 ++:101A100094A3001E304900FF306AFFFFAD00000CA8 ++:101A2000AD000010AD000024950200148D05001CCF ++:101A30008D0400183042FFFF0049102300021100FE ++:101A4000000237C3004038210086202300A2102B5B ++:101A50000082202300A72823AD05001CAD04001838 ++:101A6000A5090014A5090020A50A001603E0000836 ++:101A7000A50A00228F4201F80440FFFE2402000262 ++:101A8000AF4401C0A34201C43C02100003E00008BF ++:101A9000AF4201F83C0208008C4200B427BDFFE8C9 ++:101AA000AFBF001424420001AFB000103C01080099 ++:101AB000AC2200B48F4300243C02001F30AA00FF78 ++:101AC0003442FF8030D800FF006280240080F8217B ++:101AD00030EF00FF1158003B01405821240CFF80DB ++:101AE0003C19000A3163007F000310C00003194055 ++:101AF000006218213C0208008C4200DC25680001CD ++:101B0000310D007F03E21021004310213043007F9C ++:101B100003431821004C102400794821AF420024CF ++:101B20008D220024016C1824006C7026AD22000C5C ++:101B30008D220024310800FFAD22001095220014F0 ++:101B4000952300208D27001C3042FFFF3063FFFFEC ++:101B50008D2600180043102300021100000227C345 ++:101B60000040282100C4302300E2102B00C23023A3 ++:101B700000E53823AD27001CAD2600189522002073 ++:101B8000A522001495220022154B000AA52200165A ++:101B90008D2300248D220008254600013145008058 ++:101BA0001462000430C4007F108F000238AA008045 ++:101BB00000C0502151AF000131C800FF1518FFC906 ++:101BC000010058218F8400343082007F03421821A5 ++:101BD0003C02000A006218212402FF8000822024B7 ++:101BE000AF440024A06A0079A06A00838C62005090 ++:101BF0008F840034AC6200708C6500743C027FFFFF ++:101C00003442FFFF00A228240E00066BAC6500746E ++:101C1000AF5000248FBF00148FB0001003E0000805 ++:101C200027BD001827BDFFC0AFBE0038AFB70034D6 ++:101C3000AFB5002CAFB20020AFB1001CAFB00018A0 ++:101C4000AFBF003CAFB60030AFB40028AFB3002444 ++:101C50008F4500248F4600288F43002C3C02001F34 ++:101C60003442FF800062182400C230240080A82182 ++:101C7000AFA3001400A2F0240E00062FAFA60010A0 ++:101C80003C0208008C4200E02410FF8003608821A1 ++:101C900002A2102100501024AF4200243C02080090 ++:101CA0008C4200E002A210213042007F0342182142 ++:101CB0003C02000A00629021924200D293630084A9 ++:101CC000305700FF306300FF24020001106200342F ++:101CD000036020212402000214620036000000008C ++:101CE0000E001216024028219223008392220083C4 ++:101CF0003063007F3042007F000210C000031940B3 ++:101D0000006218213C0208008C4200DC02A2102173 ++:101D10000043382100F01024AF42002892250078BB ++:101D20009224008330E2007F034218213C02000C21 ++:101D300014850007006280212402FFFFA24200F107 ++:101D40002402FFFFA64200F20A0007272402FFFF39 ++:101D500096020020A24200F196020022A64200F262 ++:101D60008E020024AE4200F492220083A24200F0D0 ++:101D70008E4200C8AE4200FC8E4200C4AE4200F863 ++:101D80008E220050AE4201008E4200CCAE420104D1 ++:101D9000922200853042003F0A0007823442004010 ++:101DA0000E00123902402821922200850A00078283 ++:101DB0003042003F936200852403FFDF3042003F42 ++:101DC000A36200859362008500431024A36200850E ++:101DD0009363008393620078307400FF304200FF09 ++:101DE00010540036240AFF803C0C000C3283007F24 ++:101DF000000310C000031940006218213C020800D3 ++:101E00008C4200DC268800013109007F02A21021EB ++:101E10000043382130E2007F0342182100EA1024F9 ++:101E2000AF420028006C80218E020024028A182410 ++:101E3000006A5826AE02000C8E020024310800FF12 ++:101E4000AE02001096020014960300208E07001CBC ++:101E50003042FFFF3063FFFF8E060018004310235F ++:101E600000021100000227C30040282100C43023D3 ++:101E700000E2102B00C2302300E53823AE07001C1F ++:101E8000AE06001896020020A60200149602002258 ++:101E9000A602001692220079304200FF105400077B ++:101EA0000000000051370001316800FF92220078E5 ++:101EB000304200FF1448FFCD0100A0219222008390 ++:101EC000A22200798E2200500A0007E2AE220070A2 ++:101ED000A22200858E22004C2405FF80AE42010C18 ++:101EE0009222008534420020A2220085924200D135 ++:101EF0003C0308008C6300DC305400FF3C02080007 ++:101F00008C4200E400143140001420C002A31821C8 ++:101F100000C4202102A210210064382100461021B3 ++:101F20000045182400E52824AF450028AF43002CC5 ++:101F30003042007F924400D030E3007F03422821EA ++:101F4000034318213C02000C006280213C02000E79 ++:101F5000309600FF00A298211296002A000000008F ++:101F60008E02000C02002021026028211040002572 ++:101F7000261000280E00064A000000009262000DA4 ++:101F800026830001307400FF3042007FA262000D02 ++:101F90002404FF801697FFF0267300203C020800FF ++:101FA0008C4200DC0000A02102A210210044102479 ++:101FB000AF4200283C0208008C4200E43C030800C9 ++:101FC0008C6300DC02A2102100441024AF42002CDC ++:101FD0003C0208008C4200E402A318213063007F19 ++:101FE00002A210213042007F034220210343182126 ++:101FF0003C02000C006280213C02000E0A0007A493 ++:10200000008298218E4200D8AE2200508E4200D825 ++:10201000AE22007092250083924600D19223008365 ++:10202000924400D12402FF8000A228243063007F64 ++:10203000308400FF00A628250064182A10600002E2 ++:1020400030A500FF38A50080A2250083A2250079D5 ++:102050000E00063D000000009222007E02A020211A ++:10206000A222007A8E2300743C027FFF3442FFFFDD ++:10207000006218240E00066BAE2300748FA20010BD ++:10208000AF5E00248FBF003CAF4200288FBE0038F7 ++:102090008FA200148FB700348FB600308FB5002C9C ++:1020A0008FB400288FB300248FB200208FB1001CA2 ++:1020B0008FB0001827BD004003E00008AF42002C9D ++:1020C00090A2000024420001A0A200003C030800EE ++:1020D0008C6300F4304200FF1443000F0080302175 ++:1020E000A0A000003C0208008C4200E48F84003471 ++:1020F000008220213082007F034218213C02000C24 ++:10210000006218212402FF8000822024ACC300005A ++:1021100003E00008AF4400288C8200002442002025 ++:1021200003E00008AC82000094C200003C080800F4 ++:10213000950800CA30E7FFFF008048210102102106 ++:10214000A4C2000094C200003042FFFF00E2102B46 ++:1021500054400001A4C7000094A200003C03080002 ++:102160008C6300CC24420001A4A2000094A20000D1 ++:102170003042FFFF544300078F8600280107102BD1 ++:10218000A4A000005440000101003821A4C70000B1 ++:102190008F8600288CC4001CAF44003C94A2000031 ++:1021A0008F43003C3042FFFF000210C00062182144 ++:1021B000AF43003C8F42003C008220231880000483 ++:1021C000000000008CC200180A00084324420001ED ++:1021D0008CC20018AF4200383C020050344200105C ++:1021E000AF420030000000000000000000000000CE ++:1021F0008F420000304200201040FFFD0000000030 ++:102200008F420404AD2200048F420400AD2200007E ++:102210003C020020AF42003003E000080000000054 ++:1022200027BDFFE0AFB20018AFB10014AFB000108F ++:10223000AFBF001C94C2000000C080213C12080007 ++:10224000965200C624420001A60200009603000038 ++:1022500094E2000000E03021144300058FB100300B ++:102260000E000818024038210A000875000000001E ++:102270008C8300048C820004244200400461000727 ++:10228000AC8200048C8200040440000400000000C2 ++:102290008C82000024420001AC8200009602000003 ++:1022A0003042FFFF50520001A600000096220000BD ++:1022B00024420001A62200008F82002896230000FD ++:1022C00094420016144300048FBF001C2402000136 ++:1022D000A62200008FBF001C8FB200188FB100141F ++:1022E0008FB0001003E0000827BD00208F89002870 ++:1022F00027BDFFE0AFBF00188D220028274804004B ++:1023000030E700FFAF4200388D22002CAF8800304C ++:10231000AF42003C3C020005AF420030000000002C ++:1023200000000000000000000000000000000000AD ++:10233000000000008C82000C8C82000CAD020000BA ++:102340008C820010AD0200048C820018AD020008DF ++:102350008C82001CAD02000C8CA20014AD02001097 ++:102360008C820020AD02001490820005304200FFF4 ++:1023700000021200AD0200188CA20018AD02001C71 ++:102380008CA2000CAD0200208CA20010AD02002433 ++:102390008CA2001CAD0200288CA20020AD02002CF3 ++:1023A000AD060030AD000034978300263402FFFFF5 ++:1023B00014620002006020213404FFFF10E00011CD ++:1023C000AD04003895230036952400362402000120 ++:1023D0003063FFFF000318C20069182190650040B8 ++:1023E000308400070082100400451025A0620040E0 ++:1023F0008F820028944200563042FFFF0A0008DC1A ++:10240000AD02003C952300369524003624020001DD ++:102410003063FFFF000318C2006918219065004077 ++:1024200030840007008210040002102700451024A9 ++:10243000A0620040AD00003C000000000000000071 ++:10244000000000003C02000634420040AF42003071 ++:102450000000000000000000000000008F420000AB ++:10246000304200101040FFFD8F860028AF880030FA ++:1024700024C2005624C7003C24C4002824C50032CE ++:1024800024C600360E000856AFA200108FBF0018F9 ++:1024900003E0000827BD00208F8300243C060800CD ++:1024A0008CC600E88F82003430633FFF0003198040 ++:1024B00000461021004310212403FF803046007F96 ++:1024C00000431024AF420028034618213C02000CB0 ++:1024D0000062302190C2000D30A500FF00003821BD ++:1024E00034420010A0C2000D8F8900288F8A00247A ++:1024F00095230036000A13823048000324020001AD ++:10250000A4C3000E1102000B2902000210400005B6 ++:10251000240200021100000C240300010A0009201B ++:102520000000182111020006000000000A00092026 ++:10253000000018218CC2002C0A000920244300014D ++:102540008CC20014244300018CC200180043102BDD ++:1025500050400009240700012402002714A20003B0 ++:10256000000000000A00092C240700019522003E0B ++:1025700024420001A522003E000A138230430003DA ++:102580002C62000210400009008028211460000421 ++:102590000000000094C200360A00093C3046FFFFEC ++:1025A0008CC600380A00093C008028210000302138 ++:1025B0003C04080024844B780A00088900000000CD ++:1025C000274901008D22000C9523000601202021BF ++:1025D000000216023046003F3063FFFF240200274E ++:1025E00000C0282128C7002810C2000EAF83002495 ++:1025F00010E00008240200312402002110C200096A ++:102600002402002510C200079382002D0A00095BF6 ++:102610000000000010C200059382002D0A00095B33 ++:10262000000000000A0008F4000000000A0006266E ++:102630000000000095230006912400058D25000C64 ++:102640008D2600108D2700188D28001C8D29002054 ++:10265000244200013C010800A4234B7E3C010800F9 ++:10266000A0244B7D3C010800AC254B843C010800B4 ++:10267000AC264B883C010800AC274B903C0108007D ++:10268000AC284B943C010800AC294B9803E00008AF ++:10269000A382002D8F87002827BDFFC0AFB3003471 ++:1026A000AFB20030AFB1002CAFB00028AFBF0038E0 ++:1026B0003C0208008C4200D094E3003030B0FFFFB1 ++:1026C000005010073045FFFF3063FFFF00C0982126 ++:1026D000A7A200103C110800963100C614A3000602 ++:1026E0003092FFFF8CE2002424420030AF42003CD5 ++:1026F0000A0009948CE2002094E200323042FFFF8D ++:1027000054A2000827A400188CE2002C24420030B8 ++:10271000AF42003C8CE20028AF4200380A0009A218 ++:102720008F84002827A5001027A60020022038212A ++:102730000E000818A7A000208FA200182442003025 ++:10274000AF4200388FA2001CAF42003C8F840028AB ++:102750003C020005AF42003094820034274304005D ++:102760003042FFFF0202102B14400007AF830030FD ++:1027700094820054948300340202102100431023F9 ++:102780000A0009B63043FFFF94830054948200345A ++:102790000223182100501023006218233063FFFF2A ++:1027A000948200163042FFFF144300030000000033 ++:1027B0000A0009C424030001948200163042FFFF7E ++:1027C0000043102B104000058F82003094820016C9 ++:1027D000006210233043FFFF8F820030AC530000B3 ++:1027E000AC400004AC520008AC43000C3C020006B4 ++:1027F00034420010AF420030000000000000000032 ++:10280000000000008F420000304200101040FFFD29 ++:10281000001018C2006418219065004032040007BF ++:10282000240200018FBF00388FB300348FB2003014 ++:102830008FB1002C8FB000280082100400451025B5 ++:1028400027BD004003E00008A062004027BDFFA8AC ++:10285000AFB60050AFB5004CAFB40048AFB30044C2 ++:10286000AFB1003CAFBF0054AFB20040AFB00038D2 ++:102870008C9000003C0208008C4200E88F860034F7 ++:10288000960300022413FF8000C2302130633FFF13 ++:102890000003198000C3382100F3102490B2000017 ++:1028A000AF42002C9203000230E2007F034230214D ++:1028B0003C02000E00C28821306300C024020040A8 ++:1028C0000080A82100A0B021146200260000A021F1 ++:1028D0008E3400388E2200181440000224020001B9 ++:1028E000AE2200189202000D304200201440001564 ++:1028F0008F8200343C0308008C6300DC001238C077 ++:10290000001231400043102100C730210046382119 ++:1029100030E300073C02008030E6007800C230253A ++:102920000343182100F31024AF4208002463090078 ++:10293000AF4608108E2200188C6300080043102157 ++:10294000AE2200188E22002C8E2300182442000193 ++:102950000062182B1060003D000000000A000A7899 ++:1029600000000000920300022402FFC00043102474 ++:10297000304200FF1440000524020001AE2200187E ++:10298000962200360A000A613054FFFF8E2200149E ++:1029900024420001AE22001892020000000216003C ++:1029A0000002160304410029000000009602000204 ++:1029B00027A4001000802821A7A20016960200027A ++:1029C00024070001000030213042FFFFAF820024C5 ++:1029D0000E000889AFA0001C960300023C0408000A ++:1029E0008C8400E88F82003430633FFF000319803D ++:1029F00000441021004310213043007F3C05000CAF ++:102A00000053102403431821AF4200280065182109 ++:102A10009062000D001221403042007FA062000D44 ++:102A20003C0308008C6300E48F82003400431021D3 ++:102A30000044382130E2007F03421021004510217C ++:102A400000F31824AF430028AEA200009222000D2C ++:102A5000304200101040001302A020218F83002874 ++:102A60008EA40000028030219462003E2442FFFFC9 ++:102A7000A462003E948400029625000E3084FFFF7D ++:102A80000E00097330A5FFFF8F82002894430034A5 ++:102A90009622000E1443000302A02021240200010C ++:102AA000A382002C02C028210E0007FE00000000B7 ++:102AB0008FBF00548FB600508FB5004C8FB40048C4 ++:102AC0008FB300448FB200408FB1003C8FB000380C ++:102AD00003E0000827BD00588F82002827BDFFD0E3 ++:102AE000AFB40028AFB20020AFBF002CAFB30024BA ++:102AF000AFB1001CAFB00018904400D0904300D19B ++:102B00000000A021309200FFA3A30010306300FF5B ++:102B10008C5100D88C5300DC1072002B2402000171 ++:102B20003C0308008C6300E493A400108F820034FF ++:102B30002406FF800004214000431021004410219E ++:102B40003043007F00461024AF4200280343182181 ++:102B50003C02000C006218218C62000427A40014BF ++:102B600027A50010022280210270102304400015C6 ++:102B7000AFA300149062000D00C21024304200FF89 ++:102B800014400007020088219062000D344200408A ++:102B90000E0007FEA062000D0A000ABD93A20010FD ++:102BA0000E0009E1241400018F830028AC7000D8C6 ++:102BB00093A20010A06200D193A200101452FFD87B ++:102BC0000000000024020001168200048FBF002CC8 ++:102BD0000E000626000000008FBF002C8FB40028D6 ++:102BE0008FB300248FB200208FB1001C8FB000186B ++:102BF00003E0000827BD003027BDFFD8AFB3001C9D ++:102C0000AFB20018AFB10014AFB00010AFBF0020DA ++:102C10000080982100E0802130B1FFFF0E00049376 ++:102C200030D200FF000000000000000000000000A3 ++:102C30008F820020AC510000AC520004AC5300085D ++:102C4000AC40000CAC400010AC400014AC4000188C ++:102C50003C03080094634B5E02038025AC50001CCB ++:102C6000000000000000000000000000240400013B ++:102C70008FBF00208FB3001C8FB200188FB10014DB ++:102C80008FB000100A0004B827BD002827BDFFE858 ++:102C9000AFB00010AFBF001430A5FFFF30C600FF7B ++:102CA0000080802124020C80AF420024000000003C ++:102CB0000000000000000000000000000000000014 ++:102CC0000E000ACC000000003C040800248400E050 ++:102CD0008C8200002403FF808FBF001402021021A9 ++:102CE00000431024AF4200248C8200003C03000A01 ++:102CF000020280213210007F035010218FB000109B ++:102D00000043102127BD001803E00008AF8200280F ++:102D100027BDFFE8AFBF00108F4401403C0308000F ++:102D20008C6300E02402FF80AF840034008318210C ++:102D300000621024AF4200243C02000803424021FC ++:102D4000950500023063007F3C02000A034318210E ++:102D50000062182130A5FFFF3402FFFF0000302180 ++:102D60003C07602010A20006AF8300282402FFFF6A ++:102D7000A5020002946500D40E000AF130A5FFFF01 ++:102D80008FBF001024020C8027BD001803E000084C ++:102D9000AF4200243C020008034240219502000299 ++:102DA0003C0A0800954A00C63046FFFF14C00007E1 ++:102DB0003402FFFF8F8200288F8400343C0760209C ++:102DC000944500D40A000B5A30A5FFFF10C200241E ++:102DD0008F87002894E2005494E400163045FFFFEA ++:102DE00000A6102300A6182B3089FFFF10600004F6 ++:102DF0003044FFFF00C51023012210233044FFFFA1 ++:102E0000008A102B1040000C012A1023240200011C ++:102E1000A50200162402FFFFA502000294E500D4DB ++:102E20008F8400340000302130A5FFFF3C07602074 ++:102E30000A000AF1000000000044102A10400008B7 ++:102E4000000000009502001630420001104000040E ++:102E5000000000009742007E24420014A5020016E4 ++:102E600003E00008000000008F84002827BDFFE079 ++:102E7000AFBF0018948200349483003E1060001AA3 ++:102E80003048FFFF9383002C2402000114620027C6 ++:102E90008FBF00188F820028000818C23108000771 ++:102EA000006218212447003A244900542444002099 ++:102EB000244500302446003490620040304200FF38 ++:102EC0000102100730420001104000168FBF0018A9 ++:102ED0000E000856AFA900108F82002894420034DB ++:102EE0000A000B733048FFFF94830036948200344D ++:102EF0001043000E8FBF001894820036A482003465 ++:102F000094820056A48200548C82002CAC8200244F ++:102F100094820032A48200309482003CA482003A61 ++:102F20008FBF00180A000B3327BD002003E0000804 ++:102F300027BD002027BDFFE8AFBF00108F4A01006A ++:102F40003C0508008CA500E03C02080090424B8440 ++:102F50003C0C0800958C4B7E01452821304B003FEE ++:102F600030A2007F03424021396900323C02000A4E ++:102F70003963003F2C630001010240212D2900012B ++:102F80002402FF8000A2282401234825AF8A0034B0 ++:102F900000801821AF450024000030210080282146 ++:102FA00024070001AF8800283C04080024844B78E3 ++:102FB000AF8C002415200007A380002D24020020E0 ++:102FC0005562000F006020213402FFFF5582000C83 ++:102FD000006020212402002015620005000000008E ++:102FE0008C6300142402FFFF106200070000000041 ++:102FF0000E000889000000000A000BD0000000004D ++:103000000E0008F4016028210E000B68000000008B ++:103010008FBF001024020C8027BD001803E00008B9 ++:10302000AF4200243C0208008C4200E027BDFFA014 ++:10303000AFB1003C008210212411FF80AFBE0058C8 ++:10304000AFB70054AFB20040AFB00038AFBF005CC4 ++:10305000AFB60050AFB5004CAFB40048AFB30044BA ++:10306000005110248F4800248F4900288F470028E2 ++:10307000AF4200243C0208008C4200E00080902116 ++:1030800024060006008210213042007F03421821EE ++:103090003C02000A006280213C02001F3442FF8093 ++:1030A00000E2382427A40010260500F00122F024B5 ++:1030B0000102B8240E00051DAFA700308FA2001832 ++:1030C000AE0200C48FA2001CAE0200C88FA2002472 ++:1030D000AE0200CC93A40010920300D12402FF8022 ++:1030E0000082102400431025304900FF3083007F08 ++:1030F0003122007F0062102A10400004000310C03B ++:1031000001311026304900FF000310C000031940B0 ++:10311000006218213C0208008C4200DC920400D2BC ++:10312000024210210043102100511024AF42002818 ++:1031300093A300103063007F000310C00003194008 ++:10314000006218213C0208008C4200DC024210217F ++:10315000004310213042007F034218213C02000C42 ++:10316000006240218FA300142402FFFF1062003090 ++:10317000309500FF93A2001195030014304400FF26 ++:103180003063FFFF0064182B1060000D000000008A ++:10319000950400148D07001C8D0600183084FFFF75 ++:1031A00000442023000421000000102100E4382105 ++:1031B00000E4202B00C230210A000C4A00C4302158 ++:1031C000950400148D07001C8D0600183084FFFF45 ++:1031D000008220230004210000001021008018211B ++:1031E00000C2302300E4202B00C4302300E3382346 ++:1031F000AD07001CAD06001893A20011A502001433 ++:1032000097A20012A50200168FA20014AD020010B2 ++:103210008FA20014AD02000C93A20011A5020020A1 ++:1032200097A20012A50200228FA20014AD02002472 ++:103230002406FF80024610243256007FAF4200244D ++:10324000035618213C02000A006280218E02004CC5 ++:103250008FA200203124007F000428C0AE0200505D ++:103260008FA200200004214000852821AE020070BA ++:1032700093A2001001208821A202008393A20010D3 ++:10328000A2020079920200853042003FA20200852E ++:103290003C0208008C4200DC024210210045102153 ++:1032A00000461024AF42002C3C0208008C4200E48F ++:1032B0003C0308008C6300DC024210210044102112 ++:1032C00000461024AF4200283C0208008C4200E473 ++:1032D00002431821006518210242102100441021E8 ++:1032E0003042007F3063007F93A50010034220210D ++:1032F000034318213C02000E006240213C02000CF6 ++:1033000010B1008C008248213233007F1660001912 ++:103310002404FF803C0208008C4200DC02421021A1 ++:1033200000441024AF42002C3C0208008C4200E410 ++:103330003C0308008C6300DC02421021004410248E ++:10334000AF4200283C0208008C4200E402431821EE ++:103350003063007F024210213042007F034220216F ++:10336000034318213C02000E006240213C02000C85 ++:10337000008248219124000D2414FF8000001021B8 ++:1033800000942025A124000D950400029505001449 ++:103390008D07001C3084FFFF30A5FFFF8D0600184D ++:1033A000008520230004210000E4382100C23021E0 ++:1033B00000E4202B00C43021AD07001CAD0600182E ++:1033C00095020002A5020014A50000168D02000857 ++:1033D000AD0200108D020008AD02000C9502000243 ++:1033E000A5020020A50000228D020008AD020024E5 ++:1033F0009122000D30420040104000422622000180 ++:103400003C0208008C4200E0A3B300283C10000AF4 ++:103410000242102100541024AF4200243C02080054 ++:103420008C4200E0A380002C27A4002C0242102133 ++:103430003042007F03421821007018218C6200D8AE ++:103440008D26000427A50028AFA9002C00461021D6 ++:10345000AC6200D80E0009E1AF83002893A30028D6 ++:103460008F8200280E000626A04300D10E000B68B4 ++:103470000000000002541024AF4200243C02080067 ++:103480008C4200DC00132940001320C000A420213E ++:10349000024210210044102100541024AF42002C9D ++:1034A0003C0208008C4200E43C0308008C6300DC12 ++:1034B00003563021024210210045102100541024EF ++:1034C000AF4200283C0208008C4200E4024318216D ++:1034D0000064182102421021004510213042007F73 ++:1034E0003063007F03422021034318213C02000E79 ++:1034F000006240213C02000C00D080210082482163 ++:10350000262200013043007F14750005304400FF7F ++:103510002403FF800223102400431026304400FFC0 ++:1035200093A2001000808821250800281444FF760B ++:103530002529002093A400108FA300142402FFFF6C ++:103540001062000A308900FF2482000124830001F8 ++:103550003042007F14550005306900FF2403FF80CE ++:103560000083102400431026304900FF92020078A7 ++:10357000305300FF11330032012088213C02080043 ++:103580008C4200DC3225007F000520C00005294068 ++:1035900000A42021024210212406FF8000441021B3 ++:1035A00000461024AF42002C3C0308008C6300DC72 ++:1035B0003C0208008C4200E4024318210242102120 ++:1035C0000045102100641821004610243063007F5C ++:1035D000AF420028034318213C02000E0062402144 ++:1035E0003C0208008C4200E48D06000C0100202102 ++:1035F00002421021004510213042007F0342182171 ++:103600003C02000C0062482110C0000D012028215E ++:103610000E00064A000000002402FF800222182447 ++:1036200026240001006228263082007F1455000203 ++:10363000308300FF30A300FF1473FFD000608821A7 ++:103640008E0300743C027FFF3442FFFF00621824A7 ++:10365000AE0300740E00066B02402021AF57002419 ++:103660008FA20030AF5E00288FBF005C8FBE005875 ++:103670008FB700548FB600508FB5004C8FB4004800 ++:103680008FB300448FB200408FB1003C8FB0003840 ++:1036900027BD006003E00008AF42002C27BDFFD823 ++:1036A000AFB1001CAFBF0020AFB000182751018898 ++:1036B000922200032408FF803C03000A3047007F69 ++:1036C000A3A700108F4601803C0208008C4200E056 ++:1036D000AF86003400C2282100A81024AF42002485 ++:1036E0009224000030A2007F0342102100431021E9 ++:1036F000AF8200283084007F24020002148200255B ++:10370000000719403C0208008C4200E400C210216E ++:103710000043282130A2007F0342182100A8102472 ++:10372000AF4200283C02000C006218219062000D9C ++:10373000AFA3001400481025A062000D8FA3001451 ++:103740009062000D304200405040006A8FBF002060 ++:103750008F860028A380002C27A400148CC200D8D8 ++:103760008C63000427A50010004310210E0009E11E ++:10377000ACC200D893A300108F8200280E0006264A ++:10378000A04300D10E000B68000000000A000E0BE1 ++:103790008FBF00200E00062F00C020210E00063D26 ++:1037A000000000003C020008034280219223000137 ++:1037B0009202007B1443004F8FBF00209222000032 ++:1037C0003044007F24020004108200172882000584 ++:1037D00010400006240200052402000310820007A6 ++:1037E0008FB1001C0A000E0C0000000010820012B5 ++:1037F0008FBF00200A000E0C8FB1001C92050083C1 ++:10380000920600788E0700748F84003430A500FF84 ++:1038100000073E0230C600FF0E00067330E7007F4F ++:103820000A000E0B8FBF00200E000BD78F840034D0 ++:103830000A000E0B8FBF002024020C80AF42002430 ++:103840009202003E30420040104000200000000084 ++:103850009202003E00021600000216030441000618 ++:10386000000000008F8400340E0005A024050093A2 ++:103870000A000E0B8FBF00209202003F24030018A5 ++:10388000304200FF1443000C8F84003424050039BB ++:103890000E000538000030210E0002508F840034E5 ++:1038A00024020012A202003F0E0002598F8400344D ++:1038B0000A000E0B8FBF0020240500360E000538CD ++:1038C000000030210A000E0B8FBF00200E000250B6 ++:1038D0008F8400349202000534420020A2020005C9 ++:1038E0000E0002598F8400340E000FC08F84003404 ++:1038F0008FBF00208FB1001C8FB0001824020C80F5 ++:1039000027BD002803E00008AF42002427BDFFE8E0 ++:10391000AFB00010AFBF001427430100946200084D ++:103920000002140000021403044100020000802180 ++:103930002410000194620008304200801040001AF8 ++:10394000020010219462000830422000104000164E ++:10395000020010218C6300183C021C2D344219ED2A ++:10396000240600061062000F3C0760213C0208009C ++:103970008C4200D4104000078F8200288F830028DB ++:10398000906200623042000F34420040A062006248 ++:103990008F8200288F840034944500D40E000AF1F1 ++:1039A00030A5FFFF020010218FBF00148FB0001060 ++:1039B00003E0000827BD001827BDFFE0AFB10014E9 ++:1039C000AFB00010A380002CAFBF00188F450100DE ++:1039D0003C0308008C6300E02402FF80AF850034C4 ++:1039E00000A318213064007F0344202100621824C2 ++:1039F0003C02000A00822021AF430024275001002E ++:103A00008E0200148C8300DCAF8400280043102356 ++:103A100018400004000088218E0200140E000A8461 ++:103A2000AC8200DC9202000B24030002304200FF53 ++:103A30001443002F0000000096020008304300FFEE ++:103A40002402008214620005240200840E00093E54 ++:103A5000000000000A000E97000000001462000938 ++:103A6000240200818F8200288F8400343C0760216B ++:103A7000944500D49206000530A5FFFF0A000E868B ++:103A800030C600FF14620027000000009202000A06 ++:103A9000304300FF306200201040000430620040DC ++:103AA0008F8400340A000E82240600401040000477 ++:103AB000000316008F8400340A000E8224060041A1 ++:103AC00000021603044100178F84003424060042CC ++:103AD0008F8200283C076019944500D430A5FFFF71 ++:103AE0000E000AF1000000000A000E97000000001E ++:103AF0009202000B24030016304200FF1043000620 ++:103B0000000000009202000B24030017304200FF67 ++:103B100014430004000000000E000E11000000001D ++:103B2000004088210E000B68000000009202000A8D ++:103B3000304200081040000624020C808F850028C7 ++:103B40003C0400080E0011EE0344202124020C80E6 ++:103B5000AF4200248FBF0018022010218FB0001048 ++:103B60008FB1001403E0000827BD002027BDFFE847 ++:103B7000AFBF0014AFB000108F5000243C0308000A ++:103B80008C6300E08F4501002402FF8000A3182110 ++:103B90003064007F03442021006218243C02000AA4 ++:103BA00000822021AF850034AF4300249082006260 ++:103BB000AF8400283042000F34420050A0820062DF ++:103BC0003C02001F3442FF800E00062602028024C1 ++:103BD000AF5000248FBF00148FB0001003E0000826 ++:103BE00027BD00183C0208008C4200201040001D38 ++:103BF0002745010090A300093C0200080342202150 ++:103C000024020018546200033C0200080A000ED887 ++:103C10002402000803422021240200161462000539 ++:103C20002402001724020012A082003F0A000EE2C4 ++:103C300094A700085462000694A700089362000548 ++:103C40002403FFFE00431024A362000594A700088C ++:103C500090A6001B8CA4000094A500060A000ACCC4 ++:103C600000073C0003E000080000000027440100BA ++:103C700094820008304500FF38A3008238A20084F7 ++:103C80002C6300012C420001006218251060000620 ++:103C9000240200839382002D1040000D00000000DC ++:103CA0000A000B9B0000000014A2000524A2FF8064 ++:103CB0008F4301043C02602003E00008AC43001481 ++:103CC000304200FF2C420002104000032402002278 ++:103CD0000A000E3C0000000014A2000300000000D7 ++:103CE0000A000EA9000000000A000EC70000000034 ++:103CF0009363007E9362007A144300090000202140 ++:103D00009362000024030050304200FF144300047B ++:103D1000240400019362007E24420001A362007E1D ++:103D200003E00008008010218F4201F80440FFFEEC ++:103D300024020002AF4401C0A34201C43C021000AF ++:103D400003E00008AF4201F827BDFFE8AFBF001055 ++:103D50009362003F2403000A304200FF14430046F0 ++:103D6000000000008F6300548F62004C1062007DE1 ++:103D7000036030219362000024030050304200FFB2 ++:103D80001443002F000000008F4401403C02080053 ++:103D90008C4200E02403FF800082102100431024A5 ++:103DA000AF4200243C0208008C4200E08F650054C2 ++:103DB0003C03000A008220213084007F034410214C ++:103DC00000431021AC4501089762003C8F63004C12 ++:103DD0003042FFFF0002104000621821AF63005C18 ++:103DE0008F6300548F64004C9762003C006418237A ++:103DF0003042FFFF00031843000210400043102A26 ++:103E000010400006000000008F6200548F63004CD9 ++:103E1000004310230A000F58000210439762003C31 ++:103E20003042FFFF00021040ACC2006424020001D7 ++:103E3000A0C0007CA0C2008424020C80AF420024F9 ++:103E40000E000F0A8F440140104000478FBF001042 ++:103E50008F4301408F4201F80440FFFE240200021C ++:103E6000AF4301C0A34201C43C021000AF4201F8BD ++:103E70000A000FA88FBF00109362003F24030010B8 ++:103E8000304200FF14430004000000008F44014052 ++:103E90000A000F94000028219362003F24030016BB ++:103EA000304200FF1443000424020014A362003FC8 ++:103EB0000A000FA2000000008F62004C8F630050C8 ++:103EC00000431023044100288FBF0010936200813B ++:103ED00024420001A3620081936200812C4200040D ++:103EE00014400010000000009362003F240300040F ++:103EF000304200FF14430006000000008F440140E0 ++:103F00008FBF0010240500930A0005A027BD0018EC ++:103F10008F440140240500938FBF00100A00060F54 ++:103F200027BD00188F4401400E0002500000000021 ++:103F30008F6200542442FFFFAF6200548F62005032 ++:103F40002442FFFFAF6200500E0002598F4401402F ++:103F50008F4401408FBF0010240500040A00025E58 ++:103F600027BD00188FBF001003E0000827BD001810 ++:103F70008F4201889363007E00021402304400FFE8 ++:103F8000306300FF1464000D0000000093620080A5 ++:103F9000304200FF1044000900000000A3640080CC ++:103FA0009362000024030050304200FF14430004D9 ++:103FB000000000000A0006D78F440180A36400803F ++:103FC00003E000080000000027BDFFE8AFB00010CC ++:103FD000AFBF00149362000524030030304200306C ++:103FE00014430089008080213C0208008C4200209C ++:103FF00010400080020020210E0004930000000009 ++:104000008F850020ACB000009362003E9363003FB8 ++:10401000304200FF00021200306300FF0043102511 ++:10402000ACA2000493620082000216000002160394 ++:1040300004410005000000003C0308008C630048B8 ++:104040000A000FE6000000009362003E304200408C ++:10405000144000030000182193620081304300FFE8 ++:104060009362008200031E00304200FF0002140031 ++:1040700000621825ACA300088F620040ACA2000CBF ++:104080008F620048ACA200108F62004CACA20014FA ++:104090008F6200508F63004C0043102304410003E3 ++:1040A000000000000A000FFA8F62004C8F6200507F ++:1040B000ACA200183C02080094424B5E3C03C00BCB ++:1040C00000002021004310250E0004B8ACA2001C03 ++:1040D0008F6200548F840020AC8200008F620058F1 ++:1040E000AC8200048F62005CAC8200088F620060CA ++:1040F0008F43007400431021AC82000C8F62006477 ++:10410000AC820010976300689762006A00031C008D ++:104110003042FFFF00621825AC83001493620082D6 ++:1041200024030080304200FF14430003000000001D ++:104130000A00102EAC8000188F63000C24020001CE ++:104140001062000E2402FFFF9362003E30420040E6 ++:104150001440000A2402FFFF8F63000C8F4200749A ++:10416000006218233C020800006210241440000280 ++:10417000000028210060282100051043AC820018AF ++:104180003C02080094424B5E3C03C00C000020211E ++:10419000004310258F8300200E0004B8AC62001C81 ++:1041A0008F6200188F8300203C05080094A54B5EA9 ++:1041B00024040001AC620000AC6000048F66006C57 ++:1041C0003C02400D00A22825AC6600088F6200DC8E ++:1041D000AC62000CAC600010936200050002160097 ++:1041E000AC620014AC6000180E0004B8AC65001C92 ++:1041F000020020218FBF00148FB00010A3600005C3 ++:104200000A00042127BD00188FBF00148FB00010D2 ++:1042100003E0000827BD00189742007C30C600FF6D ++:10422000A08600843047FFFF2402000514C2000B63 ++:1042300024E3465090A201122C42000710400007D0 ++:1042400024E30A0090A30112240200140062100467 ++:1042500000E210210A0010663047FFFF3067FFFFC1 ++:1042600003E00008A4870014AC87004C8CA201086E ++:104270000080402100A0482100E2102330C600FF4A ++:104280001840000393AA001324E2FFFCACA201082B ++:1042900030C2000110400008000000008D020050F4 ++:1042A00000E2102304410013240600058D0200548F ++:1042B00010E20010000000008D02005414E2001A09 ++:1042C000000000003C0208008C4200D83042002070 ++:1042D0001040000A2402000191030078910200833B ++:1042E000144300062402000101002021012028219E ++:1042F000240600040A00105400000000A1000084FD ++:1043000011400009A50200148F4301008F4201F8FB ++:104310000440FFFE24020002AF4301C0A34201C4D7 ++:104320003C021000AF4201F803E00008000000006A ++:1043300027BDFFE88FA90028AFBF001000804021F3 ++:1043400000E918231860007330C600FFA080007CCD ++:10435000A08000818CA2010800E210230440004DDF ++:10436000000000008C8200509483003C8C84006428 ++:10437000004748233063FFFF012318210083202BCF ++:1043800010800004000000008D0200640A0010B7D5 ++:1043900000E210219502003C3042FFFF0122102173 ++:1043A00000E21021AD02005C9502003C8D03005C30 ++:1043B0003042FFFF0002104000E210210043102BAA ++:1043C00010400003000000000A0010C68D02005CCF ++:1043D0009502003C3042FFFF0002104000E2102135 ++:1043E000AD02005CA1000084AD07004C8CA2010866 ++:1043F00000E210231840000224E2FFFCACA20108F6 ++:1044000030C200011040000A000000008D02005080 ++:1044100000E2102304410004010020218D02005419 ++:1044200014E20003000000000A0010E82406000562 ++:104430008D02005414E200478FBF00103C020800B8 ++:104440008C4200D8304200201040000A24020001B3 ++:1044500091030078910200831443000624020001B6 ++:1044600001002021240600048FBF00100A00105410 ++:1044700027BD0018A1000084A50200148F4301008D ++:104480008F4201F80440FFFE240200020A00110DD1 ++:10449000000000008C82005C004910230043102BB8 ++:1044A00054400001AC87005C9502003C3042FFFFA5 ++:1044B0000062102B14400007240200029502003C09 ++:1044C0008D03005C3042FFFF00621821AD03005CE9 ++:1044D00024020002AD07004CA10200840E000F0A66 ++:1044E0008F4401001040001B8FBF00108F4301005C ++:1044F0008F4201F80440FFFE24020002AF4301C0D6 ++:10450000A34201C43C021000AF4201F80A0011238B ++:104510008FBF001030C200101040000E8FBF00107F ++:104520008C83005C9482003C006918233042FFFFBA ++:10453000006218213C023FFF3444FFFF0083102B30 ++:10454000544000010080182101231021AD02005CBD ++:104550008FBF001003E0000827BD001827BDFFE84B ++:104560008FAA0028AFBF00100080402100EA482336 ++:104570001920002130C600FF8C83005C8C8200640F ++:10458000006A18230043102B5040001000691821C6 ++:1045900094A2011001221021A4A2011094A20110E2 ++:1045A0003042FFFF0043102B1440000A3C023FFF43 ++:1045B00094A2011000431023A4A201109482003C95 ++:1045C0003042FFFF0A00114200621821A4A001102E ++:1045D0003C023FFF3444FFFF0083102B5440000196 ++:1045E0000080182100671021AD02005CA100007C52 ++:1045F0000A00118AA100008130C200101040003C66 ++:10460000000000008C820050004A1023184000383F ++:10461000000000009082007C24420001A082007C07 ++:104620009082007C3C0308008C630024304200FF31 ++:104630000043102B1440005C8FBF00108CA20108B7 ++:1046400000E2102318400058000000008C83005442 ++:104650009482003C006A18233042FFFF0003184395 ++:10466000000210400043102A104000050000000026 ++:104670008C820054004A10230A001171000210437A ++:104680009482003C3042FFFF00021040AD02006403 ++:104690009502003C8D0400649503003C3042FFFF0E ++:1046A00000021040008220213063FFFF00831821A8 ++:1046B00001431021AD02005C8D020054ACA2010840 ++:1046C00024020002A10200840E000F0A8F440100A0 ++:1046D000104000358FBF00108F4301008F4201F85A ++:1046E0000440FFFE240200020A0011B30000000093 ++:1046F000AD07004C8CA2010800E210231840000214 ++:1047000024E2FFFCACA2010830C200011040000A04 ++:10471000000000008D02005000E21023044100045C ++:10472000010020218D02005414E20003000000006B ++:104730000A0011AA240600058D02005414E2001A92 ++:104740008FBF00103C0208008C4200D8304200208D ++:104750001040000A240200019103007891020083B6 ++:104760001443000624020001010020212406000455 ++:104770008FBF00100A00105427BD0018A10000844C ++:10478000A50200148F4301008F4201F80440FFFE90 ++:1047900024020002AF4301C0A34201C43C02100046 ++:1047A000AF4201F88FBF001003E0000827BD0018DA ++:1047B0008FAA00108C8200500080402130C600FF7C ++:1047C000004A102300A048211840000700E01821EB ++:1047D00024020001A0800084A0A00112A482001481 ++:1047E0000A001125AFAA0010A0800081AD07004C7F ++:1047F0008CA2010800E210231840000224E2FFFC12 ++:10480000ACA2010830C20001104000080000000006 ++:104810008D0200500062102304410013240600059D ++:104820008D02005410620010000000008D02005440 ++:1048300014620011000000003C0208008C4200D805 ++:10484000304200201040000A240200019103007849 ++:10485000910200831443000624020001010020217C ++:1048600001202821240600040A0010540000000042 ++:10487000A1000084A502001403E00008000000006D ++:1048800027BDFFE0AFBF0018274201009046000A95 ++:104890008C4800148C8B004C9082008430C900FF3F ++:1048A00001681823304A00FF1C60001A2D460006DC ++:1048B000240200010142100410C00016304300031E ++:1048C000012030210100382114600007304C000C19 ++:1048D00015800009304200301440000B8FBF0018D3 ++:1048E0000A001214000000000E001125AFAB0010EA ++:1048F0000A0012148FBF00180E00109AAFAB001000 ++:104900000A0012148FBF0018AFAB00100E0011BACE ++:10491000AFAA00148FBF001803E0000827BD0020D5 ++:1049200024020003A08200848C82005403E000086B ++:10493000ACA201083C0200080342182190620081E9 ++:10494000240600433C07601924420001A062008154 ++:10495000906300813C0208008C4200C0306300FF7D ++:10496000146200102403FF803C0208008C4200E027 ++:104970000082102100431024AF4200243C020800B2 ++:104980008C4200E03C03000A008210213042007F8C ++:104990000342102100431021944500D40A000AF17B ++:1049A00030A5FFFF03E000080000000027BDFFE086 ++:1049B000AFBF0018AFB10014AFB000108F4201803C ++:1049C0000080802100A088210E00121B00402021C1 ++:1049D000A20000848E0200548FBF00188FB0001018 ++:1049E000AE2201088FB1001403E0000827BD0020AB ++:1049F00027BDFFE03C020008AFB00010AFBF0018B9 ++:104A0000AFB10014034280218F5101409203008412 ++:104A10008E0400508E02004C14820040306600FF6D ++:104A20003C0208008C4200E02403FF800222102197 ++:104A300000431024AF4200243C0208008C4200E0F6 ++:104A40009744007C92050081022210213042007FB1 ++:104A5000034218213C02000A0062182114A0000B36 ++:104A60003084FFFF2402000554C20014248205DCB8 ++:104A70009062011224420001A062011224020C8003 ++:104A8000AF4200240A00127324020005A060011244 ++:104A90002402000514C20009248205DC9202008170 ++:104AA0002C4200075040000524820A009203008136 ++:104AB0002402001400621004008210213044FFFF21 ++:104AC000A60400140E00121B022020219602003CB6 ++:104AD0008E03004C022020213042FFFF00021040D4 ++:104AE000006218210E000250AE03005C9202007DAD ++:104AF00002202021344200400E000259A202007D13 ++:104B00008F4201F80440FFFE24020002AF5101C0B1 ++:104B1000A34201C43C021000AF4201F88FBF00184D ++:104B20008FB100148FB0001003E0000827BD0020F3 ++:104B300008000ACC08000B1408000B9808000BE4CE ++:104B400008000C200A0000280000000000000000FF ++:104B50000000000D6370362E322E3300000000007E ++:104B60000602030400000000000000000000000036 ++:104B70000000000000000000000000000000000035 ++:104B80000000000000000000000000000000002005 ++:104B90000000000000000000000000000000000015 ++:104BA0000000000000000000000000000000000005 ++:104BB00000000000000000000000000000000001F4 ++:104BC0000000002B000000000000000400030D4066 ++:104BD00000000000000000000000000000000000D5 ++:104BE00000000000000000001000000300000000B2 ++:104BF0000000000D0000000D3C020800244258A4F3 ++:104C00003C03080024635F70AC4000000043202B8D ++:104C10001480FFFD244200043C1D080037BD7FFCCA ++:104C200003A0F0213C100800261000A03C1C080046 ++:104C3000279C58A40E0001AC000000000000000DED ++:104C400027BDFFE83C096018AFBF00108D2C500055 ++:104C5000240DFF7F24080031018D5824356A380C5B ++:104C600024070C003C1A8000AD2A50003C04800A46 ++:104C7000AF4800083C1B8008AF4700240E00091510 ++:104C8000AF8400100E0008D8000000000E000825B8 ++:104C9000000000000E001252000000003C046016EC ++:104CA0008C8500003C06FFFF3C02535300A61824ED ++:104CB0001062004734867C0094C201F2A780002C69 ++:104CC00010400003A78000CC38581E1EA798002C67 ++:104CD00094C201F810400004978300CC38591E1E7E ++:104CE000A79900CC978300CC2C7F006753E000018C ++:104CF000240300669784002C2C82040114400002D7 ++:104D000000602821240404003C0760008CE904387A ++:104D10002403103C3128FFFF1103001F30B9FFFFAF ++:104D200057200010A38000CE24020050A38200CEA2 ++:104D3000939F00CE53E0000FA78500CCA78000CC46 ++:104D4000978500CC8FBF0010A780002CA78000346F ++:104D5000A78000E63C010800AC25008003E00008C5 ++:104D600027BD0018939F00CE57E0FFF5A78000CC29 ++:104D7000A78500CC978500CC8FBF0010A784002C9E ++:104D8000A7800034A78000E63C010800AC25008025 ++:104D900003E0000827BD0018A38000CE8CCB003CA8 ++:104DA000316A00011140000E0000000030A7FFFF33 ++:104DB00010E0FFDE240200508CCC00C831860001D8 ++:104DC00014C0FFDC939F00CE0A00007A2402005139 ++:104DD0008C8F00043C0E60000A00005D01EE302163 ++:104DE0008CEF0808240D5708000F740211CD000441 ++:104DF00030B8FFFF240500660A00007B240404008D ++:104E00001700FFCC939F00CE0A00007A24020050C6 ++:104E10008F8600103089FFFF000939408CC30010D5 ++:104E20003C08005000E82025AF4300388CC5001432 ++:104E300027420400AF82001CAF45003CAF44003065 ++:104E40000000000000000000000000000000000062 ++:104E50000000000000000000000000000000000052 ++:104E60008F4B0000316A00201140FFFD0000000060 ++:104E700003E00008000000008F840010948A001AEC ++:104E80008C8700243149FFFF000940C000E8302131 ++:104E9000AF46003C8C8500248F43003C00A31023C8 ++:104EA00018400029000000008C8B002025620001C2 ++:104EB0003C0D005035AC0008AF420038AF4C00301C ++:104EC00000000000000000000000000000000000E2 ++:104ED00000000000000000000000000000000000D2 ++:104EE0008F4F000031EE002011C0FFFD00000000D8 ++:104EF0008F4A04003C080020AC8A00108F4904044B ++:104F0000AC890014AF4800300000000094860018FF ++:104F10009487001C00C71821A48300189485001AE8 ++:104F200024A20001A482001A9498001A9499001EE9 ++:104F3000133800030000000003E000080000000038 ++:104F400003E00008A480001A8C8200200A0000DC24 ++:104F50003C0D00500A0000CD000000003C0308009A ++:104F60008C6300208F82001827BDFFE810620008C4 ++:104F7000AFBF00100E000104AF8300183C0308000F ++:104F80008C63002024040001106400048F89001049 ++:104F90008FBF001003E0000827BD00188FBF00106E ++:104FA0003C076012A520000A9528000A34E500108D ++:104FB00027BD00183106FFFF03E00008ACA60090F3 ++:104FC0003C0208008C42002027BDFFC8AFBF003460 ++:104FD000AFBE0030AFB7002CAFB60028AFB500248D ++:104FE000AFB40020AFB3001CAFB20018AFB10014D3 ++:104FF00010400050AFB000108F840010948600065F ++:105000009483000A00C3282330B6FFFF12C0004A71 ++:105010008FBF003494890018948A000A012A402323 ++:105020003102FFFF02C2382B14E0000202C020212F ++:10503000004020212C8C0005158000020080A0215A ++:10504000241400040E0000B3028020218F8700107A ++:1050500002809821AF80001494ED000A028088211C ++:105060001280004E31B2FFFF3C1770003C1540002B ++:105070003C1E60008F8F001C8DEE000001D71824AD ++:10508000507500500220202102A3802B160000350D ++:105090003C182000507800470220202124100001F5 ++:1050A0008F83001414600039029158230230F823D2 ++:1050B0000250C82133F1FFFF1620FFEE3332FFFF0D ++:1050C0008F8700103C110020AF510030000000001D ++:1050D00094E6000A3C1E601237D5001002662821B3 ++:1050E000A4E5000A94E2000A94F2000A94F400187D ++:1050F0003057FFFF1292003BAEB700908CED0014CA ++:105100008CE400100013714001AE4021000E5FC31B ++:10511000010E502B008B4821012A1821ACE8001405 ++:10512000ACE3001002D3382330F6FFFF16C0FFB9FE ++:105130008F8400108FBF00348FBE00308FB7002CDB ++:105140008FB600288FB500248FB400208FB3001CC9 ++:105150008FB200188FB100148FB0001003E0000868 ++:1051600027BD0038107E001B000000001477FFCC24 ++:10517000241000010E00159B000000008F83001416 ++:105180001060FFCB0230F823029158238F87001064 ++:10519000017020210A0001973093FFFF8F830014D4 ++:1051A0001460FFCB3C110020AF5100300A000163B6 ++:1051B000000000000E00077D024028210A00015770 ++:1051C000004080210E00033A024028210A000157C6 ++:1051D000004080210E001463022020210A000157A4 ++:1051E000004080210E0000CD000000000A0001797F ++:1051F00002D3382327BDFFE8AFB00010AFBF0014C3 ++:105200000E00003F000000003C028000345000709F ++:105210000A0001BA8E0600008F4F000039EE00012F ++:1052200031C20001104000248F8600A88E070000C4 ++:105230003C0C08008D8C003C3C0908008D2900388E ++:1052400000E66823018D28210000502100AD302B9D ++:10525000012A4021010620213C010800AC25003C28 ++:10526000AF8700A83C010800AC2400380E000106FE ++:10527000000000003C0308008C6300701060FFE633 ++:10528000006020213C0508008CA500683C06080051 ++:105290008CC6006C0E00152A000000003C010800BE ++:1052A000AC2000708F4F000039EE000131C20001C8 ++:1052B0001440FFDE8F8600A88E0A00008F8B00A8A6 ++:1052C0003C0508008CA5003C3C0408008C84003898 ++:1052D000014B482300A938210082182100E9402B06 ++:1052E000006810213C010800AC27003C3C0108008C ++:1052F000AC2200388F5F01002419FF0024180C0035 ++:1053000003F9202410980012AF840000AF4400205D ++:10531000936D0000240C002031A600FF10CC001279 ++:10532000240E005010CE00043C194000AF59013843 ++:105330000A0001B3000000000E0011C800000000C8 ++:105340003C194000AF5901380A0001B300000000C9 ++:105350000E00011F000000003C194000AF59013849 ++:105360000A0001B3000000008F58010000802821CE ++:10537000330F00FF01E020210E0002F1AF8F000487 ++:105380003C194000AF5901380A0001B30000000089 ++:1053900000A4102B2403000110400009000030215C ++:1053A0000005284000A4102B04A0000300031840AF ++:1053B0005440FFFC000528405060000A0004182BF0 ++:1053C0000085382B54E000040003184200C3302548 ++:1053D00000852023000318421460FFF900052842CD ++:1053E0000004182B03E0000800C310218F4201B80D ++:1053F0000440FFFE00000000AF4401803C031000A9 ++:1054000024040040AF450184A3440188A3460189D8 ++:10541000A747018A03E00008AF4301B83084FFFFCB ++:105420000080382130A5FFFF000020210A00022A59 ++:10543000240600803087FFFF8CA40000240600387B ++:105440000A00022A000028218F8300388F8600304E ++:105450001066000B008040213C07080024E75A1822 ++:10546000000328C000A710218C4400002463000121 ++:10547000108800053063000F5466FFFA000328C04F ++:1054800003E00008000010213C07080024E75A1C34 ++:1054900000A7302103E000088CC200003C0390000C ++:1054A0003462000100822025AF4400208F45002097 ++:1054B00004A0FFFE0000000003E000080000000060 ++:1054C0003C038000346200010082202503E00008D4 ++:1054D000AF44002027BDFFE0AFB100143091FFFFC3 ++:1054E000AFB00010AFBF00181220001300A0802141 ++:1054F0008CA2000024040002240601401040000F8A ++:10550000004028210E000C5C00000000000010216B ++:10551000AE000000022038218FBF00188FB10014A8 ++:105520008FB0001000402021000028210000302111 ++:105530000A00022A27BD00208CA200000220382188 ++:105540008FBF00188FB100148FB0001000402021D1 ++:1055500000002821000030210A00022A27BD002077 ++:1055600000A010213087FFFF8CA500048C440000B0 ++:105570000A00022A2406000627BDFFE0AFB0001093 ++:10558000AFBF0018AFB100149363003E00808021CC ++:105590000080282130620040000020211040000FD0 ++:1055A0008E1100000E000851022020219367000098 ++:1055B0002404005030E500FF50A400128E0F0000BC ++:1055C000022020218FBF00188FB100148FB000106F ++:1055D000A762013C0A00091127BD00200E000287C6 ++:1055E000000000000E0008510220202193670000F7 ++:1055F0002404005030E500FF14A4FFF20220202113 ++:105600008E0F00003C1008008E1000503C0D000C66 ++:10561000240BFF8001F05021314E007F01DA602120 ++:10562000018D4021014B4824AF4900280220202150 ++:105630008FBF00188FB100148FB00010A50200D6E4 ++:1056400027BD00200A000911AF8800D027BDFFE068 ++:10565000AFBF0018AFB10014AFB0001093660001E7 ++:10566000008080210E00025630D1000493640005B2 ++:10567000001029C2A765000034830040A363000521 ++:105680000E00025F020020210E00091302002021FB ++:1056900024020001AF62000C02002821A762001062 ++:1056A00024040002A762001224060140A76200142D ++:1056B0000E000C5CA76200161620000F8FBF0018AA ++:1056C000978C00343C0B08008D6B00782588FFFF19 ++:1056D0003109FFFF256A0001012A382B10E000067E ++:1056E000A78800343C0F6006240E001635ED00102C ++:1056F000ADAE00508FBF00188FB100148FB00010F6 ++:1057000003E0000827BD002027BDFFE0AFB1001473 ++:10571000AFBF0018AFB0001000A088211080000AB1 ++:105720003C03600024020080108200120000000090 ++:105730000000000D8FBF00188FB100148FB0001053 ++:1057400003E0000827BD00208C682BF80500FFFE51 ++:1057500000000000AC712BC08FBF00188FB1001487 ++:105760008FB000103C09100027BD002003E00008A6 ++:10577000AC692BF80E00025600A0202193650005AD ++:10578000022020210E00025F30B000FF2403003E03 ++:105790001603FFE7000000008F4401780480FFFE3D ++:1057A000240700073C061000AF51014002202021D1 ++:1057B000A34701448FBF00188FB100148FB00010B1 ++:1057C000AF4601780A0002C227BD002027BDFFE8CE ++:1057D000AFBF0014AFB000108F50002000000000D9 ++:1057E0000E000913AF440020AF5000208FBF0014FB ++:1057F0008FB0001003E0000827BD00183084FFFFC1 ++:10580000008038212406003500A020210A00022A49 ++:10581000000028213084FFFF008038212406003654 ++:1058200000A020210A00022A0000282127BDFFD065 ++:10583000AFB3001C3093FFFFAFB50024AFB2001828 ++:10584000AFBF0028AFB40020AFB10014AFB000105C ++:1058500030B5FFFF12600027000090218F90001CE0 ++:105860008E0300003C0680002402004000033E023C ++:1058700000032C0230E4007F006688241482001D9F ++:1058800030A500FF8F8300282C68000A510000100B ++:105890008F910014000358803C0C0800258C56940E ++:1058A000016C50218D49000001200008000000001B ++:1058B00002B210213045FFFF0E000236240400849E ++:1058C000162000028F90001CAF8000288F910014DA ++:1058D000260C002026430001018080213072FFFF4A ++:1058E00016200004AF8C001C0253502B1540FFDC27 ++:1058F00000000000024010218FBF00288FB5002457 ++:105900008FB400208FB3001C8FB200188FB1001429 ++:105910008FB0001003E0000827BD0030240E0034D3 ++:1059200014AE00F9000000009203000E241F168040 ++:105930003C07000CA36300219202000D0347C8211D ++:105940003C066000A3620020961100123C0A7FFF13 ++:10595000354CFFFFA771003C960B00102403000597 ++:105960003168FFFFAF6800848E05001CAF5F002820 ++:105970008F3800008CC4444803057826008F3021FE ++:10598000AF66004C8F69004C24CE00013C057F00BF ++:10599000AF6900508F740050AF740054AF66007050 ++:1059A000AF6E00588F6D005824140050AF6D005C2E ++:1059B000A3600023AF6C0064A36300378E02001461 ++:1059C000AF6200488F710048AF7100248E0B001841 ++:1059D000AF6B006C9208000CA3680036937F003E0A ++:1059E00037F90020A379003E8F78007403058024E6 ++:1059F000360F4000AF6F007493640000308900FFE1 ++:105A0000513402452404FF803C04080024845A9841 ++:105A10000E00028D000000003C1008008E105A9805 ++:105A20000E00025602002021240600042407000173 ++:105A3000A366007D020020210E00025FA36700051F ++:105A40008F5F017807E0FFFE240B0002AF5001409A ++:105A5000A34B01448F90001C3C081000AF48017814 ++:105A60000A000362AF8000282CAD003751A0FF98D8 ++:105A70008F9100140005A0803C180800271856BC20 ++:105A8000029878218DEE000001C00008000000009F ++:105A90002418000614B80011000000003C0808009B ++:105AA0008D085A9824040005AF4800208E1F001866 ++:105AB000AF7F00188F79004CAF79001C8F650050C4 ++:105AC000122000C0AF6500700A000362AF84002896 ++:105AD0002406000710A60083240300063C050800E6 ++:105AE00024A55A980E000264240400818F90001CA3 ++:105AF0000011102B0A000362AF8200282407000463 ++:105B000014A7FFF6240500503C1808008F185A9877 ++:105B1000AF5800208E0F0008AF6F00408E090008BC ++:105B2000AF6900448E14000CAF7400488E0E001054 ++:105B3000AF6E004C8E0D0010AF6D00848E0A001405 ++:105B4000AF6A00508E0C0018AF6C00548E04001C1D ++:105B5000AF64005893630000306B00FF116501D8FB ++:105B6000000000008F7400488F6900400289702394 ++:105B700005C000042404008C1620FFDE240200036C ++:105B8000240400823C05080024A55A980E000287D0 ++:105B9000000000008F90001C000010210A0003622A ++:105BA000AF820028240F000514AFFFCC240520008D ++:105BB0003C0708008CE75A98AF4700208E06000487 ++:105BC000AF66005C9208000824100008A36800215A ++:105BD0008F9F001C93F90009A37900208F86001C79 ++:105BE00090D8000A330400FF10900011000000005C ++:105BF0002885000914A0006924020002240A00205C ++:105C0000108A000B34058000288D002115A00008A3 ++:105C100024054000240E0040108E00053C050001C4 ++:105C200024140080109400023C050002240540006A ++:105C30008F7800743C19FF00031980240205782531 ++:105C4000AF6F007490C4000BA36400818F84001CAC ++:105C50009489000C11200192000000009490000C27 ++:105C60002406FFBF24050004A770003C908F000E9F ++:105C7000A36F003E8F84001C9089000FA369003F32 ++:105C80008F8B001C8D6E00108F54007401D468231C ++:105C9000AF6D00608D6A0014AF6A0064956C0018E7 ++:105CA000A76C00689563001AA763006A8D62001CE8 ++:105CB000AF62006C9167000EA367003E9368003EE0 ++:105CC0000106F8241220014BA37F003E8F90001C98 ++:105CD0000A000362AF8500282407002214A7FF7F73 ++:105CE000240300073C0B08008D6B5A981220000C0F ++:105CF000AF4B00200A000362AF830028240C00335E ++:105D000010AC0014240A00283C05080024A55A9869 ++:105D10000E00023C240400810A0003EB8F90001C5B ++:105D20003C04080024845A980E00028D00000000F4 ++:105D30009363000024110050306200FF10510135C0 ++:105D4000000000008F90001C000018210A00036270 ++:105D5000AF8300283C0D08008DAD5A9824040081C3 ++:105D6000AF4D00203C05080024A55A980E00023CC7 ++:105D7000A36A00348F90001C240200090A00036209 ++:105D8000AF82002802B288213225FFFF0E000236C2 ++:105D9000240400840A0003628F90001C1082FFA478 ++:105DA00024050400288B000311600170240C0004FA ++:105DB000240300015483FF9E240540000A00043B95 ++:105DC000240501003C04080024845A988F62004C8A ++:105DD0000E00028D8F6300508F90001C0000202168 ++:105DE0000A000362AF8400288E1000042404008A95 ++:105DF000AF50002093790005333800021700015F8F ++:105E0000020028219368002302002821311F00206E ++:105E100017E0015A2404008D9367003F2406001206 ++:105E200030E200FF10460155240400810E000256A6 ++:105E30000200202193630023240500040200202196 ++:105E4000346B0042A36B00230E00025FA365007D4C ++:105E50008F4401780480FFFE240A0002AF50014005 ++:105E6000A34A01448F90001C3C0C1000AF4C0178F9 ++:105E70000A0003EC0011102B8E1000042404008A89 ++:105E8000AF500020936E000531CD000215A0001622 ++:105E900002002821936F003F2414000402002821EF ++:105EA00031E900FF11340010240400810E00025675 ++:105EB000020020219362002324080012241FFFFE09 ++:105EC00034460020A3660023A368003F93790005B1 ++:105ED00002002021033FC0240E00025FA3780005CA ++:105EE00002002821000020210E00033400000000E1 ++:105EF0000A0003EB8F90001C8E1000043C03000886 ++:105F00000343A021AF500020928B000024050050D5 ++:105F1000316400FF10850161240700880200202100 ++:105F2000000028210E00022A2406000E928D000097 ++:105F3000240EFF800200282101AE8025A2900000DF ++:105F4000240400040E000C5C240600300A0003EB5D ++:105F50008F90001C8E0800043C14080026945A9868 ++:105F60003C010800AC285A98AF480020921F00035B ++:105F700033F9000413200002240200122402000658 ++:105F8000A362003F920B001B2404FFC03165003F59 ++:105F900000A43825A367003E9206000330C200012A ++:105FA00014400132000000008E020008AE8200089A ++:105FB0003C0208008C425AA010400131000249C244 ++:105FC000A76900088E14000C240C0001240300149F ++:105FD000AF74002C8E0E0010AF6E0030960D0016C0 ++:105FE000A76D0038960A0014A76A003AAF6C000C3F ++:105FF000A76C0010A76C0012A76C0014A76C001609 ++:1060000012200136A3630034920F000331F0000226 ++:106010002E1100018F90001C262200080A00036246 ++:10602000AF8200288E0400043C0E0008034E30218D ++:10603000AF4400208E05000890CD0000240C0050D5 ++:1060400031AA00FF114C00862407008824060009AD ++:106050000E00022A000000000A0003EB8F90001CD3 ++:106060008E04001C0E00024100000000104000F4ED ++:10607000004050218F89001C240700890140202105 ++:106080008D25001C240600010E00022A00000000DD ++:106090000A0003EB8F90001C960D00023C140800D0 ++:1060A00026945A9831AA0004514000B83C10600070 ++:1060B0008E0E001C3C010800AC2E5A98AF4E0020FA ++:1060C000920700102408001430E200FF144800D6A4 ++:1060D00000000000960B00023163000114600165AE ++:1060E000000000008E020004AE8200083C1408008C ++:1060F0008E945AA01280015B000000008F7400741F ++:106100003C0380002404000102835825AF6B007417 ++:10611000A3600005AF64000C3C0708008CE75AA0A0 ++:106120008F86001CA7640010000711C2A76400122C ++:10613000A7640014A7640016A76200088CC80008B2 ++:1061400024040002AF68002C8CC5000CAF65003041 ++:1061500090DF0010A37F00348F99001C9330001152 ++:10616000A37000358F98001C930F0012A36F0036A8 ++:106170008F89001C912E0013A36E00378F90001C96 ++:10618000960D0014A76D0038960A0016A76A003A0B ++:106190008E0C0018AF6C00245620FDCCAF84002874 ++:1061A0003C05080024A55A980E0002640000202136 ++:1061B0008F90001C0A0004A7000020218E1000040C ++:1061C00024070081AF500020936900233134001070 ++:1061D000128000170000000002002021000028218A ++:1061E0002406001F0E00022A000000000A0003EB34 ++:1061F0008F90001C3C05080024A55A980E000287C9 ++:10620000240400828F90001C000028210A000362F1 ++:10621000AF8500283C0408008C845A980E0014E8CE ++:10622000000000008F90001C0A000482000018216A ++:106230000E00025602002021937800230200202144 ++:10624000370F00100E00025FA36F002300003821FB ++:1062500002002021000028210A0005A82406001FB2 ++:10626000920F000C31E90001112000030000000032 ++:106270009618000EA4D8002C921F000C33F90002CF ++:1062800013200005000038218E0200149608001229 ++:10629000ACC2001CA4C8001A0A0005432406000969 ++:1062A0003C05080024A55A980E0002872404008BA0 ++:1062B0008F90001C0011282B0A000362AF85002874 ++:1062C000AF6000843C0A08008D4A5A983C0D0800D3 ++:1062D0008DAD0050240CFF803C02000C014D1821B4 ++:1062E000006C2024AF4400288E070014306B007F20 ++:1062F000017A282100A2C821AF2700D88E060014F9 ++:10630000AF9900D0AF2600DC8E080010251FFFFEDD ++:106310000A000408AF3F01083C0508008CA55A9804 ++:106320003C1908008F39005024CCFFFE00B9C02171 ++:1063300003047824AF4F00283C1408008E945A9828 ++:106340003C0908008D2900500289702131CD007F61 ++:1063500001BA502101478021AE0600D8AF9000D08D ++:10636000AE0000DC0A0003B1AE0C0108548CFE3014 ++:10637000240540000A00043B240510000E00032EF3 ++:10638000000000000A0003EB8F90001C8E0F442CCD ++:106390003C186C62370979703C010800AC205A98AF ++:1063A00015E9000824050140979F00349786002CCA ++:1063B0000280282103E6C82B132000112404009238 ++:1063C000240501400E000C7A240400023C01080060 ++:1063D000AC225A98AF4200203C0508008CA55A9880 ++:1063E00010A00005240400830E00084500000000F2 ++:1063F00010400009240400833C05080024A55A9895 ++:106400000E000264000000008F90001C0011202B81 ++:106410000A000362AF8400280E0008490000000053 ++:106420000A00055F8F90001C0E00084D0000000060 ++:106430003C05080024A55A980A00062F2404008B66 ++:10644000240400040E000C7A240500301440002AB5 ++:10645000004050218F89001C240700830140202127 ++:106460008D25001C0A000551240600018E04000839 ++:106470000E000241000000000A00051BAE82000869 ++:106480003C05080024A55A980E00023C240400870D ++:106490008F90001C0A0005360011102B8F830038E6 ++:1064A0008F8600301066FE9D000038213C070800F2 ++:1064B00024E75A1C000320C0008728218CAC000070 ++:1064C00011900061246A00013143000F5466FFFA05 ++:1064D000000320C00A0004F6000038213C05080033 ++:1064E00024A55A980E000287240400828F90001C75 ++:1064F0000A000536000010213C0B0008034B202148 ++:106500002403005024070001AF420020A0830000B4 ++:10651000A08700018F82001C90480004A08800180A ++:106520008F85001C90A60005A08600198F9F001C77 ++:1065300093F90006A099001A8F90001C921800078A ++:10654000A098001B8F94001C928F0008A08F001C45 ++:106550008F89001C912E0009A08E001D8F8D001CBC ++:1065600091AC000AA08C001E8F8B001C3C0C080014 ++:10657000258C5A1C9163000B3C0B0800256B5A18A4 ++:10658000A083001F8F87001C90E8000CA0880020CB ++:106590008F82001C9045000D24024646A0850021F4 ++:1065A0008F86001C90DF000EA09F00228F99001C98 ++:1065B0009330000FA09000238F98001C93140010BC ++:1065C000A09400248F8F001C91E90011A089002560 ++:1065D0008F89001C8F8E00308F900038952D00140D ++:1065E000000E18C025C80001A48D002895270016AC ++:1065F000006C3021006BC821A487002A9525001863 ++:106600003108000FA485002CA482002E8D3F001CB1 ++:10661000ACCA0000AF88003011100006AF3F000088 ++:10662000000038218D25001C014020210A00055161 ++:1066300024060001250C00013184000F00003821E0 ++:106640000A0006B8AF8400383C07080024E75A184F ++:106650000087302100003821ACA000000A0004F6B9 ++:10666000ACC000003C05080024A55A980A00062F7B ++:10667000240400878E0400040E0002410000000084 ++:106680000A00056AAE8200083084FFFF30C600FFB2 ++:106690008F4201B80440FFFE00064400010430258B ++:1066A0003C07200000C720253C031000AF400180BC ++:1066B000AF450184AF44018803E00008AF4301B84F ++:1066C00027BDFFE8AFB00010AFBF00143C0760006B ++:1066D000240600021080000600A080210010102B6C ++:1066E0008FBF00148FB0001003E0000827BD001812 ++:1066F0003C09600EAD2000348CE5201C8F82001C0C ++:106700002408FFFC00A81824ACE3201C0E0006D1CE ++:106710008C45000C0010102B8FBF00148FB00010A0 ++:1067200003E0000827BD00183C02600E344701005A ++:1067300024090018274A040000000000000000009F ++:10674000000000003C06005034C30200AF44003893 ++:10675000AF45003CAF430030014018218F4B000093 ++:10676000316800201100FFFD2406007F2408FFFF90 ++:106770008C6C000024C6FFFF24630004ACEC000016 ++:1067800014C8FFFB24E70004000000000000000024 ++:10679000000000003C0F0020AF4F00300000000060 ++:1067A00024AD020001A5702B2529FFFF008E2021BA ++:1067B0001520FFE101A0282103E0000800000000EF ++:1067C00027BDFFE0AFB10014AFBF0018AFB000109D ++:1067D0003C05600E8CA20034008088211440000625 ++:1067E0003C0460008C87201C2408FFFC00E8302457 ++:1067F00034C30001AC83201C8F8B001C24090001D2 ++:10680000ACA90034956900028D6500148D70000CF0 ++:106810002D2400818D6700048D660008108000071C ++:106820008D6A00102D2C00041580000E30CE00075C ++:10683000312D000311A0000B000000002404008B88 ++:10684000020028210E0006D1240600030011102B9F ++:106850008FBF00188FB100148FB0001003E0000844 ++:1068600027BD002015C0FFF62404008B3C03002048 ++:10687000AF4300300000000024020001AF8200148A ++:106880000000000000000000000000003C1F01505C ++:10689000013FC825253800033C0F600EAF47003884 ++:1068A00000181882AF46003C35E8003CAF59003074 ++:1068B000274704008F4400003086002010C0FFFDF1 ++:1068C00000000000106000082466FFFF2403FFFFA3 ++:1068D0008CEB000024C6FFFF24E70004AD0B000092 ++:1068E00014C3FFFB250800043C08600EAD09003806 ++:1068F0000000000000000000000000003C07002035 ++:10690000AF470030000000000E0006F901402021D2 ++:1069100002002821000020210E0006D124060003D9 ++:106920000011102B8FBF00188FB100148FB0001012 ++:1069300003E0000827BD002027BDFFE0AFB200182C ++:106940003092FFFFAFB10014AFBF001CAFB000101A ++:106950001640000D000088210A0007AA022010211D ++:1069600024050001508500278CE5000C0000000D77 ++:10697000262300013071FFFF24E200200232382B71 ++:1069800010E00019AF82001C8F8200141440001622 ++:106990008F87001C3C0670003C0320008CE5000043 ++:1069A00000A62024148300108F84003C00054402BC ++:1069B0003C09800000A980241480FFE9310600FF13 ++:1069C0002CCA00095140FFEB262300010006688015 ++:1069D0003C0E080025CE579801AE60218D8B00003B ++:1069E0000160000800000000022010218FBF001C81 ++:1069F0008FB200188FB100148FB0001003E00008B0 ++:106A000027BD00200E0006D1240400841600FFD804 ++:106A10008F87001C0A00078BAF80003C90EF0002BC ++:106A200000002021240600090E0006D1000F2E00D0 ++:106A30008F87001C0010102B0A00078BAF82003CD0 ++:106A4000020028210E0006DF240400018F87001CAD ++:106A50000A00078BAF82003C020028210E0006DFEF ++:106A6000000020210A0007C38F87001C0E00071FAB ++:106A7000020020210A0007C38F87001C30B0FFFFEF ++:106A8000001019C08F5801B80700FFFE3C1F2004FA ++:106A90003C191000AF430180AF400184AF5F018813 ++:106AA000AF5901B80A00078C262300013082FFFF8E ++:106AB00014400003000018210004240224030010E5 ++:106AC000308500FF14A000053087000F2466000801 ++:106AD0000004220230C300FF3087000F14E00005DD ++:106AE000308900032468000400042102310300FF00 ++:106AF0003089000315200005388B0001246A00024C ++:106B000000042082314300FF388B00013164000112 ++:106B100010800002246C0001318300FF03E00008B4 ++:106B200000601021308BFFFF000B394230E600FF80 ++:106B30003C09080025295998000640800109602178 ++:106B40008D8700003164001F240A0001008A1804A8 ++:106B500030A500FF00E3202514A000020003102749 ++:106B600000E22024240F000100CF700401096821F5 ++:106B7000000E282714800005ADA400008F86000CAD ++:106B800000A6102403E00008AF82000C8F88000CE0 ++:106B900001C8102503E00008AF82000C3C06001F6E ++:106BA0003C0360003084FFFF34C5FF8024020020D6 ++:106BB000AC602008AC60200CAC602010AC652014E8 ++:106BC000AC642018AC62200000000000000000004F ++:106BD00003E000080000000027BDFFE82402FFFFDB ++:106BE000AFBF0010AF82000C000020213C0608005F ++:106BF00024C659982405FFFF248900010004408021 ++:106C00003124FFFF010618212C87002014E0FFFA31 ++:106C1000AC6500000E0008160000202124020001CF ++:106C20003C04600024050020AC822018AC852000C4 ++:106C3000000000000000000000000000244A0001E5 ++:106C40003142FFFF2C46040014C0FFF78FBF001035 ++:106C500003E0000827BD00188F8300082C620400A1 ++:106C600003E00008384200018F830008246200011D ++:106C700003E00008AF8200088F8300082462FFFF52 ++:106C800003E00008AF82000827BDFFE0AFB10014A9 ++:106C9000AFBF0018AFB000108F6B00303C06600033 ++:106CA00000808821ACCB20088F6A002C3C02800039 ++:106CB00024030008ACCA200C9769003A9768003892 ++:106CC00000092C003107FFFF00A72025ACC42010CD ++:106CD000ACC22014ACC32000000000000000000083 ++:106CE000000000003C0360008C6D200031AC000807 ++:106CF0001580FFF9000000008C6E201405C00020F4 ++:106D0000000000000E0007DA8F84000C00024080B3 ++:106D10003C09080025295998010938218CE4000014 ++:106D20000E0007DA00028140020220213090FFFFAE ++:106D3000020020210E0007F8000028213C0C8000F2 ++:106D4000022C58253210FFFF3C116000240A00205D ++:106D5000AE2B2014AE302018AE2A20000000000018 ++:106D60000000000000000000020010218FBF00188A ++:106D70008FB100148FB0001003E0000827BD002081 ++:106D80008C6620143C02001F3443FF803C1FFFE848 ++:106D900000C3C02437F9080003198021001079C20C ++:106DA0003C0C8000022C582531F0FFFF3C116000A4 ++:106DB000240A0020AE2B2014AE302018AE2A20006A ++:106DC0000000000000000000000000000200102190 ++:106DD0008FBF00188FB100148FB0001003E00008BF ++:106DE00027BD002027BDFFE8AFB000103402FFFF31 ++:106DF0003090FFFFAFBF00141202000602002021F6 ++:106E00000E00081600000000020020210E0007F806 ++:106E1000240500018F8400088FBF00148FB000107C ++:106E20002483FFFF27BD001803E00008AF8300089C ++:106E3000000439C230E6003F00043B42000718401E ++:106E4000240210002CC4002024C8FFE0AF42002C14 ++:106E5000246300011480000330A900FF00071840DC ++:106E6000310600FF0003608024080001019A5821C8 ++:106E70003C0A000E00C82804016A382111200005D0 ++:106E8000000530278CE900000125302503E00008CB ++:106E9000ACE600008CEE000001C6682403E00008A8 ++:106EA000ACED000027BDFFE8AFBF0014AFB000108D ++:106EB0003C0460008C8508083403F00030A2F00028 ++:106EC00050430006240200018C8708083404E000C7 ++:106ED00030E6F00010C4001E24020002AF82004021 ++:106EE0003C1060003C0A0200AE0A0814240910009D ++:106EF0003C08000E8E03440003482021AF49002CBB ++:106F0000240501200E000CC0000030218F830040BA ++:106F1000106000043C021691240B0001106B000E5F ++:106F20003C023D2C344F0090AE0F44088FBF00143C ++:106F30008FB000103C0C6000240E10003C0D0200CD ++:106F400027BD0018AD8E442003E00008AD8D081069 ++:106F50000A0008E7AF8000403C0218DA344F009086 ++:106F6000AE0F44088FBF00148FB000103C0C6000BF ++:106F7000240E10003C0D020027BD0018AD8E4420E9 ++:106F800003E00008AD8D08100A0008BB24050001CD ++:106F90000A0008BB000028213C08080025085DA461 ++:106FA0002404FFFF010018212402001E2442FFFFD9 ++:106FB000AC6400000441FFFD246300043C070800AA ++:106FC00024E75E208CE5FFFC2404001C240600015D ++:106FD000308A001F0146480424840001000910275C ++:106FE0002C8300201460FFFA00A22824ACE5FFFCEB ++:106FF0003C05666634A4616E3C06080024C65EE06B ++:10700000AF840058AF88009C2404FFFF00C0182103 ++:107010002402001F2442FFFFAC6400000441FFFD76 ++:10702000246300043C0766663C05080024A55EA0B6 ++:10703000AF86004834E6616EAF8600982404FFFFF7 ++:1070400000A018212402000F2442FFFFAC640000BE ++:107050000441FFFD246300043C0B66663C06080007 ++:1070600024C65E203568616EAF8500A4AF880070CD ++:107070002404FFFF00C018212402001F2442FFFF48 ++:10708000AC6400000441FFFD246300043C0D66660F ++:107090003C0A0800254A5F6035AC616EAF860090FF ++:1070A000AF8C005C2404FFFF014018212402000380 ++:1070B0002442FFFFAC6400000441FFFD2463000490 ++:1070C0003C09080025295F708D27FFFC2404000679 ++:1070D000240500013099001F0325C0042484000109 ++:1070E000001878272C8E002015C0FFFA00EF3824F6 ++:1070F000AD27FFFC3C09666624030400240403DC7E ++:1071000024050200240600663522616E3C08080052 ++:1071100025085AA4AF820074AF830044AF83006C8B ++:10712000AF830050AF830084AF8A008CAF840064CB ++:10713000AF85004CAF860054AF840078AF85006007 ++:10714000AF86008001001821240200022442FFFFC4 ++:10715000AC6000000441FFFD24630004240400032C ++:107160002403000C3C0A0800254A5AB0AF8A006884 ++:107170000A00098E2405FFFF000418802484000102 ++:10718000006858212C8700C014E0FFFBAD650000AB ++:107190003C0E666635CD616E240C17A024081800DD ++:1071A000AF8D0088AF8C009403E00008AF88007CAE ++:1071B0002484007F000421C200004021000030210F ++:1071C00000003821000028210A0009A5AF8400A092 ++:1071D0001060000624E7000100C4302124A500014E ++:1071E0002CC20BF51440FFFA2CA300663C090800E2 ++:1071F00025295F6001201821240200032442FFFF9B ++:10720000AC6000000441FFFD2463000410E0001A9C ++:1072100024E3FFFF0003294210A0000A0000202100 ++:107220002406FFFF3C03080024635F602484000100 ++:107230000085502BAC660000250800011540FFFBBF ++:107240002463000430E2001F10400008000868803A ++:10725000240C0001004C38040008588001692821E2 ++:1072600024E6FFFF03E00008ACA6000001A94021CE ++:107270002409FFFFAD09000003E000080000000042 ++:10728000AF4400283C04000C034420210005288260 ++:107290000A000CC000003021000421803C03600083 ++:1072A000AC6410080000000000052980AC65100CDB ++:1072B0000000000003E000088C62100C27BDFFE80E ++:1072C0000080282124040038AFBF00140E0009D527 ++:1072D000AFB0001024040E00AF4400283C10000C96 ++:1072E00003502021240500100E000CC000003021A6 ++:1072F00003501021AC400000AC40000424040038CE ++:107300008FBF00148FB0001024053FFF27BD001869 ++:107310000A0009D58C430000000421803C03600072 ++:10732000AC641008000000008C62100C03E0000840 ++:107330000002118227BDFFC8AFB400208F940068FF ++:10734000AFBE0030AFB7002CAFB600280000B821A8 ++:107350000080B021241E00C0AFBF0034AFB50024B0 ++:10736000AFB3001CAFB20018AFB10014AFB0001043 ++:107370000A000A12AFA5003C504000018F9400683B ++:1073800027DEFFFF13C00028269400048E92000021 ++:107390003C03080024635DA01240FFF70283102B1A ++:1073A0003C04080024845AA4028410230002A8C0CC ++:1073B000000098210A000A212411000100118840D0 ++:1073C000122000260000000002B380210251282470 ++:1073D0000200202110A0FFF9267300010E0009DE33 ++:1073E000000000000016684032EC000101AC2021D2 ++:1073F0000E0009D5020028218F89009426F700018C ++:107400008FA6003C3AEB0001316A00012528FFFFFE ++:107410000011382702CAB021AF88009416E6FFE7B2 ++:1074200002479024AE92000002E010218FBF00348A ++:107430008FBE00308FB7002C8FB600288FB5002488 ++:107440008FB400208FB3001C8FB200188FB10014CE ++:107450008FB0001003E0000827BD00383C0E080084 ++:1074600025CE5DA0028E102B0A000A0DAE92000000 ++:1074700027BDFFD8AFB10014AFB00010AFBF0020E0 ++:10748000AFB3001CAFB2001800A0882110A0001FED ++:10749000000480403C13080026735AA40A000A5ACC ++:1074A0002412000112200019261000010E0009F517 ++:1074B00002002021000231422444FFA0000618806F ++:1074C0003045001F2C8217A1007318212631FFFFC1 ++:1074D0001040FFF400B230048C690000020020214B ++:1074E00024053FFF012640241500FFEE0126382524 ++:1074F0000E0009D5AC6700008F8A009426100001A9 ++:10750000254700011620FFE9AF8700948FBF0020B8 ++:107510008FB3001C8FB200188FB100148FB0001011 ++:1075200003E0000827BD00288F85009C00805821BB ++:107530000000402100004821240A001F3C0C0800E4 ++:10754000258C5E1C3C0D080025AD5DA48CA60000BA ++:1075500050C000140000402100AD1023000238C0CC ++:10756000240300010A000A930000202115000003F3 ++:1075700000E410212448202400004821252900018E ++:10758000512B00132506DFDC106000062484000167 ++:1075900000C3702415C0FFF5000318400A000A91CB ++:1075A0000000402110AC002624A300040060282124 ++:1075B000254AFFFF1540FFE5AF85009C512B0004D5 ++:1075C0002506DFDC0000402103E000080100102157 ++:1075D0000006614230C5001F000C50803C070800C7 ++:1075E00024E75DA424040001014730211120000F8D ++:1075F00000A420043C05080024A55E20148000059A ++:107600002529FFFF24C6000410C50011000000005A ++:10761000240400018CCF00000004C0270004204097 ++:1076200001F868241520FFF5ACCD00008F99007893 ++:1076300001001021032B482303E00008AF890078E4 ++:107640003C05080024A55DA40A000A9B0000402117 ++:107650003C06080024C65DA40A000AB42404000104 ++:10766000308800FF240200021102000A24030003F4 ++:107670001103005C8F8900A4240400041104005F3E ++:1076800024050005110500670000182103E000082B ++:10769000006010218F8900483C0C0800258C5EE0BA ++:1076A0003C04080024845F60240300201060000F65 ++:1076B00000005821240D0002240E00033C0F080096 ++:1076C00025EF5EE08D27000014E0000B30F9FFFF8E ++:1076D000252900040124C02B53000001018048210A ++:1076E0002463FFFF5460FFF88D270000016018211C ++:1076F00003E0000800601021132000323C0500FF69 ++:1077000030E200FF004030211040004200005021D4 ++:1077100024050001000020210005C84000A6C02467 ++:1077200017000003332500FF14A0FFFB2484000191 ++:10773000012CC023001828C000AA6021008C502111 ++:107740003144001F240C0001008C18040003102792 ++:1077500000E23024110D0041AD260000110E004C56 ++:10776000000A1840110D00368F87006C510E00562C ++:107770008F8C0060240D0004110D005A8F8E008440 ++:10778000240E0005150EFFDA01601821240B1430B9 ++:1077900011400006000018218F8400A0246300011E ++:1077A000006A402B1500FFFD016458218F8A00807C ++:1077B000AF89008C016018212549FFFF0A000AEB00 ++:1077C000AF89008000E52024000736021080FFD03A ++:1077D000240A001800075402314600FF0A000AF389 ++:1077E000240A00103C0C0800258C5EA03C04080014 ++:1077F00024845EE00A000ADA240300103C0C08002E ++:10780000258C5E203C04080024845EA00A000AD96E ++:107810008F89009000071A02306600FF0A000AF301 ++:10782000240A00088F89008C3C0C0800258C5F60BE ++:107830003C04080024845F700A000ADA2403000470 ++:10784000000A4080250B003024E6FFFF016018216C ++:10785000AF8900480A000AEBAF86006C000AC982B3 ++:10786000001978803C07080024E75EA001E720218A ++:10787000000A18428C8F00003079001F032C380456 ++:107880000007C02701F860240A000B08AC8C000038 ++:10789000000331420006288000AF28213062001F1B ++:1078A0008CB8000024630001004CC804000321428E ++:1078B000001938270004108003073024004F2021CE ++:1078C0000A000B4CACA60000000A68C025AB0032D1 ++:1078D000258AFFFF01601821AF8900A40A000AEB86 ++:1078E000AF8A0060254B1030AF89009001601821ED ++:1078F00025C9FFFF0A000AEBAF8900843086000724 ++:107900002CC2000610400014000000000006408059 ++:107910003C030800246357BC010338218CE40000B9 ++:1079200000800008000000002409000310A9000ED8 ++:1079300000000000240A000510AA000B000000004F ++:10794000240B000110AB0008000000008F8C00A089 ++:1079500010AC00050000000003E00008000010214A ++:107960000A000A7900A020210A000AC700C02021CD ++:1079700027BDFFE8308400FF240300021083000BC2 ++:10798000AFBF0010240600031086003A240800044C ++:1079900010880068240E0005108E007F2CAF143074 ++:1079A0008FBF001003E0000827BD00182CA2003094 ++:1079B0001440FFFC8FBF001024A5FFD0000531C28A ++:1079C000000668803C07080024E75EE001A730213C ++:1079D0008CC900000005288230AC001F240B000178 ++:1079E000018B50048F840048012A4025ACC8000058 ++:1079F0008C83000050600001AF8600488F98006CB7 ++:107A000030AE000124A6FFFF270F000115C00002C1 ++:107A1000AF8F006C24A600010006414200082080C0 ++:107A2000008718218C79000030C2001F2406000155 ++:107A30000046F804033F382410E0FFDA8FBF00103F ++:107A40000005C182001870803C0F080025EF5EA081 ++:107A500001CF48218D2B00000005684231A5001F91 ++:107A600000A66004016C502527BD001803E0000843 ++:107A7000AD2A00002CA7003014E0FFCA8FBF001011 ++:107A800030B900071723FFC724A8FFCE00086A02F9 ++:107A9000000D60803C0B0800256B5EA0018B30213F ++:107AA0008CC40000000828C230AA001F240800016E ++:107AB000014848048F8200A400891825ACC3000047 ++:107AC0008C5F000053E00001AF8600A40005704009 ++:107AD000000E7942000F28803C04080024845EE0F8 ++:107AE00000A418218C6B000025DF000131CD001FA0 ++:107AF000001F514201A86004016C4825000A108053 ++:107B0000AC690000004428218CA600008F9800601A ++:107B100033F9001F8FBF00100328380400C77825F1 ++:107B2000270E000127BD0018ACAF000003E00008DD ++:107B3000AF8E006024A5EFD02CB804001300FF998D ++:107B40008FBF001000053142000658803C0A080033 ++:107B5000254A5E20016A30218CC4000030A3001F3A ++:107B600024090001006910048F9900900082F82513 ++:107B7000ACDF00008F27000050E00001AF860090CE ++:107B80008F8D00848FBF001027BD001825AC000129 ++:107B900003E00008AF8C008415E0FF828FBF001067 ++:107BA0008F8600A0000610400046F821001F21002B ++:107BB00003E4C8210019384024F8143000B8402BE1 ++:107BC0001100FF788FBF001024A4EBD00E00021329 ++:107BD00000C0282100027942000F70803C0D08008F ++:107BE00025AD5F6001CD20218C8B0000304C001F43 ++:107BF00024060001018618048F89008C016350253A ++:107C0000AC8A00008D25000050A00001AF84008CDC ++:107C10008F9800808FBF001027BD00182708000133 ++:107C200003E00008AF88008030A5000724030003AC ++:107C300010A3001028A2000414400008240700022A ++:107C40002403000410A300152408000510A8000F49 ++:107C50008F8500A003E000080000000014A7FFFDCE ++:107C60000080282114C3FFFB240400020A000B8BB0 ++:107C700000000000240900050080282110C9FFFB36 ++:107C80002404000303E000080000000014C5FFF115 ++:107C9000008028210A000B8B24040005240A00011F ++:107CA0000080282110CAFFF12404000403E000082A ++:107CB0000000000027BDFFE0AFB00010000581C24A ++:107CC0002603FFD024C5003F2C6223D024C6007FAA ++:107CD000AFB20018AFB10014AFBF001C309100FF6D ++:107CE000000691C2000529820200202110400008F0 ++:107CF0002403FFFF0E000A4B0000000002002021B9 ++:107D0000022028210E000C390240302100001821E9 ++:107D10008FBF001C8FB200188FB100148FB00010FD ++:107D20000060102103E0000827BD002027BDFFD818 ++:107D300024A2007FAFB3001CAFB20018000299C2AA ++:107D4000309200FF24A3003F02402021026028213E ++:107D5000AFB10014AFB00010AFBF00200E000B6E2B ++:107D60000003898200408021004020210220282138 ++:107D700014400009000018218FBF00208FB3001CA1 ++:107D80008FB200188FB100148FB000100060102166 ++:107D900003E0000827BD00280E0009FC00000000D9 ++:107DA00000402821020020211051FFF3001019C0CB ++:107DB0000E000A4B00000000020020210240282192 ++:107DC0000E000C39026030218FBF00208FB3001CE1 ++:107DD0008FB200188FB100148FB00010000018216E ++:107DE0000060102103E0000827BD00283084FFFF59 ++:107DF00030A5FFFF1080000700001821308200012D ++:107E00001040000200042042006518211480FFFB8E ++:107E10000005284003E000080060102110C00007A2 ++:107E2000000000008CA2000024C6FFFF24A500046F ++:107E3000AC82000014C0FFFB2484000403E00008AF ++:107E40000000000010A0000824A3FFFFAC86000083 ++:107E500000000000000000002402FFFF2463FFFF79 ++:107E60001462FFFA2484000403E00008000000000C ++:107E700030A5FFFF8F4201B80440FFFE3C076015AC ++:107E800000A730253C031000AF440180AF400184BF ++:107E9000AF46018803E00008AF4301B88F8500D0EA ++:107EA0002C864000008018218CA700840087102BAE ++:107EB00014400010000000008CA800842D06400033 ++:107EC00050C0000F240340008CAA0084008A482B75 ++:107ED000512000018CA3008400035A42000B208033 ++:107EE0003C05080024A558200085182103E000085F ++:107EF0008C62000014C0FFF4000000002403400066 ++:107F000000035A42000B20803C05080024A558209D ++:107F10000085182103E000088C6200008F8300D0E8 ++:107F2000906600D024C50001A06500D08F8500D0E8 ++:107F3000906400D090A200D210440017000000000E ++:107F4000936C00788F8B00BC318A00FFA16A000C13 ++:107F500025490001938700C4312200FF3048007F8B ++:107F60001107000B00026827A36200788F4E01788A ++:107F700005C0FFFE8F9900B0241800023C0F1000CE ++:107F8000AF590140A358014403E00008AF4F017806 ++:107F90000A000D0931A20080A0A000D00A000CFF49 ++:107FA000000000008F8700D027BDFFC8AFBF0030A2 ++:107FB000AFB7002CAFB60028AFB50024AFB4002097 ++:107FC000AFB3001CAFB20018AFB10014AFB00010D7 ++:107FD00094E300E094E200E2104300D72405FFFFA1 ++:107FE0003C047FFF3497FFFF2415FF800A000DF04B ++:107FF0003C16000E108A00D18FBF00308F9100B068 ++:108000003C1808008F18005C001230C0001291402C ++:108010000311702101D57824AF4F002C94EC00E2BD ++:1080200031CD007F01BA5821318A7FFF0176482186 ++:10803000000A804002091021945300003C08080007 ++:108040008D0800580246C02132733FFF001319808B ++:10805000010320210224282130BF007F03FAC82118 ++:1080600000B5A024AF54002C0336A0218E87001049 ++:108070008E8F003003785821256D008800EF702323 ++:10808000240C0002AE8E0010AF8D00ACA16C0088F5 ++:10809000976A003C8E8400308F9100AC0E000CD6A5 ++:1080A0003150FFFF00024B80020940253C02420094 ++:1080B00001022025AE2400048E8300048F8D00ACC5 ++:1080C0008E860000240E0008ADA3001CADA600188B ++:1080D000ADA0000CADA00010929F000A33F900FF84 ++:1080E000A5B90014968500083C1F000CA5A5001634 ++:1080F0009298000A331100FFA5B100209690000865 ++:1081000024180005A5B00022ADA00024928F000B1A ++:108110002410C00031E700FFA5A70002A1AE0001B6 ++:108120008E8C00308F8B00AC8F8400B0AD6C00085B ++:108130003C0A08008D4A005401444821013540247E ++:10814000AF4800283C0208008C4200540044302113 ++:1081500030C3007F007AC821033F282102458821CF ++:10816000AF9100BCAF8500C0A23800008F8A00BC70 ++:108170002403FFBF2418FFDF954F000201F03824CD ++:1081800000F37025A54E0002914D000231AC003F76 ++:10819000358B0040A14B00028F8600BC8F8900D038 ++:1081A000ACC000048D28007C3C098000ACC80008ED ++:1081B00090C4000D3082007FA0C2000D8F8500BCEE ++:1081C00090BF000D03E3C824A0B9000D8F9100BC3F ++:1081D0009233000D02789024A232000D8E9000346C ++:1081E0008F8B00BCAD7000108E87002C8E8F0030FE ++:1081F00000EF7023AD6E0014916D001831AC007F5C ++:10820000A16C00188F9F00BC8E8A00308FE8001888 ++:10821000015720240109302400C41025AFE20018C2 ++:108220009283000AA3E3001C969900088F8500BC86 ++:108230008F9800D0A4B9001E8E9000308E8400303C ++:108240000E0002138F0500848F8500D0000291403C ++:108250000002990090AF00BC0253882100403021F9 ++:1082600031E7000210E0000302118021000290803B ++:108270000212802190B900BC3327000410E00002F4 ++:108280000006F880021F80218E9800308F8B00BC82 ++:1082900024068000330F0003000F702331CD00034C ++:1082A000020D6021AD6C000494A400E294AA00E2E7 ++:1082B00094B000E231497FFF2522000130537FFF57 ++:1082C0000206182400734025A4A800E294A400E24A ++:1082D0003C1408008E94006030917FFF123400221D ++:1082E000000000000E000CF6000000008F8700D098 ++:1082F0000000282194F300E094F000E21213000F34 ++:108300008FBF003090E900D090E800D1313200FFFB ++:10831000310400FF0244302B14C0FF36264A00010E ++:1083200090EE00D2264B000131CD00FF008D602180 ++:10833000158BFF338F9100B08FBF00308FB7002CAB ++:108340008FB600288FB500248FB400208FB3001C97 ++:108350008FB200188FB100148FB0001000A0102150 ++:1083600003E0000827BD003894A300E20066402423 ++:10837000A4A800E290A400E290B900E2309100FFCE ++:108380000011A1C20014F827001F39C03332007F4A ++:10839000024730250A000DE8A0A600E23084FFFF66 ++:1083A00030A5FFFFAF440018AF45001C03E00008F4 ++:1083B0008F42001427BDFFB8AFB000208F9000D0CF ++:1083C0003084FFFFAFA40010AFBF0044AFBE004039 ++:1083D000AFB7003CAFB60038AFB50034AFB4003033 ++:1083E000AFB3002CAFB20028AFB10024A7A0001893 ++:1083F000920600D1920500D030C400FF30A300FFE8 ++:108400000064102B10400122AFA00014920900D08C ++:108410008FB50010312800FF0088382324F4FFFFB7 ++:108420000014882B0015982B02339024524001260B ++:108430008FB40014961E0012961F00108FB7001004 ++:1084400003DFC823001714000019C400000224032E ++:108450000018140302E2B02A52C00001004020219B ++:108460000284282B10A0000200801821028018210D ++:1084700000033C0000071C033064FFFF2C8600094A ++:1084800014C000020060B821241700088E0A0008FA ++:10849000001769808E09000C31ABFFFF3C0C001007 ++:1084A000016C402527520400AF4A0038AF9200B853 ++:1084B000AF49003CAF480030000000000000000061 ++:1084C00000000000000000000000000000000000AC ++:1084D00000000000000000008F4F000031EE00207F ++:1084E00011C0FFFD0017982A027110240A000E83A4 ++:1084F0000000B02155E001019258000131130080C5 ++:10850000126001CF012020219655001232A5FFFFF5 ++:108510000E000CCBA7B500188F9000D00291A023BD ++:1085200026CD00018F9100B8000DB4000016B403F1 ++:108530002638004002D7582A0014882B2405000151 ++:108540000300902101711024AF9800B8AFA500146A ++:10855000104001BC8F8900B03C0C08008D8C005489 ++:10856000240BFF80921E00D001895021014B28244A ++:10857000921900D0AF4500288E4700103C08080033 ++:108580008D0800583C1808008F18005430E33FFF56 ++:108590000003218001043021012658212402FF809C ++:1085A0000162F824920C00D0AF5F002C92480000CA ++:1085B00033D100FF333500FF0309982100117140CA ++:1085C000001578C0326D007F01CF382101BA282113 ++:1085D000318300FF3164007F3C0A000C00AA88212F ++:1085E0000367F02100033140009A10213108003F59 ++:1085F0003C1F000E00D1C021005F982127D90088C0 ++:108600002D150008AF9100C0AF9900ACAF9800BC29 ++:10861000AF9300B412A0018A00008821240E00014B ++:10862000010E4004310D005D11A0FFB2310F0002B8 ++:108630008E4A00283C0300803C04FFEFAE6A000035 ++:108640008E450024A260000A3488FFFFAE65000456 ++:108650009247002C3C1FFF9F37FEFFFFA267000CD4 ++:108660008E62000C3C180040A267000B00433025CE ++:1086700000C8C824033E88240238A825AE75000C23 ++:108680008E490004AE6000183C0F00FFAE69001474 ++:108690008E4D002C35EEFFFF8F8B00B001AE6024B5 ++:1086A000AE6C00108E470008A660000896450012C8 ++:1086B000AE6700208E42000C30B03FFF00105180AA ++:1086C000AE6200248E5E0014014B182130A400011C ++:1086D000AE7E00288E590018000331C2000443808A ++:1086E000AE79002C8E51001C00C8F821A67F001C1A ++:1086F000AE710030965800028E550020A678001EFC ++:10870000AE75003492490033313000045600000544 ++:10871000925000008F8C00D08D8B007CAE6B0030AF ++:10872000925000008F8F00BCA1F00000924E0033E9 ++:1087300031CD000251A00007925E00018F8900BC7C ++:108740002418FF80913100000311A825A1350000F5 ++:10875000925E00018F9900BC2409FFBF240BFFDF4C ++:10876000A33E00018F9500BC92B8000D3311007F2D ++:10877000A2B1000D8F8E00BC91D0000D02097824AB ++:10878000A1CF000D8F8800BC8E6D0014910A000DE2 ++:108790002DAC0001000C2940014B382400E51825C0 ++:1087A000A103000D964200128F8800BC8F8700D075 ++:1087B000A50200028E45000490FF00BC30A4000317 ++:1087C0000004302330DE000300BE102133F9000224 ++:1087D00017200002244400342444003090E200BCFE ++:1087E00000A2302430DF000417E0000224830004DC ++:1087F000008018218F8F00AC24090002AD03000413 ++:10880000A1E90000924E003F8F8D00ACA1AE0001A7 ++:108810008F9500AC924C003F8E440004A6AC000241 ++:10882000976B003C0E000CD63170FFFF00025380A6 ++:10883000020A38253C05420000E51825AEA30004D5 ++:108840008F8600AC8E480038ACC800188E440034C7 ++:10885000ACC4001CACC0000CACC00010A4C0001420 ++:10886000A4C00016A4C00020A4C00022ACC00024F4 ++:108870008E6400145080000124040001ACC4000880 ++:108880000E000CF6241100010A000E768F9000D025 ++:10889000920F00D2920E00D08FB5001031EB00FF86 ++:1088A00031CD00FF008D6023016C50212554FFFF66 ++:1088B0000014882B0015982B023390241640FEDDFF ++:1088C000000000008FB400148FBF00448FBE004032 ++:1088D0003A8200018FB7003C8FB600388FB5003464 ++:1088E0008FB400308FB3002C8FB200288FB10024DA ++:1088F0008FB0002003E0000827BD0048331100209E ++:10890000122000EF24150001921E00BC241F00015C ++:108910000000A82133D900011320000DAFBF001CB7 ++:108920008E4400148E0800840088102B144000022E ++:10893000008030218E0600848E03006400C3A82BC3 ++:1089400016A0000200C020218E0400640080A8212F ++:108950008E4700148E05006400E5302B14C0000221 ++:1089600000E020218E0400640095F02313C0000471 ++:108970008FAC001C240A0002AFAA001C8FAC001CA4 ++:10898000028C582B156000A8000018218E4F00386B ++:108990008E6D000C3C0E0080AE6F00008E4A0034DD ++:1089A0003C10FF9F01AE5825AE6A00049246003F7E ++:1089B000360CFFFF016C38243C0500203C03FFEF20 ++:1089C000A266000B00E510253468FFFF8F8700B812 ++:1089D0000048F8243C04000803E4C825AE79000CE4 ++:1089E0008CF80014AE60001802BE7821AE78001436 ++:1089F0008CF10018AE71001C8CE90008AE690024EF ++:108A00008CEE000CAE6F002CAE600028AE6E002025 ++:108A1000A6600038A660003A8CED001401B58023F2 ++:108A2000021E902312400011AE72001090EA003D29 ++:108A30008E6500048E640000000A310000A6C82183 ++:108A4000000010210326402B0082F82103E8C021FA ++:108A5000AE790004AE78000090F1003DA271000AEA ++:108A60008F8900B895320006A67200088F9800AC76 ++:108A70002419000202A02021A31900009769003CDC ++:108A80008F9200AC0E000CD63131FFFF00027B80CC ++:108A90008F8500B8022F68253C0E420001AE80256C ++:108AA000AE5000048F8400AC8CAC0038AC8C001845 ++:108AB0008CAB0034AC8B001CAC80000CAC80001084 ++:108AC000A4800014A4800016A4800020A4800022AA ++:108AD000AC80002490A7003FA487000212A00135BB ++:108AE0002403000153C0000290A2003D90A2003E6A ++:108AF00024480001A08800018F9F00ACAFF500085A ++:108B00008F8300D024070034906600BC30C500027B ++:108B100050A00001240700308F9200B88F8A00BC5B ++:108B2000906D00BC924B00002412C00032A50003DF ++:108B3000A14B00008F8600B88F8800BC240200047F ++:108B400090C400010045182330790003A1040001FE ++:108B50008F8A00BC8F9F00B800F53821955800021D ++:108B600097E9001200F9382103128824312F3FFFC2 ++:108B7000022F7025A54E00029150000231A800047A ++:108B8000320C003F358B0040A14B000212A00002C6 ++:108B90008F8500BC00E838218F8E00D0ACA7000480 ++:108BA000240BFFBF8DCD007C2EA400012403FFDF2A ++:108BB000ACAD000890B0000D00044140320C007FC5 ++:108BC000A0AC000D8F8600BC90CA000D014B102494 ++:108BD000A0C2000D8F8700BC90E5000D00A3F82413 ++:108BE00003E8C825A0F9000D8F9100B88F8D00BC57 ++:108BF0008E380020ADB800108E290024ADA90014D5 ++:108C00008E2F0028ADAF00188E2E002C0E000CF613 ++:108C1000ADAE001C8FB0001C240C0002120C00EE44 ++:108C20008F9000D08FA3001C006088211460000288 ++:108C30000060A8210000A02156A0FE390291A023C7 ++:108C40000014882B8FA90010960700103C1E0020EE ++:108C50000136402302C750213112FFFFA60A00103F ++:108C6000AFB20010AF5E0030000000009617001099 ++:108C7000961300121277008F000000008E05000C82 ++:108C80008E0B00080016698000AD7021000DC7C36F ++:108C900001CDA82B0178782101F56021AE0E000CE2 ++:108CA000AE0C00088FB300100013B82B02378024DD ++:108CB0001200FF048F9000D00A000E3C000000005C ++:108CC0008E4D0038A6600008240B0003AE6D000036 ++:108CD0008E500034A260000A8F9800B8AE70000475 ++:108CE0003C0500809311003FA26B000C8E6F000CBE ++:108CF0003C0EFF9FA271000B01E5102535CCFFFF54 ++:108D00003C03FFEF8F9200B8004C30243464FFFF27 ++:108D100000C4F824AE7F000C8E590014964800124F ++:108D20008F8A00B0AE7900108E490014AE60001832 ++:108D3000AE600020AE690014AE6000248E470018BB ++:108D400031093FFF0009F180AE6700288E4D000811 ++:108D500003CA802131180001AE6D00308E4F000C27 ++:108D60008F8C00AC001089C200185B80022B282178 ++:108D7000240E0002A665001CA6600036AE6F002C13 ++:108D8000A18E00009763003C8F8A00AC3C04420037 ++:108D90003062FFFF00443025AD4600048F9F00B8CD ++:108DA000240700012411C0008FF30038240600348A ++:108DB000AD5300188FF90034AD59001CAD40000CC4 ++:108DC000AD400010A5400014A5400016A5400020AD ++:108DD000A5400022AD400024A5550002A147000196 ++:108DE0008F9E00AC8F8800B88F9200BCAFD5000872 ++:108DF000910D0000A24D00008F9000B88F8B00BC39 ++:108E000092180001A17800018F8400BC94850002B3 ++:108E100000B1782401E97025A48E0002908C000234 ++:108E20003183003FA08300028F8300D08F8400BC79 ++:108E3000906200BC305300025260000124060030F2 ++:108E4000AC8600048C6F007C2403FFBF02A0882145 ++:108E5000AC8F0008908E000D31CC007FA08C000DEF ++:108E60008F8600BC90C2000D00432024A0C4000DDA ++:108E70008F8900BC913F000D37F90020A139000D0A ++:108E80008F8800B88F9300BC8D070020AE6700105C ++:108E90008D0A0024AE6A00148D1E0028AE7E0018D4 ++:108EA0008D12002C0E000CF6AE72001C0A00103D54 ++:108EB0008F9000D0960E00148E03000431CCFFFF7B ++:108EC000000C10C000622021AF44003C8E1F000443 ++:108ED0008F46003C03E6C8231B20003C0000000036 ++:108EE0008E0F000025E200013C05001034B500089B ++:108EF000AF420038AF550030000000000000000015 ++:108F00000000000000000000000000000000000061 ++:108F100000000000000000008F580000330B00200C ++:108F20001160FFFD000000008F5304003C0D002085 ++:108F3000AE1300088F570404AE17000CAF4D00307D ++:108F4000000000003C0608008CC600442416000106 ++:108F500010D600BD00000000961F00123C0508005E ++:108F60008CA5004000BFC821A61900129609001464 ++:108F700025270001A6070014960A00143144FFFFBC ++:108F80005486FF498FB30010A60000140E000E1681 ++:108F900030A5FFFF3C0408008C84002496030012D7 ++:108FA0000044102300623023A60600120A00105964 ++:108FB0008FB30010A08300018F8200AC2404000155 ++:108FC000AC4400080A000FF08F8300D08E0200002E ++:108FD0000A0010EA3C0500108F8200C08FA7001C19 ++:108FE000921800D0920B00D0920E00D0331100FFE7 ++:108FF000316900FF00117940000928C001E56021B6 ++:1090000031C300FF036C50210003314000C2C8216E ++:10901000255F0088AF9F00ACAF9900BCA1470088D6 ++:109020009768003C03C020218F9100AC0E000CD645 ++:109030003110FFFF00026B80020DC0253C0442008E ++:109040008F8D00B803045825AE2B00048DA900387D ++:109050008F8B00AC0000882100118100AD690018E1 ++:109060008DAF00343C087FFF3504FFFFAD6F001C5F ++:1090700091AC003E8D65001C8D660018000C190037 ++:10908000000C770200A33821020E102500E3F82B14 ++:1090900000C2C821033F5021AD67001CAD6A001813 ++:1090A000AD60000CAD60001091B8003E24050005D5 ++:1090B00003C45024A578001495A9000403C02021FE ++:1090C000A569001691AF003EA56F002095B1000480 ++:1090D000A5710022AD60002491AE003FA56E000294 ++:1090E00091B0003E91AC003D01901023244300015B ++:1090F000A16300018F8600AC8F9F00BCACDE00082E ++:10910000A3E500008F9000BC8F9900B82405FFBF35 ++:1091100096070002973800120247782433093FFF70 ++:1091200001E98825A6110002921200022418FFDF2F ++:10913000324E003F35CD0040A20D00028F8600BCAC ++:109140008F8C00D02412FFFFACC000048D8B007CFC ++:109150003C0C8000ACCB000890C2000D3043007F77 ++:10916000A0C3000D8F8700BC90FF000D03E5C8244D ++:10917000A0F9000D8F9100BC9229000D01387824D0 ++:10918000A22F000D8F9000BCAE120010AE1500147F ++:10919000920E00182415FF8002AE6825A20D00185B ++:1091A0008F8500BC8F8300B88CAB0018016C102435 ++:1091B000004A3025ACA600189068003EA0A8001C0C ++:1091C0008F9F00B88F8700BC8F9800D097F900045C ++:1091D000A4F9001E0E0002138F0500848F8600D0B4 ++:1091E000000279400002490090D200BC01E98821C8 ++:1091F000004028213255000212A0000303D1202193 ++:109200000002A8800095202190CD00BC31B200045E ++:109210001240000333DF0003000540800088202156 ++:10922000240600048F9E00BC00DFC8233327000300 ++:1092300000875021AFCA00040E000CF6A665003866 ++:109240000A0010388F9000D0961E00123C080800CB ++:109250008D080024011E9021A61200120A00105948 ++:109260008FB3001027BDFFE03C1808008F18005096 ++:10927000AFB00010AFBF0018AFB10014AF8400B0A2 ++:1092800093710074030478212410FF8031EE007F75 ++:109290003225007F01F0582401DA68213C0C000AD5 ++:1092A000A38500C401AC2821AF4B002494A9001071 ++:1092B0009768000690A600620080382124020030E2 ++:1092C0000109202330C300F0AF8500D010620019DF ++:1092D0003090FFFF90AE0062240DFFF0240A005092 ++:1092E00001AE6024318B00FF116A002F00000000E6 ++:1092F00016000007241F0C00AF5F00248FB100147C ++:109300008FBF00188FB0001003E0000827BD0020B9 ++:109310000E000E1C02002021241F0C00AF5F002451 ++:109320008FB100148FBF00188FB0001003E0000849 ++:1093300027BD002094A200E094A400E290BF011396 ++:10934000008218263079FFFF33E700C014E00009DF ++:109350002F31000116000038000000005620FFE603 ++:10936000241F0C000E000D18000000000A0011ED73 ++:10937000241F0C001620FFDE000000000E000D1858 ++:10938000000000001440FFDC241F0C001600002227 ++:109390008F8300D0906901133122003FA062011336 ++:1093A0000A0011ED241F0C0094AF00D48F8600D466 ++:1093B00000E02821240400050E000C5C31F0FFFFC2 ++:1093C0001440000524030003979100E600001821D3 ++:1093D0002625FFFFA78500E68F5801B80700FFFE8E ++:1093E0003C196013AF400180241F0C00AF50018472 ++:1093F000007938253C101000AF4701888FB1001468 ++:10940000AF5001B8AF5F00248FB000108FBF0018BD ++:1094100003E0000827BD00200E000E1C02002021E2 ++:109420005040FFB5241F0C008F8300D090690113BA ++:109430000A0012163122003F0E000E1C02002021ED ++:109440001440FFAD241F0C00122000078F8300D0B2 ++:10945000906801133106003F34C20040A06201133E ++:109460000A0011ED241F0C000E000D180000000072 ++:109470005040FFA1241F0C008F8300D0906801137F ++:109480003106003F0A00124634C20040AF9B00C8BC ++:1094900003E00008AF8000EC3089FFFF0009404284 ++:1094A0002D020041000921801440000200095040B3 ++:1094B00024080040000830C0000811400046582130 ++:1094C000256701A800E2C821272F007F2418FF800C ++:1094D00001F818240064302100CA702125CC00FF57 ++:1094E000240DFF00018D202425650088240A0088B2 ++:1094F0003C010800AC2A004C3C010800AC2500509F ++:10950000AF8400D43C010800AC2900603C01080095 ++:10951000AC2800643C010800AC2700543C01080062 ++:10952000AC2300583C010800AC26005C03E00008B6 ++:1095300000000000308300FF30C6FFFF30E400FF72 ++:109540008F4201B80440FFFE00034C00012438257F ++:109550003C08600000E820253C031000AF45018076 ++:10956000AF460184AF44018803E00008AF4301B86F ++:109570008F86001C3C096012352700108CCB00043C ++:109580003C0C600E35850010316A00062D48000144 ++:10959000ACE800C48CC40004ACA431808CC20008C8 ++:1095A00094C30002ACA2318403E00008A78300E466 ++:1095B0003C0308008C6300508F8400E88F86001CF9 ++:1095C0002402FF800064C0210302C824AF59002890 ++:1095D0008CCD00043305007F00BA78213C0E000CCE ++:1095E00001EE2821ACAD00588CC80008AF8500D032 ++:1095F0003C076012ACA8005C8CCC001034E8001072 ++:10960000ACAC000C8CCB000CACAB000894AA0014E2 ++:109610003C0208008C42004425490001A4A9001422 ++:1096200094A400143083FFFF106200178F8400D0D1 ++:109630003C0A08008D4A0040A4AA00128CCE0018F3 ++:10964000AC8E00248CCD0014AC8D00208CC700188B ++:10965000AC87002C8CCC001424060001AC8C0028B4 ++:109660008D0B00BC5166001A8D0200B48D0200B84B ++:10967000A482003A948F003AA48F003C948800D4CE ++:1096800003E000083102FFFF3C0908008D29002497 ++:10969000A4A000148F8400D0A4A900128CCE0018BE ++:1096A000AC8E00248CCD0014AC8D00208CC700182B ++:1096B000AC87002C8CCC001424060001AC8C002854 ++:1096C0008D0B00BC5566FFEA8D0200B88D0200B418 ++:1096D000A482003A948F003AA48F003C948800D46E ++:1096E00003E000083102FFFF8F86001C3C0C0800DD ++:1096F0008D8C0050240BFF808CCD00083C03000CA7 ++:10970000000D51C0018A4021010B4824AF8A00E8B6 ++:10971000AF49002890C700073105007F00BA10212B ++:109720000043282130E4000410800039AF8500D0C8 ++:1097300090CF000731EE000811C000380000000093 ++:109740008CD9000C8CC400140324C02B13000030EF ++:10975000000000008CC2000CACA200648CCD00188C ++:109760002402FFF8ACAD00688CCC0010ACAC0080DB ++:109770008CCB000CACAB00848CCA001CACAA007C67 ++:1097800090A900BC01224024A0A800BC90C30007FF ++:109790003067000810E000048F8500D090AF00BC57 ++:1097A00035EE0001A0AE00BC90D9000733380001AF ++:1097B000130000088F8300D08F8700D0240400346A ++:1097C00090E800BC35030002A0E300BC8F8300D00A ++:1097D000AC6400C090C900073126000210C000052B ++:1097E00000000000906A00BC35420004A06200BC8A ++:1097F0008F8300D09065011330AD003FA06D011341 ++:109800008F8C00D0958B00D403E000083162FFFFFD ++:109810008CC200140A001305000000000A001306A1 ++:10982000ACA0006427BDFFD8AFB000108F90001C23 ++:10983000AFBF0024AFB40020AFB20018AFB1001426 ++:10984000AFB3001C9613000E3C07600A3C14600680 ++:109850003264FFFF369300100E00125534F40410EA ++:109860008F8400D43C11600E0E00099B363100102D ++:10987000920E00153C0708008CE700603C12601255 ++:1098800031CD000FA38D00F08E0E00048E0D000868 ++:1098900096080012961F00109619001A9618001EBE ++:1098A000960F001C310CFFFF33EBFFFF332AFFFF45 ++:1098B0003309FFFF31E6FFFF3C010800AC2B0040FD ++:1098C0003C010800AC2C00243C010800AC2A0044F8 ++:1098D000AE293178AE26317C92020015960300162F ++:1098E00036520010304400FF3065FFFF3C06080090 ++:1098F0008CC60064AE243188AE4500B492080014D2 ++:1099000096190018241F0001011FC004332FFFFF08 ++:109910003C0508008CA50058AE5800B8AE4F00BCFE ++:10992000920C0014AF8E00D8AF8D00DC318B00FF9D ++:10993000AE4B00C0920A0015AE670048AE66004C00 ++:10994000314900FFAE4900C8AE65007C3C03080009 ++:109950008C6300503C0408008C84004C3C080800D8 ++:109960008D0800543C0208008C42005C8FBF00242C ++:10997000AE6300808FB00010AE8300748FB3001C04 ++:10998000AE22319CAE4200DCAE2731A0AE2631A41F ++:10999000AE24318CAE233190AE283194AE2531986F ++:1099A000AE870050AE860054AE8500708FB10014B3 ++:1099B000AE4700E0AE4600E4AE4400CCAE4300D07B ++:1099C000AE4800D4AE4500D88FB400208FB2001846 ++:1099D00003E0000827BD002827BDFFE0AFB1001459 ++:1099E000AFBF0018241100010E000845AFB00010F1 ++:1099F00010510005978400E6978300CC0083102B5C ++:109A0000144000088F8500D4240700028FBF00187F ++:109A10008FB100148FB0001000E0102103E00008A7 ++:109A200027BD00200E000C7A24040005AF8200E858 ++:109A30001040FFF6240700020E0008498F90001C1A ++:109A4000979F00E68F9900E88F8D00C827EF0001EF ++:109A5000240E0050AF590020A78F00E6A1AE0000F1 ++:109A60003C0C08008D8C00648F8600C8240A80009E ++:109A7000000C5E00ACCB0074A4C0000694C9000AC0 ++:109A8000241FFF803C0D000C012AC024A4D8000A2A ++:109A900090C8000A24182000011F1825A0C3000A3E ++:109AA0008F8700C8A0E000788F8500C800003821AB ++:109AB000A0A000833C0208008C4200508F8400E884 ++:109AC0000044782101FFC824AF590028960B0002FA ++:109AD00031EE007F01DA6021018D3021A4CB00D46A ++:109AE000960A0002AF8600D03C0E000425492401EE ++:109AF000A4C900E68E080004ACC800048E03000868 ++:109B0000ACC30000A4C00010A4C00014A0C000D0CA ++:109B10008F8500D02403FFBFA0A000D13C04080023 ++:109B20008C8400648F8200D0A04400D28E1F000C71 ++:109B30008F8A00D0978F00E4AD5F001C8E19001053 ++:109B400024100030AD590018A5400030A551005434 ++:109B5000A5510056A54F0016AD4E0068AD580080C7 ++:109B6000AD580084914D006231AC000F358B001070 ++:109B7000A14B00628F8600D090C900633128007F1E ++:109B8000A0C800638F8400D02406FFFF9085006387 ++:109B900000A31024A08200638F9100D000E0102168 ++:109BA000923F00BC37F90001A23900BC8F8A00D077 ++:109BB000938F00F0AD580064AD5000C0914E00D3BB ++:109BC000000F690031CC000F018D5825A14B00D347 ++:109BD0008F8500D08F8900DCACA900E88F8800D881 ++:109BE0008FBF00188FB100148FB0001027BD002068 ++:109BF000ACA800ECA4A600D6A4A000E0A4A000E2BB ++:109C000003E000080000000027BDFFE0AFB0001037 ++:109C10008F90001CAFB10014AFBF00188E19000464 ++:109C20003C1808008F180050240FFF80001989C0CD ++:109C30000238702131CD007F01CF602401BA50215C ++:109C40003C0B000CAF4C0028014B4021950900D47F ++:109C5000950400D68E0700043131FFFFAF8800D095 ++:109C60000E000913000721C08E0600048F8300C870 ++:109C7000000629C0AF4500209064003E30820040BD ++:109C8000144000068F8400D0341FFFFF948300D659 ++:109C90003062FFFF145F000400000000948400D6CF ++:109CA0000E0008A83084FFFF8E050004022030213A ++:109CB0008FBF00188FB100148FB000102404002251 ++:109CC00000003821000529C00A00127C27BD0020B1 ++:109CD00027BDFFE0AFB100143091FFFFAFB000101F ++:109CE000AFBF00181220001D000080218F86001CCD ++:109CF0008CC500002403000600053F020005140285 ++:109D000030E4000714830015304500FF2CA800063E ++:109D10001100004D000558803C0C0800258C57D4DC ++:109D2000016C50218D490000012000080000000056 ++:109D30008F8E00EC240D000111CD005900000000B1 ++:109D4000260B00013170FFFF24CA00200211202BD6 ++:109D5000014030211480FFE6AF8A001C0200102170 ++:109D60008FBF00188FB100148FB0001003E00008FF ++:109D700027BD0020938700CE14E00038240400148F ++:109D80000E001338000000008F86001C2402000122 ++:109D90000A00147FAF8200EC8F8900EC24080002D7 ++:109DA0001128003B2404001300002821000030216A ++:109DB000240700010E00127C000000000A00147F3E ++:109DC0008F86001C8F8700EC2405000214E5FFF647 ++:109DD000240400120E0012E9000000008F8500E844 ++:109DE00000403021240400120E00127C00003821B3 ++:109DF0000A00147F8F86001C8F8300EC241F000351 ++:109E0000147FFFD0260B00010E00129B0000000003 ++:109E10008F8500E800403021240200022404001055 ++:109E200000003821AF8200EC0E00127C0000000020 ++:109E30000A00147F8F86001C8F8F00EC240600021E ++:109E400011E6000B0000000024040010000028218F ++:109E5000000030210A00149C240700010000282182 ++:109E60000E00127C000030210A00147F8F86001C37 ++:109E70000E0013A500000000144000128F99001C72 ++:109E80008F86001C240200030A00147FAF8200ECBE ++:109E90000E001431000000000A00147F8F86001CA1 ++:109EA0000E00128B000000002402000224040014A3 ++:109EB0000000282100003021000038210A0014B9D8 ++:109EC000AF8200EC004038212404001097380002D3 ++:109ED000000028210E00127C3306FFFF0A00147FC9 ++:109EE0008F86001C8F8400C83C077FFF34E6FFFF8D ++:109EF0008C8500742402000100A61824AC83007431 ++:109F000003E00008A082000510A000362CA200800B ++:109F1000274A04003C0B000524090080104000077C ++:109F20002408008030A6000F00C540212D030081C9 ++:109F30001460000200A0482124080080AF4B0030CC ++:109F400000000000000000000000000011000009F7 ++:109F500000003821014030218C8D000024E70004EE ++:109F600000E8602BACCD0000248400041580FFFACB ++:109F700024C60004000000000000000000000000F3 ++:109F80003C0E0006010E3825AF47003000000000EF ++:109F900000000000000000008F4F000031E80010BA ++:109FA0001100FFFD000000008F42003C8F43003C89 ++:109FB0000049C8210323C02B130000040000000047 ++:109FC0008F4C003825860001AF4600388F47003C93 ++:109FD00000A9282300E96821AF4D003C14A0FFCE62 ++:109FE0002CA2008003E000080000000027BDFFD085 ++:109FF0003C020002AFB100143C11000CAF45003828 ++:10A00000AFB3001CAF46003C00809821AF42003047 ++:10A0100024050088AF44002803512021AFBF002849 ++:10A02000AFB50024AFB40020AFB200180E0014F199 ++:10A03000AFB000103C1F08008FFF004C3C18080018 ++:10A040008F1800642410FF8003F3A82132B9007F29 ++:10A0500002B078240018A0C0033A70210018914083 ++:10A0600001D12021AF4F00280E0014F10254282105 ++:10A070003C0D08008DAD00502405012001B358218E ++:10A08000316C007F01705024019A48210131202158 ++:10A090000E0014F1AF4A00283C0808008D08005457 ++:10A0A0003C0508008CA500640113382130E6007FD0 ++:10A0B00000F0182400DA202100912021AF4300286D ++:10A0C0000E0014F1000529403C0208008C420058A3 ++:10A0D0003C1008008E1000601200001C0053882104 ++:10A0E0002415FF800A0015743C14000C3226007FF2 ++:10A0F0000235182400DA202102402821AF4300282D ++:10A10000009420210E0014F12610FFC01200000F51 ++:10A11000023288212E05004110A0FFF42412100005 ++:10A120003226007F001091800235182400DA2021A9 ++:10A1300002402821AF430028009420210E0014F192 ++:10A14000000080211600FFF3023288213C0B08003A ++:10A150008D6B005C240AFF802405000201734021FE ++:10A16000010A4824AF4900283C0408009484006296 ++:10A170003110007F021A88213C07000C0E000CAA47 ++:10A180000227982100402821026020218FBF00284B ++:10A190008FB500248FB400208FB3001C8FB200183D ++:10A1A0008FB100148FB000100A0014F127BD0030E9 ++:10A1B0008F83001C8C62000410400003000000002C ++:10A1C00003E00008000000008C6400108C650008AB ++:10A1D0000A00152A8C66000C000000000000001B1D ++:10A1E0000000000F0000000A000000080000000648 ++:10A1F000000000050000000500000004000000044D ++:10A200000000000300000003000000030000000342 ++:10A210000000000300000002000000020000000235 ++:10A220000000000200000002000000020000000226 ++:10A230000000000200000002000000020000000216 ++:10A240000000000200000002000000020000000206 ++:10A2500000000001000000010000000108000F24C0 ++:10A2600008000D6C08000FB80800106008000F4CC3 ++:10A2700008000F8C0800119408000D88080011B820 ++:10A2800008000DD8080015540800151C08000D889A ++:10A2900008000D8808000D880800124008001240D0 ++:10A2A00008000D8808000D88080014E008000D88DB ++:10A2B00008000D8808000D8808000D88080013B4F8 ++:10A2C00008000D8808000D8808000D8808000D881A ++:10A2D00008000D8808000D8808000D8808000D880A ++:10A2E00008000D8808000D8808000D8808000D88FA ++:10A2F00008000D8808000D8808000FAC08000D88C4 ++:10A3000008000D880800167808000D8808000D88E0 ++:10A3100008000D8808000D8808000D8808000D88C9 ++:10A3200008000D8808000D8808000D8808000D88B9 ++:10A3300008000D8808000D8808000D8808000D88A9 ++:10A3400008000D8808000D8808000D88080014100A ++:10A3500008000D8808000D8808001334080012A4B6 ++:10A3600008001E2C08001EFC08001F1408001F28EF ++:10A3700008001F3808001E2C08001E2C08001E2C88 ++:10A3800008001ED808002E1408002E1C08002DE41A ++:10A3900008002DF008002DFC08002E08080052F4DB ++:10A3A000080052B40800528008005254080052308D ++:10A3B000080051EC0A000C840000000000000000BE ++:10A3C0000000000D727870362E322E33000000002F ++:10A3D000060203030000000000000001000000006E ++:10A3E000000000000000000000000000000000006D ++:10A3F000000000000000000000000000000000005D ++:10A40000000000000000000000000000000000004C ++:10A41000000000000000000000000000000000003C ++:10A42000000000000000000000000000000000002C ++:10A43000000000000000000000000000000000001C ++:10A44000000000000000000000000000000000000C ++:10A4500000000000000000000000000000000000FC ++:10A4600000000000000000000000000000000000EC ++:10A4700000000000000000000000000000000000DC ++:10A4800000000000000000000000000000000000CC ++:10A4900000000000000000000000000000000000BC ++:10A4A00000000000000000000000000000000000AC ++:10A4B000000000000000000000000000000000009C ++:10A4C000000000000000000000000000000000008C ++:10A4D000000000000000000000000000000000007C ++:10A4E000000000000000000000000000000000006C ++:10A4F000000000000000000000000000000000005C ++:10A50000000000000000000000000000000000004B ++:10A51000000000000000000000000000000000003B ++:10A52000000000000000000000000000000000002B ++:10A53000000000000000000000000000000000001B ++:10A54000000000000000000000000000000000000B ++:10A5500000000000000000000000000000000000FB ++:10A5600000000000000000000000000000000000EB ++:10A5700000000000000000000000000000000000DB ++:10A5800000000000000000000000000000000000CB ++:10A5900000000000000000000000000000000000BB ++:10A5A00000000000000000000000000000000000AB ++:10A5B000000000000000000000000000000000009B ++:10A5C000000000000000000000000000000000008B ++:10A5D000000000000000000000000000000000007B ++:10A5E000000000000000000000000000000000006B ++:10A5F000000000000000000000000000000000005B ++:10A60000000000000000000000000000000000004A ++:10A61000000000000000000000000000000000003A ++:10A62000000000000000000000000000000000002A ++:10A63000000000000000000000000000000000001A ++:10A64000000000000000000000000000000000000A ++:10A6500000000000000000000000000000000000FA ++:10A6600000000000000000000000000000000000EA ++:10A6700000000000000000000000000000000000DA ++:10A6800000000000000000000000000000000000CA ++:10A6900000000000000000000000000000000000BA ++:10A6A00000000000000000000000000000000000AA ++:10A6B000000000000000000000000000000000009A ++:10A6C000000000000000000000000000000000008A ++:10A6D000000000000000000000000000000000007A ++:10A6E000000000000000000000000000000000006A ++:10A6F000000000000000000000000000000000005A ++:10A700000000000000000000000000000000000049 ++:10A710000000000000000000000000000000000039 ++:10A720000000000000000000000000000000000029 ++:10A730000000000000000000000000000000000019 ++:10A740000000000000000000000000000000000009 ++:10A7500000000000000000000000000000000000F9 ++:10A7600000000000000000000000000000000000E9 ++:10A7700000000000000000000000000000000000D9 ++:10A7800000000000000000000000000000000000C9 ++:10A7900000000000000000000000000000000000B9 ++:10A7A00000000000000000000000000000000000A9 ++:10A7B0000000000000000000000000000000000099 ++:10A7C0000000000000000000000000000000000089 ++:10A7D0000000000000000000000000000000000079 ++:10A7E0000000000000000000000000000000000069 ++:10A7F0000000000000000000000000000000000059 ++:10A800000000000000000000000000000000000048 ++:10A810000000000000000000000000000000000038 ++:10A820000000000000000000000000000000000028 ++:10A830000000000000000000000000000000000018 ++:10A840000000000000000000000000000000000008 ++:10A8500000000000000000000000000000000000F8 ++:10A8600000000000000000000000000000000000E8 ++:10A8700000000000000000000000000000000000D8 ++:10A8800000000000000000000000000000000000C8 ++:10A8900000000000000000000000000000000000B8 ++:10A8A00000000000000000000000000000000000A8 ++:10A8B0000000000000000000000000000000000098 ++:10A8C0000000000000000000000000000000000088 ++:10A8D0000000000000000000000000000000000078 ++:10A8E0000000000000000000000000000000000068 ++:10A8F0000000000000000000000000000000000058 ++:10A900000000000000000000000000000000000047 ++:10A910000000000000000000000000000000000037 ++:10A920000000000000000000000000000000000027 ++:10A930000000000000000000000000000000000017 ++:10A940000000000000000000000000000000000007 ++:10A9500000000000000000000000000000000000F7 ++:10A9600000000000000000000000000000000000E7 ++:10A9700000000000000000000000000000000000D7 ++:10A9800000000000000000000000000000000000C7 ++:10A9900000000000000000000000000000000000B7 ++:10A9A00000000000000000000000000000000000A7 ++:10A9B0000000000000000000000000000000000097 ++:10A9C0000000000000000000000000000000000087 ++:10A9D0000000000000000000000000000000000077 ++:10A9E0000000000000000000000000000000000067 ++:10A9F0000000000000000000000000000000000057 ++:10AA00000000000000000000000000000000000046 ++:10AA10000000000000000000000000000000000036 ++:10AA20000000000000000000000000000000000026 ++:10AA30000000000000000000000000000000000016 ++:10AA40000000000000000000000000000000000006 ++:10AA500000000000000000000000000000000000F6 ++:10AA600000000000000000000000000000000000E6 ++:10AA700000000000000000000000000000000000D6 ++:10AA800000000000000000000000000000000000C6 ++:10AA900000000000000000000000000000000000B6 ++:10AAA00000000000000000000000000000000000A6 ++:10AAB0000000000000000000000000000000000096 ++:10AAC0000000000000000000000000000000000086 ++:10AAD0000000000000000000000000000000000076 ++:10AAE0000000000000000000000000000000000066 ++:10AAF0000000000000000000000000000000000056 ++:10AB00000000000000000000000000000000000045 ++:10AB10000000000000000000000000000000000035 ++:10AB20000000000000000000000000000000000025 ++:10AB30000000000000000000000000000000000015 ++:10AB40000000000000000000000000000000000005 ++:10AB500000000000000000000000000000000000F5 ++:10AB600000000000000000000000000000000000E5 ++:10AB700000000000000000000000000000000000D5 ++:10AB800000000000000000000000000000000000C5 ++:10AB900000000000000000000000000000000000B5 ++:10ABA00000000000000000000000000000000000A5 ++:10ABB0000000000000000000000000000000000095 ++:10ABC0000000000000000000000000000000000085 ++:10ABD0000000000000000000000000000000000075 ++:10ABE0000000000000000000000000000000000065 ++:10ABF0000000000000000000000000000000000055 ++:10AC00000000000000000000000000000000000044 ++:10AC10000000000000000000000000000000000034 ++:10AC20000000000000000000000000000000000024 ++:10AC30000000000000000000000000000000000014 ++:10AC40000000000000000000000000000000000004 ++:10AC500000000000000000000000000000000000F4 ++:10AC600000000000000000000000000000000000E4 ++:10AC700000000000000000000000000000000000D4 ++:10AC800000000000000000000000000000000000C4 ++:10AC900000000000000000000000000000000000B4 ++:10ACA00000000000000000000000000000000000A4 ++:10ACB0000000000000000000000000000000000094 ++:10ACC0000000000000000000000000000000000084 ++:10ACD0000000000000000000000000000000000074 ++:10ACE0000000000000000000000000000000000064 ++:10ACF0000000000000000000000000000000000054 ++:10AD00000000000000000000000000000000000043 ++:10AD10000000000000000000000000000000000033 ++:10AD20000000000000000000000000000000000023 ++:10AD30000000000000000000000000000000000013 ++:10AD40000000000000000000000000000000000003 ++:10AD500000000000000000000000000000000000F3 ++:10AD600000000000000000000000000000000000E3 ++:10AD700000000000000000000000000000000000D3 ++:10AD800000000000000000000000000000000000C3 ++:10AD900000000000000000000000000000000000B3 ++:10ADA00000000000000000000000000000000000A3 ++:10ADB0000000000000000000000000000000000093 ++:10ADC0000000000000000000000000000000000083 ++:10ADD0000000000000000000000000000000000073 ++:10ADE0000000000000000000000000000000000063 ++:10ADF0000000000000000000000000000000000053 ++:10AE00000000000000000000000000000000000042 ++:10AE10000000000000000000000000000000000032 ++:10AE20000000000000000000000000000000000022 ++:10AE30000000000000000000000000000000000012 ++:10AE40000000000000000000000000000000000002 ++:10AE500000000000000000000000000000000000F2 ++:10AE600000000000000000000000000000000000E2 ++:10AE700000000000000000000000000000000000D2 ++:10AE800000000000000000000000000000000000C2 ++:10AE900000000000000000000000000000000000B2 ++:10AEA00000000000000000000000000000000000A2 ++:10AEB0000000000000000000000000000000000092 ++:10AEC0000000000000000000000000000000000082 ++:10AED0000000000000000000000000000000000072 ++:10AEE0000000000000000000000000000000000062 ++:10AEF0000000000000000000000000000000000052 ++:10AF00000000000000000000000000000000000041 ++:10AF10000000000000000000000000000000000031 ++:10AF20000000000000000000000000000000000021 ++:10AF30000000000000000000000000000000000011 ++:10AF40000000000000000000000000000000000001 ++:10AF500000000000000000000000000000000000F1 ++:10AF600000000000000000000000000000000000E1 ++:10AF700000000000000000000000000000000000D1 ++:10AF800000000000000000000000000000000000C1 ++:10AF900000000000000000000000000000000000B1 ++:10AFA00000000000000000000000000000000000A1 ++:10AFB0000000000000000000000000000000000091 ++:10AFC0000000000000000000000000000000000081 ++:10AFD0000000000000000000000000000000000071 ++:10AFE0000000000000000000000000000000000061 ++:10AFF0000000000000000000000000000000000051 ++:10B000000000000000000000000000000000000040 ++:10B010000000000000000000000000000000000030 ++:10B020000000000000000000000000000000000020 ++:10B030000000000000000000000000000000000010 ++:10B040000000000000000000000000000000000000 ++:10B0500000000000000000000000000000000000F0 ++:10B0600000000000000000000000000000000000E0 ++:10B0700000000000000000000000000000000000D0 ++:10B0800000000000000000000000000000000000C0 ++:10B0900000000000000000000000000000000000B0 ++:10B0A00000000000000000000000000000000000A0 ++:10B0B0000000000000000000000000000000000090 ++:10B0C0000000000000000000000000000000000080 ++:10B0D0000000000000000000000000000000000070 ++:10B0E0000000000000000000000000000000000060 ++:10B0F0000000000000000000000000000000000050 ++:10B10000000000000000000000000000000000003F ++:10B11000000000000000000000000000000000002F ++:10B12000000000000000000000000000000000001F ++:10B13000000000000000000000000000000000000F ++:10B1400000000000000000000000000000000000FF ++:10B1500000000000000000000000000000000000EF ++:10B1600000000000000000000000000000000000DF ++:10B1700000000000000000000000000000000000CF ++:10B1800000000000000000000000000000000000BF ++:10B1900000000000000000000000000000000000AF ++:10B1A000000000000000000000000000000000009F ++:10B1B000000000000000000000000000000000008F ++:10B1C000000000000000000000000000000000007F ++:10B1D000000000000000000000000000000000006F ++:10B1E000000000000000000000000000000000005F ++:10B1F000000000000000000000000000000000004F ++:10B20000000000000000000000000000000000003E ++:10B21000000000000000000000000000000000002E ++:10B22000000000000000000000000000000000001E ++:10B23000000000000000000000000000000000000E ++:10B2400000000000000000000000000000000000FE ++:10B2500000000000000000000000000000000000EE ++:10B2600000000000000000000000000000000000DE ++:10B2700000000000000000000000000000000000CE ++:10B2800000000000000000000000000000000000BE ++:10B2900000000000000000000000000000000000AE ++:10B2A000000000000000000000000000000000009E ++:10B2B000000000000000000000000000000000008E ++:10B2C000000000000000000000000000000000007E ++:10B2D000000000000000000000000000000000006E ++:10B2E000000000000000000000000000000000005E ++:10B2F000000000000000000000000000000000004E ++:10B30000000000000000000000000000000000003D ++:10B31000000000000000000000000000000000002D ++:10B32000000000000000000000000000000000001D ++:10B33000000000000000000000000000000000000D ++:10B3400000000000000000000000000000000000FD ++:10B3500000000000000000000000000000000000ED ++:10B3600000000000000000000000000000000000DD ++:10B3700000000000000000000000000000000000CD ++:10B3800000000000000000000000000000000000BD ++:10B3900000000000000000000000000000000000AD ++:10B3A000000000000000000000000000000000009D ++:10B3B000000000000000000000000000000000008D ++:10B3C000000000000000000000000000000000007D ++:10B3D000000000000000000000000000000000006D ++:10B3E000000000000000000000000000000000005D ++:10B3F000000000000000000000000000000000004D ++:10B40000000000000000000000000000000000003C ++:10B41000000000000000000000000000000000002C ++:10B42000000000000000000000000000000000001C ++:10B43000000000000000000000000000000000000C ++:10B4400000000000000000000000000000000000FC ++:10B4500000000000000000000000000000000000EC ++:10B4600000000000000000000000000000000000DC ++:10B4700000000000000000000000000000000000CC ++:10B4800000000000000000000000000000000000BC ++:10B4900000000000000000000000000000000000AC ++:10B4A000000000000000000000000000000000009C ++:10B4B000000000000000000000000000000000008C ++:10B4C000000000000000000000000000000000007C ++:10B4D000000000000000000000000000000000006C ++:10B4E000000000000000000000000000000000005C ++:10B4F000000000000000000000000000000000004C ++:10B50000000000000000000000000000000000003B ++:10B51000000000000000000000000000000000002B ++:10B52000000000000000000000000000000000001B ++:10B53000000000000000000000000000000000000B ++:10B5400000000000000000000000000000000000FB ++:10B5500000000000000000000000000000000000EB ++:10B5600000000000000000000000000000000000DB ++:10B5700000000000000000000000000000000000CB ++:10B5800000000000000000000000000000000000BB ++:10B5900000000000000000000000000000000000AB ++:10B5A000000000000000000000000000000000009B ++:10B5B000000000000000000000000000000000008B ++:10B5C000000000000000000000000000000000007B ++:10B5D000000000000000000000000000000000006B ++:10B5E000000000000000000000000000000000005B ++:10B5F000000000000000000000000000000000004B ++:10B60000000000000000000000000000000000003A ++:10B61000000000000000000000000000000000002A ++:10B62000000000000000000000000000000000001A ++:10B63000000000000000000000000000000000000A ++:10B6400000000000000000000000000000000000FA ++:10B6500000000000000000000000000000000000EA ++:10B6600000000000000000000000000000000000DA ++:10B6700000000000000000000000000000000000CA ++:10B6800000000000000000000000000000000000BA ++:10B6900000000000000000000000000000000000AA ++:10B6A000000000000000000000000000000000009A ++:10B6B000000000000000000000000000000000008A ++:10B6C000000000000000000000000000000000007A ++:10B6D000000000000000000000000000000000006A ++:10B6E000000000000000000000000000000000005A ++:10B6F000000000000000000000000000000000004A ++:10B700000000000000000000000000000000000039 ++:10B710000000000000000000000000000000000029 ++:10B720000000000000000000000000000000000019 ++:10B730000000000000000000000000000000000009 ++:10B7400000000000000000000000000000000000F9 ++:10B7500000000000000000000000000000000000E9 ++:10B7600000000000000000000000000000000000D9 ++:10B7700000000000000000000000000000000000C9 ++:10B7800000000000000000000000000000000000B9 ++:10B7900000000000000000000000000000000000A9 ++:10B7A0000000000000000000000000000000000099 ++:10B7B0000000000000000000000000000000000089 ++:10B7C0000000000000000000000000000000000079 ++:10B7D0000000000000000000000000000000000069 ++:10B7E0000000000000000000000000000000000059 ++:10B7F0000000000000000000000000000000000049 ++:10B800000000000000000000000000000000000038 ++:10B810000000000000000000000000000000000028 ++:10B820000000000000000000000000000000000018 ++:10B830000000000000000000000000000000000008 ++:10B8400000000000000000000000000000000000F8 ++:10B8500000000000000000000000000000000000E8 ++:10B8600000000000000000000000000000000000D8 ++:10B8700000000000000000000000000000000000C8 ++:10B8800000000000000000000000000000000000B8 ++:10B8900000000000000000000000000000000000A8 ++:10B8A0000000000000000000000000000000000098 ++:10B8B0000000000000000000000000000000000088 ++:10B8C0000000000000000000000000000000000078 ++:10B8D0000000000000000000000000000000000068 ++:10B8E0000000000000000000000000000000000058 ++:10B8F0000000000000000000000000000000000048 ++:10B900000000000000000000000000000000000037 ++:10B910000000000000000000000000000000000027 ++:10B920000000000000000000000000000000000017 ++:10B930000000000000000000000000000000000007 ++:10B9400000000000000000000000000000000000F7 ++:10B9500000000000000000000000000000000000E7 ++:10B9600000000000000000000000000000000000D7 ++:10B9700000000000000000000000000000000000C7 ++:10B9800000000000000000000000000000000000B7 ++:10B9900000000000000000000000000000000000A7 ++:10B9A0000000000000000000000000000000000097 ++:10B9B0000000000000000000000000000000000087 ++:10B9C0000000000000000000000000000000000077 ++:10B9D0000000000000000000000000000000000067 ++:10B9E0000000000000000000000000000000000057 ++:10B9F0000000000000000000000000000000000047 ++:10BA00000000000000000000000000000000000036 ++:10BA10000000000000000000000000000000000026 ++:10BA20000000000000000000000000000000000016 ++:10BA30000000000000000000000000000000000006 ++:10BA400000000000000000000000000000000000F6 ++:10BA500000000000000000000000000000000000E6 ++:10BA600000000000000000000000000000000000D6 ++:10BA700000000000000000000000000000000000C6 ++:10BA800000000000000000000000000000000000B6 ++:10BA900000000000000000000000000000000000A6 ++:10BAA0000000000000000000000000000000000096 ++:10BAB0000000000000000000000000000000000086 ++:10BAC0000000000000000000000000000000000076 ++:10BAD0000000000000000000000000000000000066 ++:10BAE0000000000000000000000000000000000056 ++:10BAF0000000000000000000000000000000000046 ++:10BB00000000000000000000000000000000000035 ++:10BB10000000000000000000000000000000000025 ++:10BB20000000000000000000000000000000000015 ++:10BB30000000000000000000000000000000000005 ++:10BB400000000000000000000000000000000000F5 ++:10BB500000000000000000000000000000000000E5 ++:10BB600000000000000000000000000000000000D5 ++:10BB700000000000000000000000000000000000C5 ++:10BB800000000000000000000000000000000000B5 ++:10BB900000000000000000000000000000000000A5 ++:10BBA0000000000000000000000000000000000095 ++:10BBB0000000000000000000000000000000000085 ++:10BBC0000000000000000000000000000000000075 ++:10BBD0000000000000000000000000000000000065 ++:10BBE0000000000000000000000000000000000055 ++:10BBF0000000000000000000000000000000000045 ++:10BC00000000000000000000000000000000000034 ++:10BC10000000000000000000000000000000000024 ++:10BC20000000000000000000000000000000000014 ++:10BC30000000000000000000000000000000000004 ++:10BC400000000000000000000000000000000000F4 ++:10BC500000000000000000000000000000000000E4 ++:10BC600000000000000000000000000000000000D4 ++:10BC700000000000000000000000000000000000C4 ++:10BC800000000000000000000000000000000000B4 ++:10BC900000000000000000000000000000000000A4 ++:10BCA0000000000000000000000000000000000094 ++:10BCB0000000000000000000000000000000000084 ++:10BCC0000000000000000000000000000000000074 ++:10BCD0000000000000000000000000000000000064 ++:10BCE0000000000000000000000000000000000054 ++:10BCF0000000000000000000000000000000000044 ++:10BD00000000000000000000000000000000000033 ++:10BD10000000000000000000000000000000000023 ++:10BD20000000000000000000000000000000000013 ++:10BD30000000000000000000000000000000000003 ++:10BD400000000000000000000000000000000000F3 ++:10BD500000000000000000000000000000000000E3 ++:10BD600000000000000000000000000000000000D3 ++:10BD700000000000000000000000000000000000C3 ++:10BD800000000000000000000000000000000000B3 ++:10BD900000000000000000000000000000000000A3 ++:10BDA0000000000000000000000000000000000093 ++:10BDB0000000000000000000000000000000000083 ++:10BDC0000000000000000000000000000000000073 ++:10BDD0000000000000000000000000000000000063 ++:10BDE0000000000000000000000000000000000053 ++:10BDF0000000000000000000000000000000000043 ++:10BE00000000000000000000000000000000000032 ++:10BE10000000000000000000000000000000000022 ++:10BE20000000000000000000000000000000000012 ++:10BE30000000000000000000000000000000000002 ++:10BE400000000000000000000000000000000000F2 ++:10BE500000000000000000000000000000000000E2 ++:10BE600000000000000000000000000000000000D2 ++:10BE700000000000000000000000000000000000C2 ++:10BE800000000000000000000000000000000000B2 ++:10BE900000000000000000000000000000000000A2 ++:10BEA0000000000000000000000000000000000092 ++:10BEB0000000000000000000000000000000000082 ++:10BEC0000000000000000000000000000000000072 ++:10BED0000000000000000000000000000000000062 ++:10BEE0000000000000000000000000000000000052 ++:10BEF0000000000000000000000000000000000042 ++:10BF00000000000000000000000000000000000031 ++:10BF10000000000000000000000000000000000021 ++:10BF20000000000000000000000000000000000011 ++:10BF30000000000000000000000000000000000001 ++:10BF400000000000000000000000000000000000F1 ++:10BF500000000000000000000000000000000000E1 ++:10BF600000000000000000000000000000000000D1 ++:10BF700000000000000000000000000000000000C1 ++:10BF800000000000000000000000000000000000B1 ++:10BF900000000000000000000000000000000000A1 ++:10BFA0000000000000000000000000000000000091 ++:10BFB0000000000000000000000000000000000081 ++:10BFC0000000000000000000000000000000000071 ++:10BFD0000000000000000000000000000000000061 ++:10BFE0000000000000000000000000000000000051 ++:10BFF0000000000000000000000000000000000041 ++:10C000000000000000000000000000000000000030 ++:10C010000000000000000000000000000000000020 ++:10C020000000000000000000000000000000000010 ++:10C030000000000000000000000000000000000000 ++:10C0400000000000000000000000000000000000F0 ++:10C0500000000000000000000000000000000000E0 ++:10C0600000000000000000000000000000000000D0 ++:10C0700000000000000000000000000000000000C0 ++:10C0800000000000000000000000000000000000B0 ++:10C0900000000000000000000000000000000000A0 ++:10C0A0000000000000000000000000000000000090 ++:10C0B0000000000000000000000000000000000080 ++:10C0C0000000000000000000000000000000000070 ++:10C0D0000000000000000000000000000000000060 ++:10C0E0000000000000000000000000000000000050 ++:10C0F0000000000000000000000000000000000040 ++:10C10000000000000000000000000000000000002F ++:10C11000000000000000000000000000000000001F ++:10C12000000000000000000000000000000000000F ++:10C1300000000000000000000000000000000000FF ++:10C1400000000000000000000000000000000000EF ++:10C1500000000000000000000000000000000000DF ++:10C1600000000000000000000000000000000000CF ++:10C1700000000000000000000000000000000000BF ++:10C1800000000000000000000000000000000000AF ++:10C19000000000000000000000000000000000009F ++:10C1A000000000000000000000000000000000008F ++:10C1B000000000000000000000000000000000007F ++:10C1C000000000000000000000000000000000006F ++:10C1D000000000000000000000000000000000005F ++:10C1E000000000000000000000000000000000004F ++:10C1F000000000000000000000000000000000003F ++:10C20000000000000000000000000000000000002E ++:10C21000000000000000000000000000000000001E ++:10C22000000000000000000000000000000000000E ++:10C2300000000000000000000000000000000000FE ++:10C2400000000000000000000000000000000000EE ++:10C2500000000000000000000000000000000000DE ++:10C2600000000000000000000000000000000000CE ++:10C2700000000000000000000000000000000000BE ++:10C2800000000000000000000000000000000000AE ++:10C29000000000000000000000000000000000009E ++:10C2A000000000000000000000000000000000008E ++:10C2B000000000000000000000000000000000007E ++:10C2C000000000000000000000000000000000006E ++:10C2D000000000000000000000000000000000005E ++:10C2E000000000000000000000000000000000004E ++:10C2F000000000000000000000000000000000003E ++:10C30000000000000000000000000000000000002D ++:10C31000000000000000000000000000000000001D ++:10C32000000000000000000000000000000000000D ++:10C3300000000000000000000000000000000000FD ++:10C3400000000000000000000000000000000000ED ++:10C3500000000000000000000000000000000000DD ++:10C3600000000000000000000000000000000000CD ++:10C3700000000000000000000000000000000000BD ++:10C3800000000000000000000000000000000000AD ++:10C39000000000000000000000000000000000009D ++:10C3A000000000000000000000000000000000008D ++:10C3B000000000000000000000000000000000007D ++:10C3C000000000000000000000000000000000006D ++:10C3D000000000000000000000000000000000005D ++:10C3E000000000000000000000000000000000004D ++:10C3F000000000000000000000000000000000003D ++:10C40000000000000000000000000000000000002C ++:10C41000000000000000000000000000000000001C ++:10C42000000000000000000000000000000000000C ++:10C4300000000000000000000000000000000000FC ++:10C4400000000000000000000000000000000000EC ++:10C4500000000000000000000000000000000000DC ++:10C4600000000000000000000000000000000000CC ++:10C4700000000000000000000000000000000000BC ++:10C4800000000000000000000000000000000000AC ++:10C49000000000000000000000000000000000009C ++:10C4A000000000000000000000000000000000008C ++:10C4B000000000000000000000000000000000007C ++:10C4C000000000000000000000000000000000006C ++:10C4D000000000000000000000000000000000005C ++:10C4E000000000000000000000000000000000004C ++:10C4F000000000000000000000000000000000003C ++:10C50000000000000000000000000000000000002B ++:10C51000000000000000000000000000000000001B ++:10C52000000000000000000000000000000000000B ++:10C5300000000000000000000000000000000000FB ++:10C5400000000000000000000000000000000000EB ++:10C5500000000000000000000000000000000000DB ++:10C5600000000000000000000000000000000000CB ++:10C5700000000000000000000000000000000000BB ++:10C5800000000000000000000000000000000000AB ++:10C59000000000000000000000000000000000009B ++:10C5A000000000000000000000000000000000008B ++:10C5B000000000000000000000000000000000007B ++:10C5C000000000000000000000000000000000006B ++:10C5D000000000000000000000000000000000005B ++:10C5E000000000000000000000000000000000004B ++:10C5F000000000000000000000000000000000003B ++:10C60000000000000000000000000000000000002A ++:10C61000000000000000000000000000000000001A ++:10C62000000000000000000000000000000000000A ++:10C6300000000000000000000000000000000000FA ++:10C6400000000000000000000000000000000000EA ++:10C6500000000000000000000000000000000000DA ++:10C6600000000000000000000000000000000000CA ++:10C6700000000000000000000000000000000000BA ++:10C6800000000000000000000000000000000000AA ++:10C69000000000000000000000000000000000009A ++:10C6A000000000000000000000000000000000008A ++:10C6B000000000000000000000000000000000007A ++:10C6C000000000000000000000000000000000006A ++:10C6D000000000000000000000000000000000005A ++:10C6E000000000000000000000000000000000004A ++:10C6F000000000000000000000000000000000003A ++:10C700000000000000000000000000000000000029 ++:10C710000000000000000000000000000000000019 ++:10C720000000000000000000000000000000000009 ++:10C7300000000000000000000000000000000000F9 ++:10C7400000000000000000000000000000000000E9 ++:10C7500000000000000000000000000000000000D9 ++:10C7600000000000000000000000000000000000C9 ++:10C7700000000000000000000000000000000000B9 ++:10C7800000000000000000000000000000000000A9 ++:10C790000000000000000000000000000000000099 ++:10C7A0000000000000000000000000000000000089 ++:10C7B0000000000000000000000000000000000079 ++:10C7C0000000000000000000000000000000000069 ++:10C7D0000000000000000000000000000000000059 ++:10C7E0000000000000000000000000000000000049 ++:10C7F0000000000000000000000000000000000039 ++:10C800000000000000000000000000000000000028 ++:10C810000000000000000000000000000000000018 ++:10C820000000000000000000000000000000000008 ++:10C8300000000000000000000000000000000000F8 ++:10C8400000000000000000000000000000000000E8 ++:10C8500000000000000000000000000000000000D8 ++:10C8600000000000000000000000000000000000C8 ++:10C8700000000000000000000000000000000000B8 ++:10C8800000000000000000000000000000000000A8 ++:10C890000000000000000000000000000000000098 ++:10C8A0000000000000000000000000000000000088 ++:10C8B0000000000000000000000000000000000078 ++:10C8C0000000000000000000000000000000000068 ++:10C8D0000000000000000000000000000000000058 ++:10C8E0000000000000000000000000000000000048 ++:10C8F0000000000000000000000000000000000038 ++:10C900000000000000000000000000000000000027 ++:10C910000000000000000000000000000000000017 ++:10C920000000000000000000000000000000000007 ++:10C9300000000000000000000000000000000000F7 ++:10C9400000000000000000000000000000000000E7 ++:10C9500000000000000000000000000000000000D7 ++:10C9600000000000000000000000000000000000C7 ++:10C9700000000000000000000000000000000000B7 ++:10C9800000000000000000000000000000000000A7 ++:10C990000000000000000000000000000000000097 ++:10C9A0000000000000000000000000000000000087 ++:10C9B0000000000000000000000000000000000077 ++:10C9C0000000000000000000000000000000000067 ++:10C9D0000000000000000000000000000000000057 ++:10C9E0000000000000000000000000000000000047 ++:10C9F0000000000000000000000000000000000037 ++:10CA00000000000000000000000000000000000026 ++:10CA10000000000000000000000000000000000016 ++:10CA20000000000000000000000000000000000006 ++:10CA300000000000000000000000000000000000F6 ++:10CA400000000000000000000000000000000000E6 ++:10CA500000000000000000000000000000000000D6 ++:10CA600000000000000000000000000000000000C6 ++:10CA700000000000000000000000000000000000B6 ++:10CA800000000000000000000000000000000000A6 ++:10CA90000000000000000000000000000000000096 ++:10CAA0000000000000000000000000000000000086 ++:10CAB0000000000000000000000000000000000076 ++:10CAC0000000000000000000000000000000000066 ++:10CAD0000000000000000000000000000000000056 ++:10CAE0000000000000000000000000000000000046 ++:10CAF0000000000000000000000000000000000036 ++:10CB00000000000000000000000000000000000025 ++:10CB10000000000000000000000000000000000015 ++:10CB20000000000000000000000000000000000005 ++:10CB300000000000000000000000000000000000F5 ++:10CB400000000000000000000000000000000000E5 ++:10CB500000000000000000000000000000000000D5 ++:10CB600000000000000000000000000000000000C5 ++:10CB700000000000000000000000000000000000B5 ++:10CB800000000000000000000000000000000000A5 ++:10CB90000000000000000000000000000000000095 ++:10CBA0000000000000000000000000000000000085 ++:10CBB0000000000000000000000000000000000075 ++:10CBC0000000000000000000000000000000000065 ++:10CBD0000000000000000000000000000000000055 ++:10CBE0000000000000000000000000000000000045 ++:10CBF0000000000000000000000000000000000035 ++:10CC00000000000000000000000000000000000024 ++:10CC10000000000000000000000000000000000014 ++:10CC20000000000000000000000000000000000004 ++:10CC300000000000000000000000000000000000F4 ++:10CC400000000000000000000000000000000000E4 ++:10CC500000000000000000000000000000000000D4 ++:10CC600000000000000000000000000000000000C4 ++:10CC700000000000000000000000000000000000B4 ++:10CC800000000000000000000000000000000000A4 ++:10CC90000000000000000000000000000000000094 ++:10CCA0000000000000000000000000000000000084 ++:10CCB0000000000000000000000000000000000074 ++:10CCC0000000000000000000000000000000000064 ++:10CCD0000000000000000000000000000000000054 ++:10CCE0000000000000000000000000000000000044 ++:10CCF0000000000000000000000000000000000034 ++:10CD00000000000000000000000000000000000023 ++:10CD10000000000000000000000000000000000013 ++:10CD20000000000000000000000000000000000003 ++:10CD300000000000000000000000000000000000F3 ++:10CD400000000000000000000000000000000000E3 ++:10CD500000000000000000000000000000000000D3 ++:10CD600000000000000000000000000000000000C3 ++:10CD700000000000000000000000000000000000B3 ++:10CD800000000000000000000000000000000000A3 ++:10CD90000000000000000000000000000000000093 ++:10CDA0000000000000000000000000000000000083 ++:10CDB0000000000000000000000000000000000073 ++:10CDC0000000000000000000000000000000000063 ++:10CDD0000000000000000000000000000000000053 ++:10CDE0000000000000000000000000000000000043 ++:10CDF0000000000000000000000000000000000033 ++:10CE00000000000000000000000000000000000022 ++:10CE10000000000000000000000000000000000012 ++:10CE20000000000000000000000000000000000002 ++:10CE300000000000000000000000000000000000F2 ++:10CE400000000000000000000000000000000000E2 ++:10CE500000000000000000000000000000000000D2 ++:10CE600000000000000000000000000000000000C2 ++:10CE700000000000000000000000000000000000B2 ++:10CE800000000000000000000000000000000000A2 ++:10CE90000000000000000000000000000000000092 ++:10CEA0000000000000000000000000000000000082 ++:10CEB0000000000000000000000000000000000072 ++:10CEC0000000000000000000000000000000000062 ++:10CED0000000000000000000000000000000000052 ++:10CEE0000000000000000000000000000000000042 ++:10CEF0000000000000000000000000000000000032 ++:10CF00000000000000000000000000000000000021 ++:10CF10000000000000000000000000000000000011 ++:10CF20000000000000000000000000000000000001 ++:10CF300000000000000000000000000000000000F1 ++:10CF400000000000000000000000000000000000E1 ++:10CF500000000000000000000000000000000000D1 ++:10CF600000000000000000000000000000000000C1 ++:10CF700000000000000000000000000000000000B1 ++:10CF800000000000000000000000000000000000A1 ++:10CF90000000000000000000000000000000000091 ++:10CFA0000000000000000000000000000000000081 ++:10CFB0000000000000000000000000000000000071 ++:10CFC0000000000000000000000000000000000061 ++:10CFD0000000000000000000000000000000000051 ++:10CFE0000000000000000000000000000000000041 ++:10CFF0000000000000000000000000000000000031 ++:10D000000000000000000000000000000000000020 ++:10D010000000000000000000000000000000000010 ++:10D020000000000000000000000000000000000000 ++:10D0300000000000000000000000000000000000F0 ++:10D0400000000000000000000000000000000000E0 ++:10D0500000000000000000000000000000000000D0 ++:10D0600000000000000000000000000000000000C0 ++:10D0700000000000000000000000000000000000B0 ++:10D0800000000000000000000000000000000000A0 ++:10D090000000000000000000000000000000000090 ++:10D0A0000000000000000000000000000000000080 ++:10D0B0000000000000000000000000000000000070 ++:10D0C0000000000000000000000000000000000060 ++:10D0D0000000000000000000000000000000000050 ++:10D0E0000000000000000000000000000000000040 ++:10D0F0000000000000000000000000000000000030 ++:10D10000000000000000000000000000000000001F ++:10D11000000000000000000000000000000000000F ++:10D1200000000000000000000000000000000000FF ++:10D1300000000000000000000000000000000000EF ++:10D1400000000000000000000000000000000000DF ++:10D1500000000000000000000000000000000000CF ++:10D1600000000000000000000000000000000000BF ++:10D1700000000000000000000000000000000000AF ++:10D18000000000000000000000000000000000009F ++:10D19000000000000000000000000000000000008F ++:10D1A000000000000000000000000000000000007F ++:10D1B000000000000000000000000000000000006F ++:10D1C000000000000000000000000000000000005F ++:10D1D000000000000000000000000000000000004F ++:10D1E000000000000000000000000000000000003F ++:10D1F000000000000000000000000000000000002F ++:10D20000000000000000000000000000000000001E ++:10D21000000000000000000000000000000000000E ++:10D2200000000000000000000000000000000000FE ++:10D2300000000000000000000000000000000000EE ++:10D2400000000000000000000000000000000000DE ++:10D2500000000000000000000000000000000000CE ++:10D2600000000000000000000000000000000000BE ++:10D2700000000000000000000000000000000000AE ++:10D28000000000000000000000000000000000009E ++:10D29000000000000000000000000000000000008E ++:10D2A000000000000000000000000000000000007E ++:10D2B000000000000000000000000000000000006E ++:10D2C000000000000000000000000000000000005E ++:10D2D000000000000000000000000000000000004E ++:10D2E000000000000000000000000000000000003E ++:10D2F000000000000000000000000000000000002E ++:10D30000000000000000000000000000000000001D ++:10D31000000000000000000000000000000000000D ++:10D3200000000000000000000000000000000000FD ++:10D3300000000000000000000000000000000000ED ++:10D3400000000000000000000000000000000000DD ++:10D3500000000000000000000000000000000000CD ++:10D3600000000000000000000000000000000000BD ++:10D3700000000000000000000000000000000000AD ++:10D38000000000000000000000000000000000009D ++:10D39000000000000000000000000000000000008D ++:10D3A000000000000000000000000000000000007D ++:10D3B000000000000000000000000000000000006D ++:10D3C000000000000000000000000000000000005D ++:10D3D000000000000000000000000000000000004D ++:10D3E000000000000000000000000000000000003D ++:10D3F000000000000000000000000000000000002D ++:10D40000000000000000000000000000000000001C ++:10D41000000000000000000000000000000000000C ++:10D4200000000000000000000000000000000000FC ++:10D4300000000000000000000000000000000000EC ++:10D4400000000000000000000000000000000000DC ++:10D4500000000000000000000000000000000000CC ++:10D4600000000000000000000000000000000000BC ++:10D4700000000000000000000000000000000000AC ++:10D48000000000000000000000000000000000009C ++:10D49000000000000000000000000000000000008C ++:10D4A000000000000000000000000000000000007C ++:10D4B000000000000000000000000000000000006C ++:10D4C000000000000000000000000000000000005C ++:10D4D000000000000000000000000000000000004C ++:10D4E000000000000000000000000000000000003C ++:10D4F000000000000000000000000000000000002C ++:10D50000000000000000000000000000000000001B ++:10D51000000000000000000000000000000000000B ++:10D5200000000000000000000000000000000000FB ++:10D5300000000000000000000000000000000000EB ++:10D5400000000000000000000000000000000000DB ++:10D5500000000000000000000000000000000000CB ++:10D5600000000000000000000000000000000000BB ++:10D5700000000000000000000000000000000000AB ++:10D58000000000000000000000000000000000009B ++:10D59000000000000000008000000000000000000B ++:10D5A000000000000000000000000000000000007B ++:10D5B00000000000000000000000000A0000000061 ++:10D5C0000000000000000000100000030000000048 ++:10D5D0000000000D0000000D3C02080024427340D2 ++:10D5E0003C030800246377CCAC4000000043202BB0 ++:10D5F0001480FFFD244200043C1D080037BD7FFC61 ++:10D6000003A0F0213C100800261032103C1C08003A ++:10D61000279C73400E0010FE000000000000000D6B ++:10D6200030A5FFFF30C600FF274301808F4201B8BD ++:10D630000440FFFE24020002AC640000A465000860 ++:10D64000A066000AA062000B3C021000AC67001844 ++:10D6500003E00008AF4201B83C0360008C624FF861 ++:10D660000440FFFE3C020200AC644FC0AC624FC4F9 ++:10D670003C02100003E00008AC624FF89482000CFA ++:10D680002486001400A0382100021302000210803A ++:10D690000082402100C8102B1040005700000000FD ++:10D6A00090C300002C6200095040005190C200015C ++:10D6B000000310803C030800246372F00043102133 ++:10D6C0008C420000004000080000000090C30001F0 ++:10D6D0002402000A1462003A000000000106102330 ++:10D6E0002C42000A1440003624C600028CE20000DE ++:10D6F00034420100ACE2000090C2000090C300017F ++:10D7000090C4000290C5000300031C000002160034 ++:10D710000043102500042200004410250045102578 ++:10D7200024C60004ACE2000490C2000090C30001D3 ++:10D7300090C4000290C500030002160000031C0004 ++:10D740000043102500042200004410250045102548 ++:10D7500024C600040A000CB8ACE2000890C3000123 ++:10D76000240200041462001624C6000290C20000C5 ++:10D7700090C400018CE30000000212000044102558 ++:10D780003463000424C60002ACE2000C0A000CB8AA ++:10D79000ACE3000090C300012402000314620008FF ++:10D7A00024C600028CE2000090C3000024C60001E1 ++:10D7B00034420008A0E300100A000CB8ACE20000FC ++:10D7C00003E000082402000190C3000124020002CB ++:10D7D0001062000224C40002010020210A000CB8DB ++:10D7E000008030210A000CB824C6000190C200015C ++:10D7F0000A000CB800C2302103E00008000010212C ++:10D8000027BDFFE8AFBF0014AFB000100E00130239 ++:10D8100000808021936200052403FFFE0200202186 ++:10D82000004310248FBF00148FB00010A3620005C6 ++:10D830000A00130B27BD001827BDFFE8AFB000108A ++:10D84000AFBF00140E000F3C0080802193620000E7 ++:10D8500024030050304200FF14430004240201005E ++:10D86000AF4201800A000D3002002021AF4001804C ++:10D87000020020218FBF00148FB000100A000FE7B4 ++:10D8800027BD001827BDFF80AFBE0078AFB700747A ++:10D89000AFB20060AFBF007CAFB60070AFB5006C38 ++:10D8A000AFB40068AFB30064AFB1005CAFB0005874 ++:10D8B0008F5001283C0208008C4231A02403FF80D5 ++:10D8C0009365003F0202102100431024AF42002460 ++:10D8D0003C0208008C4231A09364000530B200FF86 ++:10D8E000020210213042007F034218210004202749 ++:10D8F0003C02000A0062182130840001AF8300144A ++:10D900000000F0210000B82114800053AFA00050A7 ++:10D9100093430116934401128F450104306300FFC5 ++:10D920003C020001308400FF00A2282403431021A0 ++:10D9300003441821245640002467400014A001CD60 ++:10D940002402000193620000304300FF2402002003 ++:10D950001062000524020050106200060000000062 ++:10D960000A000D74000000000000000D0A000D7D8B ++:10D97000AFA000303C1E080027DE738C0A000D7D2E ++:10D98000AFA000303C0208008C4200DC24420001C1 ++:10D990003C010800AC2200DC0E00139F00000000D8 ++:10D9A0000A000F318FBF007C8F4201043C0300202E ++:10D9B00092D3000D004310240002202B00042140CC ++:10D9C000AFA400308F4301043C02004000621824E1 ++:10D9D000146000023485004000802821326200205B ++:10D9E000AFA500301440000234A6008000A0302112 ++:10D9F00010C0000BAFA6003093C500088F67004C25 ++:10DA00000200202100052B0034A5008130A5F08103 ++:10DA10000E000C9B30C600FF0A000F2E0000000015 ++:10DA20009362003E304200401040000F2402000488 ++:10DA300056420007240200120200202100E02821A3 ++:10DA40000E0013F702C030210A000F318FBF007C97 ++:10DA500016420005000000000E000D2100002021EC ++:10DA60000A000F318FBF007C9743011A96C4000E45 ++:10DA700093620035326500043075FFFF00442004D6 ++:10DA8000AFA400548ED1000410A000158ED400085D ++:10DA90009362003E3042004010400007000000004A ++:10DAA0000E0013E0022020211040000D00000000B5 ++:10DAB0000A000F2E000000008F6200440222102393 ++:10DAC0000440016A000000008F6200480222102317 ++:10DAD00004410166240400160A000E218FC20004CE ++:10DAE0008F6200480222102304400008000000005A ++:10DAF0003C0208008C423100244200013C01080035 ++:10DB0000AC2231000A000F23000000008F620040A9 ++:10DB100002221023184000128F8400143C020800D7 ++:10DB20008C423100327300FC0000A8212442000125 ++:10DB30003C010800AC2231008F6300409482011C3C ++:10DB4000022318233042FFFF0043102A50400010E8 ++:10DB50002402000C8F6200400A000DF20222102302 ++:10DB60009483011C9762003C0043102B1040000678 ++:10DB7000000000009482011C00551023A482011CA7 ++:10DB80000A000DF72402000CA480011C2402000CE2 ++:10DB9000AFA200308F620040005120231880000D9A ++:10DBA00002A4102A1440012600000000149500066B ++:10DBB00002A410233A620001304200011440012007 ++:10DBC0000000000002A41023022488210A000E098C ++:10DBD0003055FFFF00002021326200021040001A81 ++:10DBE000326200109362003E30420040504000110B ++:10DBF0008FC200040E00130202002021240200182C ++:10DC0000A362003F936200052403FFFE020020216F ++:10DC1000004310240E00130BA362000524040039F6 ++:10DC2000000028210E0013C9240600180A000F3036 ++:10DC300024020001240400170040F809000000003D ++:10DC40000A000F302402000110400108000000000B ++:10DC50008F63004C8F620054028210231C4001032A ++:10DC600002831023044200010060A021AFA4001829 ++:10DC7000AFB10010AFB50014934201208F65004092 ++:10DC80009763003C304200FF034210210044102102 ++:10DC90008FA400543063FFFF244240000083182B00 ++:10DCA0008FA40030AFA20020AFA50028008320255C ++:10DCB000AFA40030AFA50024AFA0002CAFB4003457 ++:10DCC0009362003E30420008504000118FC20000B5 ++:10DCD00002C0202127A500380E000CB2AFA00038EA ++:10DCE0005440000B8FC200008FA200383042010068 ++:10DCF000504000078FC200008FA3003C8F6200607D ++:10DD00000062102304430001AF6300608FC2000073 ++:10DD10000040F80927A400108FA200303042000212 ++:10DD200054400001327300FE9362003E30420040D6 ++:10DD3000104000378FA200248F6200541682001A10 ++:10DD40003262000124020014124200102A4200151F ++:10DD500010400006240200162402000C12420007A4 ++:10DD6000326200010A000E7D000000001242000530 ++:10DD7000326200010A000E7D000000000A000E78E9 ++:10DD80002417000E0A000E78241700100A000E7CDB ++:10DD900024170012936200232403FFBD00431024C4 ++:10DDA000A362002332620001104000198FA20024F8 ++:10DDB0002402000C1242000E2A42000D1040000600 ++:10DDC0002402000E2402000A124200078FA200243F ++:10DDD0000A000E9524420001124200088FA200247E ++:10DDE0000A000E95244200010A000E932417000831 ++:10DDF0002402000E16E20002241700162417001059 ++:10DE00008FA2002424420001AFA200248FA200248C ++:10DE10008FA300148F76004000431021AF620040B2 ++:10DE20008F8200149442011C104000090000000081 ++:10DE30008F6200488F6400409763003C00441023C9 ++:10DE40003063FFFF0043102A104000088FA20054E7 ++:10DE5000936400368F6300403402FFFC008210049C ++:10DE600000621821AF6300488FA200548FA60030D3 ++:10DE70000282902130C200081040000E0000000015 ++:10DE80008F6200581642000430C600FF9742011A04 ++:10DE90005040000134C6001093C500088FA700341D ++:10DEA0000200202100052B0034A500800E000C9BF1 ++:10DEB00030A5F0808F620040005610231840001BF0 ++:10DEC0008FA200183C0208008C42319830420010AA ++:10DED0001040000D24020001976200681440000AFF ++:10DEE000240200018F8200149442011C1440000699 ++:10DEF00024020001A76200689742007A244200646D ++:10DF00000A000EE9A7620012A76200120E001302B7 ++:10DF1000020020219362007D2403000102002021E1 ++:10DF2000344200010A000EE7AFA300501840000A77 ++:10DF3000000000000E001302020020219362007D09 ++:10DF40002403000102002021AFA30050344200044A ++:10DF50000E00130BA362007D9362003E304200402E ++:10DF60001440000C326200011040000A0000000062 ++:10DF70008F6300408FC20004240400182463000152 ++:10DF80000040F809AF6300408FA200300A000F3054 ++:10DF9000304200048F620058105200100000000050 ++:10DFA0008F620018022210231C4000082404000184 ++:10DFB0008F62001816220009000000008F62001C0A ++:10DFC000028210230440000500000000AF720058D8 ++:10DFD000AFA40050AF710018AF74001C12E0000B2A ++:10DFE0008FA200500E00130202002021A377003FF1 ++:10DFF0000E00130B0200202102E030212404003720 ++:10E000000E0013C9000028218FA200501040000309 ++:10E01000000000000E000CA90200202112A0000543 ++:10E02000000018218FA2003030420004504000113F ++:10E0300000601021240300010A000F30006010214D ++:10E040000E001302020020219362007D02002021B5 ++:10E05000344200040E00130BA362007D0E000CA9D5 ++:10E06000020020210A000F3024020001AF400044CA ++:10E07000240200018FBF007C8FBE00788FB7007430 ++:10E080008FB600708FB5006C8FB400688FB30064DA ++:10E090008FB200608FB1005C8FB0005803E00008C1 ++:10E0A00027BD00808F4201B80440FFFE2402080013 ++:10E0B000AF4201B803E00008000000003C02000885 ++:10E0C00003421021944200483084FFFF2484001250 ++:10E0D0003045FFFF10A0001700A4102B10400016C1 ++:10E0E00024020003934201202403001AA343018B5E ++:10E0F000304200FF2446FFFE8F82000000A6182B4E ++:10E100003863000100021382004310241040000510 ++:10E110008F84000434820001A746019403E00008C4 ++:10E12000AF8200042402FFFE0082102403E00008F6 ++:10E13000AF8200042402000303E00008A342018B25 ++:10E1400027BDFFE0AFB10014AFB00010AFBF0018A3 ++:10E1500030B0FFFF30D1FFFF8F4201B80440FFFE17 ++:10E1600000000000AF440180AF4400200E000F42C9 ++:10E17000020020218F8300008F840004A750019AA1 ++:10E18000A750018EA74301908F8300083082800042 ++:10E19000AF4301A8A75101881040000E8F820004F0 ++:10E1A00093420116304200FC24420004005A102120 ++:10E1B0008C4240003042FFFF144000068F82000472 ++:10E1C0003C02FFFF34427FFF00821024AF82000434 ++:10E1D0008F8200042403BFFF00431024A74201A63E ++:10E1E0009743010C8F42010400031C003042FFFFE3 ++:10E1F00000621825AF4301AC3C021000AF4201B8E9 ++:10E200008FBF00188FB100148FB0001003E000081A ++:10E2100027BD00208F470070934201128F830000BA ++:10E2200027BDFFF0304200FF00022882306201006B ++:10E23000000030211040004324A40003306240005D ++:10E24000104000103062200000041080005A10219D ++:10E250008C43400024A4000400041080AFA30000FD ++:10E26000005A10218C424000AFA2000493420116D4 ++:10E27000304200FC005A10218C4240000A000FC0BE ++:10E28000AFA200081040002F0000302100041080D1 ++:10E29000005A10218C43400024A400040004108084 ++:10E2A000AFA30000005A10218C424000AFA000082C ++:10E2B000AFA200048FA80008000030210000202138 ++:10E2C000240A00083C0908002529010003A41021A4 ++:10E2D000148A000300042A001100000A0000000054 ++:10E2E00090420000248400012C83000C00A2102125 ++:10E2F00000021080004910218C4200001460FFF3DE ++:10E3000000C230263C0408008C8431048F42007027 ++:10E310002C83002010600009004738233C030800CC ++:10E32000246331080004108000431021248300017D ++:10E33000AC4700003C010800AC233104AF86000864 ++:10E340002406000100C0102103E0000827BD0010D2 ++:10E350003C0208008C42003827BDFFD0AFB5002436 ++:10E36000AFB40020AFB10014AFBF0028AFB3001CA2 ++:10E37000AFB20018AFB00010000088213C150800B3 ++:10E3800026B50038144000022454FFFF0000A021ED ++:10E390009742010E8F8400003042FFFF308340001F ++:10E3A0001060000A245200043C0200200082102465 ++:10E3B00050400007308280008F8200042403BFFF9A ++:10E3C000008318240A0010103442100030828000AC ++:10E3D0001040000A3C020020008210241040000778 ++:10E3E0008F8200043C03FFFF34637FFF0083182407 ++:10E3F00034428000AF820004AF8300000E000F980B ++:10E400000000000014400007000000009743011EB8 ++:10E410009742011C3063FFFF0002140000621825C0 ++:10E42000AF8300089742010C8F4340003045FFFF47 ++:10E430003402FFFF14620003000000000A001028ED ++:10E44000241100208F42400030420100544000015E ++:10E45000241100108F8400003082100050400014FE ++:10E4600036310001308200201440000B3C021000C5 ++:10E47000008210245040000E363100013C030E0093 ++:10E480003C020DFF008318243442FFFF0043102B91 ++:10E4900050400007363100013C0208008C42002C3D ++:10E4A000244200013C010800AC22002C363100055A ++:10E4B0003C0608008CC6003454C000238F85000041 ++:10E4C0008F820004304240005440001F8F850000BE ++:10E4D0003C021F01008210243C0310005443001A28 ++:10E4E0008F85000030A20200144000178F850000C5 ++:10E4F0003250FFFF363100028F4201B80440FFFE68 ++:10E5000000000000AF400180020020210E000F42F9 ++:10E51000AF4000208F8300042402BFFFA750019A60 ++:10E52000006218248F820000A750018EA751018835 ++:10E53000A74301A6A74201903C021000AF4201B8D8 ++:10E540000A0010F5000010213C02100000A2102467 ++:10E550001040003A0000000010C0000F0000000052 ++:10E5600030A201001040000C3C0302003C020F00EE ++:10E5700000A2102410430008000000008F82000851 ++:10E58000005410240055102190420004244200043D ++:10E590000A00109F000221C00000000000051602C2 ++:10E5A0003050000F3A0300022E4203EF38420001C0 ++:10E5B0002C6300010062182414600073240200011F ++:10E5C0003C0308008C6300D02E06000C386200016A ++:10E5D0002C4200010046102414400015001021C0F8 ++:10E5E0002602FFFC2C4200045440001100002021B0 ++:10E5F000386200022C420001004610241040000343 ++:10E60000000512420A00109F000020210010182B64 ++:10E610000043102450400006001021C000002021BB ++:10E620003245FFFF0E000F633226FFFB001021C0B2 ++:10E630003245FFFF0A0010F2362600028F424000EA ++:10E640003C0308008C630024304201001040004667 ++:10E6500030620001322200043070000D14400002CC ++:10E660002413000424130002000512C238420001E2 ++:10E670002E4303EF304200013863000100431025B0 ++:10E68000104000033231FFFB2402FFFB0202802412 ++:10E6900010C000183202000130A201001040001525 ++:10E6A000320200013C020F0000A210243C030200D1 ++:10E6B0001043000F8F8200082403FFFE0203802412 ++:10E6C00000541024005510219042000402333025DC ++:10E6D0002442000412000002000221C03226FFFF83 ++:10E6E0000E000F633245FFFF1200002700001021CB ++:10E6F000320200011040000D320200042402000129 ++:10E7000012020002023330253226FFFF00002021D2 ++:10E710000E000F633245FFFF2402FFFE0202802439 ++:10E7200012000019000010213202000410400016EF ++:10E7300024020001240200041202000202333025E8 ++:10E740003226FFFF3245FFFF0E000F632404010055 ++:10E750002402FFFB020280241200000B00001021A3 ++:10E760000A0010F5240200011040000700001021EB ++:10E770003245FFFF36260002000020210E000F6305 ++:10E7800000000000000010218FBF00288FB500247A ++:10E790008FB400208FB3001C8FB200188FB100140B ++:10E7A0008FB0001003E0000827BD003027BDFFD068 ++:10E7B000AFB000103C04600CAFBF002CAFB6002817 ++:10E7C000AFB50024AFB40020AFB3001CAFB2001847 ++:10E7D000AFB100148C8250002403FF7F3C1A8000EC ++:10E7E000004310243442380CAC8250002402000351 ++:10E7F0003C106000AF4200088E0208083C1B8008F5 ++:10E800003C010800AC2000203042FFF038420010EC ++:10E810002C4200010E001B8DAF8200183C04FFFF4C ++:10E820003C020400348308063442000CAE0219484E ++:10E83000AE03194C3C0560168E0219808CA30000B3 ++:10E840003442020000641824AE0219803C02535383 ++:10E850001462000334A47C008CA200040050202128 ++:10E860008C82007C8C830078AF820010AF83000C18 ++:10E870008F55000032A200031040FFFD32A20001BC ++:10E880001040013D32A200028F420128AF42002019 ++:10E890008F4201048F430100AF8200000E000F3C45 ++:10E8A000AF8300043C0208008C4200C01040000806 ++:10E8B0008F8400003C0208008C4200C42442000106 ++:10E8C0003C010800AC2200C40A00126900000000EC ++:10E8D0003C020010008210241440010C8F830004BD ++:10E8E0003C0208008C4200203C0308008C63003886 ++:10E8F00000008821244200013C010800AC220020D5 ++:10E900003C16080026D60038146000022474FFFF6D ++:10E910000000A0219742010E308340003042FFFFEB ++:10E920001060000A245200043C02002000821024DF ++:10E9300050400007308280008F8200042403BFFF14 ++:10E94000008318240A0011703442100030828000C5 ++:10E950001040000A3C0200200082102410400007F2 ++:10E960008F8200043C03FFFF34637FFF0083182481 ++:10E9700034428000AF820004AF8300000E000F9885 ++:10E980000000000014400007000000009743011E33 ++:10E990009742011C3063FFFF00021400006218253B ++:10E9A000AF8300089742010C8F4340003045FFFFC2 ++:10E9B0003402FFFF14620003000000000A00118807 ++:10E9C000241100208F4240003042010054400001D9 ++:10E9D000241100108F840000308210005040001479 ++:10E9E00036310001308200201440000B3C02100040 ++:10E9F000008210245040000E363100013C030E000E ++:10EA00003C020DFF008318243442FFFF0043102B0B ++:10EA100050400007363100013C0208008C42002CB7 ++:10EA2000244200013C010800AC22002C36310005D4 ++:10EA30003C0608008CC6003454C000238F850000BB ++:10EA40008F820004304240005440001F8F85000038 ++:10EA50003C021F01008210243C0310005443001AA2 ++:10EA60008F85000030A20200144000178F8500003F ++:10EA70003250FFFF363100028F4201B80440FFFEE2 ++:10EA800000000000AF400180020020210E000F4274 ++:10EA9000AF4000208F8300042402BFFFA750019ADB ++:10EAA000006218248F820000A750018EA7510188B0 ++:10EAB000A74301A6A74201903C021000AF4201B853 ++:10EAC0000A001267000010213C02100000A210246E ++:10EAD0001040003A0000000010C0000F00000000CD ++:10EAE00030A201001040000C3C0302003C020F0069 ++:10EAF00000A2102410430008000000008F820008CC ++:10EB000000541024005610219042000424420004B6 ++:10EB10000A0011FF000221C00000000000051602DB ++:10EB20003050000F3A0300022E4203EF384200013A ++:10EB30002C63000100621824146000852402000187 ++:10EB40003C0308008C6300D02E06000C38620001E4 ++:10EB50002C4200010046102414400015001021C072 ++:10EB60002602FFFC2C42000454400011000020212A ++:10EB7000386200022C42000100461024504000037D ++:10EB8000000512420A0011FF000020210010182B7E ++:10EB90000043102450400006001021C00000202136 ++:10EBA0003245FFFF0E000F633226FFFB001021C02D ++:10EBB0003245FFFF0A001252362600028F42400003 ++:10EBC0003C0308008C6300243042010010400046E2 ++:10EBD00030620001322200043070000D1440000247 ++:10EBE0002413000424130002000512C2384200015D ++:10EBF0002E4303EF3042000138630001004310252B ++:10EC0000104000033231FFFB2402FFFB020280248C ++:10EC100010C000183202000130A20100104000159F ++:10EC2000320200013C020F0000A210243C0302004B ++:10EC30001043000F8F8200082403FFFE020380248C ++:10EC40000054102400561021904200040233302555 ++:10EC50002442000412000002000221C03226FFFFFD ++:10EC60000E000F633245FFFF120000390000102133 ++:10EC7000320200011040000D3202000424020001A3 ++:10EC800012020002023330253226FFFF000020214D ++:10EC90000E000F633245FFFF2402FFFE02028024B4 ++:10ECA0001200002B00001021320200041040002846 ++:10ECB0002402000124020004120200020233302563 ++:10ECC0003226FFFF3245FFFF0E000F6324040100D0 ++:10ECD0002402FFFB020280241200001D000010210C ++:10ECE0000A001267240200015040001900001021A0 ++:10ECF0003245FFFF36260002000020210E000F6380 ++:10ED0000000000000A001267000010212402BFFF6B ++:10ED1000006210241040000800000000240287FF59 ++:10ED200000621024144000083C020060008210249D ++:10ED300010400005000000000E000D34000000002F ++:10ED40000A001267000000000E0012C70000000059 ++:10ED5000104000063C0240008F4301243C0260202A ++:10ED6000AC430014000000003C024000AF420138F8 ++:10ED70000000000032A200021040FEBD00000000B2 ++:10ED80008F4201403C044000AF4200208F430148C5 ++:10ED90003C02700000621824106400420000000071 ++:10EDA0000083102B144000063C0260003C0220004F ++:10EDB000106200073C0240000A0012C3000000007D ++:10EDC0001062003C3C0240000A0012C30000000038 ++:10EDD0008F4501408F4601448F42014800021402D2 ++:10EDE000304300FF240200041462000A274401801B ++:10EDF0008F4201B80440FFFE2402001CAC850000D5 ++:10EE0000A082000B3C021000AF4201B80A0012C3FE ++:10EE10003C0240002402000914620012000616029F ++:10EE2000000229C0AF4500208F4201B80440FFFE18 ++:10EE30002402000124030003AF450180A343018B9A ++:10EE4000A740018EA740019AA7400190AF4001A8BA ++:10EE5000A7420188A74201A6AF4001AC3C021000C6 ++:10EE6000AF4201B88F4201B80440FFFE000000002D ++:10EE7000AC8500008F42014800021402A482000801 ++:10EE800024020002A082000B8F420148A4820010DD ++:10EE90003C021000AC860024AF4201B80A0012C345 ++:10EEA0003C0240000E001310000000000A0012C3D4 ++:10EEB0003C0240000E001BC2000000003C0240006B ++:10EEC000AF420178000000000A00112F000000008E ++:10EED0008F4201003042003E144000112402000124 ++:10EEE000AF4000488F420100304207C0104000058B ++:10EEF00000000000AF40004CAF40005003E00008AD ++:10EF000024020001AF400054AF4000408F42010096 ++:10EF10003042380054400001AF4000442402000158 ++:10EF200003E00008000000008F4201B80440FFFE2B ++:10EF300024020001AF440180AF400184A74501884D ++:10EF4000A342018A24020002A342018B9742014A94 ++:10EF500014C00004A7420190AF4001A40A0012EFC0 ++:10EF60003C0210008F420144AF4201A43C02100059 ++:10EF7000AF4001A803E00008AF4201B88F4201B8DA ++:10EF80000440FFFE24020002AF440180AF4401842C ++:10EF9000A7450188A342018AA342018B9742014AF7 ++:10EFA000A7420190AF4001A48F420144AF4201A8A3 ++:10EFB0003C02100003E00008AF4201B83C029000A0 ++:10EFC0003442000100822025AF4400208F420020FF ++:10EFD0000440FFFE0000000003E000080000000005 ++:10EFE0003C028000344200010082202503E000083A ++:10EFF000AF44002027BDFFE8AFBF0014AFB0001042 ++:10F000008F50014093430149934201489344014882 ++:10F01000306300FF304200FF00021200006228252A ++:10F020002402001910620076308400802862001AE1 ++:10F030001040001C24020020240200081062007707 ++:10F04000286200091040000E2402000B2402000177 ++:10F0500010620034286200025040000524020006BD ++:10F0600050600034020020210A00139A00000000C2 ++:10F0700010620030020020210A00139A00000000F4 ++:10F080001062003B2862000C504000022402000E77 ++:10F090002402000910620056020020210A00139A7F ++:10F0A0000000000010620056286200211040000F8E ++:10F0B000240200382402001C106200582862001D3F ++:10F0C000104000062402001F2402001B1062004CA6 ++:10F0D000000000000A00139A000000001062004ABD ++:10F0E000020020210A00139A00000000106200456F ++:10F0F0002862003910400007240200802462FFCB00 ++:10F100002C42000210400045020020210A00139604 ++:10F110000000302110620009000000000A00139A6C ++:10F12000000000001480003D020020210A0013901E ++:10F130008FBF00140A001396240600018F4201B805 ++:10F140000440FFFE24020002A342018BA745018870 ++:10F150009742014AA74201908F420144A74201927F ++:10F160003C021000AF4201B80A00139C8FBF00148C ++:10F170009742014A144000290000000093620005F4 ++:10F180003042000414400025000000000E0013026D ++:10F190000200202193620005020020213442000475 ++:10F1A0000E00130BA36200059362000530420004B9 ++:10F1B00014400002000000000000000D93620000F7 ++:10F1C00024030020304200FF14430014000000001C ++:10F1D0008F4201B80440FFFE24020005AF500180B9 ++:10F1E000A342018B3C0210000A00139AAF4201B8FF ++:10F1F0008FBF00148FB000100A0012F227BD001854 ++:10F200000000000D02002021000030218FBF0014FB ++:10F210008FB000100A0012DD27BD00180000000D9D ++:10F220008FBF00148FB0001003E0000827BD001846 ++:10F2300027BDFFE8AFBF00100E000F3C000000002C ++:10F24000AF4001808FBF0010000020210A000FE7AF ++:10F2500027BD00183084FFFF30A5FFFF00001821F4 ++:10F260001080000700000000308200011040000202 ++:10F2700000042042006518210A0013AB0005284055 ++:10F2800003E000080060102110C0000624C6FFFF44 ++:10F290008CA2000024A50004AC8200000A0013B573 ++:10F2A0002484000403E000080000000010A000080F ++:10F2B00024A3FFFFAC860000000000000000000057 ++:10F2C0002402FFFF2463FFFF1462FFFA248400047A ++:10F2D00003E0000800000000308300FF30A500FFBD ++:10F2E00030C600FF274701808F4201B80440FFFE6F ++:10F2F000000000008F42012834634000ACE20000AF ++:10F3000024020001ACE00004A4E30008A0E2000A2B ++:10F3100024020002A0E2000B3C021000A4E5001051 ++:10F32000ACE00024ACE00028A4E6001203E00008F2 ++:10F33000AF4201B827BDFFE8AFBF00109362003FA6 ++:10F3400024030012304200FF1043000D00803021E2 ++:10F350008F620044008210230440000A8FBF001017 ++:10F360008F620048240400390000282100C21023C5 ++:10F3700004410004240600120E0013C9000000001E ++:10F380008FBF00102402000103E0000827BD001811 ++:10F3900027BDFFC8AFB20030AFB1002CAFBF003403 ++:10F3A000AFB0002890C5000D0080902130A400105F ++:10F3B0001080000B00C088218CC300088F620054AD ++:10F3C0001062000730A20005144000B524040001BB ++:10F3D0000E000D21000020210A0014BB0040202156 ++:10F3E00030A200051040000930A30012108000ACCC ++:10F3F000240400018E2300088F620054146200A9C7 ++:10F400008FBF00340A00142C240400382402001298 ++:10F41000146200A3240400010220202127A500106B ++:10F420000E000CB2AFA000101040001102402021CD ++:10F430008E220008AF620084AF6000400E0013020D ++:10F44000000000009362007D024020213442002031 ++:10F450000E00130BA362007D0E000CA902402021B8 ++:10F46000240400382405008D0A0014B82406001274 ++:10F470009362003E304200081040000F8FA200103F ++:10F4800030420100104000078FA300148F6200601B ++:10F490000062102304430008AF6300600A001441B7 ++:10F4A00000000000AF6000609362003E2403FFF79D ++:10F4B00000431024A362003E9362003E30420008E5 ++:10F4C000144000022406000300003021936200343F ++:10F4D000936300378F640084304200FF306300FF85 ++:10F4E00000661821000318800043282100A4202B67 ++:10F4F0001080000B000000009763003C8F620084C6 ++:10F500003063FFFF004510230062182B14600004D5 ++:10F51000000000008F6200840A00145D0045802313 ++:10F520009762003C3050FFFF8FA300103062000450 ++:10F5300010400004000628808FA2001C0A001465F9 ++:10F540000202102B2E02021850400003240202185F ++:10F550000A00146E020510233063000410600003DB ++:10F56000004510238FA2001C00451023004080217D ++:10F570002C42008054400001241000800E00130231 ++:10F580000240202124020001AF62000C9362003E81 ++:10F59000001020403042007FA362003E8E22000413 ++:10F5A00024420001AF620040A770003C8F6200500F ++:10F5B0009623000E00431021AF6200588F62005066 ++:10F5C00000441021AF62005C8E220004AF6200187C ++:10F5D0008E220008AF62001C8FA20010304200088B ++:10F5E0005440000A93A20020A360003693620036C4 ++:10F5F0002403FFDFA36200359362003E0043102422 ++:10F60000A362003E0A0014988E220008A36200350F ++:10F610008E220008AF62004C8F6200248F6300408E ++:10F6200000431021AF6200489362000024030050A1 ++:10F63000304200FF144300122403FF803C02080004 ++:10F640008C4231A00242102100431024AF42002816 ++:10F650003C0208008C4231A08E2400083C03000CC0 ++:10F66000024210213042007F03421021004310214A ++:10F67000AC4400D88E230008AF820014AC4300DCF9 ++:10F680000E00130B02402021240400380000282122 ++:10F690002406000A0E0013C9000000002404000123 ++:10F6A0008FBF00348FB200308FB1002C8FB0002894 ++:10F6B0000080102103E0000827BD003827BDFFF8B7 ++:10F6C00027420180AFA20000308A00FF8F4201B8BC ++:10F6D0000440FFFE000000008F4601283C020800A5 ++:10F6E0008C4231A02403FF80AF86004800C2102165 ++:10F6F00000431024AF4200243C0208008C4231A099 ++:10F700008FA900008FA8000000C210213042007FA6 ++:10F71000034218213C02000A00621821946400D4BC ++:10F720008FA700008FA5000024020002AF83001401 ++:10F73000A0A2000B8FA30000354260003084FFFFC1 ++:10F74000A4E200083C021000AD260000AD04000455 ++:10F75000AC60002427BD0008AF4201B803E00008F8 ++:10F76000240200018F88003C938200288F830014BC ++:10F770003C07080024E7779800481023304200FF38 ++:10F78000304900FC246500888F860040304A000321 ++:10F790001120000900002021248200048CA3000015 ++:10F7A000304400FF0089102AACE3000024A50004C7 ++:10F7B0001440FFF924E70004114000090000202153 ++:10F7C0002482000190A30000304400FF008A102B27 ++:10F7D000A0E3000024A500011440FFF924E7000184 ++:10F7E00030C20003144000048F85003C3102000346 ++:10F7F0001040000D0000000010A0000900002021B2 ++:10F800002482000190C30000304400FF0085102BCB ++:10F81000A0E3000024C600011440FFF924E7000122 ++:10F8200003E00008000000001100FFFD000020219F ++:10F83000248200048CC30000304400FF0088102B99 ++:10F84000ACE3000024C600041440FFF924E70004E0 ++:10F8500003E00008000000008F83003C9382002832 ++:10F8600030C600FF30A500FF00431023304300FFE7 ++:10F870008F820014008038210043102114C0000240 ++:10F88000244800880083382130E20003144000053A ++:10F8900030A2000314400003306200031040000D4A ++:10F8A0000000000010A000090000202124820001B7 ++:10F8B00090E30000304400FF0085102BA1030000FE ++:10F8C00024E700011440FFF92508000103E00008C7 ++:10F8D0000000000010A0FFFD000020212482000491 ++:10F8E0008CE30000304400FF0085102BAD030000C6 ++:10F8F00024E700041440FFF92508000403E0000891 ++:10F90000000000000080482130AAFFFF30C600FF41 ++:10F9100030E7FFFF274801808F4201B80440FFFE17 ++:10F920008F820048AD0200008F420124AD02000426 ++:10F930008D220020A5070008A102000A240200165B ++:10F94000A102000B934301208D2200088D240004A6 ++:10F95000306300FF004310219783003A00441021D8 ++:10F960008D250024004310233C0308008C6331A044 ++:10F970008F840014A502000C246300E82402FFFF1A ++:10F98000A50A000EA5030010A5060012AD0500187B ++:10F99000AD020024948201142403FFF73042FFFFDC ++:10F9A000AD0200288C820118AD02002C3C02100030 ++:10F9B000AD000030AF4201B88D220020004310247A ++:10F9C00003E00008AD2200208F82001430E7FFFF23 ++:10F9D00000804821904200D330A5FFFF30C600FFD1 ++:10F9E0000002110030420F0000E238252748018054 ++:10F9F0008F4201B80440FFFE8F820048AD02000034 ++:10FA00008F420124AD0200048D220020A5070008CA ++:10FA1000A102000A24020017A102000B9343012057 ++:10FA20008D2200088D240004306300FF0043102164 ++:10FA30009783003A004410218F8400140043102360 ++:10FA40003C0308008C6331A0A502000CA505000E44 ++:10FA5000246300E8A5030010A5060012AD00001401 ++:10FA60008D220024AD0200188C82005CAD02001CC7 ++:10FA70008C820058AD0200202402FFFFAD0200245A ++:10FA8000948200E63042FFFFAD02002894820060BD ++:10FA9000948300BE30427FFF3063FFFF00021200FC ++:10FAA00000431021AD02002C3C021000AD000030DC ++:10FAB000AF4201B8948200BE2403FFF700A21021D8 ++:10FAC000A48200BE8D2200200043102403E0000821 ++:10FAD000AD220020274301808F4201B80440FFFE81 ++:10FAE0008F8200249442001C3042FFFF000211C0AC ++:10FAF000AC62000024020019A062000B3C0210005E ++:10FB0000AC60003003E00008AF4201B88F87002CE2 ++:10FB100030C300FF8F4201B80440FFFE8F820048CF ++:10FB200034636000ACA2000093820044A0A20005F0 ++:10FB30008CE20010A4A20006A4A300088C8200207E ++:10FB40002403FFF7A0A2000A24020002A0A2000BD7 ++:10FB50008CE20000ACA200108CE20004ACA2001405 ++:10FB60008CE2001CACA200248CE20020ACA2002895 ++:10FB70008CE2002CACA2002C8C820024ACA20018D9 ++:10FB80003C021000AF4201B88C82002000431024D8 ++:10FB900003E00008AC8200208F86001427BDFFE838 ++:10FBA000AFBF0014AFB0001090C20063304200201D ++:10FBB0001040000830A500FF8CC2007C2403FFDF4A ++:10FBC00024420001ACC2007C90C2006300431024B8 ++:10FBD000A0C2006310A000238F830014275001806F ++:10FBE000020028210E0015D6240600828F82001400 ++:10FBF000904200633042004050400019A38000440E ++:10FC00008F83002C8F4201B80440FFFE8F82004892 ++:10FC1000AE02000024026082A60200082402000254 ++:10FC2000A202000B8C620008AE0200108C62000C75 ++:10FC3000AE0200148C620014AE0200188C62001830 ++:10FC4000AE0200248C620024AE0200288C620028E0 ++:10FC5000AE02002C3C021000AF4201B8A380004469 ++:10FC60008F8300148FBF00148FB000109062006368 ++:10FC700027BD00183042007FA06200639782003ADF ++:10FC80008F86003C8F850014938300280046102344 ++:10FC9000A782003AA4A000E490A400638F820040F1 ++:10FCA000AF83003C2403FFBF0046102100832024C3 ++:10FCB000AF820040A0A400638F820014A04000BD6A ++:10FCC0008F82001403E00008A44000BE8F8A001455 ++:10FCD00027BDFFE0AFB10014AFB000108F88003C2B ++:10FCE000AFBF00189389001C954200E430D100FF9B ++:10FCF0000109182B0080802130AC00FF3047FFFF46 ++:10FD00000000582114600003310600FF012030215B ++:10FD1000010958239783003A0068102B1440003CD7 ++:10FD20000000000014680007240200018E02002079 ++:10FD30002403FFFB34E7800000431024AE020020C0 ++:10FD40002402000134E70880158200053165FFFFB9 ++:10FD50000E001554020020210A00169102002021F5 ++:10FD60000E001585020020218F8400482743018062 ++:10FD70008F4201B80440FFFE24020018AC6400006A ++:10FD8000A062000B8F840014948200E6A46200102D ++:10FD90003C021000AC600030AF4201B894820060B9 ++:10FDA00024420001A4820060948200603C030800A9 ++:10FDB0008C63318830427FFF5443000F02002021C2 ++:10FDC000948200602403800000431024A482006019 ++:10FDD0009082006090830060304200FF000211C2F8 ++:10FDE00000021027000211C03063007F0062182556 ++:10FDF000A083006002002021022028218FBF00186C ++:10FE00008FB100148FB000100A0015F927BD002033 ++:10FE1000914200632403FF8000431025A142006348 ++:10FE20009782003A3048FFFF110000209383001CA6 ++:10FE30008F840014004B1023304600FF948300E4AD ++:10FE40002402EFFF0168282B00621824A48300E439 ++:10FE500014A000038E020020010058210000302170 ++:10FE60002403FFFB34E7800000431024AE0200208F ++:10FE700024020001158200053165FFFF0E001554B4 ++:10FE8000020020210A0016B99783003A0E0015855A ++:10FE9000020020219783003A8F82003CA780003A1D ++:10FEA00000431023AF82003C9383001C8F82001418 ++:10FEB0008FBF00188FB100148FB0001027BD002035 ++:10FEC00003E00008A04300BD938200442403000126 ++:10FED00027BDFFE8004330042C420020AFB00010E3 ++:10FEE000AFBF00142410FFFE10400005274501801D ++:10FEF0003C0208008C4231900A0016D600461024BD ++:10FF00003C0208008C423194004610241440000743 ++:10FF1000240600848F8300142410FFFF9062006287 ++:10FF20003042000F34420040A06200620E0015D63D ++:10FF300000000000020010218FBF00148FB00010DD ++:10FF400003E0000827BD00188F83002427BDFFE0D1 ++:10FF5000AFB20018AFB10014AFB00010AFBF001CBB ++:10FF60009062000D00A0902130D100FF3042007F50 ++:10FF7000A062000D8F8500148E4300180080802140 ++:10FF80008CA2007C146200052402000E90A2006383 ++:10FF9000344200200A0016FFA0A200630E0016C51E ++:10FFA000A38200442403FFFF104300472404FFFF03 ++:10FFB00052200045000020218E4300003C0200102A ++:10FFC00000621024504000043C020008020020217E ++:10FFD0000A00170E24020015006210245040000988 ++:10FFE0008E45000002002021240200140E0016C5D8 ++:10FFF000A38200442403FFFF104300332404FFFFC7 ++:020000021000EC ++:100000008E4500003C02000200A2102410400016A1 ++:100010003C0200048F8600248CC200148CC30010A4 ++:100020008CC40014004310230044102B50400005E2 ++:10003000020020218E43002C8CC2001010620003AD ++:10004000020020210A00173F240200123C02000493 ++:1000500000A210245040001C00002021020020219A ++:100060000A00173F2402001300A2102410400006CB ++:100070008F8300248C620010504000130000202168 ++:100080000A001739020020218C6200105040000441 ++:100090008E42002C020020210A00173F240200118A ++:1000A00050400009000020210200202124020017F6 ++:1000B0000E0016C5A38200442403FFFF1043000274 ++:1000C0002404FFFF000020218FBF001C8FB2001806 ++:1000D0008FB100148FB000100080102103E00008E1 ++:1000E00027BD00208F83001427BDFFD8AFB40020A8 ++:1000F000AFB3001CAFB20018AFB10014AFB0001026 ++:10010000AFBF0024906200638F91002C2412FFFF88 ++:100110003442004092250000A06200638E2200104D ++:100120000080982130B0003F105200060360A021EB ++:100130002402000D0E0016C5A38200441052005484 ++:100140002404FFFF8F8300148E2200188C63007C30 ++:1001500010430007026020212402000E0E0016C585 ++:10016000A38200442403FFFF104300492404FFFF3F ++:1001700024040020120400048F83001490620063A2 ++:1001800034420020A06200638F85003410A000205C ++:1001900000000000560400048F8200140260202139 ++:1001A0000A0017902402000A9683000A9442006015 ++:1001B0003042FFFF144300048F8200202404FFFD1F ++:1001C0000A0017B7AF82003C3C0208008C42318C19 ++:1001D0000045102B14400006026020210000282159 ++:1001E0000E001646240600010A0017B70000202161 ++:1001F0002402002D0E0016C5A38200442403FFFF35 ++:10020000104300232404FFFF0A0017B70000202139 ++:10021000160400058F8400148E2300142402FFFFAF ++:100220005062001802602021948200602442000184 ++:10023000A4820060948200603C0308008C633188D3 ++:1002400030427FFF5443000F0260202194820060FF ++:100250002403800000431024A48200609082006088 ++:1002600090830060304200FF000211C2000210279C ++:10027000000211C03063007F00621825A083006077 ++:10028000026020210E0015F9240500010000202144 ++:100290008FBF00248FB400208FB3001C8FB20018D2 ++:1002A0008FB100148FB000100080102103E000080F ++:1002B00027BD00288F83001427BDFFE8AFB00010D2 ++:1002C000AFBF0014906200638F87002C00808021F4 ++:1002D000344200408CE60010A06200633C0308003A ++:1002E0008C6331B030C23FFF0043102B1040004EF2 ++:1002F0008F8500302402FF8090A3000D004310245E ++:10030000304200FF504000490200202100061382C5 ++:10031000304800032402000255020044020020215C ++:1003200094A2001C8F85001424030023A4A20114AE ++:100330008CE60000000616023042003F1043001019 ++:100340003C0300838CE300188CA2007C1062000642 ++:100350002402000E0E0016C5A38200442403FFFFF2 ++:10036000104300382404FFFF8F8300149062006361 ++:1003700034420020A06200630A0017FC8F8300242F ++:1003800000C31024144300078F83002490A200624E ++:100390003042000F34420020A0A20062A38800383F ++:1003A0008F8300249062000D3042007FA062000D18 ++:1003B0008F83003410600018020020218F840030E9 ++:1003C0008C8200100043102B1040000924020018FA ++:1003D000020020210E0016C5A38200442403FFFF63 ++:1003E000104300182404FFFF0A00182400002021F5 ++:1003F0008C820010240500010200202100431023FC ++:100400008F830024240600010E001646AC62001003 ++:100410000A001824000020210E0015F9240500010F ++:100420000A00182400002021020020212402000DCF ++:100430008FBF00148FB0001027BD00180A0016C52A ++:10044000A38200448FBF00148FB0001000801021E1 ++:1004500003E0000827BD001827BDFFC8AFB2002089 ++:10046000AFBF0034AFB60030AFB5002CAFB400283A ++:10047000AFB30024AFB1001CAFB000188F46012805 ++:100480003C0308008C6331A02402FF80AF86004843 ++:1004900000C318213065007F03452821006218241D ++:1004A0003C02000AAF43002400A2282190A200626F ++:1004B00000809021AF850014304200FF000211023D ++:1004C000A382003890A200BC304200021440000217 ++:1004D00024030034240300308F820014A3830028F7 ++:1004E000938300388C4200C0A3800044AF82003C5C ++:1004F000240200041062031C8F84003C8E4400041C ++:10050000508003198F84003C8E4200103083FFFF1F ++:10051000A784003A106002FFAF8200408F8400146D ++:100520002403FF809082006300621024304200FFA9 ++:10053000144002CF9785003A9383003824020002CA ++:1005400030B6FFFF14620005000088219382002866 ++:100550002403FFFD0A001B19AF82003C8F82003C80 ++:1005600002C2102B144002A18F8400400E0014EC34 ++:1005700000000000938300283C040800248477983E ++:10058000240200341462002EAF84002C3C0A0800C0 ++:100590008D4A77C82402FFFFAFA2001000803821E7 ++:1005A0002405002F3C09080025297398240800FF22 ++:1005B0002406FFFF90E2000024A3FFFF00062202B2 ++:1005C00000C21026304200FF0002108000491021B6 ++:1005D0008C420000306500FF24E7000114A8FFF5FD ++:1005E0000082302600061027AFA20014AFA2001030 ++:1005F0000000282127A7001027A6001400C51023FB ++:100600009044000324A2000100A71821304500FFF8 ++:100610002CA200041440FFF9A06400008FA2001077 ++:100620001142000724020005024020210E0016C5D9 ++:10063000A38200442403FFFF104300642404FFFF4F ++:100640003C0208009042779C104000098F82001401 ++:10065000024020212402000C0E0016C5A382004493 ++:100660002403FFFF104300592404FFFF8F8200146E ++:10067000A380001C3C0308008C63779C8C440080A2 ++:100680003C0200FF3442FFFF006218240083202B4D ++:1006900010800008AF83003402402021240200199A ++:1006A0000E0016C5A38200442403FFFF1043004739 ++:1006B0002404FFFF8F87003C9782003A8F85003427 ++:1006C000AF8700200047202310A0003BA784003AFA ++:1006D0008F86001430A200030002102390C300BCD8 ++:1006E0003050000300B0282100031882307300014D ++:1006F0000013108000A228213C0308008C6331A065 ++:100700008F8200483084FFFF0085202B004310219A ++:1007100010800011244200888F84002C1082000E6B ++:100720003C033F013C0208008C42779800431024B0 ++:100730003C0325001443000630E500FF8C820000D6 ++:10074000ACC200888C8200100A0018E9ACC2009884 ++:100750000E001529000030219382001C8F850014A3 ++:100760008F830040020238218F82003CA387001C47 ++:1007700094A400E4006218218F82003434841000B5 ++:10078000AF83004000503021A4A400E41260000EAA ++:10079000AF86003C24E20004A382001C94A200E483 ++:1007A00024C30004AF83003C34422000A4A200E430 ++:1007B0000A001906000020218F820040AF80003C13 ++:1007C00000471021AF820040000020212414FFFFC9 ++:1007D000109402112403FFFF3C0808008D0877A83D ++:1007E0003C0208008C4231B03C03080090637798CB ++:1007F00031043FFF0082102B1040001B3067003F88 ++:100800003C0208008C4231A88F83004800042180FC ++:1008100000621821006418213062007F0342282101 ++:100820003C02000C00A228213C020080344200015E ++:100830003066007800C230252402FF800062102458 ++:10084000AF42002830640007AF4208048F820014D2 ++:100850000344202124840940AF460814AF850024B6 ++:10086000AF840030AC4301189383003824020003A6 ++:10087000146201CF240200012402002610E201D1FB ++:1008800028E2002710400013240200322402002234 ++:1008900010E201CC28E200231040000824020024CA ++:1008A0002402002010E201B82402002110E20147D6 ++:1008B000024020210A001AFB2402000B10E201C1B1 ++:1008C0002402002510E20010024020210A001AFB39 ++:1008D0002402000B10E201AE28E2003310400006B3 ++:1008E0002402003F2402003110E2009A024020213D ++:1008F0000A001AFB2402000B10E201A5024020218D ++:100900000A001AFB2402000B8F90002C3C03080005 ++:100910008C6331B08F8500308E0400100000A82158 ++:100920008CB3001430823FFF0043102B8CB10020A9 ++:100930005040018F0240202190A3000D2402FF802F ++:1009400000431024304200FF504001890240202122 ++:10095000000413823042000314400185024020212C ++:1009600094A3001C8F8200148E040028A443011459 ++:100970008CA20010026218231064000302402021A0 ++:100980000A00197C2402001F8F82003400621021AB ++:100990000262102B104000088F83002402402021A7 ++:1009A000240200180E0016C5A382004410540174DE ++:1009B0002404FFFF8F8300248F8400348C62001096 ++:1009C0000224882100441023AC6200108F8200149E ++:1009D000AC7100208C4200680051102B10400009BF ++:1009E0008F830030024020212402001D0E0016C516 ++:1009F000A38200442403FFFF104301612404FFFF8E ++:100A00008F8300308E0200248C6300241043000783 ++:100A1000024020212402001C0E0016C5A3820044BF ++:100A20002403FFFF104301562404FFFF8F8400249A ++:100A30008C82002424420001AC8200241233000482 ++:100A40008F8200148C4200685622000E8E02000035 ++:100A50008E0200003C030080004310241440000D6F ++:100A60002402001A024020210E0016C5A382004471 ++:100A70002403FFFF104301422404FFFF0A0019BAB8 ++:100A80008E0200143C0300800043102450400003F9 ++:100A90008E020014AC8000208E0200142411FFFF8F ++:100AA0001051000E3C0308003C0208008C423190BB ++:100AB000004310242403001B14400007A3830044B8 ++:100AC0000E0016C5024020211051012D2404FFFF05 ++:100AD0000A0019CB8E030000A38000448E0300009F ++:100AE0003C02000100621024104000123C02008011 ++:100AF0000062102414400008024020212402001A41 ++:100B00000E0016C5A38200442403FFFF1043011CFE ++:100B10002404FFFF02402021020028210E0016E5D8 ++:100B2000240600012403FFFF104301152404FFFFE6 ++:100B3000241500018F83002402A0302102402021CF ++:100B40009462003624050001244200010A001ADFE5 ++:100B5000A46200368F90002C3C0308008C6331B0F7 ++:100B60008E13001032623FFF0043102B10400089AB ++:100B70008F8400302402FF809083000D00431024F6 ++:100B8000304200FF104000842402000D0013138245 ++:100B900030420003240300011443007F2402000DAF ++:100BA0009082000D30420008544000048F820034CF ++:100BB000024020210A001A102402002450400004A0 ++:100BC0008E03000C024020210A001A102402002784 ++:100BD0008C82002054620006024020218E0300080F ++:100BE0008C820024506200098E02001402402021F1 ++:100BF000240200200E0016C5A38200441054007188 ++:100C00002403FFFF0A001A458F8400242411FFFFEC ++:100C1000145100048F860014024020210A001A405B ++:100C2000240200258E0300188CC2007C1062000391 ++:100C30002402000E0A001A40024020218E030024E4 ++:100C40008C82002810620003240200210A001A404E ++:100C5000024020218E0500288C82002C10A2000367 ++:100C60002402001F0A001A40024020218E03002C9B ++:100C700014600003240200230A001A4002402021CD ++:100C80008CC200680043102B104000032402002691 ++:100C90000A001A40024020218C82001400651821AD ++:100CA0000043102B104000088F84002402402021B4 ++:100CB000240200220E0016C5A382004410510041F8 ++:100CC0002403FFFF8F8400242403FFF79082000D8C ++:100CD00000431024A082000D8F8600143C030800FE ++:100CE0008C6331AC8F82004894C400E08F8500246F ++:100CF0000043102130847FFF000420400044102175 ++:100D00003043007F034320213C03000E0083202159 ++:100D10002403FF8000431024AF42002CA493000062 ++:100D20008CA2002824420001ACA200288CA2002C36 ++:100D30008E03002C00431021ACA2002C8E02002C4C ++:100D4000ACA200308E020014ACA2003494A2003A8F ++:100D500024420001A4A2003A94C600E03C0208002C ++:100D60008C4231B024C4000130837FFF1462000F35 ++:100D700000803021240280000082302430C2FFFF36 ++:100D8000000213C2304200FF000210270A001A7E40 ++:100D9000000233C02402000D024020210E0016C5BF ++:100DA000A38200440A001A84004018218F82001494 ++:100DB00002402021240500010E0015F9A44600E0A0 ++:100DC000000018210A001B16006088218F90002C5B ++:100DD0003C0308008C6331B08E05001030A23FFF49 ++:100DE0000043102B104000612402FF808F840030EC ++:100DF0009083000D00431024304200FF5040005CFF ++:100E0000024020218F8200341040000B0005138225 ++:100E10008F8200149763000A944200603042FFFF03 ++:100E200014430005000513828F8200202404FFFD77 ++:100E30000A001AF3AF82003C304200031440000E57 ++:100E40000000000092020002104000058E03002402 ++:100E500050600015920300030A001AAF02402021DF ++:100E60008C82002450620010920300030240202173 ++:100E70000A001AB72402000F9082000D30420008C9 ++:100E80005440000992030003024020212402001074 ++:100E90000E0016C5A38200442403FFFF1043003850 ++:100EA0002404FFFF92030003240200025462000C9A ++:100EB000920200038F820034544000099202000322 ++:100EC000024020212402002C0E0016C5A3820044FB ++:100ED0002403FFFF1043002A2404FFFF92020003B3 ++:100EE0000200282102402021384600102CC60001B3 ++:100EF0002C4200010E0016E5004630252410FFFFAD ++:100F00001050001F2404FFFF8F8300341060001373 ++:100F1000024020213C0208008C42318C0043102BFF ++:100F200014400007000000000000282124060001F2 ++:100F30000E001646000000000A001AF300002021EF ++:100F40002402002D0E0016C5A38200441050000C90 ++:100F50002404FFFF0A001AF3000020210E0015F9F7 ++:100F6000240500010A001AF300002021024020217C ++:100F70002402000D0E0016C5A3820044004020216B ++:100F80000A001B16008088211514000E00000000C6 ++:100F90000E00174C024020210A001B160040882139 ++:100FA0000E0016C5A38200440A001B1600408821CB ++:100FB00014620017022018212402002314E2000505 ++:100FC0002402000B0E0017C0024020210A001B164D ++:100FD0000040882102402021A38200440E0016C553 ++:100FE0002411FFFF0A001B170220182130A500FF63 ++:100FF0000E001529240600019783003A8F82003CD9 ++:10100000A780003A00431023AF82003C0220182141 ++:101010001220003E9782003A2402FFFD5462003EF7 ++:101020008E4300208E4200048F830014005610234C ++:10103000AE420004906200633042007FA062006311 ++:101040008E4200208F840014A780003A34420002B0 ++:10105000AE420020A48000E4908200632403FFBF1E ++:1010600000431024A08200630A001B598E43002015 ++:101070009082006300621024304200FF1040002381 ++:101080009782003A90820088908300BD2485008872 ++:101090003042003F2444FFE02C820020A383001C48 ++:1010A00010400019AF85002C2402000100821804B2 ++:1010B000306200191440000C3C02800034420002EF ++:1010C000006210241440000B306200201040000F1A ++:1010D0009782003A90A600010240202124050001D9 ++:1010E0000A001B5330C60001024020210A001B5297 ++:1010F00024050001024020210000282124060001CF ++:101100000E001646000000009782003A1440FD04CD ++:101110008F8400148E4300203062000410400012BF ++:101120008F84003C2402FFFB00621024AE420020AA ++:10113000274301808F4201B80440FFFE8F820048A0 ++:10114000AC6200008F420124AC6200042402608380 ++:10115000A462000824020002A062000B3C021000FE ++:10116000AF4201B88F84003C8F8300148FBF0034DE ++:101170008FB600308FB5002C8FB400288FB30024B9 ++:101180008FB200208FB1001C8FB000182402000124 ++:1011900027BD003803E00008AC6400C030A500FFA4 ++:1011A0002403000124A900010069102B1040000C49 ++:1011B00000004021240A000100A31023004A380443 ++:1011C00024630001308200010069302B10400002CE ++:1011D000000420420107402554C0FFF800A310235B ++:1011E00003E00008010010213C020800244260A432 ++:1011F0003C010800AC22738C3C02080024425308D6 ++:101200003C010800AC2273902402000627BDFFE0D9 ++:101210003C010800A02273943C021EDCAFB200180F ++:10122000AFB10014AFBF001CAFB0001034526F411B ++:1012300000008821240500080E001B7A02202021CE ++:10124000001180803C07080024E773980002160014 ++:1012500002071821AC6200000000282124A200012E ++:101260003045FFFF8C6200002CA6000804410002FC ++:10127000000220400092202614C0FFF8AC64000059 ++:10128000020780218E0400000E001B7A2405002036 ++:10129000262300013071FFFF2E2301001460FFE5BB ++:1012A000AE0200008FBF001C8FB200188FB1001477 ++:1012B0008FB0001003E0000827BD002027BDFFD835 ++:1012C000AFB3001CAFB20018AFBF0020AFB1001425 ++:1012D000AFB000108F5101408F48014800089402C0 ++:1012E000324300FF311300FF8F4201B80440FFFE7C ++:1012F00027500180AE1100008F420144AE0200046D ++:1013000024020002A6120008A202000B240200140C ++:10131000AE1300241062002528620015104000085A ++:101320002402001524020010106200302402001272 ++:10133000106200098FBF00200A001CB58FB3001C8B ++:101340001062007024020022106200378FBF00205C ++:101350000A001CB58FB3001C3C0208008C4231A06F ++:101360002403FF800222102100431024AF420024F6 ++:101370003C0208008C4231A0022210213042007F42 ++:10138000034218213C02000A00621821166000BCCA ++:10139000AF830014906200623042000F344200308C ++:1013A000A06200620A001CB48FBF00203C046000F1 ++:1013B0008C832C083C02F0033442FFFF00621824A7 ++:1013C000AC832C083C0208008C4231A08C832C0892 ++:1013D000244200740002108200021480006218256A ++:1013E000AC832C080A001CB48FBF00203C0208000C ++:1013F0008C4231A02403FF800222102100431024DC ++:10140000AF4200243C0208008C4231A03C03000A99 ++:10141000022210213042007F03421021004310219C ++:101420000A001CB3AF8200143C0208008C4231A0B9 ++:101430002405FF800222102100451024AF42002421 ++:101440003C0208008C4231A0022210213042007F71 ++:10145000034218213C02000A0062182190620063D6 ++:1014600000A21024304200FF10400085AF8300141A ++:1014700024620088944300123C0208008C4231A888 ++:1014800030633FFF00031980022210210043102126 ++:101490003043007F03432021004510243C03000C0F ++:1014A00000832021AF4200289082000D00A210246A ++:1014B000304200FF10400072AF8400249082000D83 ++:1014C000304200101440006F8FBF00200E0015C87E ++:1014D000000000008F4201B80440FFFE0000000041 ++:1014E000AE1100008F420144AE020004240200024B ++:1014F000A6120008A202000BAE1300240A001CB4BE ++:101500008FBF00202406FF8002261024AF42002057 ++:101510003C0208008C4231A031043FFF00042180CE ++:101520000222102100461024AF4200243C03080090 ++:101530008C6331A83C0208008C4231A03227007F26 ++:101540000223182102221021006418213042007F5A ++:101550003064007F034228213C02000A0066182400 ++:1015600000A22821034420213C02000C00822021FB ++:10157000AF4300283C020008034718210062902175 ++:10158000AF850014AF8400240E0015C8010080212F ++:101590008F4201B80440FFFE8F8200248F84001424 ++:1015A000274501809042000DACB10000A4B00006B8 ++:1015B000000216000002160300021027000237C2C4 ++:1015C00014C00016248200889442001232033FFFA8 ++:1015D00030423FFF14430012240260829083006374 ++:1015E0002402FF8000431024304200FF5040000CD2 ++:1015F00024026082908200623042000F3442004038 ++:10160000A082006224026084A4A200082402000DCB ++:10161000A0A200050A001C9E3C0227002402608252 ++:10162000A4A20008A0A000053C02270000061C00A0 ++:101630000062182524020002A0A2000BACA3001037 ++:10164000ACA00014ACA00024ACA00028ACA0002CDE ++:101650008E42004C8F840024ACA200189083000DB1 ++:101660002402FF8000431024304200FF1040000598 ++:101670008FBF00209082000D3042007FA082000DBD ++:101680008FBF00208FB3001C8FB200188FB10014E1 ++:101690008FB000103C02100027BD002803E00008B6 ++:1016A000AF4201B80800343008003430080033A8D5 ++:1016B000080033E0080034140800343808003438D7 ++:1016C00008003438080033180A0001240000000024 ++:1016D000000000000000000D747061362E322E33C1 ++:1016E00000000000060203010000000000000000EE ++:1016F00000000000000000000000000000000000EA ++:1017000000000000000000000000000000000000D9 ++:1017100000000000000000000000000000000000C9 ++:1017200000000000000000000000000000000000B9 ++:1017300000000000000000000000000000000000A9 ++:101740000000000000000000000000000000000099 ++:101750000000000000000000000000001000000376 ++:10176000000000000000000D0000000D3C02080019 ++:1017700024421C003C03080024632094AC40000079 ++:101780000043202B1480FFFD244200043C1D080070 ++:1017900037BD2FFC03A0F0213C1008002610049058 ++:1017A0003C1C0800279C1C000E00015C000000008F ++:1017B0000000000D3084FFFF308200078F85001885 ++:1017C00010400002248300073064FFF800853021B8 ++:1017D00030C41FFF03441821247B4000AF85001C48 ++:1017E000AF84001803E00008AF4400843084FFFF9A ++:1017F000308200078F8500208F860028104000026D ++:10180000248300073064FFF8008520210086182B10 ++:1018100014600002AF8500240086202303442821A1 ++:1018200034068000AF840020AF44008000A6202151 ++:1018300003E00008AF84003827BDFFD8AFB3001C19 ++:10184000AFB20018AFB00010AFBF0024AFB400209B ++:10185000AFB100143C0860088D1450002418FF7FBD ++:101860003C1A8000029898243672380CAD12500051 ++:101870008F5100083C07601C3C08600036300001B6 ++:10188000AF500008AF800018AF400080AF40008428 ++:101890008CE600088D0F08083C0760168CEC0000F1 ++:1018A00031EEFFF039CA00103C0DFFFF340B800011 ++:1018B0003C030080034B48212D440001018D282466 ++:1018C0003C0253533C010800AC230420AF8900388C ++:1018D000AF860028AF840010275B400014A20003ED ++:1018E00034E37C008CF90004032818218C7F007CF1 ++:1018F0008C6500783C0280003C0B08008D6B048CEA ++:101900003C0A08008D4A048834520070AF85003CC0 ++:10191000AF9F00403C13080026731C440240A021E6 ++:101920008E4800008F46000038C30001306400017B ++:1019300010800017AF880034028048218D2F0000EE ++:101940003C0508008CA5045C3C1808008F1804585E ++:1019500001E8102300A280210000C8210202402BD0 ++:1019600003198821022838213C010800AC30045CAE ++:101970003C010800AC2704588F4E000039CD00010F ++:1019800031AC00011580FFED01E04021AF8F003444 ++:101990008E5100003C0708008CE7045C3C0D0800F9 ++:1019A0008DAD04580228802300F0602100007021D2 ++:1019B0000190302B01AE1821006620213C01080067 ++:1019C000AC2C045C3C010800AC2404588F46010890 ++:1019D0008F47010030C92000AF860000AF87000CA0 ++:1019E0001120000A00C040213C1808008F18042C68 ++:1019F000270800013C010800AC28042C3C184000DA ++:101A0000AF5801380A000196000000009749010410 ++:101A100000002821014550213122FFFF0162582199 ++:101A20000162F82B015F502130D902003C0108000F ++:101A3000AC2B048C3C010800AC2A0488172000154C ++:101A400024040F0010E400130000000024080D001F ++:101A500010E8023B30CD000611A0FFE93C18400021 ++:101A6000936E00002409001031C400F01089027147 ++:101A700024020070108202E58F880014250F0001F7 ++:101A8000AF8F00143C184000AF5801380A0001968F ++:101A900000000000974C01041180FFD93C18400061 ++:101AA00030C34000146000A1000000008F460178A0 ++:101AB00004C0FFFE8F87003824100800240F0008A0 ++:101AC0008CE30008AF500178A74F0140A7400142C6 ++:101AD000974E01048F86000031C9FFFF30CD000111 ++:101AE00011A002E1012040212531FFFE241800024F ++:101AF000A75801463228FFFFA75101483C190800AA ++:101B00008F39043C172002D08F8C000C30DF00206E ++:101B100017E00002240400092404000130C20C0074 ++:101B2000240504005045000134840004A744014A00 ++:101B30003C1108008E3104203C1800483C10000184 ++:101B40000238182530CF00020070282511E000046B ++:101B5000000018213C19010000B9282524030001C8 ++:101B600030DF000453E00005AF8300083C0600109E ++:101B700000A6282524030001AF830008AF4510000C ++:101B80000000000000000000000000000000000055 ++:101B90008F83000810600023000000008F451000B4 ++:101BA00004A1FFFE000000001060001E0000000005 ++:101BB0008F4410003C0C0020008C102410400019B1 ++:101BC0008F8E000031CD000211A000160000000031 ++:101BD000974F101415E000130000000097591008EB ++:101BE0003338FFFF271100060011188200033080F0 ++:101BF00000C7282132300001322300031200032CD9 ++:101C00008CA200000000000D00C7F821AFE2000028 ++:101C10003C0508008CA5043024A600013C01080006 ++:101C2000AC2604308F6D00003402FFFFAF8D00043E ++:101C30008CEC0000118202A6000020218CED000037 ++:101C400031AC01001180028A000000003C02080053 ++:101C50008C4204743C0308008C63044C3C1F080055 ++:101C60008FFF04703C1808008F1804480048382182 ++:101C70000068802100E8282B03E430210208402B73 ++:101C80000304882100C57021022878213C01080046 ++:101C9000AC30044C3C010800AC2F04483C01080067 ++:101CA000AC2704743C010800AC2E04708F8400182B ++:101CB0000120302131290007249F000833F91FFF3C ++:101CC00003594021AF84001CAF990018251B400028 ++:101CD000AF590084112000038F83002024C2000725 ++:101CE0003046FFF88F84002800C3282100A4302B41 ++:101CF00014C00002AF83002400A428230345602100 ++:101D0000340D8000018D10213C0F1000AF850020A4 ++:101D1000AF820038AF450080AF4F01788F88001444 ++:101D2000250F00010A0001EFAF8F00148F62000839 ++:101D30008F670000240500300007760231C300F0F1 ++:101D4000106500A7240F0040546FFF4C8F880014CB ++:101D50008F4B01780560FFFE0000000030CA0200D2 ++:101D600015400003000612820000000D00061282DA ++:101D7000304D0003000D4900012D18210003808023 ++:101D8000020D402100086080019380218E1F000019 ++:101D900017E00002000000000000000D8F6E00043C ++:101DA00005C202BD92070006920E000592020004D1 ++:101DB0003C090001000E18800070F8218FED00181A ++:101DC000277100082448000501A96021000830821D ++:101DD000AFEC0018022020210E00059E26050014FD ++:101DE000920A00068F7900043C0B7FFF000A2080D6 ++:101DF000009178218DF800043566FFFF0326282422 ++:101E000003053821ADE70004920E0005920D000491 ++:101E1000960C0008000E10800051C8218F2300008E ++:101E2000974901043C07FFFF006758243128FFFF52 ++:101E3000010DF82103EC50233144FFFF01643025EC ++:101E4000AF260000920300072418000110780275E5 ++:101E5000240F0003106F0285000000008E050010A3 ++:101E60002419000AA7590140A7450142921800040D ++:101E70008F860000240F0001A7580144A7400146A7 ++:101E80009747010430D100023C050041A7470148B3 ++:101E900000001821A74F014A1220000330CB000494 ++:101EA0003C0501412403000151600005AF83000897 ++:101EB0003C06001000A6282524030001AF8300087B ++:101EC000AF4510000000000000000000000000000E ++:101ED000000000008F8A000811400004000000008C ++:101EE0008F4410000481FFFE000000008F6B000093 ++:101EF000920800043C1108008E310444AF8B0004AA ++:101F000097590104311800FF3C0E08008DCE0440A3 ++:101F10003325FFFF0305382102276021000010212F ++:101F2000250F000A31E8FFFF0187482B01C2682115 ++:101F300001A9F821311000073C010800AC2C044431 ++:101F40003C010800AC3F0440120000038F8C0018D5 ++:101F50002506000730C8FFF8010C682131BF1FFFBC ++:101F6000AF8C001CAF9F0018AF5F00849744010442 ++:101F7000035F80213084FFFF308A00071140000397 ++:101F8000261B4000248900073124FFF88F8200209F ++:101F90008F850028008220210085702B15C000024B ++:101FA000AF820024008520233C0B08008D6B048C3D ++:101FB0003C0A08008D4A04880344882134038000C9 ++:101FC000022310213C0F1000AF840020AF820038A4 ++:101FD000AF440080AF4F01780A0002968F8800144A ++:101FE0008F5001780600FFFE30D10200162000035A ++:101FF000000612820000000D00061282305F00030E ++:10200000001F1900007F302100062080009FC8219A ++:1020100000194880013380218E180000130000024F ++:10202000000000000000000D8F6C000C058001FB1B ++:102030008F870038240E0001AE0E00008CE30008EC ++:10204000A20000078F65000400055402314D00FF17 ++:1020500025A80005000830822CCB00411560000245 ++:10206000A20A00040000000D8F7800043C03FFFF6B ++:1020700000E02821330BFFFF256C000B000C1082C1 ++:1020800000022080008748218D3F000026040014B4 ++:10209000A618000803E3C8240E00059EAD39000011 ++:1020A0008F4F01083C11100001F1382410E001AB02 ++:1020B00000000000974D01049208000725AAFFECDC ++:1020C000350600023144FFFFA2060007960600080D ++:1020D0002CC7001354E0000592030007921100077B ++:1020E000362F0001A20F00079203000724180001F9 ++:1020F000107801C224090003106901D58F880038C7 ++:1021000030CBFFFF257100020011788331E400FF1E ++:1021100000042880A20F000500A848218D2D000092 ++:10212000974A01043C0EFFFF01AEF8243143FFFF44 ++:10213000006B1023244CFFFE03ECC825AD390000D2 ++:10214000920600053C03FFF63462FFFF30D800FF23 ++:102150000018388000F08821922F00143C04FF7F83 ++:102160003487FFFF31EE000F01C65821316500FFB3 ++:1021700000055080015068218DAC00200148F821F5 ++:10218000A20B00060182C824AE0C000CAFF9000CB3 ++:10219000920900068E11000C032778240009C080E4 ++:1021A0000310702195C60026030828210227202449 ++:1021B000AE04000CADCF0020ADC60024ACA60010CC ++:1021C0008F8800003C0B08008D6B048C3C0A0800D3 ++:1021D0008D4A0488241F001024190002A75F0140C3 ++:1021E000A7400142A7400144A7590146974901046D ++:1021F00024070001310600022538FFFEA7580148D8 ++:102200003C050009A747014A10C00003000018213F ++:102210003C05010924030001310C00045180000534 ++:10222000AF8300083C08001000A828252403000103 ++:10223000AF830008AF451000000000000000000060 ++:1022400000000000000000009205000424AE00021F ++:1022500031CD0007000D182330620007AE020010D8 ++:102260008F90000812000004000000008F4F100043 ++:1022700005E1FFFE000000008F7100008F8E001846 ++:102280003C0308008C630444AF91000497450104AB ++:1022900025CF001031E61FFF30A2FFFFAF8E001CDC ++:1022A000AF860018AF4600842449FFFE3C0C0800AE ++:1022B0008D8C0440974D010401208021000947C303 ++:1022C0000070C02131A9FFFF0310F82B0188C8213D ++:1022D000033F202103463821313100073C0108002B ++:1022E000AC3804443C010800AC2404401220000334 ++:1022F00024FB40002527000730E9FFF88F860020E7 ++:102300008F8400280126382100E4C02B170000022A ++:10231000AF86002400E438230347202134198000CD ++:10232000009910213C0F1000AF870020AF820038C9 ++:10233000AF470080AF4F01780A0002968F880014E3 ++:102340009747010410E0FDAE3C1840008F5801781B ++:102350000700FFFE30C5400010A000033C1F00082E ++:102360000000000D3C1F0008AF5F01402410080072 ++:102370008F860000AF5001789744010430D90001E6 ++:10238000132000ED3086FFFF24CCFFFE240D000259 ++:10239000A74D0146A74C01488F9100182408000D55 ++:1023A000A748014A8F630000262F000831E21FFF73 ++:1023B0000342702130C90007AF830004AF91001CB5 ++:1023C000AF82001800C03821AF4200841120000302 ++:1023D00025DB400024D800073307FFF88F85002055 ++:1023E0008F84002800E5302100C4382B14E000025F ++:1023F000AF85002400C430238F8400140346F821E5 ++:10240000340C8000AF86002003EC8021AF460080B2 ++:10241000249900013C0610003C184000AF460178AA ++:10242000AF900038AF990014AF5801380A000196F8 ++:10243000000000008F630000975101043067FFFF28 ++:102440003228FFFF8F4F017805E0FFFE30EC0007D8 ++:10245000000CF82333F0000724F9FFFE2404000ADF ++:10246000A7440140A7500142A7590144A740014693 ++:10247000A74801488F45010830B800201700000226 ++:10248000240300092403000130CD0002A743014AC0 ++:102490003C04004111A00003000018213C0401414C ++:1024A0002403000130C9000451200005AF83000857 ++:1024B0003C0600100086202524030001AF8300089D ++:1024C000AF44100000000000000000000000000009 ++:1024D000000000008F8E000811C000040000000002 ++:1024E0008F4210000441FFFE000000008F7F0000BB ++:1024F000276400088F91003CAF9F0004948500087A ++:102500009490000A9499000C30AFFFFF0010C400B3 ++:102510003323FFFF11F100A6030320253C0E080022 ++:102520008DCE04443C0C08008D8C044000E88821CA ++:102530002626FFFE01C628210000682100A6F82BF0 ++:10254000018D2021009F80213C010800AC2504441E ++:102550003C010800AC30044024E200083042FFFF98 ++:102560003047000710E000038F830018244F000756 ++:1025700031E2FFF83106FFFF30C800070043802139 ++:1025800032191FFF0359C021AF83001CAF990018F7 ++:10259000271B4000AF590084110000038F8C0020DE ++:1025A00024C5000730A6FFF88F84002800CC28211E ++:1025B00000A4F82B17E00002AF8C002400A428230D ++:1025C000AF850020AF4500803C0408008C840434B3 ++:1025D00003454821340E8000012E6821108000053B ++:1025E000AF8D0038939100172406000E12260011BB ++:1025F0002407043F3C021000AF4201788F8800148A ++:10260000250F00010A0001EFAF8F00140E0005C472 ++:1026100000E020218F8800143C0B08008D6B048C97 ++:102620003C0A08008D4A0488250F00010A0001EFCA ++:10263000AF8F00143C021000A7470148AF42017859 ++:102640000A0004CE8F88001424040F001184003D7A ++:1026500030CE002015C0000224030009240300012D ++:102660000A00021AA743014A0A00020DA7400146C8 ++:1026700094EF000894F1000A94F0000C8F8C003C59 ++:10268000001174003207FFFF31EDFFFF11AC00377E ++:1026900001C720253C1808008F1804443C0F08008F ++:1026A0008DEF0440000080210308682101A8382B29 ++:1026B00001F0702101C760213C010800AC2D0444E9 ++:1026C0003C010800AC2C04400A00027A8F840018F8 ++:1026D0003C0208008C42047C3C0308008C630454D8 ++:1026E0003C1F08008FFF04783C1808008F18045026 ++:1026F000004838210068802100E8282B03E43021BD ++:102700000208402B0304882100C57021022878218B ++:102710003C010800AC3004543C010800AC2F0450CC ++:102720003C010800AC27047C3C010800AC2E047876 ++:102730000A00027A8F840018A74001460A00043577 ++:102740008F91001830CD002015A0FFC52403000D87 ++:10275000240300050A00021AA743014A974E010408 ++:1027600025C5FFF00A00038130A4FFFF8F980040C9 ++:102770001498FFC8000010213C0508008CA5046CCB ++:102780003C1F08008FFF046800A8C8210328302BD5 ++:1027900003E22021008640213C010800AC39046C92 ++:1027A0003C010800AC2804680A00027A8F840018F3 ++:1027B0008F8C0040148CFF5900E8C8213C18080099 ++:1027C0008F18046C3C1108008E3104682723FFFE2B ++:1027D00003034821000010210123302B0222702125 ++:1027E00001C668213C010800AC29046C3C010800CA ++:1027F000AC2D04680A0004A524E200088F88003884 ++:102800003C03FFFF8D02000C0043F82403E4C825BD ++:10281000AD19000C0A00038F30CBFFFF0A0003C381 ++:10282000AE000000974A0104920400048E26000CBA ++:10283000014458212579FFF200C7C0243325FFFF4A ++:1028400003053825AE27000C0A0002E68E050010AD ++:102850003C0DFFFF8D0A0010014D582401646025D6 ++:10286000AD0C00100A00038F30CBFFFF974301042B ++:10287000920E00048E290010006E1021244DFFEEF0 ++:102880000127602431A8FFFF0188F825AE3F001022 ++:102890000A0002E68E0500108E0F000CAE0000004C ++:1028A00000078880023028210A0002B8ACAF00205F ++:1028B0001460000D3058FFFF3C04FFFF0044682403 ++:1028C00001A47026000E602B000D102B004CF82484 ++:1028D00013E00002000000000000000D8CAF0000BB ++:1028E0000A00025001E410253B03FFFF0003882B80 ++:1028F0000018802B0211202410800002000000002C ++:102900000000000D8CB900000A0002503722FFFFC2 ++:102910003084FFFF30A5FFFF108000070000182162 ++:10292000308200011040000200042042006518219E ++:102930001480FFFB0005284003E000080060102120 ++:1029400010C00007000000008CA2000024C6FFFF9A ++:1029500024A50004AC82000014C0FFFB2484000402 ++:1029600003E000080000000010A0000824A3FFFFFF ++:10297000AC86000000000000000000002402FFFF01 ++:102980002463FFFF1462FFFA2484000403E00008BC ++:1029900000000000308EFFFF30D8FFFF00057C00F4 ++:1029A00001F8602539CDFFFF01AC5021014C582BB7 ++:1029B000014B4821000944023127FFFF00E8302184 ++:1029C0000006240230C5FFFF00A418213862FFFF73 ++:1029D00003E000083042FFFF3C0C08008D8C0484AB ++:1029E000240BFF8027BDFFD001845021014B4824D8 ++:1029F000AF4900203C0808008D080484AFB20020D5 ++:102A0000AFB00018AFBF0028AFB30024AFB1001CB7 ++:102A1000936600040104382130E4007F009A1021FD ++:102A20003C0300080043902130C500200360802152 ++:102A30003C080111277B000814A000022646007004 ++:102A40002646006C9213000497510104920F000473 ++:102A50003267000F322EFFFF31ED004001C72823FF ++:102A600011A0000500004821925900BC3338000431 ++:102A70001700009000000000924300BC307F00046B ++:102A800013E0000F0000000010A0000D0000000087 ++:102A9000960E0002240AFF8000A7602125CDFFFECC ++:102AA000A74D1016920B0004014B2024308200FF2A ++:102AB00010400085010C40253C0F0400010F40250B ++:102AC0008F5301780660FFFE2404000AA7440140EA ++:102AD000960D00022404000931AC0007000C5823B5 ++:102AE000316A0007A74A0142960200022443FFFE12 ++:102AF000A7430144A7400146975F0104A75F01482F ++:102B00008F590108333800205300000124040001CC ++:102B1000920F000431EE001015C000023483001043 ++:102B200000801821A743014A0000000000000000B7 ++:102B30000000000000000000AF481000000000008E ++:102B40000000000000000000000000008F51100095 ++:102B50000621FFFE3113FFFF12600003000000009A ++:102B60008F481018ACC8000096030006307FFFFFA6 ++:102B700027F900020019988200138880023B302157 ++:102B80008CD800001520005700183402920300046E ++:102B90002405FF8000A3F82433F100FF1220002C4D ++:102BA00000000000924700BC30F2000212400028F2 ++:102BB00000000000974B100C2562FFFEA742101684 ++:102BC000000000003C0A040035490030AF49100005 ++:102BD00000000000000000000000000000000000F5 ++:102BE0008F4C10000581FFFE000000009749100C7B ++:102BF0008F51101C00C020213127FFFF24F200302C ++:102C0000001218820003288000BBF8213226FFFF43 ++:102C1000AFF100000E0005B300112C020013C880B4 ++:102C2000033B98218E78000000027400AFB80010BA ++:102C30008FA80010310FFFFFAFAF00108FA400105E ++:102C400001C46825AFAD00108FA60010AE6600006D ++:102C500097730008976D000A9766000C8F8A003CF6 ++:102C6000000D5C0030CCFFFF3262FFFF104A0036DF ++:102C7000016C2025960600023C10100024D30008A9 ++:102C80000E00013B3264FFFF974C01040E00014926 ++:102C90003184FFFFAF5001788FBF00288FB300242D ++:102CA0008FB200208FB1001C8FB0001803E0000825 ++:102CB00027BD003010A0FF700000000024A5FFFC1D ++:102CC0000A0005EC240900048CD10000AF51101853 ++:102CD0008F5301780660FF7A2404000A0A00060177 ++:102CE0000000000000A7C8218F8800388F4E101CFC ++:102CF0000019C0820018788001E82021AC8E000005 ++:102D0000000E2C0200C020210E0005B331C6FFFFCB ++:102D1000023B28218CAD000000025400004030210D ++:102D2000AFAD00108FAC0010318BFFFFAFAB0010C8 ++:102D30008FA2001001424825AFA900108FA70010F4 ++:102D40000A000631ACA700008F8F0040148FFFC926 ++:102D50000000000097420104960B00023C050800A9 ++:102D60008CA5046C3049FFFF316AFFFF3C1108005D ++:102D70008E310468012A382124F2FFFE00B240217E ++:102D80000012FFC30112C82B023FC02103192021EA ++:102D90003C010800AC28046C3C010800AC24046829 ++:102DA0000A00066B0000000000A4102B1040000970 ++:102DB000240300010005284000A4102B04A00003F8 ++:102DC000000318405440FFFC000528401060000735 ++:102DD000000000000085302B14C0000200031842E0 ++:102DE000008520231460FFFB0005284203E0000853 ++:102DF000008010218F85002C27BDFFE800053027BB ++:102E00002CC300012CA400020083102510400003F5 ++:102E1000AFBF00102405007FAF85002C00052827D8 ++:102E200030A5FFFF0E000592240426F58F830030A5 ++:102E3000240402BD004030210083382B10E000093B ++:102E400024050001000420400083102B04800003AF ++:102E5000000528405440FFFC0004204010A000085A ++:102E600000C350210064402B1500000200052842D9 ++:102E70000064182314A0FFFB0004204200C350216B ++:102E80008FBF0010000A4C02312200FF27BD00183E ++:102E9000AF8A002C03E00008AF8900300A00002A46 ++:102EA00000000000000000000000000D7478703683 ++:102EB0002E322E3300000000060203000000000046 ++:102EC000000001360000EA60000000000000000081 ++:102ED00000000000000000000000000000000000F2 ++:102EE00000000000000000000000000000000000E2 ++:102EF00000000000000000000000000000000016BC ++:102F000000000000000000000000000000000000C1 ++:102F100000000000000000000000000000000000B1 ++:102F200000000000000000000000000000000000A1 ++:102F3000000000000000138800000000000005DC15 ++:102F4000000000000000000010000003000000006E ++:102F50000000000D0000000D3C02080024423C204F ++:102F60003C03080024633DD4AC4000000043202B08 ++:102F70001480FFFD244200043C1D080037BD7FFC87 ++:102F800003A0F0213C100800261000A83C1C0800FB ++:102F9000279C3C200E0002BA000000000000000D3B ++:102FA0008F8300383C088000350700708CE50000F6 ++:102FB000008330253C02900000C22025AF85003000 ++:102FC000AF4400208F4900200520FFFE3C03800015 ++:102FD000346200708C4500008F8600303C19080078 ++:102FE0008F39007C3C0E08008DCE007800A620238F ++:102FF00003245821000078210164682B01CF60214F ++:10300000018D50213C010800AC2B007C3C010800E4 ++:10301000AC2A007803E00008000000000A0000412C ++:10302000240400018F8400383C05800034A2000194 ++:103030000082182503E00008AF43002003E00008E9 ++:10304000000010213084FFFF30A5FFFF1080000733 ++:1030500000001821308200011040000200042042CC ++:10306000006518211480FFFB0005284003E00008DC ++:103070000060102110C00007000000008CA20000BA ++:1030800024C6FFFF24A50004AC82000014C0FFFB8F ++:103090002484000403E000080000000010A00008E1 ++:1030A00024A3FFFFAC860000000000000000000029 ++:1030B0002402FFFF2463FFFF1462FFFA248400044C ++:1030C00003E0000800000000308AFFFF93A800130F ++:1030D000A74A014497490E1630C600FF3C02100073 ++:1030E000A7490146AF450148A3460152A748015AE6 ++:1030F000AF4701608FA400188FA30014A7440158A4 ++:10310000AF43015403E00008AF42017803E0000838 ++:10311000000000003C038000346200708C49000015 ++:103120008F8800002484000727BDFFF83084FFF853 ++:10313000AF890030974D008A31ACFFFFAFAC000083 ++:103140008FAB0000016850232547FFFF30E61FFFCB ++:1031500000C4282B14A0FFF73C0C8000358B0070B6 ++:103160008D6A00003C0708008CE700843C060800DC ++:103170008CC6008000081082014918230002788064 ++:1031800000E370210000202101C3C82B00C4C0212E ++:1031900001FA4021031948212502400027BD0008FB ++:1031A0003C010800AC2E00843C010800AC290080E2 ++:1031B00003E00008000000008F8200002486000762 ++:1031C00030C5FFF800A2182130641FFF03E000089B ++:1031D000AF8400008F8700388F8A004027BDFFB87A ++:1031E0008F860044AFB60040AFBF0044AFB5003C8F ++:1031F000AFB40038AFB30034AFB20030AFB1002C81 ++:10320000AFB000288F4501048D4900ACAF47008066 ++:103210008CC8002000A938230000B021AF480E1050 ++:103220008F440E1000004821AF440E148CC20024BD ++:10323000AF420E188F430E18AF430E1C10E001254D ++:103240002D230001936B0008116000D400000000E2 ++:10325000976E001031CDFFFF00ED602B158000CF81 ++:103260000000000097700010320FFFFFAF4F0E00FC ++:103270008F520000325100081220FFFD00000000B4 ++:1032800097540E088F460E043285FFFF30B30001BD ++:1032900012600132000000000000000D30B8A040B4 ++:1032A00024150040131500C030A9A0001120012DE5 ++:1032B00000000000937F000813E0000800000000F9 ++:1032C00097630010306BFFFF00CB402B1100000311 ++:1032D00030AC00401180012300000000A785003CB5 ++:1032E000AF8600349366000800E02821AFA70020D5 ++:1032F00014C0012427B30020AF60000C9782003C6B ++:103300003047400014E00002240300162403000E9E ++:1033100024194007A363000AAF790014938A003E82 ++:103320008F740014315800070018AA4002959025A8 ++:10333000AF7200149784003C8F700014309100101D ++:1033400002117825AF6F0014978E003C31CD000834 ++:1033500011A00147000028218F6700143C021000D3 ++:103360003C0C810000E22825AF65001497460E0A48 ++:103370002408000E3405FFFC30C3FFFF006C582505 ++:10338000AF6B0004A3680002937F000A27E90004E2 ++:10339000A369000A9786003C9363000A30CC1F00A3 ++:1033A000000C598301634021251F0028A37F0009D9 ++:1033B00097490E0CA769001093790009272A00028B ++:1033C000315800070018A82332B10007A371000B81 ++:1033D00093740009976400108F910034978F003C1C ++:1033E000329200FF024480210205702131ED00403D ++:1033F00011A0000531C4FFFF0091282B3C12800072 ++:1034000010A000140000A0210224382B14E0011B9E ++:103410008FA500208F4D0E14AF4D0E108F420E1C45 ++:10342000AF420E18AF440E008F4F000031EE00087F ++:1034300011C0FFFD0000000097540E080080882195 ++:1034400000009021A794003C8F500E04241400012A ++:10345000AF900034976400103095FFFF8E68000035 ++:103460000111F82317E00009AE7F00008F650014FA ++:103470008F8B004434A60040AF6600148F4C0E10B2 ++:10348000AD6C00208F430E18AD63002493670008D5 ++:1034900014E000D2000000000E00009E2404001082 ++:1034A0008F8900483C08320000402821312600FF67 ++:1034B0000006FC0003E8502525390001AF990048BB ++:1034C000AC4A0000937800099370000A330400FFAF ++:1034D00000047400320F00FF01CF6825AC4D0004DA ++:1034E0008F820048064000EAACA20008ACA0000CA5 ++:1034F0009783003C306B0008156000022628000608 ++:1035000026280002974E0E148F450E1C8F6700046C ++:10351000936D000231C4FFFF31A200FFAFA2001083 ++:103520008F6C0014AFA800180E00008BAFAC001415 ++:10353000240400100E0000C7000000008E7200007E ++:1035400016400005000000008F6400142405FFBF32 ++:1035500000859824AF7300148F79000C033538214F ++:10356000AF67000C9375000816A00008000000006B ++:1035700012800006000000008F7F00143C0BEFFF5C ++:103580003568FFFE03E84824AF690014A3740008FF ++:103590008FA500200A00024602202021AF470E001E ++:1035A0000A0000F5000000008F5901780720FFFE97 ++:1035B000241F08008F840000AF5F0178974B008ABA ++:1035C000316AFFFF014448232528FFFF31021FFF16 ++:1035D0002C4300081460FFF9000000008F8E0048A3 ++:1035E0008F8D003800C048210344202125C60001EA ++:1035F000240C0F00AF86004800E9382324864000E1 ++:1036000031CA00FF11AC0005240800019391003E6F ++:103610003230000700107A4035E80001000AAC00A3 ++:103620003C18010002B8A025AC9440008F930048DC ++:1036300030B2003630A40008ACD3000410800097EC ++:1036400001123025974E0E0A8F8D00003C0281003A ++:1036500031CCFFFF25AB0008018240253C03100060 ++:1036600031651FFF25390006241F000EAF48016099 ++:1036700000C33025A75F015AAF850000A759015844 ++:1036800014E0000A8F93003824120F0052720002D7 ++:103690002416000134C600408F580E108F94004449 ++:1036A000AE9800208F550E18AE9500248F450E144D ++:1036B000AF4501448F590E1CAF590148A34A01522E ++:1036C0003C0A1000AF460154AF4A017814E0FEDD19 ++:1036D0002D2300010076A025128000178FBF004423 ++:1036E0008F84003824160F0010960084000000001C ++:1036F0008F45017804A0FFFE24150F001095006E81 ++:10370000000000008F470E14240202403C1F1000EE ++:10371000AF4701448F440E1CAF440148A3400152FF ++:10372000A740015AAF400160A7400158AF42015481 ++:10373000AF5F01788FBF00448FB600408FB5003C6B ++:103740008FB400388FB300348FB200308FB1002CAB ++:103750008FB0002803E0000827BD004814C0FED049 ++:1037600030B8A0408F420E148F84004400004821DE ++:10377000AC8200208F510E1CAC9100240A00020E76 ++:103780002D2300018F910034978A003C3C12800069 ++:103790000220A821315800401700FF300000A0216E ++:1037A000976900108F9200343139FFFF13320035D2 ++:1037B00000002021008048211480FEA000A03821B4 ++:1037C0008F420E148F840044AC8200208F510E1C57 ++:1037D000AC9100240A00020E2D230001936A000917 ++:1037E0009378000B315000FF330F00FF020F702160 ++:1037F00025C2000A3050FFFF0E00009E020020216B ++:103800008F8600483C1F410024CD0001AF8D004849 ++:10381000936C000930C600FF00064400318300FFAE ++:10382000246B0002010B4825013FC825AC5900005C ++:103830008F67000C97440E1400F22825AC45000455 ++:103840008F450E1C8F670004936A00023084FFFFCF ++:10385000315800FFAFB800108F6F0014AFB10018DF ++:103860000E00008BAFAF00140A0001A60200202159 ++:10387000AF6000040A00013EA36000020A00024695 ++:1038800000002021000090210A0001702414000192 ++:103890003C1280000A000195ACB2000C8F91000030 ++:1038A00025240002A744015826300008320F1FFFCC ++:1038B0000A0001F9AF8F0000AF40014C1120002C2D ++:1038C000000000008F590E10AF5901448F430E18AD ++:1038D000240200403C1F1000AF430148A3400152A6 ++:1038E000A740015AAF400160A7400158AF420154C0 ++:1038F000AF5F01780A0002278FBF00441120000645 ++:103900000000000097460E0830CC004015800002F1 ++:10391000000000000000000D8F4D017805A0FFFEA3 ++:103920000000000097530E103C120500240E2000EA ++:10393000326AFFFF0152C025AF58014C8F4F0E1461 ++:103940003C021000AF4F01448F500E1CAF50014895 ++:10395000A34001528F840038A740015AAF40016054 ++:10396000A7400158AF4E01540A000215AF4201783A ++:103970008F490E14AF4901448F430E1C0A00028E7A ++:10398000240200403C0E20FF27BDFFE03C1A8000CF ++:103990003C0F800835CDFFFDAFBF001CAFB2001853 ++:1039A000AFB10014AFB00010AF8F0040AF4D0E00AC ++:1039B0000000000000000000000000000000000007 ++:1039C000000000003C0C00FF358BFFFDAF4B0E00EC ++:1039D0003C0660048CC95000240AFF7F3C11600043 ++:1039E000012A40243507380CACC750008E24043817 ++:1039F00024050009AF4500083083FFFF38622F71AE ++:103A00002450C0B3AF8000480E000068AF800000B3 ++:103A100052000001AE20442C0E0004353C11800001 ++:103A20000E000ED9363000708F8A00403C1208001C ++:103A300026523C88020088218E0800008F5F00001B ++:103A40003BF900013338000113000017AF88003044 ++:103A5000022048218D2700003C0F08008DEF006CEC ++:103A60003C0C08008D8C006800E8C02301F8282178 ++:103A70000000682100B8302B018D582101664021DB ++:103A80003C010800AC25006C3C010800AC28006833 ++:103A90008F44000038830001306200011440FFEDC4 ++:103AA00000E04021AF8700308E0C00003C0508008C ++:103AB0008CA5006C3C0408008C84006801883023CD ++:103AC00000A638210000102100E6402B00821821BA ++:103AD0000068F8213C010800AC27006C3C0108009C ++:103AE000AC3F00688F49010025590088AF99004418 ++:103AF000AF890038AF4900208E070000AF87003043 ++:103B00008F4D017805A0FFFE000000008E0600002A ++:103B10003C0B08008D6B00743C0408008C84007022 ++:103B200000C728230165F8210000102103E5402B80 ++:103B30000082382100E8C821240908003C0108005F ++:103B4000AC3F00743C010800AC390070AF4901780B ++:103B500093580108A398003E938F003E31EE000178 ++:103B600015C000158F830038240E0D00106E00194B ++:103B7000240F0F00106F001D00000000915900007D ++:103B800024180050332900FF113800043C1F400066 ++:103B9000AF5F01380A0002E7000000000E00090EC6 ++:103BA000000000008F8A00403C1F4000AF5F0138DA ++:103BB0000A0002E700000000938D003E31AC0006D1 ++:103BC000000C51000E0000CE0152D8210A00034320 ++:103BD0008F8A00403C1B0800277B3D080E0000CE6A ++:103BE000000000000A0003438F8A00403C1B0800CD ++:103BF000277B3D280E0000CE000000000A00034392 ++:103C00008F8A004090AA00018FAB00108CAC00108E ++:103C10003C0300FF8D680004AD6C00208CAD0014E7 ++:103C200000E060213462FFFFAD6D00248CA7001816 ++:103C30003C09FF000109C024AD6700288CAE001CC0 ++:103C40000182C82403197825AD6F0004AD6E002CE5 ++:103C50008CAD0008314A00FFAD6D001C94A9000234 ++:103C60003128FFFFAD68001090A70000A56000029A ++:103C7000A1600004A167000090A30002306200FF71 ++:103C80000002198210600005240500011065000E75 ++:103C90000000000003E00008A16A00018CD80028A1 ++:103CA000354A0080AD7800188CCF0014AD6F001439 ++:103CB0008CCE0030AD6E00088CC4002CA16A0001CF ++:103CC00003E00008AD64000C8CCD001CAD6D001845 ++:103CD0008CC90014AD6900148CC80024AD680008BC ++:103CE0008CC70020AD67000C8CC200148C8300646C ++:103CF0000043C82B13200007000000008CC20014F2 ++:103D0000144CFFE400000000354A008003E0000886 ++:103D1000A16A00018C8200640A000399000000007F ++:103D200090AA000027BDFFF88FA9001CA3AA0000DD ++:103D30008FAE00003C0FFF808FA8001835E2FFFF18 ++:103D40008CCD002C01C26024AFAC0000A120000487 ++:103D500000E06021A7A000028FB800008D270004BA ++:103D60000188182100A0582100C05021006D28268C ++:103D70003C06FF7F3C0F00FF2CAD000135EEFFFF3E ++:103D800034D9FFFF3C02FF0003193024000D1DC091 ++:103D9000010EC82400E2C02400C370250319782551 ++:103DA000AD2E0000AD2F00048D450024AFAE000005 ++:103DB000AD2500088D4D00202405FFFFAD2D000C22 ++:103DC000956800023107FFFFAD27001091660018CB ++:103DD00030C200FF000219C2506000018D4500345E ++:103DE000AD2500148D67000827BD0008AD27001C15 ++:103DF0008C8B00CCAD2C0028AD20002CAD2B0024EA ++:103E0000AD20001803E00008AD20002027BDFFE032 ++:103E1000AFB20018AFB10014AFB00010AFBF001CBC ++:103E20009098000000C088213C0D00FF330F007FF8 ++:103E3000A0CF0000908E000135ACFFFF3C0AFF00D0 ++:103E4000A0CE000194A6001EA22000048CAB00149A ++:103E50008E29000400A08021016C2824012A40241E ++:103E60000080902101052025A6260002AE24000432 ++:103E700026050020262400080E00007624060002F5 ++:103E800092470000260500282624001400071E0083 ++:103E90000003160324060004044000032403FFFF6C ++:103EA000965900023323FFFF0E000076AE23001068 ++:103EB000262400248FBF001C8FB200188FB100147D ++:103EC0008FB0001024050003000030210A0000809C ++:103ED00027BD002027BDFFD8AFB1001CAFB0001830 ++:103EE000AFBF002090A80000240200018FB0003C6A ++:103EF0003103003F00808821106200148FAA00382F ++:103F0000240B0005506B0016AFAA001000A0202162 ++:103F100000C028210E0003DC02003021922400BCE6 ++:103F2000308300021060000326060030ACC00000A1 ++:103F300024C600048FBF00208FB1001C8FB0001872 ++:103F400000C0102103E0000827BD002801403821EF ++:103F50000E00035AAFB000100A0004200000000059 ++:103F60000E0003A1AFB000140A00042000000000FE ++:103F70003C02000A034218213C04080024843D6CE2 ++:103F80002405001A000030210A000080AF8300548D ++:103F90003C038000346200708C48000000A058216F ++:103FA00000C04821308A00FFAF8800308F4401787C ++:103FB0000480FFFE3C0C8000358600708CC500003C ++:103FC0003C0308008C6300743C1808008F180070D4 ++:103FD00000A82023006468210000C82101A4782BD8 ++:103FE0000319702101CF60213C010800AC2D007441 ++:103FF0003C010800AC2C00708F480E14AF480144FF ++:10400000AF47014CA34A0152A74B01589346010800 ++:1040100030C5000854A0000135291000934B090059 ++:1040200024070050316A00FF11470007000000001C ++:104030008F450E1CAF450148AF4901543C091000A3 ++:1040400003E00008AF490178934D010831A800084A ++:104050001100001000000000934F010831EE001025 ++:1040600051C00001352900083C04080090843DD06F ++:10407000A34401508F4309A4AF4301488F4209A0D4 ++:10408000AF420144AF4901543C09100003E000086D ++:10409000AF4901783C1908008F393D8C333800084E ++:1040A0005700FFF1352900080A00047300000000E2 ++:1040B00024070040AF470814AF4008108F4209445E ++:1040C0008F4309508F4409548F45095C8F46094C32 ++:1040D000AF820064AF830050AF84004CAF85005CBA ++:1040E00003E00008AF8600609346010930C5007FF9 ++:1040F000000518C0000521400083102103E00008DE ++:10410000244200883C09080091293D9124A800021E ++:104110003C05110000093C0000E8302500C51825C9 ++:1041200024820008AC83000003E00008AC80000497 ++:104130009347010B8F4A002C974F09083C18000E3B ++:104140000358482131EEFFFF000E41C0AF48002C5C ++:1041500097430908952C001A008040212403000190 ++:10416000318BFFFFAC8B00008D2D001C00A058216F ++:1041700000C06021AC8D00048D24002030E7004099 ++:10418000AD04000891220019304400031083004858 ++:104190002885000214A00062240600021086005642 ++:1041A00024190003109900660000000010E0003A96 ++:1041B000000000003C07080094E73D8624E200016F ++:1041C000934F0934934709219525002A31EE00FFCA ++:1041D000000E488230ED00FF978700580009360036 ++:1041E000000D1C003044FFFF00C310250044C02513 ++:1041F00000A778213C19400003197025000F4C00DE ++:10420000AD090004AD0E0000934D09203C030006EB ++:1042100025090014000D360000C32025AD04000858 ++:104220008F59092C24E5000130A27FFFAD19000C45 ++:104230008F580930A782005825020028AD180010B9 ++:104240008F4F0938AD0F0014AD2B00048F4E09407D ++:10425000AD2E0008934D09373C05080090A53D9010 ++:104260008F4409488F46094031A700FF00EC182110 ++:10427000008678230003C7000005CC0003196025E1 ++:1042800031E8FFFC01885825AD2B000CAD20001053 ++:1042900003E00008AF4A002C3C0D080095AD3D86B8 ++:1042A0003C0E080095CE3D800A0004C901AE1021E5 ++:1042B0003C05080094A53D8A3C06080094C63D8054 ++:1042C0003C18080097183D7C952E002400A6782104 ++:1042D00001F86823000E240025A2FFF200821825B1 ++:1042E00024190800AD03000CAD190014AD00001036 ++:1042F0000A0004C4250800189526002495250028E6 ++:104300000006C40000057C00370E810035ED080072 ++:10431000AD0E000CAD0D00100A0004C425080014F9 ++:104320001480FFA200000000952400240004140063 ++:1043300034430800AD03000C0A0004C42508001033 ++:104340003C03080094633D8A3C05080094A53D8029 ++:104350003C06080094C63D7C953900249538002819 ++:10436000006520210086782300196C000018740075 ++:1043700025E2FFEE01C2202535A3810024190800A3 ++:10438000AD03000CAD040010AD190018AD00001411 ++:104390000A0004C42508001C03E00008240201F4FC ++:1043A00027BDFFE8AFB00010AFBF00140E000060E3 ++:1043B0000080802124050040AF4508148F83005001 ++:1043C0008F84004C8F85005C0070182100641023DE ++:1043D00018400004AF830050AF6300548F66005450 ++:1043E000AF86004C1200000C000000008F440074E7 ++:1043F000936800813409FA002D07000710E00005DA ++:1044000000891021936C0081240B01F4018B50046E ++:1044100001441021AF62000C8F4E095C01C5682376 ++:1044200019A000048FBF00148F4F095CAF8F005C90 ++:104430008FBF00148FB000100A00006227BD001863 ++:104440008F8400648F8300508F82004CAF640044DF ++:10445000AF63005003E00008AF6200543C038000EB ++:10446000346200708C43000027BDFFF8308700FFE6 ++:1044700030A900FF30C800FFAF8300308F440178BF ++:104480000480FFFE3C028000345900708F38000029 ++:10449000A3A700033C0708008CE700748FAC000062 ++:1044A0003C0608008CC60070030378233C0E7FFF97 ++:1044B00000EFC82135CDFFFF00005021018D2824D9 ++:1044C00000CA1821000847C0032F202B00A8102580 ++:1044D0000064C021AFA200003C010800AC390074A8 ++:1044E0003C010800AC380070934F010AA3A0000201 ++:1044F0003C0E80FFA3AF00018FAC0000312B007F8A ++:1045000035CDFFFF018D4824000B5600012A4025C0 ++:10451000240730002406FF803C05100027BD00085A ++:10452000AF48014CAF470154A7400158A346015280 ++:1045300003E00008AF45017827BDFFE8AFBF0014D6 ++:10454000AFB000108F6500743C068000309000FF13 ++:1045500000A620250E000060AF6400749363000580 ++:10456000346200080E000062A362000502002021F0 ++:104570008FBF00148FB00010240500052406000131 ++:104580000A00057027BD001827BDFFE03C0380002E ++:10459000AFB00010AFBF0018AFB1001434620070AC ++:1045A0008C470000309000FF30A800FFAF8700303C ++:1045B0008F4401780480FFFE3C18800037110070A2 ++:1045C0008E2F00003C0D08008DAD00743C0A0800E1 ++:1045D0008D4A007001E7702301AE282100005821A8 ++:1045E00000AE302B014B4821012638213C01080048 ++:1045F000AC250074000088213C010800AC27007045 ++:104600001100000F000000008F6200742619FFFFE8 ++:104610003208007F0002FE0233E5007F150000062D ++:10462000332200FF2407FF800207202624A3FFFF78 ++:1046300000838025320200FF0040802124111008F1 ++:104640000E000060000000008F49081831250004AA ++:1046500014A0FFFD3218007F001878C000187140C8 ++:1046600001CF682125AC0088AF4C0818274A098083 ++:104670008D4B0020AF4B01448D460024AF460148CE ++:10468000A35001500E000062A740015802201021E3 ++:104690008FBF00188FB100148FB0001003E0000826 ++:1046A00027BD002027BDFFE8308400FFAFBF00100A ++:1046B0000E0005BB30A500FF8F8300508FBF001098 ++:1046C000344500402404FF903C02100027BD001830 ++:1046D000AF43014CA3440152AF45015403E000082D ++:1046E000AF4201789343093E306200081040000D4C ++:1046F0003C0901013528080AAC8800008F47007486 ++:10470000AC8700043C06080090C63D9030C5001000 ++:1047100050A00006AC8000088F6A0060AC8A0008D8 ++:104720002484000C03E00008008010210A00062207 ++:104730002484000C27BDFFE8AFBF0014AFB0001009 ++:104740009346093F00A050210005288000853823AA ++:1047500030C200FF240300063C09080095293D866D ++:1047600024E8FFD824050004104300372406000283 ++:104770009750093C3C0F020400063400320EFFFF44 ++:1047800001CF6825AC8D0000934C093E318B002091 ++:104790001160000800000000934309363C02010349 ++:1047A000345F0300307900FF033FC0252405000873 ++:1047B000AC98000493430934935909210005F88209 ++:1047C000306200FF0002C082332F00FF00186E002D ++:1047D000000F740001AE6025018920253C094000CE ++:1047E00000898025ACF0FFD8934309378F4F0948E3 ++:1047F0008F580940306200FF004AC821033F7021F2 ++:1048000001F86023000E6F0001A650253185FFFCE2 ++:10481000001F58800145482501683821AD09002056 ++:104820000E00006024F00028240400040E00006242 ++:10483000A364003F020010218FBF00148FB000104E ++:1048400003E0000827BD00180A0006352406001200 ++:1048500027BDFFD024090010AFB60028AFB5002453 ++:10486000AFB40020AFB10014AFB000103C0108009D ++:10487000A0293D90AFBF002CAFB3001CAFB2001811 ++:1048800097480908309400FF3C02000E3107FFFFF3 ++:10489000000731C0AF46002C974409089344010B30 ++:1048A00030B500FF03428021308300300000B0218A ++:1048B0001060012500008821240C00043C01080040 ++:1048C000A02C3D90934B093E000B5600000A2E038E ++:1048D00004A0016000000000AF400048934F010BAE ++:1048E00031EE002011C00006000000009358093E80 ++:1048F00000189E0000139603064001890000000086 ++:104900009344010B30830040106000038F930050EC ++:104910008F8200502453FFFF9347093E30E6000882 ++:1049200014C0000224120003000090219619002CEC ++:1049300093580934934F0937A7990058330C00FF57 ++:1049400031EE00FF024E6821000D5880016C5021AD ++:10495000015140213C010800A4283D869205001821 ++:1049600030A900FF010918213C010800A4233D885B ++:104970009211001816200002000000000000000D37 ++:104980003C010800A4233D8A3C010800A4203D808E ++:104990003C010800A4203D7C935F010B3063FFFFC6 ++:1049A00033F00040120000022464000A2464000B6B ++:1049B0003091FFFF0E00009E022020219358010B32 ++:1049C0003C08080095083D8A0040202100185982C3 ++:1049D000316700010E00049A01072821934C010B56 ++:1049E0008F4B002C974E09083C0F000E034F4021BF ++:1049F00031CDFFFF000D51C0AF4A002C974309088D ++:104A00009505001A004038212404000130A9FFFF59 ++:104A1000AC4900008D06001C00404821318A00404E ++:104A2000AC4600048D020020ACE20008910300199E ++:104A300030630003106400EC28790002172001188D ++:104A4000241000021070010C241F0003107F011EAF ++:104A500000000000114000DE000000003C090800DA ++:104A600095293D8625220001935F0934934E092143 ++:104A70009504002A33F900FF0019C08231CF00FFEE ++:104A8000978E005800184600000F6C00010D80251D ++:104A90003045FFFF02051025008E50213C034000E9 ++:104AA00000433025000A6400ACEC0004ACE60000D2 ++:104AB000935F09203C19000624EC0014001FC60077 ++:104AC00003197825ACEF00088F48092C25CD00018B ++:104AD00031A57FFFACE8000C8F500930A785005846 ++:104AE00024E80028ACF000108F4409380100802130 ++:104AF000ACE40014AD9300048F530940AD9300085B ++:104B0000934A09373C19080093393D908F4309486F ++:104B10008F460940314200FF0052F82100667023A1 ++:104B2000001F7F000019C40001F8282531CDFFFCCB ++:104B300000AD2025AD84000CAD800010AF4B002CE3 ++:104B4000934B093E317300081260000D3C060101D1 ++:104B500034CC080AACEC00288F530074AD13000469 ++:104B60003C0B0800916B3D903167001050E0000352 ++:104B7000AD0000088F6A0060AD0A00082510000C27 ++:104B800012C0003D000000009343093F24160006B8 ++:104B900024060004306200FF105600C924070002FA ++:104BA0009758093C3C0F0204330DFFFF01AF40252D ++:104BB000AE0800009345093E30A400201080000894 ++:104BC00000000000935309363C0B0103357F0300BE ++:104BD000327900FF033F7025AE0E00042406000862 ++:104BE000934F093493480921312AFFFF31ED00FF2B ++:104BF000000D1082310300FF0002B60000032C00FC ++:104C000002C56025018A9825001220803C094000D9 ++:104C10000204502302695825AD4BFFD8935F093732 ++:104C20008F4F09488F58094033F900FF0332702134 ++:104C30000006B08201D668210007440001F828234D ++:104C4000000D1F000068302530A2FFFC2547FFD86B ++:104C500000C260250016808002074821ACEC0020CD ++:104C6000253000280E00006024120004A372003FCB ++:104C70000E000062000000009347010B30F200407C ++:104C8000124000053C1900FF8E180000372EFFFF70 ++:104C9000030E3024AE0600000E0000C702202021C3 ++:104CA0003C10080092103D90321100031220000FBA ++:104CB00002A028218F89005025330001AF930050B6 ++:104CC000AF7300508F6B00540173F8231BE0000298 ++:104CD000026020218F640054AF6400548F4C007434 ++:104CE000258401F4AF64000C02A028210280202159 ++:104CF000A76000680E0005BB3C1410008F850050B3 ++:104D000034550006AF45014C8F8A00488FBF002CF8 ++:104D10008FB3001C25560001AF9600488FB20018D3 ++:104D2000A34A01528FB60028AF5501548FB1001429 ++:104D3000AF5401788FB500248FB400208FB00010DD ++:104D400003E0000827BD00309358093E00189E007C ++:104D500000139603064200362411000293440923EF ++:104D6000308300021060FEDD8F8600608F8200506D ++:104D700014C2FEDA000000000E0000600000000017 ++:104D80009369003F24070016312800FF1107000C2B ++:104D9000240500083C0C0800918C3D90358B0001E7 ++:104DA0003C010800A02B3D90936A003F314300FF77 ++:104DB00010650065240D000A106D005E2402000CD1 ++:104DC0000E000062000000000A00069000000000D3 ++:104DD0003C09080095293D863C0A0800954A3D801B ++:104DE0000A0006F3012A10213C09080095293D8A92 ++:104DF0003C04080094843D803C06080094C63D7C39 ++:104E000095030024012410210046F8230003CC0060 ++:104E100027F0FFF20330C025240F0800ACF8000C87 ++:104E2000ACEF0014ACE000100A0006EE24E7001816 ++:104E30003C010800A0313D90935F093E241600011B ++:104E400033F900201720FEA5241100080A0006905F ++:104E5000241100048F6E00848F4D094011A0FE9E26 ++:104E6000AF8E0050240F00143C010800A02F3D908D ++:104E70000A00068F00000000950E0024950D002802 ++:104E8000000E6400000D2C003589810034A6080056 ++:104E9000ACE9000CACE600100A0006EE24E70014B2 ++:104EA0001460FEEC000000009502002400021C00CB ++:104EB00034640800ACE4000C0A0006EE24E700109D ++:104EC0000A000741240700123C02080094423D8A70 ++:104ED0003C06080094C63D803C03080094633D7C7A ++:104EE00095100024951900280046F82103E3C023FB ++:104EF00000106C0000197400270FFFEE01CF282569 ++:104F000035AC8100ACEC000CACE5001024070800C7 ++:104F1000AD2700182527001C0A0006EEAD2000145E ++:104F20008F7F004CAF7F00548F7900540A000699A0 ++:104F3000AF790050A362003F0E0000620000000045 ++:104F40000A00069000000000240200140A0008274E ++:104F5000A362003F27BDFFE8308400FFAFBF001011 ++:104F60000E0005BB30A500FF9378007E9379007F8B ++:104F7000936E00809368007A332F00FF001866005C ++:104F8000000F6C0031CB00FF018D4825000B520053 ++:104F90008FBF0010012A3825310600FF344470000D ++:104FA00000E628252402FF813C03100027BD0018DD ++:104FB000AF45014CAF440154A342015203E0000845 ++:104FC000AF43017827BDFFD8AFB20018AFB10014CE ++:104FD000AFB00010AFBF0020AFB3001C9342010977 ++:104FE000308600FF30B000FF000618C23204000215 ++:104FF0003071000114800005305200FF93670005F6 ++:1050000030E5000810A0000D30C80010024020213B ++:105010000E0005A702202821240400018FBF0020D4 ++:105020008FB3001C8FB200188FB100148FB0001026 ++:105030000080102103E0000827BD00281500003281 ++:105040000000000093430109000028213062007F26 ++:10505000000220C00002F94003E49821267900886C ++:10506000033B98218E7800248E6F0008130F0046B2 ++:10507000000000008F640084241800020004FD82F8 ++:1050800033F900031338007C0000000093660083AE ++:10509000934A0109514600043205007C10A00060CB ++:1050A000000000003205007C14A0005302402021C3 ++:1050B00016200006320400018E7F00248F5901045F ++:1050C00017F9FFD600002021320400011080000AE9 ++:1050D000024020218F4209408F9300641053000644 ++:1050E000000000000E00066D022028218F430940B9 ++:1050F000AF630044024020210E0006020220282156 ++:105100000A000860240400013C0908008D2900649D ++:10511000252600013C010800AC26006416000012A0 ++:10512000000000008F6D00843C0E00C001AE6024C2 ++:1051300015800005024020210E00082E02202821A3 ++:105140000A00086024040001240500040E00057014 ++:1051500024060001024020210E00082E02202821F2 ++:105160000A000860240400010E000041240400012C ++:10517000936B007D020B50250E000062A36A007D38 ++:105180000A0008A38F6D00848F6600748F480104A5 ++:105190008E67002400064E021507FFB63126007FF9 ++:1051A000936B008326440001308A007F1146004340 ++:1051B000316300FF5464FFB08F6400842645000112 ++:1051C00030B1007F30A200FF122600042405000148 ++:1051D000004090210A00087624110001240FFF806E ++:1051E000024F702401CF9026324200FF00409021F0 ++:1051F0000A000876241100010E00066D0220282105 ++:10520000321800301300FFAA321000820240202121 ++:105210000E0005A7022028210A00086024040001CE ++:105220008F6E00743C0F80002405000301CF902591 ++:10523000AF72007493710083240600010E000570A4 ++:10524000322400FF0E00004124040001936D007D14 ++:10525000020D60250E000062A36C007D3C0B08006F ++:105260008D6B0054257000013C010800AC300054E7 ++:105270000A000860240400018F6800743C09800063 ++:105280002405000401093825AF6700749363008387 ++:10529000240600010E000570306400FF0E0000417E ++:1052A000240400019362007D020298250E00006232 ++:1052B000A373007D0A00086024040001324D0080C1 ++:1052C00039AC0080546CFF6C8F6400840A0008C9FC ++:1052D0002645000127BDFFC83C0A0008AFBF0030CB ++:1052E000AFB5002CAFB40028AFB30024AFB200209C ++:1052F000AFB1001CAFB00018034AD8212409004008 ++:10530000AF490814AF4008108F4209448F43095039 ++:105310008F4609548F47095C8F48094C9344010814 ++:105320009345010BAF820064308400FF30A500FF7D ++:10533000AF830050AF86004CAF87005C0E00084A78 ++:10534000AF8800601440017D8FBF0030A760006807 ++:10535000934D0900240B00503C15080026B53D482C ++:1053600031AC00FF3C12080026523D58118B00035F ++:10537000000000000000A8210000902193510109C5 ++:105380008F9F005024040010322E007F000E68C052 ++:10539000000E6140018D282124B40088AF54081804 ++:1053A0008F4901048F4A09A43C0B000E034BC02116 ++:1053B000012A10233C010800AC223D6C8F430958A0 ++:1053C0003C010800A0243D9097470908007F302346 ++:1053D0003C010800AC263D7030E8FFFF0008C9C062 ++:1053E0003C010800AC3F3D94AF59002C974209089E ++:1053F0009710002C8EB10000930F001803749821B1 ++:10540000A7900058AF9300440220F80931F000FF44 ++:10541000304E000215C001B2304F000111E0014FC3 ++:10542000000000009343093E3066000814C00002EB ++:10543000241400030000A0218F5809A424130001A4 ++:105440003C010800AC383D98934F0934935109371B ++:1054500031EC00FF322E00FF028E6821000D288003 ++:1054600000AC5021015058213C010800A42B3D887C ++:105470003C010800A42A3D8693490934312200FFEB ++:1054800002022021249000103C010800A4303D8439 ++:10549000240700068F9F00503C010800AC273D8C7C ++:1054A0008F88005C8F59095800008021011F282334 ++:1054B00004A00149033F20230480014700A4302BAE ++:1054C00010C00149000000003C010800AC253D70FF ++:1054D0008E4200000040F809000000003043000246 ++:1054E000146000F80040882130440001548000100E ++:1054F0008E4200043C0908008D293D743C0AC0001E ++:10550000012A8025AF500E008F45000030AB000807 ++:105510001160FFFD00000000974D0E0824100001EF ++:10552000A78D003C8F4C0E04AF8C00348E420004DB ++:105530000040F8090000000002228825322E0002F7 ++:1055400015C00180000000003C09080095293D7C41 ++:105550003C06080094C63D883C0A0800954A3D7EFA ++:105560003C1908008F393D74012660213C18080061 ++:105570008F183D983C03080094633D92018A2021D6 ++:105580008F4E09400329F821248F000203E32821CC ++:10559000031968213C010800A42C3D8AAF8E0064E9 ++:1055A0003C010800AC2D3D983C010800A4253D803D ++:1055B0000E00009E31E4FFFF8F870048004020214D ++:1055C0003C010800A0273D918E42000824E800011C ++:1055D000AF8800480040F809000000009344010B28 ++:1055E0008F4C002C974A09083C0B000E034B4021BE ++:1055F0003149FFFF000919C08F8B0050AF43002CC9 ++:10560000974309089506001A00403821308A004067 ++:1056100030DFFFFFAC5F00008D19001C0040482107 ++:10562000AC5900048D180020AC580008910F0019E7 ++:1056300031E30003107300F0000000002862000254 ++:105640001440010924050002106500FD240D00032B ++:10565000106D010D00000000114000D90000000095 ++:105660003C0A0800954A3D8625420001934D0934C5 ++:1056700093580921950E002A31A300FF00032082D0 ++:10568000331F00FF9798005800047E00001FCC00D5 ++:1056900001F940253049FFFF0109102501D83021CB ++:1056A0003C0540000045502500066C00ACED0004B0 ++:1056B000ACEA0000934309203C04000624ED0014EA ++:1056C0000003FE0003E4C825ACF900088F49092C4B ++:1056D000270F000131EE7FFFACE9000C8F48093045 ++:1056E000A78E005824E90028ACE800108F4509383F ++:1056F00001204021ACE50014ADAB00048F4209400D ++:10570000ADA20008934B09373C1F080093FF3D9062 ++:105710008F4309488F4A0940316600FF00D4202199 ++:10572000006A78230004C700001FCC000319282555 ++:1057300031EEFFFC00AE1025ADA2000CADA00010B4 ++:10574000AF4C002C934C093E318B00085160000F88 ++:105750008E58000C3C06010134CA080AACEA002845 ++:105760008F4B0074AD2B00043C0C0800918C3D90D5 ++:105770003187001050E00003AD2000088F62006008 ++:10578000AD2200082528000C8E58000C0300F809F3 ++:10579000010020213C19080097393D8A3C1F080070 ++:1057A00097FF3D7E033F782125E900020E0000C7E8 ++:1057B0003124FFFF3C0E08008DCE3D6C3C080800F4 ++:1057C0008D083D7401C828233C010800AC253D6CC0 ++:1057D00014A00006000000003C0308008C633D8C10 ++:1057E000346400403C010800AC243D8C1200007081 ++:1057F0008F8C00448F470E108F900044AE0700201E ++:105800008F4D0E18AE0D00243C10080096103D8000 ++:105810000E0000600000000024020040AF420814A7 ++:105820008F8600508F8A004C00D01821006A5823C0 ++:1058300019600004AF830050AF6300548F650054BB ++:10584000AF85004C1200000C000000008F44007473 ++:10585000936800813409FA002D0E000711C000057D ++:1058600000891821937F0081241901F403F9780439 ++:1058700001E41821AF63000C8F44095C8F83005C46 ++:105880000083C0231B000003000000008F50095C50 ++:10589000AF90005C0E000062000000008F8C005092 ++:1058A0008E4700103C010800AC2C3D9400E0F80944 ++:1058B000000000003C0D08008DAD3D6C55A0FEF5CC ++:1058C000240700068F450024975909088F8B006430 ++:1058D0008F9400503C0F001F978200588F86005411 ++:1058E0008F93004C3328FFFF35E9FF8000A9502437 ++:1058F000000871C032320100AF4E0024A4C2002C57 ++:10590000AF4A0024AF6B0044AF740050AF73005433 ++:105910001640008032380010570000868EA4000424 ++:10592000322300405460001B8EB100088EB0000C82 ++:105930000200F809000000008FBF00308FB5002C76 ++:105940008FB400288FB300248FB200208FB1001CC9 ++:105950008FB0001803E0000827BD00389347010905 ++:105960008F8800380007FE0003E8C825AF59008083 ++:105970008F5809A08F5309A4AFB80010AF580E1468 ++:105980008FB40010AF540E10AF530E1C0A00096202 ++:10599000AF530E180220F809000000008EB0000C72 ++:1059A0000200F809000000000A000AA88FBF0030BA ++:1059B000A5800020A59300220A000A5BAD93002475 ++:1059C0003C09080095293D863C06080094C63D80A8 ++:1059D0000A0009F4012610213C010800AC203D70AA ++:1059E0000A00098E8E4200003C010800AC243D7084 ++:1059F0000A00098E8E4200003C03080094633D8A31 ++:105A00003C04080094843D803C1F080097FF3D7CC7 ++:105A1000951800240064C821033F782300186C0007 ++:105A200025EEFFF201AE2825AC45000C240208004B ++:105A3000ACE20014ACE000100A0009EF24E7001803 ++:105A400095060024950900280006240000091C0082 ++:105A5000349F810034790800ACFF000CACF90010D1 ++:105A60000A0009EF24E700141460FEFB00000000A8 ++:105A70009518002400187C0035EE0800ACEE000CF0 ++:105A80000A0009EF24E700103C07080094E73D8076 ++:105A90003C04080094843D8A3C03080094633D7CE8 ++:105AA00095190024951800280087F82103E378232E ++:105AB0002407080000192C0000186C0025EEFFEEEA ++:105AC00001AE302534A28100AD2700182527001C27 ++:105AD000AD22000CAD2600100A0009EFAD20001425 ++:105AE00093520109000028210E000602324400FFF3 ++:105AF0008FBF00308FB5002C8FB400288FB30024E7 ++:105B00008FB200208FB1001C8FB0001803E0000896 ++:105B100027BD0038935F010933E400FF0E00066DD6 ++:105B200000002821323800105300FF7E322300404D ++:105B30008EA400040080F809000000000A000AA2F8 ++:105B4000322300401200FF5F000000008F540E144B ++:105B50008F920044AE5400208F530E1C0A000A8A14 ++:105B6000AE5300248F82001C008040213C040100C1 ++:105B70009047008530E3002010600009000000001D ++:105B80003C0708008CE73D948F83001800E3202336 ++:105B9000048000089389000414E30003010020211D ++:105BA00003E00008008010213C04010003E000082D ++:105BB000008010211120000B006738238F8C0020FB ++:105BC00024090034918B00BC316A0002514000016D ++:105BD0002409003000E9682B15A0FFF10100202105 ++:105BE00000E938232419FFFC00B9C02400F9782407 ++:105BF00000F8702B15C0FFEA01E8202130C2000335 ++:105C00000002182314C00012306900030000302184 ++:105C100000A9702101C6682100ED602B1180FFE012 ++:105C20003C0401002D2F00010006482B01053821FE ++:105C300001E9302414C0FFDA24E4FFFC2419FFFC3E ++:105C400000B9C0240308202103E0000800801021CF ++:105C50008F8B002024060004916A00BC31440004AC ++:105C60001480FFEC00A970210A000B5E00003021B7 ++:105C700027BDFFE8AFBF00108F460100934A01091E ++:105C80003C1F08008FFF00902407FF80314F00FF6A ++:105C900031E8007F0008614003E6C821032CC021E1 ++:105CA00027090120012770243C010800A02F3DD0C6 ++:105CB000AF4E080C3C0D08008DAD00903C040080F8 ++:105CC0003482000301A65821016C182124650120AB ++:105CD00030AA007801424025AF48081C3C1F08004C ++:105CE0008FFF00908F88004003E6C0213319000722 ++:105CF00003074824033A7821AF49002825E909C061 ++:105D0000952E00023C0D08008DAD008C3C0A080069 ++:105D10008D4A009031CC3FFF01A61821000C59801C ++:105D2000006B282100A72024AF44002C95220002FC ++:105D30003C1F08008FFF008C9107008530593FFF02 ++:105D400003E678210019C1800146702101F868211D ++:105D500031CC007F31AB007F019A2821017A50219C ++:105D60003C03000C3C04000E00A328210144102138 ++:105D700030E6002027470980AF82002CAF88001C46 ++:105D8000AF890024AF85002010C00006AF8700282F ++:105D90008D0200508CA4010C0044302318C0007701 ++:105DA00000000000910C0085240DFFDF018D3824D8 ++:105DB000A10700858F8B001C8F8900248F87002806 ++:105DC0008D65004CAF850018912F000D31EE00203D ++:105DD00011C000170000000024090001A38900047D ++:105DE000AF80000C8CE400248F85000C240A00088E ++:105DF000AF800008AF8000103C010800A42A3D7E5F ++:105E00003C010800A4203D920E000B32000030211E ++:105E10008F8500248FBF0010AF82001490A8000D62 ++:105E200027BD00180008394203E0000830E20001F5 ++:105E3000913F00022418000133F900FF001921826C ++:105E400010980039240800021088005B8F86002C0F ++:105E50008CE5002414A0001B8F9F002091220000DD ++:105E6000240A00053046003F10CA00472404000100 ++:105E70008F860008A3840004AF860010AF86000C54 ++:105E80008CE400248F85000C240A00083C010800E3 ++:105E9000A42A3D7E3C010800A4203D920E000B3256 ++:105EA000000000008F8500248FBF0010AF82001417 ++:105EB00090A8000D27BD00180008394203E0000833 ++:105EC00030E200018CF800088CF900248FEE00C449 ++:105ED000A38000048CE40024AF8E000C8F85000C9E ++:105EE0008F86000803197823240A0008AF8F00105A ++:105EF0003C010800A42A3D7E3C010800A4203D92FC ++:105F00000E000B32000000008F8500248FBF0010B0 ++:105F1000AF82001490A8000D27BD00180008394278 ++:105F200003E0000830E20001912300003062003FEE ++:105F3000104400278F8500208CE400241480002169 ++:105F4000000000008D2E00183C187FFF8F85002078 ++:105F5000370FFFFF01CF1824AF8300088F9F000881 ++:105F60008CA8008403E8C82B1720000203E020213E ++:105F70008CA400840A000BEDAF8400088CA3010CF4 ++:105F80000A000BCBAF8300188D2C00188F860008F9 ++:105F90003C0D7FFF8F89002035A3FFFF018358242C ++:105FA00024040001AF8B0010AD2000CCA3840004BA ++:105FB0000A000BF9AF86000C8CCA00140A000BED26 ++:105FC000AF8A00088CA300C80A000C30AF83000819 ++:105FD0008F84002C8CAC00648C8D0014018D582BA8 ++:105FE00011600004000000008CA200640A000C3064 ++:105FF000AF8200088C8200140A000C30AF820008C7 ++:106000008F85000C27BDFFE0AFBF0018AFB10014B3 ++:1060100014A00007AFB000108F86002424020005F2 ++:1060200090C400003083003F106200B68F840020CF ++:106030008F91000800A080218F8C00283C0508006B ++:106040008CA53D708D8B000431663FFF00C5502B41 ++:106050005540000100C02821938D000411A0007359 ++:1060600000B0F82B8F98002024040034930F00BC5C ++:1060700031EE000251C000012404003000A4C82BFE ++:10608000172000D10000000000A4282300B0F82B46 ++:106090003C010800A4243D7C17E000680200202198 ++:1060A0003C0308008C633D6C0083102B54400001BE ++:1060B000008018218F8800243C010800AC233D7427 ++:1060C000000048219104000D308300205060000141 ++:1060D0008F490E188F8300140123382B10E00059CC ++:1060E000000000003C0408008C843D7400895821A5 ++:1060F000006B502B114000560090602B006930233C ++:1061000000C020213C010800AC263D7412000003B1 ++:10611000241FFFFC1090008A32270003009FC82430 ++:106120003C010800AC393D743C010800A4203D92BC ++:106130008F84000C120400078F830020AF910008A9 ++:10614000020020218C7100CCAF90000C26300001A1 ++:10615000AC7000CC3C0208008C423D748F8A001069 ++:10616000240700180082202301422823AF84000C5A ++:1061700010800002AF850010240700108F86001CDD ++:106180003C010800A0273D902407004090CC0085EA ++:10619000318B00C0116700408F8D001414A00015D2 ++:1061A00000002021934A01098F420974314500FF04 ++:1061B0000002260224A300013090007F3071007F8E ++:1061C0001230007A2407FF80A0C300833C09080036 ++:1061D0008D293D8C8F880024240D0002352C000869 ++:1061E0003C010800A02D3DD13C010800AC2C3D8CA9 ++:1061F00024040010910E000D31C6002010C00005CF ++:1062000000801821240800013C010800AC283D74DE ++:10621000348300018FBF00188FB100148FB00010BD ++:106220000060102103E0000827BD00203C010800A9 ++:10623000A4203D7C13E0FF9A020020210A000C817B ++:1062400000A020213C0408008C843D740090602B49 ++:106250001180FFAE000000003C0F080095EF3D7C70 ++:1062600001E4702101C6682B11A000072C820004F4 ++:106270003C1F60008FF954043338003F1700FFE5DE ++:10628000240300422C8200041040FFA0240300429B ++:106290000A000CDF8FBF0018152DFFC000000000A2 ++:1062A0008CDF00743C0380002405FF8003E3C825D5 ++:1062B000ACD9007490D80085240E0004240400108A ++:1062C000330F003F01E54025A0C800858F880024DA ++:1062D0003C010800A02E3DD1240300019106000DD1 ++:1062E00030C9002015200003000000003C03080016 ++:1062F0008C633D743C010800AC233D6C0A000CD655 ++:10630000000000008F8700108C88008400E8282B94 ++:1063100014A0000200E088218C910084240900016F ++:10632000A38900048F440E18022028210E000B328E ++:1063300002203021022080210A000C67AF82001465 ++:1063400000071823306600033C010800A4263D9294 ++:10635000122000058F8C0020918B00BC316A000454 ++:106360001540001524CD00043C0F080095EF3D9228 ++:1063700001E4702100AE302B50C0FF6E8F84000C02 ++:106380002C85000514A0FFA32403004230980003CD ++:1063900017000002009818232483FFFC3C0108002A ++:1063A000AC233D740A000CA30000000000A7582491 ++:1063B0000A000CCB016718263C010800A42D3D9271 ++:1063C0000A000D33000000003C010800AC203D74C1 ++:1063D0000A000CDE240300428F83001014600007C3 ++:1063E000000010218F88002424050005910600007C ++:1063F00030C400FF108500030000000003E0000827 ++:1064000000000000910A0018314900FF000939C25C ++:1064100014E0FFFA8F85001C3C04080094843D7C46 ++:106420003C0308008C633D943C1908008F393D748F ++:106430003C0F080095EF3D920064C0218CAD0054E4 ++:106440000319702101CF6021018D58231960001DAF ++:1064500000000000910E001C8F8C002C974B0E103A ++:1064600031CD00FF8D850004016D30238D88000043 ++:1064700030CEFFFF000E510000AAC82100003821D5 ++:1064800001072021032A182B0083C021AD990004A5 ++:10649000AD980000918F000A01CF6821A18D000AFC ++:1064A0008F88002C974B0E12A50B0008950A003818 ++:1064B00025490001A50900389107000D34E60008C0 ++:1064C000A106000D03E000080000000027BDFFE06A ++:1064D000938700048F8F00248FAD00143C0E7FFF44 ++:1064E0008F89000C35C8FFFFAFBF001CAFB000188C ++:1064F00001A8182491EA000D000717C03C1FBFFF38 ++:10650000006258252D2E00018F90001837F9FFFFEB ++:106510003C1808008F183D943C0F080095EF3D8A09 ++:1065200001796824000E47803C07EFFF3C05F0FF2F ++:1065300001A818253149002034E2FFFF34ACFFFFE9 ++:106540000310582327A500102406000225EA0002A4 ++:1065500000621824008080211520000200004021E4 ++:106560008F480E1CA7AA0012056000372407000000 ++:1065700030FF00FF001FCF008F8B001C00793825F3 ++:10658000AFA70014916F00853C08080091083D9169 ++:106590003C18DFFF31EE00C0370AFFFF000E182B5A ++:1065A0003C1F080097FF3D8400EA6824A3A800115F ++:1065B0000003174001A248258FB90010AFA90014AD ++:1065C0003C0A0800914A3D93A7BF00168FA800140B ++:1065D000032CC0243C0B01003C0F0FFF030B1825BC ++:1065E0003147000335EEFFFF010C68240007160059 ++:1065F000006EF8243C09700001A2C82503E9582563 ++:10660000AFB90014AFAB00100E000076A3A00015C8 ++:106610008F8C0024260200089186000D30C40020D3 ++:10662000108000068FBF001C3C05080094A53D802B ++:1066300024B0FFFF3C010800A4303D808FB000185B ++:1066400003E0000827BD00208F9800140118502B8C ++:106650005540FFC7240700010A000DB630FF00FFB8 ++:106660009382000427BDFFE0AFBF00181040000F69 ++:10667000008050218F880024240B00058F8900089A ++:10668000910700008F8400200100282130E3003FA3 ++:106690008F86002C106B000800003821AFA9001075 ++:1066A0000E00040EAFAA0014A38000048FBF0018D0 ++:1066B00003E0000827BD00208D1900183C0F0800DA ++:1066C0008DEF3D748F9800103C027FFF8D08001401 ++:1066D000345FFFFF033F682401F8702101AE60239F ++:1066E00001883821AFA900100E00040EAFAA0014D3 ++:1066F0000A000E04A38000048F8700243C050800D4 ++:1067000094A53D923C0208008C423D8C90E6000D21 ++:106710000005240030C300201060002C00444025F8 ++:106720008F85001C00006021240B000190A30085D0 ++:1067300000004821240A00013C0F800035EE007063 ++:106740008DC70000AF8700308F5801780700FFFE2B ++:106750003C038000347900708F3800003C0508004D ++:106760008CA500743C0D08008DAD007003077823E4 ++:1067700000AF38210000102100EF302B01A22021B2 ++:10678000008618213C010800AC2700743C01080079 ++:10679000AC230070AF4B01483C1908008F393D9481 ++:1067A000A7490144A74A0146AF59014C3C0B0800D8 ++:1067B000916B3D91A34B0152AF4801543C0810002E ++:1067C000A74C015803E00008AF4801788F4B0E1C1E ++:1067D0003C0A08008D4A3D7497490E16974D0E14D9 ++:1067E00001456021312AFFFF0A000E2731A9FFFF72 ++:1067F0008F8300249064000D308200201040002917 ++:10680000000000000000482100005021000040214D ++:106810003C07800034EB00708D670000AF870030CC ++:106820008F4C01780580FFFE3C0D800035AC007078 ++:106830008D8B00003C0508008CA500743C0408000A ++:106840008C8400700167302300A67821000010219D ++:1068500001E6C82B0082C021031970213C01080009 ++:10686000AC2F00743C010800AC2E0070AF49014809 ++:106870003C0D08008DAD3D94A7480144240900401B ++:10688000A74A01463C081000240AFF91AF4D014C75 ++:10689000A34A0152AF490154A740015803E0000840 ++:1068A000AF4801788F490E1897460E1297450E1083 ++:1068B00030CAFFFF0A000E5D30A8FFFF8F8300245F ++:1068C00027BDFFF89064000D308200201040003A90 ++:1068D00000000000240B000100004821240A0001F0 ++:1068E0003C088000350700708CE30000AF83003067 ++:1068F0008F4C01780580FFFE3C0E80003C040800B0 ++:1069000090843DD035C700708CEC00003C05080039 ++:106910008CA50074A3A400033C1908008F390070F3 ++:106920008FAD00000183302300A638210000102124 ++:106930000322782100E6C02B01F8602101AE40253A ++:10694000AFA800003C010800AC2700743C0108001F ++:10695000AC2C00709346010A3C04080090843DD1A1 ++:10696000A3A00002A3A600018FA300003C0580FFA6 ++:106970003099007F34A2FFFF006278240019C6001E ++:1069800001F87025240D3000AF4E014C27BD0008E2 ++:10699000AF4D0154A7400158AF4B0148A7490144EE ++:1069A000A74A01463C091000240AFF80A34A01526D ++:1069B00003E00008AF4901788F4B0E1897460E127E ++:1069C00097450E1030CAFFFF0A000E9130A9FFFF55 ++:1069D0008F85001C2402008090A40085308300C0B5 ++:1069E000106200058F8600208F8800088F87000CBA ++:1069F000ACC800C8ACC700C403E000080000000039 ++:106A00003C0A0800254A39543C09080025293A2047 ++:106A10003C08080025082DD43C07080024E73B3437 ++:106A20003C06080024C637C43C05080024A5353CB4 ++:106A30003C040800248431643C0308002463385C6F ++:106A40003C020800244236303C010800AC2A3D508C ++:106A50003C010800AC293D4C3C010800AC283D48F5 ++:106A60003C010800AC273D543C010800AC263D64C5 ++:106A70003C010800AC253D5C3C010800AC243D58BD ++:106A80003C010800AC233D683C010800AC223D609D ++:086A900003E000080000000013 ++:00000001FF diff --git a/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex b/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex new file mode 100644 index 0000000..43d7c4f @@ -66010,24 +72267,21 @@ index 0000000..43d7c4f +:1095C00080080000800E00008008008080080000F5 +:1095D00080000A8080000A00800009808000090065 +:00000001FF -diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c -index eb14e05..5156de7 100644 ---- a/fs/9p/vfs_addr.c -+++ b/fs/9p/vfs_addr.c -@@ -187,7 +187,7 @@ static int v9fs_vfs_writepage_locked(struct page *page) - - retval = v9fs_file_write_internal(inode, - v9inode->writeback_fid, -- (__force const char __user *)buffer, -+ (const char __force_user *)buffer, - len, &offset, 0); - if (retval > 0) - retval = 0; diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c -index 3662f1d..90558b5 100644 +index 703342e..2b96b597 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c -@@ -1312,7 +1312,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd) +@@ -540,8 +540,7 @@ static struct inode *v9fs_qid_iget(struct super_block *sb, + unlock_new_inode(inode); + return inode; + error: +- unlock_new_inode(inode); +- iput(inode); ++ iget_failed(inode); + return ERR_PTR(retval); + + } +@@ -1312,7 +1311,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) { @@ -66036,11 +72290,25 @@ index 3662f1d..90558b5 100644 p9_debug(P9_DEBUG_VFS, " %pd %s\n", dentry, IS_ERR(s) ? "" : s); +diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c +index 9861c7c..4d3ecfb 100644 +--- a/fs/9p/vfs_inode_dotl.c ++++ b/fs/9p/vfs_inode_dotl.c +@@ -149,8 +149,7 @@ static struct inode *v9fs_qid_iget_dotl(struct super_block *sb, + unlock_new_inode(inode); + return inode; + error: +- unlock_new_inode(inode); +- iput(inode); ++ iget_failed(inode); + return ERR_PTR(retval); + + } diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt -index 270c481..0d8a962 100644 +index 2d0cbbd..a6d6149 100644 --- a/fs/Kconfig.binfmt +++ b/fs/Kconfig.binfmt -@@ -106,7 +106,7 @@ config HAVE_AOUT +@@ -103,7 +103,7 @@ config HAVE_AOUT config BINFMT_AOUT tristate "Kernel support for a.out and ECOFF binaries" @@ -66050,7 +72318,7 @@ index 270c481..0d8a962 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/afs/inode.c b/fs/afs/inode.c -index 8a1d38e..300a14e 100644 +index e06f5a2..81d07ac 100644 --- a/fs/afs/inode.c +++ b/fs/afs/inode.c @@ -141,7 +141,7 @@ struct inode *afs_iget_autocell(struct inode *dir, const char *dev_name, @@ -66072,10 +72340,10 @@ index 8a1d38e..300a14e 100644 &data); if (!inode) { diff --git a/fs/aio.c b/fs/aio.c -index a793f70..46f45af 100644 +index 480440f..623fd88 100644 --- a/fs/aio.c +++ b/fs/aio.c -@@ -404,7 +404,7 @@ static int aio_setup_ring(struct kioctx *ctx) +@@ -441,7 +441,7 @@ static int aio_setup_ring(struct kioctx *ctx) size += sizeof(struct io_event) * nr_events; nr_pages = PFN_UP(size); @@ -66097,7 +72365,7 @@ index 6530ced..4a827e2 100644 goto out_sig; if (offset > inode->i_sb->s_maxbytes) diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c -index 116fd38..c04182da 100644 +index 35b755e..f4b9e0a 100644 --- a/fs/autofs4/waitq.c +++ b/fs/autofs4/waitq.c @@ -59,7 +59,7 @@ static int autofs4_write(struct autofs_sb_info *sbi, @@ -66245,10 +72513,10 @@ index 4c55668..eeae150 100644 fd_offset + ex.a_text); if (error != N_DATADDR(ex)) diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c -index d925f55..d31f527 100644 +index cd46e41..244f778 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c -@@ -34,6 +34,7 @@ +@@ -35,6 +35,7 @@ #include #include #include @@ -66256,7 +72524,7 @@ index d925f55..d31f527 100644 #include #include #include -@@ -47,7 +48,7 @@ +@@ -48,7 +49,7 @@ static int load_elf_binary(struct linux_binprm *bprm); static unsigned long elf_map(struct file *, unsigned long, struct elf_phdr *, @@ -66265,7 +72533,7 @@ index d925f55..d31f527 100644 #ifdef CONFIG_USELIB static int load_elf_library(struct file *); -@@ -65,6 +66,14 @@ static int elf_core_dump(struct coredump_params *cprm); +@@ -66,6 +67,14 @@ static int elf_core_dump(struct coredump_params *cprm); #define elf_core_dump NULL #endif @@ -66280,7 +72548,7 @@ index d925f55..d31f527 100644 #if ELF_EXEC_PAGESIZE > PAGE_SIZE #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE #else -@@ -84,6 +93,15 @@ static struct linux_binfmt elf_format = { +@@ -85,6 +94,15 @@ static struct linux_binfmt elf_format = { .load_binary = load_elf_binary, .load_shlib = load_elf_library, .core_dump = elf_core_dump, @@ -66296,7 +72564,7 @@ index d925f55..d31f527 100644 .min_coredump = ELF_EXEC_PAGESIZE, }; -@@ -91,6 +109,8 @@ static struct linux_binfmt elf_format = { +@@ -92,6 +110,8 @@ static struct linux_binfmt elf_format = { static int set_brk(unsigned long start, unsigned long end) { @@ -66305,7 +72573,7 @@ index d925f55..d31f527 100644 start = ELF_PAGEALIGN(start); end = ELF_PAGEALIGN(end); if (end > start) { -@@ -99,7 +119,7 @@ static int set_brk(unsigned long start, unsigned long end) +@@ -100,7 +120,7 @@ static int set_brk(unsigned long start, unsigned long end) if (BAD_ADDR(addr)) return addr; } @@ -66314,7 +72582,7 @@ index d925f55..d31f527 100644 return 0; } -@@ -160,12 +180,13 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, +@@ -161,12 +181,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; @@ -66329,7 +72597,7 @@ index d925f55..d31f527 100644 /* * In some cases (e.g. Hyper-Threading), we want to avoid L1 -@@ -207,8 +228,12 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, +@@ -208,8 +229,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)); @@ -66344,7 +72612,7 @@ index d925f55..d31f527 100644 if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes))) return -EFAULT; -@@ -323,9 +348,11 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, +@@ -324,9 +349,11 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, return -EFAULT; current->mm->env_end = p; @@ -66357,7 +72625,7 @@ index d925f55..d31f527 100644 return -EFAULT; return 0; } -@@ -514,14 +541,14 @@ static inline int arch_check_elf(struct elfhdr *ehdr, bool has_interp, +@@ -515,14 +542,14 @@ static inline int arch_check_elf(struct elfhdr *ehdr, bool has_interp, an ELF header */ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, @@ -66375,7 +72643,7 @@ index d925f55..d31f527 100644 unsigned long total_size; int i; -@@ -541,6 +568,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -542,6 +569,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, goto out; } @@ -66387,7 +72655,7 @@ index d925f55..d31f527 100644 eppnt = interp_elf_phdata; for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) { if (eppnt->p_type == PT_LOAD) { -@@ -564,8 +596,6 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -565,8 +597,6 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, map_addr = elf_map(interpreter, load_addr + vaddr, eppnt, elf_prot, elf_type, total_size); total_size = 0; @@ -66396,7 +72664,7 @@ index d925f55..d31f527 100644 error = map_addr; if (BAD_ADDR(map_addr)) goto out; -@@ -584,8 +614,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -585,8 +615,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 || @@ -66407,7 +72675,7 @@ index d925f55..d31f527 100644 error = -ENOMEM; goto out; } -@@ -624,9 +654,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -625,9 +655,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, elf_bss = ELF_PAGESTART(elf_bss + ELF_MIN_ALIGN - 1); /* Map the last of the bss segment */ @@ -66422,7 +72690,7 @@ index d925f55..d31f527 100644 } error = load_addr; -@@ -634,6 +666,336 @@ out: +@@ -635,6 +667,336 @@ out: return error; } @@ -66759,7 +73027,7 @@ index d925f55..d31f527 100644 /* * These are the functions used to load ELF style executables and shared * libraries. There is no binary dependent code anywhere else. -@@ -647,6 +1009,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) +@@ -648,6 +1010,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) { unsigned long random_variable = 0; @@ -66771,7 +73039,7 @@ index d925f55..d31f527 100644 if ((current->flags & PF_RANDOMIZE) && !(current->personality & ADDR_NO_RANDOMIZE)) { random_variable = (unsigned long) get_random_int(); -@@ -666,7 +1033,7 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -667,7 +1034,7 @@ static int load_elf_binary(struct linux_binprm *bprm) unsigned long load_addr = 0, load_bias = 0; int load_addr_set = 0; char * elf_interpreter = NULL; @@ -66780,7 +73048,7 @@ index d925f55..d31f527 100644 struct elf_phdr *elf_ppnt, *elf_phdata, *interp_elf_phdata = NULL; unsigned long elf_bss, elf_brk; int retval, i; -@@ -681,6 +1048,7 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -682,6 +1049,7 @@ static int load_elf_binary(struct linux_binprm *bprm) struct elfhdr interp_elf_ex; } *loc; struct arch_elf_state arch_state = INIT_ARCH_ELF_STATE; @@ -66788,7 +73056,7 @@ index d925f55..d31f527 100644 loc = kmalloc(sizeof(*loc), GFP_KERNEL); if (!loc) { -@@ -839,6 +1207,77 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -840,6 +1208,77 @@ static int load_elf_binary(struct linux_binprm *bprm) /* Do this immediately, since STACK_TOP as used in setup_arg_pages may depend on the personality. */ SET_PERSONALITY2(loc->elf_ex, &arch_state); @@ -66866,15 +73134,12 @@ index d925f55..d31f527 100644 if (elf_read_implies_exec(loc->elf_ex, executable_stack)) current->personality |= READ_IMPLIES_EXEC; -@@ -925,12 +1364,21 @@ static int load_elf_binary(struct linux_binprm *bprm) - #else - load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr); - #endif +@@ -915,8 +1354,21 @@ static int load_elf_binary(struct linux_binprm *bprm) + if (current->flags & PF_RANDOMIZE) + load_bias += arch_mmap_rnd(); + load_bias = ELF_PAGESTART(load_bias); - total_size = total_mapping_size(elf_phdata, - loc->elf_ex.e_phnum); -- if (!total_size) { -- error = -EINVAL; -- goto out_free_dentry; + +#ifdef CONFIG_PAX_RANDMMAP + /* PaX: randomize base address at the default exe base if requested */ @@ -66886,14 +73151,14 @@ index d925f55..d31f527 100644 +#endif + load_bias = ELF_PAGESTART(PAX_ELF_ET_DYN_BASE - vaddr + load_bias); + elf_flags |= MAP_FIXED; - } ++ } +#endif + + total_size = total_mapping_size(elf_phdata, loc->elf_ex.e_phnum); - } - - error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt, -@@ -962,9 +1410,9 @@ static int load_elf_binary(struct linux_binprm *bprm) + if (!total_size) { + retval = -EINVAL; + goto out_free_dentry; +@@ -952,9 +1404,9 @@ static int load_elf_binary(struct linux_binprm *bprm) * allowed task size. Note that p_filesz must always be * <= p_memsz so it is only necessary to check p_memsz. */ @@ -66906,7 +73171,7 @@ index d925f55..d31f527 100644 /* set_brk can never work. Avoid overflows. */ retval = -EINVAL; goto out_free_dentry; -@@ -1000,16 +1448,43 @@ static int load_elf_binary(struct linux_binprm *bprm) +@@ -990,16 +1442,43 @@ static int load_elf_binary(struct linux_binprm *bprm) if (retval) goto out_free_dentry; if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) { @@ -66955,7 +73220,23 @@ index d925f55..d31f527 100644 load_bias, interp_elf_phdata); if (!IS_ERR((void *)elf_entry)) { /* -@@ -1237,7 +1712,7 @@ static bool always_dump_vma(struct vm_area_struct *vma) +@@ -1050,6 +1529,7 @@ static int load_elf_binary(struct linux_binprm *bprm) + current->mm->end_data = end_data; + current->mm->start_stack = bprm->p; + ++#ifndef CONFIG_PAX_RANDMMAP + if ((current->flags & PF_RANDOMIZE) && (randomize_va_space > 1)) { + current->mm->brk = current->mm->start_brk = + arch_randomize_brk(current->mm); +@@ -1057,6 +1537,7 @@ static int load_elf_binary(struct linux_binprm *bprm) + current->brk_randomized = 1; + #endif + } ++#endif + + if (current->personality & MMAP_PAGE_ZERO) { + /* Why this, you ask??? Well SVr4 maps page 0 as read-only, +@@ -1225,7 +1706,7 @@ static bool always_dump_vma(struct vm_area_struct *vma) * Decide what to dump of a segment, part, all or none. */ static unsigned long vma_dump_size(struct vm_area_struct *vma, @@ -66964,7 +73245,7 @@ index d925f55..d31f527 100644 { #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type)) -@@ -1275,7 +1750,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, +@@ -1263,7 +1744,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, if (vma->vm_file == NULL) return 0; @@ -66973,7 +73254,7 @@ index d925f55..d31f527 100644 goto whole; /* -@@ -1482,9 +1957,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) +@@ -1470,9 +1951,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; @@ -66985,7 +73266,7 @@ index d925f55..d31f527 100644 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv); } -@@ -1493,7 +1968,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, +@@ -1481,7 +1962,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, { mm_segment_t old_fs = get_fs(); set_fs(KERNEL_DS); @@ -66994,7 +73275,7 @@ index d925f55..d31f527 100644 set_fs(old_fs); fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata); } -@@ -2213,7 +2688,7 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -2201,7 +2682,7 @@ static int elf_core_dump(struct coredump_params *cprm) vma = next_vma(vma, gate_vma)) { unsigned long dump_size; @@ -67003,7 +73284,7 @@ index d925f55..d31f527 100644 vma_filesz[i++] = dump_size; vma_data_size += dump_size; } -@@ -2321,6 +2796,167 @@ out: +@@ -2309,6 +2790,167 @@ out: #endif /* CONFIG_ELF_CORE */ @@ -67172,10 +73453,10 @@ index d925f55..d31f527 100644 { register_binfmt(&elf_format); diff --git a/fs/block_dev.c b/fs/block_dev.c -index 975266b..c3d1856 100644 +index c7e4163..6939003 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c -@@ -734,7 +734,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole, +@@ -732,7 +732,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole, else if (bdev->bd_contains == bdev) return true; /* is a whole device which isn't held */ @@ -67185,10 +73466,10 @@ index 975266b..c3d1856 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 6d67f32..8f33187 100644 +index 0f11ebc..1bf3321 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c -@@ -1181,9 +1181,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans, +@@ -1180,9 +1180,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans, free_extent_buffer(buf); add_root_to_dirty_list(root); } else { @@ -67205,7 +73486,7 @@ index 6d67f32..8f33187 100644 WARN_ON(trans->transid != btrfs_header_generation(parent)); diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c -index 82f0c7c..dff78a8 100644 +index a2ae427..53c2e98 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -462,7 +462,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node, @@ -67226,14 +73507,14 @@ index 82f0c7c..dff78a8 100644 if (val < seq || val >= seq + BTRFS_DELAYED_BATCH) return 1; -@@ -1436,7 +1436,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root) +@@ -1437,7 +1437,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root) int seq; int ret; - seq = atomic_read(&delayed_root->items_seq); + seq = atomic_read_unchecked(&delayed_root->items_seq); - ret = btrfs_wq_run_delayed_node(delayed_root, root, 0); + ret = btrfs_wq_run_delayed_node(delayed_root, fs_info, 0); if (ret) diff --git a/fs/btrfs/delayed-inode.h b/fs/btrfs/delayed-inode.h index f70119f..ab5894d 100644 @@ -67258,7 +73539,7 @@ index f70119f..ab5894d 100644 spin_lock_init(&delayed_root->lock); init_waitqueue_head(&delayed_root->wait); diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c -index 05fef19..f3774b8 100644 +index 9e66f5e..f7caaf0 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -271,7 +271,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, @@ -67271,7 +73552,7 @@ index 05fef19..f3774b8 100644 wake_up(&root->fs_info->transaction_wait); wake_up(&root->fs_info->transaction_blocked_wait); diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c -index 94edb0a..e94dc93 100644 +index e8a4c86..f8c22ae 100644 --- a/fs/btrfs/sysfs.c +++ b/fs/btrfs/sysfs.c @@ -472,7 +472,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add) @@ -67310,10 +73591,10 @@ index 2299bfd..4098e72 100644 return 0; diff --git a/fs/btrfs/tree-log.h b/fs/btrfs/tree-log.h -index 154990c..d0cf699 100644 +index 6916a78..4598936 100644 --- a/fs/btrfs/tree-log.h +++ b/fs/btrfs/tree-log.h -@@ -43,7 +43,7 @@ static inline void btrfs_init_log_ctx(struct btrfs_log_ctx *ctx) +@@ -45,7 +45,7 @@ static inline void btrfs_init_log_ctx(struct btrfs_log_ctx *ctx) static inline void btrfs_set_log_full_commit(struct btrfs_fs_info *fs_info, struct btrfs_trans_handle *trans) { @@ -67323,7 +73604,7 @@ index 154990c..d0cf699 100644 static inline int btrfs_need_log_full_commit(struct btrfs_fs_info *fs_info, diff --git a/fs/buffer.c b/fs/buffer.c -index 20805db..2e8fc69 100644 +index c7a5602..18eabd1 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -3417,7 +3417,7 @@ void __init buffer_init(void) @@ -67336,7 +73617,7 @@ index 20805db..2e8fc69 100644 /* diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c -index fbb08e9..0fda764 100644 +index 6af790f..ec4c1e6 100644 --- a/fs/cachefiles/bind.c +++ b/fs/cachefiles/bind.c @@ -39,13 +39,11 @@ int cachefiles_daemon_bind(struct cachefiles_cache *cache, char *args) @@ -67434,7 +73715,7 @@ index 8c52472..c4e3a69 100644 #else diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c -index 1e51714..411eded 100644 +index ab857ab..ff8d593 100644 --- a/fs/cachefiles/namei.c +++ b/fs/cachefiles/namei.c @@ -309,7 +309,7 @@ try_again: @@ -67477,7 +73758,7 @@ index eccd339..4c1d995 100644 return 0; diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c -index 83e9976..bfd1eee 100644 +index 4248307..f41e44e 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -127,6 +127,8 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx, @@ -67492,7 +73773,7 @@ index 83e9976..bfd1eee 100644 @@ -190,7 +192,12 @@ more: dout(" %llu (%llu) dentry %p %pd %p\n", di->offset, ctx->pos, - dentry, dentry, dentry->d_inode); + dentry, dentry, d_inode(dentry)); - if (!dir_emit(ctx, dentry->d_name.name, + name = dentry->d_name.name; + if (name == dentry->d_iname) { @@ -67501,8 +73782,8 @@ index 83e9976..bfd1eee 100644 + } + if (!dir_emit(ctx, name, dentry->d_name.len, - ceph_translate_ino(dentry->d_sb, dentry->d_inode->i_ino), - dentry->d_inode->i_mode >> 12)) { + ceph_translate_ino(dentry->d_sb, d_inode(dentry)->i_ino), + d_inode(dentry)->i_mode >> 12)) { @@ -248,7 +255,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx) struct ceph_fs_client *fsc = ceph_inode_to_client(inode); struct ceph_mds_client *mdsc = fsc->mdsc; @@ -67513,10 +73794,10 @@ index 83e9976..bfd1eee 100644 u32 ftype; struct ceph_mds_reply_info_parsed *rinfo; diff --git a/fs/ceph/super.c b/fs/ceph/super.c -index a63997b..ddc0577 100644 +index 4e99053..a7e2a5f 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c -@@ -889,7 +889,7 @@ static int ceph_compare_super(struct super_block *sb, void *data) +@@ -885,7 +885,7 @@ static int ceph_compare_super(struct super_block *sb, void *data) /* * construct our own bdi so we can control readahead, etc. */ @@ -67525,7 +73806,7 @@ index a63997b..ddc0577 100644 static int ceph_register_bdi(struct super_block *sb, struct ceph_fs_client *fsc) -@@ -906,7 +906,7 @@ static int ceph_register_bdi(struct super_block *sb, +@@ -902,7 +902,7 @@ static int ceph_register_bdi(struct super_block *sb, VM_MAX_READAHEAD * 1024 / PAGE_CACHE_SIZE; err = bdi_register(&fsc->backing_dev_info, NULL, "ceph-%ld", @@ -67579,10 +73860,10 @@ index 7febcf2..62a5721 100644 server->ops->print_stats(m, tcon); } diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c -index d72fe37..ded5511 100644 +index 0a9fb6b..9def7fa 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c -@@ -1092,7 +1092,7 @@ cifs_init_request_bufs(void) +@@ -1082,7 +1082,7 @@ cifs_init_request_bufs(void) */ cifs_req_cachep = kmem_cache_create("cifs_request", CIFSMaxBufSize + max_hdr_size, 0, @@ -67591,7 +73872,7 @@ index d72fe37..ded5511 100644 if (cifs_req_cachep == NULL) return -ENOMEM; -@@ -1119,7 +1119,7 @@ cifs_init_request_bufs(void) +@@ -1109,7 +1109,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", @@ -67600,7 +73881,7 @@ index d72fe37..ded5511 100644 NULL); if (cifs_sm_req_cachep == NULL) { mempool_destroy(cifs_req_poolp); -@@ -1204,8 +1204,8 @@ init_cifs(void) +@@ -1194,8 +1194,8 @@ init_cifs(void) atomic_set(&bufAllocCount, 0); atomic_set(&smBufAllocCount, 0); #ifdef CONFIG_CIFS_STATS2 @@ -67612,7 +73893,7 @@ index d72fe37..ded5511 100644 atomic_set(&midCount, 0); diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h -index 22b289a..bbbba08 100644 +index 22b289a..bbbba082 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -823,35 +823,35 @@ struct cifs_tcon { @@ -67696,10 +73977,10 @@ index 22b289a..bbbba08 100644 GLOBAL_EXTERN atomic_t smBufAllocCount; GLOBAL_EXTERN atomic_t midCount; diff --git a/fs/cifs/file.c b/fs/cifs/file.c -index ca30c39..570fb94 100644 +index 3f50cee..7741620 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c -@@ -2055,10 +2055,14 @@ static int cifs_writepages(struct address_space *mapping, +@@ -2054,10 +2054,14 @@ static int cifs_writepages(struct address_space *mapping, index = mapping->writeback_index; /* Start from prev offset */ end = -1; } else { @@ -67718,7 +73999,7 @@ index ca30c39..570fb94 100644 } server = cifs_sb_master_tcon(cifs_sb)->ses->server; diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c -index 3379463..3af418a 100644 +index 8442b8b..ea6986f 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@ -170,7 +170,7 @@ cifs_buf_get(void) @@ -67740,7 +74021,7 @@ index 3379463..3af418a 100644 } diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c -index d297903..1cb7516 100644 +index fc537c2..47d654c 100644 --- a/fs/cifs/smb1ops.c +++ b/fs/cifs/smb1ops.c @@ -622,27 +622,27 @@ static void @@ -67849,7 +74130,7 @@ index d297903..1cb7516 100644 } diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c -index eab05e1..ffe5ea4 100644 +index 54daee5..2669fcb 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -418,8 +418,8 @@ smb2_clear_stats(struct cifs_tcon *tcon) @@ -67970,7 +74251,7 @@ index eab05e1..ffe5ea4 100644 } diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c -index 65cd7a8..3518676 100644 +index 54cbe19..fcd4a1b 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -2147,8 +2147,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, @@ -67984,7 +74265,7 @@ index 65cd7a8..3518676 100644 req->FileIndex = cpu_to_le32(index); diff --git a/fs/coda/cache.c b/fs/coda/cache.c -index 46ee6f2..89a9e7f 100644 +index 5bb630a..043dc70 100644 --- a/fs/coda/cache.c +++ b/fs/coda/cache.c @@ -24,7 +24,7 @@ @@ -68162,10 +74443,10 @@ index 4d24d17..4f8c09e 100644 /* diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c -index afec645..9c65620 100644 +index 6b8e2f0..9b13a5e 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c -@@ -621,7 +621,7 @@ static int serial_struct_ioctl(unsigned fd, unsigned cmd, +@@ -622,7 +622,7 @@ static int serial_struct_ioctl(unsigned fd, unsigned cmd, return -EFAULT; if (__get_user(udata, &ss32->iomem_base)) return -EFAULT; @@ -68174,7 +74455,7 @@ index afec645..9c65620 100644 if (__get_user(ss.iomem_reg_shift, &ss32->iomem_reg_shift) || __get_user(ss.port_high, &ss32->port_high)) return -EFAULT; -@@ -703,8 +703,8 @@ static int do_i2c_rdwr_ioctl(unsigned int fd, unsigned int cmd, +@@ -704,8 +704,8 @@ static int do_i2c_rdwr_ioctl(unsigned int fd, unsigned int cmd, for (i = 0; i < nmsgs; i++) { if (copy_in_user(&tmsgs[i].addr, &umsgs[i].addr, 3*sizeof(u16))) return -EFAULT; @@ -68185,7 +74466,7 @@ index afec645..9c65620 100644 return -EFAULT; } return sys_ioctl(fd, cmd, (unsigned long)tdata); -@@ -797,7 +797,7 @@ static int compat_ioctl_preallocate(struct file *file, +@@ -798,7 +798,7 @@ static int compat_ioctl_preallocate(struct file *file, copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) || copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) || copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) || @@ -68194,7 +74475,7 @@ index afec645..9c65620 100644 return -EFAULT; return ioctl_preallocate(file, p); -@@ -1618,8 +1618,8 @@ COMPAT_SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, +@@ -1620,8 +1620,8 @@ COMPAT_SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, static int __init init_sys32_ioctl_cmp(const void *p, const void *q) { unsigned int a, b; @@ -68206,7 +74487,7 @@ index afec645..9c65620 100644 return 1; if (a < b) diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c -index cf0db00..c7f70e8 100644 +index c81ce7f..f3de5fd 100644 --- a/fs/configfs/dir.c +++ b/fs/configfs/dir.c @@ -1540,7 +1540,8 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx) @@ -68233,6 +74514,28 @@ index cf0db00..c7f70e8 100644 /* * We'll have a dentry and an inode for +diff --git a/fs/configfs/item.c b/fs/configfs/item.c +index e65f9ff..3ed264d 100644 +--- a/fs/configfs/item.c ++++ b/fs/configfs/item.c +@@ -116,7 +116,7 @@ void config_item_init_type_name(struct config_item *item, + const char *name, + struct config_item_type *type) + { +- config_item_set_name(item, name); ++ config_item_set_name(item, "%s", name); + item->ci_type = type; + config_item_init(item); + } +@@ -125,7 +125,7 @@ EXPORT_SYMBOL(config_item_init_type_name); + void config_group_init_type_name(struct config_group *group, const char *name, + struct config_item_type *type) + { +- config_item_set_name(&group->cg_item, name); ++ config_item_set_name(&group->cg_item, "%s", name); + group->cg_item.ci_type = type; + config_group_init(group); + } diff --git a/fs/coredump.c b/fs/coredump.c index bbbe139..b76fae5 100644 --- a/fs/coredump.c @@ -68340,10 +74643,10 @@ index bbbe139..b76fae5 100644 return 0; while (nr) { diff --git a/fs/dcache.c b/fs/dcache.c -index c71e373..5c1f656 100644 +index 50bb3c2..d874b57 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -511,7 +511,7 @@ static void __dentry_kill(struct dentry *dentry) +@@ -545,7 +545,7 @@ static void __dentry_kill(struct dentry *dentry) * dentry_iput drops the locks, at which point nobody (except * transient RCU lookups) can reach this dentry. */ @@ -68352,7 +74655,7 @@ index c71e373..5c1f656 100644 this_cpu_dec(nr_dentry); if (dentry->d_op && dentry->d_op->d_release) dentry->d_op->d_release(dentry); -@@ -564,7 +564,7 @@ static inline struct dentry *lock_parent(struct dentry *dentry) +@@ -598,7 +598,7 @@ static inline struct dentry *lock_parent(struct dentry *dentry) struct dentry *parent = dentry->d_parent; if (IS_ROOT(dentry)) return NULL; @@ -68361,7 +74664,16 @@ index c71e373..5c1f656 100644 return NULL; if (likely(spin_trylock(&parent->d_lock))) return parent; -@@ -626,8 +626,8 @@ static inline bool fast_dput(struct dentry *dentry) +@@ -642,7 +642,7 @@ static inline bool fast_dput(struct dentry *dentry) + + /* + * If we have a d_op->d_delete() operation, we sould not +- * let the dentry count go to zero, so use "put__or_lock". ++ * let the dentry count go to zero, so use "put_or_lock". + */ + if (unlikely(dentry->d_flags & DCACHE_OP_DELETE)) + return lockref_put_or_lock(&dentry->d_lockref); +@@ -660,8 +660,8 @@ static inline bool fast_dput(struct dentry *dentry) */ if (unlikely(ret < 0)) { spin_lock(&dentry->d_lock); @@ -68372,7 +74684,16 @@ index c71e373..5c1f656 100644 spin_unlock(&dentry->d_lock); return 1; } -@@ -682,7 +682,7 @@ static inline bool fast_dput(struct dentry *dentry) +@@ -697,7 +697,7 @@ static inline bool fast_dput(struct dentry *dentry) + */ + smp_rmb(); + d_flags = ACCESS_ONCE(dentry->d_flags); +- d_flags &= DCACHE_REFERENCED | DCACHE_LRU_LIST; ++ d_flags &= DCACHE_REFERENCED | DCACHE_LRU_LIST | DCACHE_DISCONNECTED; + + /* Nothing to do? Dropping the reference was all we needed? */ + if (d_flags == (DCACHE_REFERENCED | DCACHE_LRU_LIST) && !d_unhashed(dentry)) +@@ -716,7 +716,7 @@ static inline bool fast_dput(struct dentry *dentry) * else could have killed it and marked it dead. Either way, we * don't need to do anything else. */ @@ -68381,7 +74702,7 @@ index c71e373..5c1f656 100644 spin_unlock(&dentry->d_lock); return 1; } -@@ -692,7 +692,7 @@ static inline bool fast_dput(struct dentry *dentry) +@@ -726,7 +726,7 @@ static inline bool fast_dput(struct dentry *dentry) * lock, and we just tested that it was zero, so we can just * set it to 1. */ @@ -68390,7 +74711,17 @@ index c71e373..5c1f656 100644 return 0; } -@@ -751,7 +751,7 @@ repeat: +@@ -776,6 +776,9 @@ repeat: + if (unlikely(d_unhashed(dentry))) + goto kill_it; + ++ if (unlikely(dentry->d_flags & DCACHE_DISCONNECTED)) ++ goto kill_it; ++ + if (unlikely(dentry->d_flags & DCACHE_OP_DELETE)) { + if (dentry->d_op->d_delete(dentry)) + goto kill_it; +@@ -785,7 +788,7 @@ repeat: dentry->d_flags |= DCACHE_REFERENCED; dentry_lru_add(dentry); @@ -68399,7 +74730,7 @@ index c71e373..5c1f656 100644 spin_unlock(&dentry->d_lock); return; -@@ -766,7 +766,7 @@ EXPORT_SYMBOL(dput); +@@ -800,7 +803,7 @@ EXPORT_SYMBOL(dput); /* This must be called with d_lock held */ static inline void __dget_dlock(struct dentry *dentry) { @@ -68408,7 +74739,7 @@ index c71e373..5c1f656 100644 } static inline void __dget(struct dentry *dentry) -@@ -807,8 +807,8 @@ repeat: +@@ -841,8 +844,8 @@ repeat: goto repeat; } rcu_read_unlock(); @@ -68419,7 +74750,7 @@ index c71e373..5c1f656 100644 spin_unlock(&ret->d_lock); return ret; } -@@ -886,9 +886,9 @@ restart: +@@ -920,9 +923,9 @@ restart: spin_lock(&inode->i_lock); hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { spin_lock(&dentry->d_lock); @@ -68431,7 +74762,7 @@ index c71e373..5c1f656 100644 __dentry_kill(dentry); dput(parent); goto restart; -@@ -923,7 +923,7 @@ static void shrink_dentry_list(struct list_head *list) +@@ -957,7 +960,7 @@ static void shrink_dentry_list(struct list_head *list) * We found an inuse dentry which was not removed from * the LRU because of laziness during lookup. Do not free it. */ @@ -68440,7 +74771,7 @@ index c71e373..5c1f656 100644 spin_unlock(&dentry->d_lock); if (parent) spin_unlock(&parent->d_lock); -@@ -961,8 +961,8 @@ static void shrink_dentry_list(struct list_head *list) +@@ -995,8 +998,8 @@ static void shrink_dentry_list(struct list_head *list) dentry = parent; while (dentry && !lockref_put_or_lock(&dentry->d_lockref)) { parent = lock_parent(dentry); @@ -68451,7 +74782,7 @@ index c71e373..5c1f656 100644 spin_unlock(&dentry->d_lock); if (parent) spin_unlock(&parent->d_lock); -@@ -1002,7 +1002,7 @@ static enum lru_status dentry_lru_isolate(struct list_head *item, +@@ -1036,7 +1039,7 @@ static enum lru_status dentry_lru_isolate(struct list_head *item, * counts, just remove them from the LRU. Otherwise give them * another pass through the LRU. */ @@ -68460,7 +74791,7 @@ index c71e373..5c1f656 100644 d_lru_isolate(lru, dentry); spin_unlock(&dentry->d_lock); return LRU_REMOVED; -@@ -1336,7 +1336,7 @@ static enum d_walk_ret select_collect(void *_data, struct dentry *dentry) +@@ -1370,7 +1373,7 @@ static enum d_walk_ret select_collect(void *_data, struct dentry *dentry) } else { if (dentry->d_flags & DCACHE_LRU_LIST) d_lru_del(dentry); @@ -68469,7 +74800,7 @@ index c71e373..5c1f656 100644 d_shrink_add(dentry, &data->dispose); data->found++; } -@@ -1384,7 +1384,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry) +@@ -1418,7 +1421,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry) return D_WALK_CONTINUE; /* root with refcount 1 is fine */ @@ -68478,7 +74809,7 @@ index c71e373..5c1f656 100644 return D_WALK_CONTINUE; printk(KERN_ERR "BUG: Dentry %p{i=%lx,n=%pd} " -@@ -1393,7 +1393,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry) +@@ -1427,7 +1430,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry) dentry->d_inode ? dentry->d_inode->i_ino : 0UL, dentry, @@ -68487,7 +74818,7 @@ index c71e373..5c1f656 100644 dentry->d_sb->s_type->name, dentry->d_sb->s_id); WARN_ON(1); -@@ -1534,7 +1534,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) +@@ -1568,7 +1571,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) dentry->d_iname[DNAME_INLINE_LEN-1] = 0; if (name->len > DNAME_INLINE_LEN-1) { size_t size = offsetof(struct external_name, name[1]); @@ -68496,7 +74827,7 @@ index c71e373..5c1f656 100644 if (!p) { kmem_cache_free(dentry_cache, dentry); return NULL; -@@ -1557,7 +1557,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) +@@ -1591,7 +1594,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) smp_wmb(); dentry->d_name.name = dname; @@ -68505,7 +74836,7 @@ index c71e373..5c1f656 100644 dentry->d_flags = 0; spin_lock_init(&dentry->d_lock); seqcount_init(&dentry->d_seq); -@@ -1566,6 +1566,9 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) +@@ -1600,6 +1603,9 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) dentry->d_sb = sb; dentry->d_op = NULL; dentry->d_fsdata = NULL; @@ -68515,7 +74846,7 @@ index c71e373..5c1f656 100644 INIT_HLIST_BL_NODE(&dentry->d_hash); INIT_LIST_HEAD(&dentry->d_lru); INIT_LIST_HEAD(&dentry->d_subdirs); -@@ -2290,7 +2293,7 @@ struct dentry *__d_lookup(const struct dentry *parent, const struct qstr *name) +@@ -2321,7 +2327,7 @@ struct dentry *__d_lookup(const struct dentry *parent, const struct qstr *name) goto next; } @@ -68524,7 +74855,7 @@ index c71e373..5c1f656 100644 found = dentry; spin_unlock(&dentry->d_lock); break; -@@ -2358,7 +2361,7 @@ again: +@@ -2389,7 +2395,7 @@ again: spin_lock(&dentry->d_lock); inode = dentry->d_inode; isdir = S_ISDIR(inode->i_mode); @@ -68533,7 +74864,7 @@ index c71e373..5c1f656 100644 if (!spin_trylock(&inode->i_lock)) { spin_unlock(&dentry->d_lock); cpu_relax(); -@@ -3311,7 +3314,7 @@ static enum d_walk_ret d_genocide_kill(void *data, struct dentry *dentry) +@@ -3331,7 +3337,7 @@ static enum d_walk_ret d_genocide_kill(void *data, struct dentry *dentry) if (!(dentry->d_flags & DCACHE_GENOCIDE)) { dentry->d_flags |= DCACHE_GENOCIDE; @@ -68542,7 +74873,7 @@ index c71e373..5c1f656 100644 } } return D_WALK_CONTINUE; -@@ -3427,7 +3430,8 @@ void __init vfs_caches_init(unsigned long mempages) +@@ -3447,7 +3453,8 @@ void __init vfs_caches_init(unsigned long mempages) mempages -= reserve; names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0, @@ -68553,21 +74884,10 @@ index c71e373..5c1f656 100644 dcache_init(); inode_init(); diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c -index 96400ab..906103d 100644 +index 1275604..d2ca85b 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c -@@ -386,6 +386,10 @@ struct dentry *debugfs_create_file_size(const char *name, umode_t mode, - } - EXPORT_SYMBOL_GPL(debugfs_create_file_size); - -+#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT -+extern int grsec_enable_sysfs_restrict; -+#endif -+ - /** - * debugfs_create_dir - create a directory in the debugfs filesystem - * @name: a pointer to a string containing the name of the directory to -@@ -404,6 +408,10 @@ EXPORT_SYMBOL_GPL(debugfs_create_file_size); +@@ -407,6 +407,10 @@ EXPORT_SYMBOL_GPL(debugfs_create_file_size); * If debugfs is not enabled in the kernel, the value -%ENODEV will be * returned. */ @@ -68578,7 +74898,7 @@ index 96400ab..906103d 100644 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) { struct dentry *dentry = start_creating(name, parent); -@@ -416,7 +424,12 @@ struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) +@@ -419,7 +423,12 @@ struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) if (unlikely(!inode)) return failed_creating(dentry); @@ -68593,13 +74913,13 @@ index 96400ab..906103d 100644 inode->i_fop = &simple_dir_operations; diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c -index b08b518..d6acffa 100644 +index fc850b5..1677a2a 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c @@ -663,7 +663,7 @@ static char *ecryptfs_readlink_lower(struct dentry *dentry, size_t *bufsiz) old_fs = get_fs(); set_fs(get_ds()); - rc = lower_dentry->d_inode->i_op->readlink(lower_dentry, + rc = d_inode(lower_dentry)->i_op->readlink(lower_dentry, - (char __user *)lower_buf, + (char __force_user *)lower_buf, PATH_MAX); @@ -68619,7 +74939,7 @@ index e4141f2..d8263e8 100644 i += packet_length_size; if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size)) diff --git a/fs/exec.c b/fs/exec.c -index 00400cf..b9d927b 100644 +index 1977c2a..40e7f8f 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -56,8 +56,20 @@ @@ -68828,7 +75148,7 @@ index 00400cf..b9d927b 100644 /* * cover the whole range: [new_start, old_end) */ -@@ -672,10 +718,6 @@ int setup_arg_pages(struct linux_binprm *bprm, +@@ -675,10 +721,6 @@ int setup_arg_pages(struct linux_binprm *bprm, stack_top = arch_align_stack(stack_top); stack_top = PAGE_ALIGN(stack_top); @@ -68839,7 +75159,7 @@ index 00400cf..b9d927b 100644 stack_shift = vma->vm_end - stack_top; bprm->p -= stack_shift; -@@ -687,8 +729,28 @@ int setup_arg_pages(struct linux_binprm *bprm, +@@ -690,8 +732,28 @@ int setup_arg_pages(struct linux_binprm *bprm, bprm->exec -= stack_shift; down_write(&mm->mmap_sem); @@ -68868,7 +75188,7 @@ index 00400cf..b9d927b 100644 /* * Adjust stack execute permissions; explicitly enable for * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone -@@ -707,13 +769,6 @@ int setup_arg_pages(struct linux_binprm *bprm, +@@ -710,13 +772,6 @@ int setup_arg_pages(struct linux_binprm *bprm, goto out_unlock; BUG_ON(prev != vma); @@ -68882,7 +75202,7 @@ index 00400cf..b9d927b 100644 /* mprotect_fixup is overkill to remove the temporary stack flags */ vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP; -@@ -737,6 +792,27 @@ int setup_arg_pages(struct linux_binprm *bprm, +@@ -740,6 +795,27 @@ int setup_arg_pages(struct linux_binprm *bprm, #endif current->mm->start_stack = bprm->p; ret = expand_stack(vma, stack_base); @@ -68910,7 +75230,7 @@ index 00400cf..b9d927b 100644 if (ret) ret = -EFAULT; -@@ -781,8 +857,10 @@ static struct file *do_open_execat(int fd, struct filename *name, int flags) +@@ -784,8 +860,10 @@ static struct file *do_open_execat(int fd, struct filename *name, int flags) if (err) goto exit; @@ -68922,7 +75242,7 @@ index 00400cf..b9d927b 100644 out: return file; -@@ -815,7 +893,7 @@ int kernel_read(struct file *file, loff_t offset, +@@ -818,7 +896,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() */ @@ -68931,7 +75251,7 @@ index 00400cf..b9d927b 100644 set_fs(old_fs); return result; } -@@ -860,6 +938,7 @@ static int exec_mmap(struct mm_struct *mm) +@@ -863,6 +941,7 @@ static int exec_mmap(struct mm_struct *mm) tsk->mm = mm; tsk->active_mm = mm; activate_mm(active_mm, mm); @@ -68939,23 +75259,7 @@ index 00400cf..b9d927b 100644 tsk->mm->vmacache_seqnum = 0; vmacache_flush(tsk); task_unlock(tsk); -@@ -926,10 +1005,14 @@ static int de_thread(struct task_struct *tsk) - if (!thread_group_leader(tsk)) { - struct task_struct *leader = tsk->group_leader; - -- sig->notify_count = -1; /* for exit_notify() */ - for (;;) { - threadgroup_change_begin(tsk); - write_lock_irq(&tasklist_lock); -+ /* -+ * Do this under tasklist_lock to ensure that -+ * exit_notify() can't miss ->group_exit_task -+ */ -+ sig->notify_count = -1; - if (likely(leader->exit_state)) - break; - __set_current_state(TASK_KILLABLE); -@@ -1258,7 +1341,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm) +@@ -1271,7 +1350,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm) } rcu_read_unlock(); @@ -68964,7 +75268,7 @@ index 00400cf..b9d927b 100644 bprm->unsafe |= LSM_UNSAFE_SHARE; else p->fs->in_exec = 1; -@@ -1459,6 +1542,31 @@ static int exec_binprm(struct linux_binprm *bprm) +@@ -1472,6 +1551,31 @@ static int exec_binprm(struct linux_binprm *bprm) return ret; } @@ -68996,7 +75300,7 @@ index 00400cf..b9d927b 100644 /* * sys_execve() executes a new program. */ -@@ -1467,6 +1575,11 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1480,6 +1584,11 @@ static int do_execveat_common(int fd, struct filename *filename, struct user_arg_ptr envp, int flags) { @@ -69008,7 +75312,7 @@ index 00400cf..b9d927b 100644 char *pathbuf = NULL; struct linux_binprm *bprm; struct file *file; -@@ -1476,6 +1589,8 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1489,6 +1598,8 @@ static int do_execveat_common(int fd, struct filename *filename, if (IS_ERR(filename)) return PTR_ERR(filename); @@ -69017,7 +75321,7 @@ index 00400cf..b9d927b 100644 /* * We move the actual failure in case of RLIMIT_NPROC excess from * set*uid() to execve() because too many poorly written programs -@@ -1513,6 +1628,11 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1526,6 +1637,11 @@ static int do_execveat_common(int fd, struct filename *filename, if (IS_ERR(file)) goto out_unmark; @@ -69029,7 +75333,7 @@ index 00400cf..b9d927b 100644 sched_exec(); bprm->file = file; -@@ -1539,6 +1659,11 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1552,6 +1668,11 @@ static int do_execveat_common(int fd, struct filename *filename, } bprm->interp = bprm->filename; @@ -69041,7 +75345,7 @@ index 00400cf..b9d927b 100644 retval = bprm_mm_init(bprm); if (retval) goto out_unmark; -@@ -1555,24 +1680,70 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1568,24 +1689,70 @@ static int do_execveat_common(int fd, struct filename *filename, if (retval < 0) goto out; @@ -69116,7 +75420,7 @@ index 00400cf..b9d927b 100644 current->fs->in_exec = 0; current->in_execve = 0; acct_update_integrals(current); -@@ -1584,6 +1755,14 @@ static int do_execveat_common(int fd, struct filename *filename, +@@ -1597,6 +1764,14 @@ static int do_execveat_common(int fd, struct filename *filename, put_files_struct(displaced); return retval; @@ -69131,7 +75435,7 @@ index 00400cf..b9d927b 100644 out: if (bprm->mm) { acct_arg_size(bprm, 0); -@@ -1730,3 +1909,312 @@ COMPAT_SYSCALL_DEFINE5(execveat, int, fd, +@@ -1743,3 +1918,312 @@ COMPAT_SYSCALL_DEFINE5(execveat, int, fd, argv, envp, flags); } #endif @@ -69271,13 +75575,13 @@ index 00400cf..b9d927b 100644 +void pax_report_refcount_overflow(struct pt_regs *regs) +{ + if (current->signal->curr_ip) -+ printk(KERN_ERR "PAX: From %pI4: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n", ++ printk(KERN_EMERG "PAX: From %pI4: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n", + ¤t->signal->curr_ip, current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid())); + else -+ printk(KERN_ERR "PAX: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n", current->comm, task_pid_nr(current), ++ printk(KERN_EMERG "PAX: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n", current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid()), from_kuid_munged(&init_user_ns, current_euid())); -+ print_symbol(KERN_ERR "PAX: refcount overflow occured at: %s\n", instruction_pointer(regs)); ++ print_symbol(KERN_EMERG "PAX: refcount overflow occured at: %s\n", instruction_pointer(regs)); + preempt_disable(); + show_regs(regs); + preempt_enable(); @@ -69336,10 +75640,10 @@ index 00400cf..b9d927b 100644 +static __noreturn void pax_report_usercopy(const void *ptr, unsigned long len, bool to_user, const char *type) +{ + if (current->signal->curr_ip) -+ printk(KERN_ERR "PAX: From %pI4: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n", ++ printk(KERN_EMERG "PAX: From %pI4: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n", + ¤t->signal->curr_ip, to_user ? "leak" : "overwrite", to_user ? "from" : "to", ptr, type ? : "unknown", len); + else -+ printk(KERN_ERR "PAX: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n", ++ printk(KERN_EMERG "PAX: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n", + to_user ? "leak" : "overwrite", to_user ? "from" : "to", ptr, type ? : "unknown", len); + dump_stack(); + gr_handle_kernel_exploit(); @@ -69423,7 +75727,7 @@ index 00400cf..b9d927b 100644 +EXPORT_SYMBOL(__check_object_size); + +#ifdef CONFIG_PAX_MEMORY_STACKLEAK -+void pax_track_stack(void) ++void __used pax_track_stack(void) +{ + unsigned long sp = (unsigned long)&sp; + if (sp < current_thread_info()->lowest_stack && @@ -69436,9 +75740,9 @@ index 00400cf..b9d927b 100644 +#endif + +#ifdef CONFIG_PAX_SIZE_OVERFLOW -+void __nocapture(1, 3, 4) report_size_overflow(const char *file, unsigned int line, const char *func, const char *ssa_name) ++void __nocapture(1, 3, 4) __used report_size_overflow(const char *file, unsigned int line, const char *func, const char *ssa_name) +{ -+ printk(KERN_ERR "PAX: size overflow detected in function %s %s:%u %s", func, file, line, ssa_name); ++ printk(KERN_EMERG "PAX: size overflow detected in function %s %s:%u %s", func, file, line, ssa_name); + dump_stack(); + do_group_exit(SIGKILL); +} @@ -69489,7 +75793,7 @@ index d0e746e..82e06f0 100644 #ifdef CONFIG_EXT2_FS_POSIX_ACL if (def_mount_opts & EXT2_DEFM_ACL) diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c -index 9142614..97484fa 100644 +index 0b6bfd3..93a2964 100644 --- a/fs/ext2/xattr.c +++ b/fs/ext2/xattr.c @@ -247,7 +247,7 @@ ext2_xattr_list(struct dentry *dentry, char *buffer, size_t buffer_size) @@ -69531,7 +75835,7 @@ index 158b5d4..2432610 100644 } return 1; diff --git a/fs/ext3/super.c b/fs/ext3/super.c -index d4dbf3c..906a6fb 100644 +index a9312f0..e3a11ec 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c @@ -655,10 +655,8 @@ static int ext3_show_options(struct seq_file *seq, struct dentry *root) @@ -69558,7 +75862,7 @@ index d4dbf3c..906a6fb 100644 #ifdef CONFIG_EXT3_FS_POSIX_ACL if (def_mount_opts & EXT3_DEFM_ACL) diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c -index c6874be..f8a6ae8 100644 +index 7cf3650..e3f4a51 100644 --- a/fs/ext3/xattr.c +++ b/fs/ext3/xattr.c @@ -330,7 +330,7 @@ static int @@ -69583,10 +75887,10 @@ index c6874be..f8a6ae8 100644 static int diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c -index 83a6f49..d4e4d03 100644 +index 955bf49a..44ee359 100644 --- a/fs/ext4/balloc.c +++ b/fs/ext4/balloc.c -@@ -557,8 +557,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, +@@ -556,8 +556,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, /* Hm, nope. Are (enough) root reserved clusters available? */ if (uid_eq(sbi->s_resuid, current_fsuid()) || (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) || @@ -69598,10 +75902,10 @@ index 83a6f49..d4e4d03 100644 if (free_clusters >= (nclusters + dirty_clusters + resv_clusters)) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h -index f63c3d5..3c1a033 100644 +index 9a83f14..1dd1b38 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h -@@ -1287,19 +1287,19 @@ struct ext4_sb_info { +@@ -1310,19 +1310,19 @@ struct ext4_sb_info { unsigned long s_mb_last_start; /* stats for buddy allocator */ @@ -69762,7 +76066,7 @@ index 8313ca3..8a37d08 100644 "MMP failure info: last update time: %llu, last update " "node: %s, last update device: %s\n", diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c -index 8a8ec62..1b02de5 100644 +index cf0c472..ddf284d 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -413,7 +413,7 @@ static int set_flexbg_block_bitmap(struct super_block *sb, handle_t *handle, @@ -69804,10 +76108,10 @@ index 8a8ec62..1b02de5 100644 err = ext4_handle_dirty_metadata(handle, NULL, bh); if (unlikely(err)) diff --git a/fs/ext4/super.c b/fs/ext4/super.c -index e061e66..87bc092 100644 +index ca9d4a2..4c52f42 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c -@@ -1243,7 +1243,7 @@ static ext4_fsblk_t get_sb_block(void **data) +@@ -1232,7 +1232,7 @@ static ext4_fsblk_t get_sb_block(void **data) } #define DEFAULT_JOURNAL_IOPRIO (IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 3)) @@ -69816,7 +76120,7 @@ index e061e66..87bc092 100644 "Contact linux-ext4@vger.kernel.org if you think we should keep it.\n"; #ifdef CONFIG_QUOTA -@@ -2443,7 +2443,7 @@ struct ext4_attr { +@@ -2442,7 +2442,7 @@ struct ext4_attr { int offset; int deprecated_val; } u; @@ -69826,10 +76130,10 @@ index e061e66..87bc092 100644 static int parse_strtoull(const char *buf, unsigned long long max, unsigned long long *value) diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c -index 1e09fc7..0400dd4 100644 +index 16e28c0..728c282 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c -@@ -399,7 +399,7 @@ static int +@@ -398,7 +398,7 @@ static int ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry, char *buffer, size_t buffer_size) { @@ -69838,7 +76142,7 @@ index 1e09fc7..0400dd4 100644 for (; !IS_LAST_ENTRY(entry); entry = EXT4_XATTR_NEXT(entry)) { const struct xattr_handler *handler = -@@ -416,9 +416,10 @@ ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry, +@@ -415,9 +415,10 @@ ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry, buffer += size; } rest -= size; @@ -69866,7 +76170,7 @@ index ee85cd4..9dd0d20 100644 } EXPORT_SYMBOL(__f_setown); diff --git a/fs/fhandle.c b/fs/fhandle.c -index 999ff5c..2281df9 100644 +index d59712d..2281df9 100644 --- a/fs/fhandle.c +++ b/fs/fhandle.c @@ -8,6 +8,7 @@ @@ -69896,20 +76200,8 @@ index 999ff5c..2281df9 100644 retval = -EPERM; goto out_err; } -@@ -195,8 +195,9 @@ static int handle_to_path(int mountdirfd, struct file_handle __user *ufh, - goto out_err; - } - /* copy the full handle */ -- if (copy_from_user(handle, ufh, -- sizeof(struct file_handle) + -+ *handle = f_handle; -+ if (copy_from_user(&handle->f_handle, -+ &ufh->f_handle, - f_handle.handle_bytes)) { - retval = -EFAULT; - goto out_handle; diff --git a/fs/file.c b/fs/file.c -index ee738ea..f6c15629 100644 +index 93c5f89..ed75817 100644 --- a/fs/file.c +++ b/fs/file.c @@ -16,6 +16,7 @@ @@ -69938,7 +76230,7 @@ index ee738ea..f6c15629 100644 { struct fdtable *fdt; -@@ -800,6 +801,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) +@@ -799,6 +800,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) if (!file) return __close_fd(files, fd); @@ -69946,7 +76238,7 @@ index ee738ea..f6c15629 100644 if (fd >= rlimit(RLIMIT_NOFILE)) return -EBADF; -@@ -826,6 +828,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) +@@ -825,6 +827,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) if (unlikely(oldfd == newfd)) return -EINVAL; @@ -69954,7 +76246,7 @@ index ee738ea..f6c15629 100644 if (newfd >= rlimit(RLIMIT_NOFILE)) return -EBADF; -@@ -881,6 +884,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes) +@@ -880,6 +883,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes) int f_dupfd(unsigned int from, struct file *file, unsigned flags) { int err; @@ -71476,10 +77768,10 @@ index 40d13c7..ddf52b9 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 28d0c7a..04816b7 100644 +index e5bbf74..9bfdaf3 100644 --- a/fs/fuse/cuse.c +++ b/fs/fuse/cuse.c -@@ -611,10 +611,12 @@ static int __init cuse_init(void) +@@ -602,10 +602,12 @@ static int __init cuse_init(void) INIT_LIST_HEAD(&cuse_conntbl[i]); /* inherit and extend fuse_dev_operations */ @@ -71497,10 +77789,10 @@ index 28d0c7a..04816b7 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 39706c5..a803c71 100644 +index c8b68ab..97190db 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c -@@ -1405,7 +1405,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, +@@ -1398,7 +1398,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, ret = 0; pipe_lock(pipe); @@ -71509,7 +77801,7 @@ index 39706c5..a803c71 100644 send_sig(SIGPIPE, current, 0); if (!ret) ret = -EPIPE; -@@ -1434,7 +1434,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, +@@ -1427,7 +1427,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, page_nr++; ret += buf->len; @@ -71519,7 +77811,7 @@ index 39706c5..a803c71 100644 } diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c -index 1545b71..7fabe47 100644 +index 0572bca..cb9c3fa 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1394,7 +1394,7 @@ static char *read_link(struct dentry *dentry) @@ -71532,7 +77824,7 @@ index 1545b71..7fabe47 100644 if (!IS_ERR(link)) free_page((unsigned long) link); diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c -index f42dffb..4a4c435 100644 +index 0fa8062..755b198 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -385,9 +385,9 @@ static void state_change(struct gfs2_glock *gl, unsigned int new_state) @@ -71630,7 +77922,7 @@ index fe91951..ce38a6e 100644 } diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c -index 3aa17d4..b338075 100644 +index e3065cb..45e7117 100644 --- a/fs/gfs2/quota.c +++ b/fs/gfs2/quota.c @@ -154,7 +154,7 @@ static enum lru_status gfs2_qd_isolate(struct list_head *item, @@ -71661,10 +77953,10 @@ index 3aa17d4..b338075 100644 spin_unlock(&qd->qd_lockref.lock); diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c -index fd62cae..3494dfa 100644 +index 07d8d8f..2c2a4e7 100644 --- a/fs/hostfs/hostfs_kern.c +++ b/fs/hostfs/hostfs_kern.c -@@ -908,7 +908,7 @@ static void *hostfs_follow_link(struct dentry *dentry, struct nameidata *nd) +@@ -918,7 +918,7 @@ static void *hostfs_follow_link(struct dentry *dentry, struct nameidata *nd) static void hostfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) { @@ -71674,10 +77966,10 @@ index fd62cae..3494dfa 100644 __putname(s); } diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c -index c274aca..772fa5e 100644 +index 87724c1..5a5e53f 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c -@@ -148,6 +148,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, +@@ -151,6 +151,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, struct mm_struct *mm = current->mm; struct vm_area_struct *vma; struct hstate *h = hstate_file(file); @@ -71685,7 +77977,7 @@ index c274aca..772fa5e 100644 struct vm_unmapped_area_info info; if (len & ~huge_page_mask(h)) -@@ -161,17 +162,26 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, +@@ -164,17 +165,26 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr, return addr; } @@ -71714,7 +78006,7 @@ index c274aca..772fa5e 100644 info.high_limit = TASK_SIZE; info.align_mask = PAGE_MASK & ~huge_page_mask(h); info.align_offset = 0; -@@ -912,7 +922,7 @@ static struct file_system_type hugetlbfs_fs_type = { +@@ -939,7 +949,7 @@ static struct file_system_type hugetlbfs_fs_type = { }; MODULE_ALIAS_FS("hugetlbfs"); @@ -71724,7 +78016,7 @@ index c274aca..772fa5e 100644 static int can_do_hugetlb_shm(void) { diff --git a/fs/inode.c b/fs/inode.c -index f00b16f..b653fea 100644 +index 6e342ca..0538cb7 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -830,16 +830,20 @@ unsigned int get_next_ino(void) @@ -71780,7 +78072,7 @@ index 09ed551..45684f8 100644 /* diff --git a/fs/jfs/super.c b/fs/jfs/super.c -index 5d30c56..8c45372 100644 +index 4cd9798..8dfe86a 100644 --- a/fs/jfs/super.c +++ b/fs/jfs/super.c @@ -901,7 +901,7 @@ static int __init init_jfs_fs(void) @@ -71793,7 +78085,7 @@ index 5d30c56..8c45372 100644 if (jfs_inode_cachep == NULL) return -ENOMEM; diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c -index 6acc964..eca491f 100644 +index 2d48d28..82eddad 100644 --- a/fs/kernfs/dir.c +++ b/fs/kernfs/dir.c @@ -182,7 +182,7 @@ struct kernfs_node *kernfs_get_parent(struct kernfs_node *kn) @@ -71805,7 +78097,7 @@ index 6acc964..eca491f 100644 { unsigned long hash = init_name_hash(); unsigned int len = strlen(name); -@@ -831,6 +831,12 @@ static int kernfs_iop_mkdir(struct inode *dir, struct dentry *dentry, +@@ -873,6 +873,12 @@ static int kernfs_iop_mkdir(struct inode *dir, struct dentry *dentry, ret = scops->mkdir(parent, dentry->d_name.name, mode); kernfs_put_active(parent); @@ -71915,7 +78207,7 @@ index 8a19889..4c3069a 100644 free_page((unsigned long)page); } diff --git a/fs/libfs.c b/fs/libfs.c -index 0ab6512..cd9982d 100644 +index 0281359..24971ac 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -160,6 +160,9 @@ int dcache_readdir(struct file *file, struct dir_context *ctx) @@ -71939,7 +78231,7 @@ index 0ab6512..cd9982d 100644 + name = d_name; + } + if (!dir_emit(ctx, name, next->d_name.len, - next->d_inode->i_ino, dt_type(next->d_inode))) + d_inode(next)->i_ino, dt_type(d_inode(next)))) return 0; spin_lock(&dentry->d_lock); @@ -1027,7 +1035,7 @@ EXPORT_SYMBOL(noop_fsync); @@ -71992,10 +78284,10 @@ index 6a61c2b..bd79179 100644 #define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */ diff --git a/fs/namei.c b/fs/namei.c -index 50a8583..44c470a 100644 +index fe30d3b..cf767ae 100644 --- a/fs/namei.c +++ b/fs/namei.c -@@ -337,17 +337,32 @@ int generic_permission(struct inode *inode, int mask) +@@ -336,17 +336,32 @@ int generic_permission(struct inode *inode, int mask) if (ret != -EACCES) return ret; @@ -72032,7 +78324,7 @@ index 50a8583..44c470a 100644 * Read/write DACs are always overridable. * Executable DACs are overridable when there is * at least one exec bit set. -@@ -356,14 +371,6 @@ int generic_permission(struct inode *inode, int mask) +@@ -355,14 +370,6 @@ int generic_permission(struct inode *inode, int mask) if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE)) return 0; @@ -72047,7 +78339,7 @@ index 50a8583..44c470a 100644 return -EACCES; } EXPORT_SYMBOL(generic_permission); -@@ -503,7 +510,7 @@ struct nameidata { +@@ -502,7 +509,7 @@ struct nameidata { int last_type; unsigned depth; struct file *base; @@ -72056,7 +78348,7 @@ index 50a8583..44c470a 100644 }; /* -@@ -714,13 +721,13 @@ void nd_jump_link(struct nameidata *nd, struct path *path) +@@ -713,13 +720,13 @@ void nd_jump_link(struct nameidata *nd, struct path *path) nd->flags |= LOOKUP_JUMPED; } @@ -72072,7 +78364,7 @@ index 50a8583..44c470a 100644 { return nd->saved_names[nd->depth]; } -@@ -855,7 +862,7 @@ follow_link(struct path *link, struct nameidata *nd, void **p) +@@ -854,7 +861,7 @@ follow_link(struct path *link, struct nameidata *nd, void **p) { struct dentry *dentry = link->dentry; int error; @@ -72081,12 +78373,11 @@ index 50a8583..44c470a 100644 BUG_ON(nd->flags & LOOKUP_RCU); -@@ -876,6 +883,12 @@ follow_link(struct path *link, struct nameidata *nd, void **p) +@@ -875,6 +882,11 @@ follow_link(struct path *link, struct nameidata *nd, void **p) if (error) goto out_put_nd_path; -+ if (gr_handle_follow_link(dentry->d_parent->d_inode, -+ dentry->d_inode, dentry, nd->path.mnt)) { ++ if (gr_handle_follow_link(dentry, nd->path.mnt)) { + error = -EACCES; + goto out_put_nd_path; + } @@ -72094,7 +78385,7 @@ index 50a8583..44c470a 100644 nd->last_type = LAST_BIND; *p = dentry->d_inode->i_op->follow_link(dentry, nd); error = PTR_ERR(*p); -@@ -1640,6 +1653,8 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd) +@@ -1647,6 +1659,8 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd) if (res) break; res = walk_component(nd, path, LOOKUP_FOLLOW); @@ -72103,7 +78394,7 @@ index 50a8583..44c470a 100644 put_link(nd, &link, cookie); } while (res > 0); -@@ -1712,7 +1727,7 @@ EXPORT_SYMBOL(full_name_hash); +@@ -1719,7 +1733,7 @@ EXPORT_SYMBOL(full_name_hash); static inline u64 hash_name(const char *name) { unsigned long a, b, adata, bdata, mask, hash, len; @@ -72112,7 +78403,7 @@ index 50a8583..44c470a 100644 hash = a = 0; len = -sizeof(unsigned long); -@@ -2007,6 +2022,8 @@ static int path_lookupat(int dfd, const char *name, +@@ -2015,6 +2029,8 @@ static int path_lookupat(int dfd, const struct filename *name, if (err) break; err = lookup_last(nd, &path); @@ -72121,7 +78412,7 @@ index 50a8583..44c470a 100644 put_link(nd, &link, cookie); } } -@@ -2014,6 +2031,13 @@ static int path_lookupat(int dfd, const char *name, +@@ -2022,6 +2038,13 @@ static int path_lookupat(int dfd, const struct filename *name, if (!err) err = complete_walk(nd); @@ -72135,9 +78426,9 @@ index 50a8583..44c470a 100644 if (!err && nd->flags & LOOKUP_DIRECTORY) { if (!d_can_lookup(nd->path.dentry)) { path_put(&nd->path); -@@ -2035,8 +2059,15 @@ static int filename_lookup(int dfd, struct filename *name, - retval = path_lookupat(dfd, name->name, - flags | LOOKUP_REVAL, nd); +@@ -2042,8 +2065,15 @@ static int filename_lookup(int dfd, struct filename *name, + if (unlikely(retval == -ESTALE)) + retval = path_lookupat(dfd, name, flags | LOOKUP_REVAL, nd); - if (likely(!retval)) + if (likely(!retval)) { @@ -72152,7 +78443,7 @@ index 50a8583..44c470a 100644 return retval; } -@@ -2615,6 +2646,13 @@ static int may_open(struct path *path, int acc_mode, int flag) +@@ -2621,6 +2651,13 @@ static int may_open(struct path *path, int acc_mode, int flag) if (flag & O_NOATIME && !inode_owner_or_capable(inode)) return -EPERM; @@ -72166,7 +78457,7 @@ index 50a8583..44c470a 100644 return 0; } -@@ -2846,7 +2884,7 @@ looked_up: +@@ -2852,7 +2889,7 @@ looked_up: * cleared otherwise prior to returning. */ static int lookup_open(struct nameidata *nd, struct path *path, @@ -72175,7 +78466,7 @@ index 50a8583..44c470a 100644 const struct open_flags *op, bool got_write, int *opened) { -@@ -2881,6 +2919,17 @@ static int lookup_open(struct nameidata *nd, struct path *path, +@@ -2887,6 +2924,17 @@ static int lookup_open(struct nameidata *nd, struct path *path, /* Negative dentry, just create the file */ if (!dentry->d_inode && (op->open_flag & O_CREAT)) { umode_t mode = op->mode; @@ -72193,7 +78484,7 @@ index 50a8583..44c470a 100644 if (!IS_POSIXACL(dir->d_inode)) mode &= ~current_umask(); /* -@@ -2902,6 +2951,8 @@ static int lookup_open(struct nameidata *nd, struct path *path, +@@ -2908,6 +2956,8 @@ static int lookup_open(struct nameidata *nd, struct path *path, nd->flags & LOOKUP_EXCL); if (error) goto out_dput; @@ -72202,7 +78493,7 @@ index 50a8583..44c470a 100644 } out_no_open: path->dentry = dentry; -@@ -2916,7 +2967,7 @@ out_dput: +@@ -2922,7 +2972,7 @@ out_dput: /* * Handle the last step of open() */ @@ -72211,7 +78502,7 @@ index 50a8583..44c470a 100644 struct file *file, const struct open_flags *op, int *opened, struct filename *name) { -@@ -2966,6 +3017,15 @@ static int do_last(struct nameidata *nd, struct path *path, +@@ -2972,6 +3022,15 @@ static int do_last(struct nameidata *nd, struct path *path, if (error) return error; @@ -72227,7 +78518,7 @@ index 50a8583..44c470a 100644 audit_inode(name, dir, LOOKUP_PARENT); error = -EISDIR; /* trailing slashes? */ -@@ -2985,7 +3045,7 @@ retry_lookup: +@@ -2991,7 +3050,7 @@ retry_lookup: */ } mutex_lock(&dir->d_inode->i_mutex); @@ -72236,7 +78527,7 @@ index 50a8583..44c470a 100644 mutex_unlock(&dir->d_inode->i_mutex); if (error <= 0) { -@@ -3009,11 +3069,28 @@ retry_lookup: +@@ -3015,11 +3074,28 @@ retry_lookup: goto finish_open_created; } @@ -72266,7 +78557,7 @@ index 50a8583..44c470a 100644 /* * If atomic_open() acquired write access it is dropped now due to -@@ -3055,6 +3132,11 @@ finish_lookup: +@@ -3060,6 +3136,11 @@ finish_lookup: } } BUG_ON(inode != path->dentry->d_inode); @@ -72278,7 +78569,7 @@ index 50a8583..44c470a 100644 return 1; } -@@ -3074,7 +3156,18 @@ finish_open: +@@ -3079,7 +3160,18 @@ finish_open: path_put(&save_parent); return error; } @@ -72297,7 +78588,7 @@ index 50a8583..44c470a 100644 error = -EISDIR; if ((open_flag & O_CREAT) && d_is_dir(nd->path.dentry)) goto out; -@@ -3235,7 +3328,7 @@ static struct file *path_openat(int dfd, struct filename *pathname, +@@ -3240,7 +3332,7 @@ static struct file *path_openat(int dfd, struct filename *pathname, if (unlikely(error)) goto out; @@ -72306,7 +78597,7 @@ index 50a8583..44c470a 100644 while (unlikely(error > 0)) { /* trailing symlink */ struct path link = path; void *cookie; -@@ -3253,7 +3346,7 @@ static struct file *path_openat(int dfd, struct filename *pathname, +@@ -3258,7 +3350,7 @@ static struct file *path_openat(int dfd, struct filename *pathname, error = follow_link(&link, nd, &cookie); if (unlikely(error)) break; @@ -72315,7 +78606,7 @@ index 50a8583..44c470a 100644 put_link(nd, &link, cookie); } out: -@@ -3356,9 +3449,11 @@ static struct dentry *filename_create(int dfd, struct filename *name, +@@ -3361,9 +3453,11 @@ static struct dentry *filename_create(int dfd, struct filename *name, goto unlock; error = -EEXIST; @@ -72329,7 +78620,7 @@ index 50a8583..44c470a 100644 /* * Special case - lookup gave negative, but... we had foo/bar/ * From the vfs_mknod() POV we just have a negative dentry - -@@ -3423,6 +3518,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname, +@@ -3428,6 +3522,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname, } EXPORT_SYMBOL(user_path_create); @@ -72350,7 +78641,7 @@ index 50a8583..44c470a 100644 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev) { int error = may_create(dir, dentry); -@@ -3486,6 +3595,17 @@ retry: +@@ -3491,6 +3599,17 @@ retry: if (!IS_POSIXACL(path.dentry->d_inode)) mode &= ~current_umask(); @@ -72368,7 +78659,7 @@ index 50a8583..44c470a 100644 error = security_path_mknod(&path, dentry, mode, dev); if (error) goto out; -@@ -3501,6 +3621,8 @@ retry: +@@ -3506,6 +3625,8 @@ retry: error = vfs_mknod(path.dentry->d_inode,dentry,mode,0); break; } @@ -72377,7 +78668,7 @@ index 50a8583..44c470a 100644 out: done_path_create(&path, dentry); if (retry_estale(error, lookup_flags)) { -@@ -3555,9 +3677,16 @@ retry: +@@ -3560,9 +3681,16 @@ retry: if (!IS_POSIXACL(path.dentry->d_inode)) mode &= ~current_umask(); @@ -72394,7 +78685,7 @@ index 50a8583..44c470a 100644 done_path_create(&path, dentry); if (retry_estale(error, lookup_flags)) { lookup_flags |= LOOKUP_REVAL; -@@ -3590,7 +3719,7 @@ void dentry_unhash(struct dentry *dentry) +@@ -3595,7 +3723,7 @@ void dentry_unhash(struct dentry *dentry) { shrink_dcache_parent(dentry); spin_lock(&dentry->d_lock); @@ -72403,7 +78694,7 @@ index 50a8583..44c470a 100644 __d_drop(dentry); spin_unlock(&dentry->d_lock); } -@@ -3641,6 +3770,8 @@ static long do_rmdir(int dfd, const char __user *pathname) +@@ -3646,6 +3774,8 @@ static long do_rmdir(int dfd, const char __user *pathname) struct filename *name; struct dentry *dentry; struct nameidata nd; @@ -72412,7 +78703,7 @@ index 50a8583..44c470a 100644 unsigned int lookup_flags = 0; retry: name = user_path_parent(dfd, pathname, &nd, lookup_flags); -@@ -3673,10 +3804,21 @@ retry: +@@ -3678,10 +3808,21 @@ retry: error = -ENOENT; goto exit3; } @@ -72434,7 +78725,7 @@ index 50a8583..44c470a 100644 exit3: dput(dentry); exit2: -@@ -3769,6 +3911,8 @@ static long do_unlinkat(int dfd, const char __user *pathname) +@@ -3774,6 +3915,8 @@ static long do_unlinkat(int dfd, const char __user *pathname) struct nameidata nd; struct inode *inode = NULL; struct inode *delegated_inode = NULL; @@ -72443,7 +78734,7 @@ index 50a8583..44c470a 100644 unsigned int lookup_flags = 0; retry: name = user_path_parent(dfd, pathname, &nd, lookup_flags); -@@ -3795,10 +3939,22 @@ retry_deleg: +@@ -3800,10 +3943,22 @@ retry_deleg: if (d_is_negative(dentry)) goto slashes; ihold(inode); @@ -72466,7 +78757,7 @@ index 50a8583..44c470a 100644 exit2: dput(dentry); } -@@ -3887,9 +4043,17 @@ retry: +@@ -3892,9 +4047,17 @@ retry: if (IS_ERR(dentry)) goto out_putname; @@ -72484,7 +78775,7 @@ index 50a8583..44c470a 100644 done_path_create(&path, dentry); if (retry_estale(error, lookup_flags)) { lookup_flags |= LOOKUP_REVAL; -@@ -3993,6 +4157,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname, +@@ -3998,6 +4161,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname, struct dentry *new_dentry; struct path old_path, new_path; struct inode *delegated_inode = NULL; @@ -72492,7 +78783,7 @@ index 50a8583..44c470a 100644 int how = 0; int error; -@@ -4016,7 +4181,7 @@ retry: +@@ -4021,7 +4185,7 @@ retry: if (error) return error; @@ -72501,14 +78792,12 @@ index 50a8583..44c470a 100644 (how & LOOKUP_REVAL)); error = PTR_ERR(new_dentry); if (IS_ERR(new_dentry)) -@@ -4028,11 +4193,28 @@ retry: +@@ -4033,11 +4197,26 @@ retry: error = may_linkat(&old_path); if (unlikely(error)) goto out_dput; + -+ if (gr_handle_hardlink(old_path.dentry, old_path.mnt, -+ old_path.dentry->d_inode, -+ old_path.dentry->d_inode->i_mode, to)) { ++ if (gr_handle_hardlink(old_path.dentry, old_path.mnt, to)) { + error = -EACCES; + goto out_dput; + } @@ -72530,7 +78819,7 @@ index 50a8583..44c470a 100644 done_path_create(&new_path, new_dentry); if (delegated_inode) { error = break_deleg_wait(&delegated_inode); -@@ -4348,6 +4530,20 @@ retry_deleg: +@@ -4353,6 +4532,20 @@ retry_deleg: if (new_dentry == trap) goto exit5; @@ -72543,7 +78832,7 @@ index 50a8583..44c470a 100644 + } + + error = gr_acl_handle_rename(new_dentry, new_dir, newnd.path.mnt, -+ old_dentry, old_dir->d_inode, oldnd.path.mnt, ++ old_dentry, d_backing_inode(old_dir), oldnd.path.mnt, + to, flags); + if (error) + goto exit5; @@ -72551,17 +78840,17 @@ index 50a8583..44c470a 100644 error = security_path_rename(&oldnd.path, old_dentry, &newnd.path, new_dentry, flags); if (error) -@@ -4355,6 +4551,9 @@ retry_deleg: +@@ -4360,6 +4553,9 @@ retry_deleg: error = vfs_rename(old_dir->d_inode, old_dentry, new_dir->d_inode, new_dentry, &delegated_inode, flags); + if (!error) -+ gr_handle_rename(old_dir->d_inode, new_dir->d_inode, old_dentry, -+ new_dentry, oldnd.path.mnt, new_dentry->d_inode ? 1 : 0, flags); ++ gr_handle_rename(d_backing_inode(old_dir), d_backing_inode(new_dir), old_dentry, ++ new_dentry, oldnd.path.mnt, d_is_positive(new_dentry) ? 1 : 0, flags); exit5: dput(new_dentry); exit4: -@@ -4411,14 +4610,24 @@ EXPORT_SYMBOL(vfs_whiteout); +@@ -4416,14 +4612,24 @@ EXPORT_SYMBOL(vfs_whiteout); int readlink_copy(char __user *buffer, int buflen, const char *link) { @@ -72588,10 +78877,59 @@ index 50a8583..44c470a 100644 out: return len; diff --git a/fs/namespace.c b/fs/namespace.c -index 38ed1e1..8500e56 100644 +index 02c6875..ac3626c 100644 --- a/fs/namespace.c +++ b/fs/namespace.c -@@ -1480,6 +1480,9 @@ static int do_umount(struct mount *mnt, int flags) +@@ -1350,6 +1350,36 @@ enum umount_tree_flags { + UMOUNT_PROPAGATE = 2, + UMOUNT_CONNECTED = 4, + }; ++ ++static bool disconnect_mount(struct mount *mnt, enum umount_tree_flags how) ++{ ++ /* Leaving mounts connected is only valid for lazy umounts */ ++ if (how & UMOUNT_SYNC) ++ return true; ++ ++ /* A mount without a parent has nothing to be connected to */ ++ if (!mnt_has_parent(mnt)) ++ return true; ++ ++ /* Because the reference counting rules change when mounts are ++ * unmounted and connected, umounted mounts may not be ++ * connected to mounted mounts. ++ */ ++ if (!(mnt->mnt_parent->mnt.mnt_flags & MNT_UMOUNT)) ++ return true; ++ ++ /* Has it been requested that the mount remain connected? */ ++ if (how & UMOUNT_CONNECTED) ++ return false; ++ ++ /* Is the mount locked such that it needs to remain connected? */ ++ if (IS_MNT_LOCKED(mnt)) ++ return false; ++ ++ /* By default disconnect the mount */ ++ return true; ++} ++ + /* + * mount_lock must be held + * namespace_sem must be held for write +@@ -1387,10 +1417,7 @@ static void umount_tree(struct mount *mnt, enum umount_tree_flags how) + if (how & UMOUNT_SYNC) + p->mnt.mnt_flags |= MNT_SYNC_UMOUNT; + +- disconnect = !(((how & UMOUNT_CONNECTED) && +- mnt_has_parent(p) && +- (p->mnt_parent->mnt.mnt_flags & MNT_UMOUNT)) || +- IS_MNT_LOCKED_AND_LAZY(p)); ++ disconnect = disconnect_mount(p, how); + + pin_insert_group(&p->mnt_umount, &p->mnt_parent->mnt, + disconnect ? &unmounted : NULL); +@@ -1478,6 +1505,9 @@ static int do_umount(struct mount *mnt, int flags) if (!(sb->s_flags & MS_RDONLY)) retval = do_remount_sb(sb, MS_RDONLY, NULL, 0); up_write(&sb->s_umount); @@ -72601,7 +78939,7 @@ index 38ed1e1..8500e56 100644 return retval; } -@@ -1502,6 +1505,9 @@ static int do_umount(struct mount *mnt, int flags) +@@ -1500,6 +1530,9 @@ static int do_umount(struct mount *mnt, int flags) } unlock_mount_hash(); namespace_unlock(); @@ -72611,7 +78949,21 @@ index 38ed1e1..8500e56 100644 return retval; } -@@ -1559,7 +1565,7 @@ static inline bool may_mount(void) +@@ -1527,11 +1560,8 @@ void __detach_mounts(struct dentry *dentry) + while (!hlist_empty(&mp->m_list)) { + mnt = hlist_entry(mp->m_list.first, struct mount, mnt_mp_list); + if (mnt->mnt.mnt_flags & MNT_UMOUNT) { +- struct mount *p, *tmp; +- list_for_each_entry_safe(p, tmp, &mnt->mnt_mounts, mnt_child) { +- hlist_add_head(&p->mnt_umount.s_list, &unmounted); +- umount_mnt(p); +- } ++ hlist_add_head(&mnt->mnt_umount.s_list, &unmounted); ++ umount_mnt(mnt); + } + else umount_tree(mnt, UMOUNT_CONNECTED); + } +@@ -1557,7 +1587,7 @@ static inline bool may_mount(void) * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD */ @@ -72620,7 +78972,7 @@ index 38ed1e1..8500e56 100644 { struct path path; struct mount *mnt; -@@ -1604,7 +1610,7 @@ out: +@@ -1602,7 +1632,7 @@ out: /* * The 2.0 compatible umount. No flags. */ @@ -72629,7 +78981,7 @@ index 38ed1e1..8500e56 100644 { return sys_umount(name, 0); } -@@ -2670,6 +2676,16 @@ long do_mount(const char *dev_name, const char __user *dir_name, +@@ -2677,6 +2707,16 @@ long do_mount(const char *dev_name, const char __user *dir_name, MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT | MS_STRICTATIME); @@ -72646,7 +78998,7 @@ index 38ed1e1..8500e56 100644 if (flags & MS_REMOUNT) retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags, data_page); -@@ -2683,7 +2699,10 @@ long do_mount(const char *dev_name, const char __user *dir_name, +@@ -2690,7 +2730,10 @@ long do_mount(const char *dev_name, const char __user *dir_name, retval = do_new_mount(&path, type_page, flags, mnt_flags, dev_name, data_page); dput_out: @@ -72657,7 +79009,7 @@ index 38ed1e1..8500e56 100644 return retval; } -@@ -2701,7 +2720,7 @@ static void free_mnt_ns(struct mnt_namespace *ns) +@@ -2708,7 +2751,7 @@ static void free_mnt_ns(struct mnt_namespace *ns) * number incrementing at 10Ghz will take 12,427 years to wrap which * is effectively never, so we can ignore the possibility. */ @@ -72666,7 +79018,7 @@ index 38ed1e1..8500e56 100644 static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) { -@@ -2717,7 +2736,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) +@@ -2724,7 +2767,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) return ERR_PTR(ret); } new_ns->ns.ops = &mntns_operations; @@ -72675,7 +79027,7 @@ index 38ed1e1..8500e56 100644 atomic_set(&new_ns->count, 1); new_ns->root = NULL; INIT_LIST_HEAD(&new_ns->list); -@@ -2727,7 +2746,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) +@@ -2734,7 +2777,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) return new_ns; } @@ -72684,7 +79036,7 @@ index 38ed1e1..8500e56 100644 struct user_namespace *user_ns, struct fs_struct *new_fs) { struct mnt_namespace *new_ns; -@@ -2848,8 +2867,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name) +@@ -2855,8 +2898,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name) } EXPORT_SYMBOL(mount_subtree); @@ -72695,7 +79047,7 @@ index 38ed1e1..8500e56 100644 { int ret; char *kernel_type; -@@ -2955,6 +2974,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, +@@ -2962,6 +3005,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, if (error) goto out2; @@ -72707,7 +79059,7 @@ index 38ed1e1..8500e56 100644 get_fs_root(current->fs, &root); old_mp = lock_mount(&old); error = PTR_ERR(old_mp); -@@ -3235,7 +3259,7 @@ static int mntns_install(struct nsproxy *nsproxy, struct ns_common *ns) +@@ -3263,7 +3311,7 @@ static int mntns_install(struct nsproxy *nsproxy, struct ns_common *ns) !ns_capable(current_user_ns(), CAP_SYS_ADMIN)) return -EPERM; @@ -72730,10 +79082,10 @@ index 19ca95c..b28702c 100644 static struct callback_op callback_ops[]; diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c -index d42dff6..ecbdf42 100644 +index f734562..3fd6c4e 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c -@@ -1270,16 +1270,16 @@ static int nfs_ctime_need_update(const struct inode *inode, const struct nfs_fat +@@ -1275,16 +1275,16 @@ static int nfs_ctime_need_update(const struct inode *inode, const struct nfs_fat return timespec_compare(&fattr->ctime, &inode->i_ctime) > 0; } @@ -72754,7 +79106,7 @@ index d42dff6..ecbdf42 100644 EXPORT_SYMBOL_GPL(nfs_inc_attr_generation_counter); diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c -index 5416968..0942042 100644 +index 864e200..357c255 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -1496,7 +1496,7 @@ struct nfsd4_operation { @@ -72767,7 +79119,7 @@ index 5416968..0942042 100644 static struct nfsd4_operation nfsd4_ops[]; diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c -index 5b33ce1..c2a92aa 100644 +index 158badf..f7132ea 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1703,7 +1703,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p) @@ -72820,7 +79172,7 @@ index 46ec934..f384e41 100644 break; case RC_REPLBUFF: diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c -index 3685265..e77261e 100644 +index 84d770b..929bc5e 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -893,7 +893,7 @@ __be32 nfsd_readv(struct file *file, loff_t offset, struct kvec *vec, int vlen, @@ -73005,19 +79357,6 @@ index 9e38daf..5727cae 100644 ntfs_error(sb, "Out of bounds check failed. Corrupt directory " "inode 0x%lx or driver bug.", vdir->i_ino); goto err_out; -diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c -index 1da9b2d..9cca092a 100644 ---- a/fs/ntfs/file.c -+++ b/fs/ntfs/file.c -@@ -1281,7 +1281,7 @@ static inline size_t ntfs_copy_from_user(struct page **pages, - char *addr; - size_t total = 0; - unsigned len; -- int left; -+ unsigned left; - - do { - len = PAGE_CACHE_SIZE - ofs; diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c index 9e1e112..241a52a 100644 --- a/fs/ntfs/super.c @@ -73050,7 +79389,7 @@ index 9e1e112..241a52a 100644 if (bh_primary) brelse(bh_primary); diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c -index 0440134..d52c93a 100644 +index 857bbbc..3c47d15 100644 --- a/fs/ocfs2/localalloc.c +++ b/fs/ocfs2/localalloc.c @@ -1320,7 +1320,7 @@ static int ocfs2_local_alloc_slide_window(struct ocfs2_super *osb, @@ -73083,21 +79422,8 @@ index 460c6c3..b4ef513 100644 }; enum ocfs2_local_alloc_state -diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c -index ee541f9..df3a500 100644 ---- a/fs/ocfs2/refcounttree.c -+++ b/fs/ocfs2/refcounttree.c -@@ -4276,7 +4276,7 @@ static int ocfs2_reflink(struct dentry *old_dentry, struct inode *dir, - error = posix_acl_create(dir, &mode, &default_acl, &acl); - if (error) { - mlog_errno(error); -- goto out; -+ return error; - } - - error = ocfs2_create_inode_in_orphan(dir, mode, diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c -index 0cb889a..6a26b24 100644 +index 4479029..5de740b 100644 --- a/fs/ocfs2/suballoc.c +++ b/fs/ocfs2/suballoc.c @@ -867,7 +867,7 @@ static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb, @@ -73155,7 +79481,7 @@ index 0cb889a..6a26b24 100644 } } diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c -index 2667518..24bcf79 100644 +index 403c566..6525b35 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c @@ -308,11 +308,11 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len) @@ -73175,7 +79501,7 @@ index 2667518..24bcf79 100644 out += snprintf(buf + out, len - out, "%10s => State: %u Descriptor: %llu Size: %u bits " -@@ -2093,11 +2093,11 @@ static int ocfs2_initialize_super(struct super_block *sb, +@@ -2095,11 +2095,11 @@ static int ocfs2_initialize_super(struct super_block *sb, mutex_init(&osb->system_file_mutex); @@ -73193,7 +79519,7 @@ index 2667518..24bcf79 100644 /* Copy the blockcheck stats from the superblock probe */ osb->osb_ecc_stats = *stats; diff --git a/fs/open.c b/fs/open.c -index 44a3be1..5e97aa1 100644 +index 98e5a52..8e77e14 100644 --- a/fs/open.c +++ b/fs/open.c @@ -32,6 +32,8 @@ @@ -73223,7 +79549,7 @@ index 44a3be1..5e97aa1 100644 if (!error) error = do_truncate(dentry, length, ATTR_MTIME|ATTR_CTIME, f.file); sb_end_write(inode->i_sb); -@@ -392,6 +398,9 @@ retry: +@@ -396,6 +402,9 @@ retry: if (__mnt_is_readonly(path.mnt)) res = -EROFS; @@ -73233,7 +79559,7 @@ index 44a3be1..5e97aa1 100644 out_path_release: path_put(&path); if (retry_estale(res, lookup_flags)) { -@@ -423,6 +432,8 @@ retry: +@@ -427,6 +436,8 @@ retry: if (error) goto dput_and_out; @@ -73242,7 +79568,7 @@ index 44a3be1..5e97aa1 100644 set_fs_pwd(current->fs, &path); dput_and_out: -@@ -452,6 +463,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd) +@@ -456,6 +467,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd) goto out_putf; error = inode_permission(inode, MAY_EXEC | MAY_CHDIR); @@ -73256,7 +79582,7 @@ index 44a3be1..5e97aa1 100644 if (!error) set_fs_pwd(current->fs, &f.file->f_path); out_putf: -@@ -481,7 +499,13 @@ retry: +@@ -485,7 +503,13 @@ retry: if (error) goto dput_and_out; @@ -73270,7 +79596,7 @@ index 44a3be1..5e97aa1 100644 error = 0; dput_and_out: path_put(&path); -@@ -505,6 +529,16 @@ static int chmod_common(struct path *path, umode_t mode) +@@ -509,6 +533,16 @@ static int chmod_common(struct path *path, umode_t mode) return error; retry_deleg: mutex_lock(&inode->i_mutex); @@ -73287,7 +79613,7 @@ index 44a3be1..5e97aa1 100644 error = security_path_chmod(path, mode); if (error) goto out_unlock; -@@ -570,6 +604,9 @@ static int chown_common(struct path *path, uid_t user, gid_t group) +@@ -574,6 +608,9 @@ static int chown_common(struct path *path, uid_t user, gid_t group) uid = make_kuid(current_user_ns(), user); gid = make_kgid(current_user_ns(), group); @@ -73297,7 +79623,7 @@ index 44a3be1..5e97aa1 100644 retry_deleg: newattrs.ia_valid = ATTR_CTIME; if (user != (uid_t) -1) { -@@ -1017,6 +1054,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode) +@@ -1018,6 +1055,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode) } else { fsnotify_open(f); fd_install(fd, f); @@ -73305,8 +79631,22 @@ index 44a3be1..5e97aa1 100644 } } putname(tmp); +diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c +index 04f1248..60b3be1 100644 +--- a/fs/overlayfs/inode.c ++++ b/fs/overlayfs/inode.c +@@ -344,6 +344,9 @@ static int ovl_dentry_open(struct dentry *dentry, struct file *file, + enum ovl_path_type type; + bool want_write = false; + ++ if (d_is_dir(dentry)) ++ return d_backing_inode(dentry); ++ + type = ovl_path_real(dentry, &realpath); + if (ovl_open_need_copy_up(file->f_flags, type, realpath.dentry)) { + want_write = true; diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c -index 5f0d199..13b74b9 100644 +index bf8537c..c16ef7d 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -172,7 +172,7 @@ void ovl_path_lower(struct dentry *dentry, struct path *path) @@ -73330,10 +79670,10 @@ index 5f0d199..13b74b9 100644 struct ovl_entry *oe; struct ovl_fs *ufs; diff --git a/fs/pipe.c b/fs/pipe.c -index 21981e5..2c0bffb 100644 +index 8865f79..bd2c79b 100644 --- a/fs/pipe.c +++ b/fs/pipe.c -@@ -37,7 +37,7 @@ unsigned int pipe_max_size = 1048576; +@@ -36,7 +36,7 @@ unsigned int pipe_max_size = 1048576; /* * Minimum pipe size, as required by POSIX */ @@ -73342,7 +79682,7 @@ index 21981e5..2c0bffb 100644 /* * We use a start+len construction, which provides full use of the -@@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE; +@@ -55,7 +55,7 @@ unsigned int pipe_min_size = PAGE_SIZE; static void pipe_lock_nested(struct pipe_inode_info *pipe, int subclass) { @@ -73351,7 +79691,7 @@ index 21981e5..2c0bffb 100644 mutex_lock_nested(&pipe->mutex, subclass); } -@@ -71,7 +71,7 @@ EXPORT_SYMBOL(pipe_lock); +@@ -70,7 +70,7 @@ EXPORT_SYMBOL(pipe_lock); void pipe_unlock(struct pipe_inode_info *pipe) { @@ -73360,7 +79700,7 @@ index 21981e5..2c0bffb 100644 mutex_unlock(&pipe->mutex); } EXPORT_SYMBOL(pipe_unlock); -@@ -292,9 +292,9 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to) +@@ -291,9 +291,9 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to) } if (bufs) /* More to do? */ continue; @@ -73372,7 +79712,7 @@ index 21981e5..2c0bffb 100644 /* syscall merging: Usually we must not sleep * if O_NONBLOCK is set, or if we got some data. * But if a writer sleeps in kernel space, then -@@ -351,7 +351,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) +@@ -350,7 +350,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) __pipe_lock(pipe); @@ -73381,7 +79721,7 @@ index 21981e5..2c0bffb 100644 send_sig(SIGPIPE, current, 0); ret = -EPIPE; goto out; -@@ -387,7 +387,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) +@@ -386,7 +386,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) for (;;) { int bufs; @@ -73390,7 +79730,7 @@ index 21981e5..2c0bffb 100644 send_sig(SIGPIPE, current, 0); if (!ret) ret = -EPIPE; -@@ -455,9 +455,9 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) +@@ -454,9 +454,9 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); do_wakeup = 0; } @@ -73402,7 +79742,7 @@ index 21981e5..2c0bffb 100644 } out: __pipe_unlock(pipe); -@@ -512,7 +512,7 @@ pipe_poll(struct file *filp, poll_table *wait) +@@ -511,7 +511,7 @@ pipe_poll(struct file *filp, poll_table *wait) mask = 0; if (filp->f_mode & FMODE_READ) { mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0; @@ -73411,7 +79751,7 @@ index 21981e5..2c0bffb 100644 mask |= POLLHUP; } -@@ -522,7 +522,7 @@ pipe_poll(struct file *filp, poll_table *wait) +@@ -521,7 +521,7 @@ pipe_poll(struct file *filp, poll_table *wait) * Most Unices do not set POLLERR for FIFOs but on Linux they * behave exactly like pipes for poll(). */ @@ -73420,7 +79760,7 @@ index 21981e5..2c0bffb 100644 mask |= POLLERR; } -@@ -534,7 +534,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe) +@@ -533,7 +533,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe) int kill = 0; spin_lock(&inode->i_lock); @@ -73429,7 +79769,7 @@ index 21981e5..2c0bffb 100644 inode->i_pipe = NULL; kill = 1; } -@@ -551,11 +551,11 @@ pipe_release(struct inode *inode, struct file *file) +@@ -550,11 +550,11 @@ pipe_release(struct inode *inode, struct file *file) __pipe_lock(pipe); if (file->f_mode & FMODE_READ) @@ -73444,7 +79784,7 @@ index 21981e5..2c0bffb 100644 wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP); kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); -@@ -620,7 +620,7 @@ void free_pipe_info(struct pipe_inode_info *pipe) +@@ -619,7 +619,7 @@ void free_pipe_info(struct pipe_inode_info *pipe) kfree(pipe); } @@ -73453,7 +79793,7 @@ index 21981e5..2c0bffb 100644 /* * pipefs_dname() is called from d_path(). -@@ -650,8 +650,9 @@ static struct inode * get_pipe_inode(void) +@@ -649,8 +649,9 @@ static struct inode * get_pipe_inode(void) goto fail_iput; inode->i_pipe = pipe; @@ -73465,7 +79805,7 @@ index 21981e5..2c0bffb 100644 inode->i_fop = &pipefifo_fops; /* -@@ -830,17 +831,17 @@ static int fifo_open(struct inode *inode, struct file *filp) +@@ -829,17 +830,17 @@ static int fifo_open(struct inode *inode, struct file *filp) spin_lock(&inode->i_lock); if (inode->i_pipe) { pipe = inode->i_pipe; @@ -73486,7 +79826,7 @@ index 21981e5..2c0bffb 100644 spin_unlock(&inode->i_lock); free_pipe_info(pipe); pipe = inode->i_pipe; -@@ -865,10 +866,10 @@ static int fifo_open(struct inode *inode, struct file *filp) +@@ -864,10 +865,10 @@ static int fifo_open(struct inode *inode, struct file *filp) * opened, even when there is no process writing the FIFO. */ pipe->r_counter++; @@ -73499,7 +79839,7 @@ index 21981e5..2c0bffb 100644 if ((filp->f_flags & O_NONBLOCK)) { /* suppress POLLHUP until we have * seen a writer */ -@@ -887,14 +888,14 @@ static int fifo_open(struct inode *inode, struct file *filp) +@@ -886,14 +887,14 @@ static int fifo_open(struct inode *inode, struct file *filp) * errno=ENXIO when there is no process reading the FIFO. */ ret = -ENXIO; @@ -73517,7 +79857,7 @@ index 21981e5..2c0bffb 100644 if (wait_for_partner(pipe, &pipe->r_counter)) goto err_wr; } -@@ -908,11 +909,11 @@ static int fifo_open(struct inode *inode, struct file *filp) +@@ -907,11 +908,11 @@ static int fifo_open(struct inode *inode, struct file *filp) * the process can at least talk to itself. */ @@ -73532,7 +79872,7 @@ index 21981e5..2c0bffb 100644 wake_up_partner(pipe); break; -@@ -926,13 +927,13 @@ static int fifo_open(struct inode *inode, struct file *filp) +@@ -925,13 +926,13 @@ static int fifo_open(struct inode *inode, struct file *filp) return 0; err_rd: @@ -73548,7 +79888,7 @@ index 21981e5..2c0bffb 100644 wake_up_interruptible(&pipe->wait); ret = -ERESTARTSYS; goto err; -@@ -1010,7 +1011,7 @@ static long pipe_set_size(struct pipe_inode_info *pipe, unsigned long nr_pages) +@@ -1007,7 +1008,7 @@ static long pipe_set_size(struct pipe_inode_info *pipe, unsigned long nr_pages) * Currently we rely on the pipe array holding a power-of-2 number * of pages. */ @@ -73557,7 +79897,7 @@ index 21981e5..2c0bffb 100644 { unsigned long nr_pages; -@@ -1058,13 +1059,16 @@ long pipe_fcntl(struct file *file, unsigned int cmd, unsigned long arg) +@@ -1055,13 +1056,16 @@ long pipe_fcntl(struct file *file, unsigned int cmd, unsigned long arg) switch (cmd) { case F_SETPIPE_SZ: { @@ -73577,8 +79917,21 @@ index 21981e5..2c0bffb 100644 goto out; if (!capable(CAP_SYS_RESOURCE) && size > pipe_max_size) { +diff --git a/fs/pnode.h b/fs/pnode.h +index 7114ce6..0fcdbe7 100644 +--- a/fs/pnode.h ++++ b/fs/pnode.h +@@ -20,8 +20,6 @@ + #define SET_MNT_MARK(m) ((m)->mnt.mnt_flags |= MNT_MARKED) + #define CLEAR_MNT_MARK(m) ((m)->mnt.mnt_flags &= ~MNT_MARKED) + #define IS_MNT_LOCKED(m) ((m)->mnt.mnt_flags & MNT_LOCKED) +-#define IS_MNT_LOCKED_AND_LAZY(m) \ +- (((m)->mnt.mnt_flags & (MNT_LOCKED|MNT_SYNC_UMOUNT)) == MNT_LOCKED) + + #define CL_EXPIRE 0x01 + #define CL_SLAVE 0x02 diff --git a/fs/posix_acl.c b/fs/posix_acl.c -index 3a48bb7..403067b 100644 +index 84bb65b8..4270e47 100644 --- a/fs/posix_acl.c +++ b/fs/posix_acl.c @@ -20,6 +20,7 @@ @@ -73694,7 +80047,7 @@ index 2183fcf..3c32a98 100644 help Various /proc files exist to monitor process memory utilization: diff --git a/fs/proc/array.c b/fs/proc/array.c -index 1295a00..4c91a6b 100644 +index fd02a9e..7bc9dff 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -60,6 +60,7 @@ @@ -73705,7 +80058,7 @@ index 1295a00..4c91a6b 100644 #include #include #include -@@ -322,6 +323,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) +@@ -340,6 +341,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) cpumask_pr_args(&task->cpus_allowed)); } @@ -73727,7 +80080,7 @@ index 1295a00..4c91a6b 100644 int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task) { -@@ -340,9 +356,24 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, +@@ -358,9 +374,24 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns, task_cpus_allowed(m, task); cpuset_task_status_allowed(m, task); task_context_switch_counts(m, task); @@ -73752,7 +80105,7 @@ index 1295a00..4c91a6b 100644 static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task, int whole) { -@@ -364,6 +395,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, +@@ -382,6 +413,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, char tcomm[sizeof(task->comm)]; unsigned long flags; @@ -73766,7 +80119,7 @@ index 1295a00..4c91a6b 100644 state = *get_task_state(task); vsize = eip = esp = 0; permitted = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT); -@@ -434,6 +472,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, +@@ -452,6 +490,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, gtime = task_gtime(task); } @@ -73786,7 +80139,7 @@ index 1295a00..4c91a6b 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); -@@ -465,9 +516,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, +@@ -483,9 +534,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, seq_put_decimal_ull(m, ' ', vsize); seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0); seq_put_decimal_ull(m, ' ', rsslim); @@ -73802,7 +80155,7 @@ index 1295a00..4c91a6b 100644 seq_put_decimal_ull(m, ' ', esp); seq_put_decimal_ull(m, ' ', eip); /* The signal information here is obsolete. -@@ -489,7 +546,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, +@@ -507,7 +564,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime)); seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime)); @@ -73815,7 +80168,7 @@ index 1295a00..4c91a6b 100644 seq_put_decimal_ull(m, ' ', mm->start_data); seq_put_decimal_ull(m, ' ', mm->end_data); seq_put_decimal_ull(m, ' ', mm->start_brk); -@@ -527,8 +588,15 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, +@@ -545,8 +606,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; @@ -73832,7 +80185,7 @@ index 1295a00..4c91a6b 100644 if (mm) { size = task_statm(mm, &shared, &text, &data, &resident); mmput(mm); -@@ -551,6 +619,20 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, +@@ -569,6 +637,20 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, return 0; } @@ -73854,7 +80207,7 @@ index 1295a00..4c91a6b 100644 static struct pid * get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos) diff --git a/fs/proc/base.c b/fs/proc/base.c -index 3f3d7ae..68de109 100644 +index 093ca14..322f097 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -113,6 +113,14 @@ struct pid_entry { @@ -73910,7 +80263,7 @@ index 3f3d7ae..68de109 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. -@@ -265,7 +289,7 @@ static void unlock_trace(struct task_struct *task) +@@ -267,7 +291,7 @@ static void unlock_trace(struct task_struct *task) mutex_unlock(&task->signal->cred_guard_mutex); } @@ -73919,7 +80272,7 @@ index 3f3d7ae..68de109 100644 #define MAX_STACK_TRACE_DEPTH 64 -@@ -456,7 +480,7 @@ static int proc_pid_limits(struct seq_file *m, struct pid_namespace *ns, +@@ -462,7 +486,7 @@ static int proc_pid_limits(struct seq_file *m, struct pid_namespace *ns, return 0; } @@ -73928,7 +80281,7 @@ index 3f3d7ae..68de109 100644 static int proc_pid_syscall(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task) { -@@ -486,7 +510,7 @@ static int proc_pid_syscall(struct seq_file *m, struct pid_namespace *ns, +@@ -495,7 +519,7 @@ static int proc_pid_syscall(struct seq_file *m, struct pid_namespace *ns, /************************************************************************/ /* permission checks */ @@ -73937,7 +80290,7 @@ index 3f3d7ae..68de109 100644 { struct task_struct *task; int allowed = 0; -@@ -496,7 +520,10 @@ static int proc_fd_access_allowed(struct inode *inode) +@@ -505,7 +529,10 @@ static int proc_fd_access_allowed(struct inode *inode) */ task = get_proc_task(inode); if (task) { @@ -73949,7 +80302,7 @@ index 3f3d7ae..68de109 100644 put_task_struct(task); } return allowed; -@@ -527,10 +554,35 @@ static bool has_pid_permissions(struct pid_namespace *pid, +@@ -536,10 +563,35 @@ static bool has_pid_permissions(struct pid_namespace *pid, struct task_struct *task, int hide_pid_min) { @@ -73985,7 +80338,7 @@ index 3f3d7ae..68de109 100644 return ptrace_may_access(task, PTRACE_MODE_READ); } -@@ -548,7 +600,11 @@ static int proc_pid_permission(struct inode *inode, int mask) +@@ -557,7 +609,11 @@ static int proc_pid_permission(struct inode *inode, int mask) put_task_struct(task); if (!has_perms) { @@ -73997,7 +80350,7 @@ index 3f3d7ae..68de109 100644 /* * Let's make getdents(), stat(), and open() * consistent with each other. If a process -@@ -609,6 +665,10 @@ struct mm_struct *proc_mem_open(struct inode *inode, unsigned int mode) +@@ -618,6 +674,10 @@ struct mm_struct *proc_mem_open(struct inode *inode, unsigned int mode) if (task) { mm = mm_access(task, mode); @@ -74008,7 +80361,7 @@ index 3f3d7ae..68de109 100644 put_task_struct(task); if (!IS_ERR_OR_NULL(mm)) { -@@ -630,6 +690,11 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode) +@@ -639,6 +699,11 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode) return PTR_ERR(mm); file->private_data = mm; @@ -74020,7 +80373,7 @@ index 3f3d7ae..68de109 100644 return 0; } -@@ -651,6 +716,17 @@ static ssize_t mem_rw(struct file *file, char __user *buf, +@@ -660,6 +725,17 @@ static ssize_t mem_rw(struct file *file, char __user *buf, ssize_t copied; char *page; @@ -74038,7 +80391,7 @@ index 3f3d7ae..68de109 100644 if (!mm) return 0; -@@ -663,7 +739,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf, +@@ -672,7 +748,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf, goto free; while (count > 0) { @@ -74047,7 +80400,7 @@ index 3f3d7ae..68de109 100644 if (write && copy_from_user(page, buf, this_len)) { copied = -EFAULT; -@@ -755,6 +831,13 @@ static ssize_t environ_read(struct file *file, char __user *buf, +@@ -764,6 +840,13 @@ static ssize_t environ_read(struct file *file, char __user *buf, if (!mm) return 0; @@ -74061,7 +80414,7 @@ index 3f3d7ae..68de109 100644 page = (char *)__get_free_page(GFP_TEMPORARY); if (!page) return -ENOMEM; -@@ -764,7 +847,7 @@ static ssize_t environ_read(struct file *file, char __user *buf, +@@ -773,7 +856,7 @@ static ssize_t environ_read(struct file *file, char __user *buf, goto free; while (count > 0) { size_t this_len, max_len; @@ -74070,7 +80423,7 @@ index 3f3d7ae..68de109 100644 if (src >= (mm->env_end - mm->env_start)) break; -@@ -1378,7 +1461,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd) +@@ -1387,7 +1470,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd) int error = -EACCES; /* Are we allowed to snoop on the tasks file descriptors? */ @@ -74079,7 +80432,7 @@ index 3f3d7ae..68de109 100644 goto out; error = PROC_I(inode)->op.proc_get_link(dentry, &path); -@@ -1422,8 +1505,18 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b +@@ -1431,8 +1514,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? */ @@ -74100,7 +80453,7 @@ index 3f3d7ae..68de109 100644 error = PROC_I(inode)->op.proc_get_link(dentry, &path); if (error) -@@ -1473,7 +1566,11 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t +@@ -1482,7 +1575,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; @@ -74112,7 +80465,7 @@ index 3f3d7ae..68de109 100644 rcu_read_unlock(); } security_task_to_inode(task, inode); -@@ -1509,10 +1606,19 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) +@@ -1518,10 +1615,19 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) return -ENOENT; } if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) || @@ -74132,7 +80485,7 @@ index 3f3d7ae..68de109 100644 } } rcu_read_unlock(); -@@ -1550,11 +1656,20 @@ int pid_revalidate(struct dentry *dentry, unsigned int flags) +@@ -1559,11 +1665,20 @@ int pid_revalidate(struct dentry *dentry, unsigned int flags) if (task) { if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) || @@ -74153,7 +80506,7 @@ index 3f3d7ae..68de109 100644 rcu_read_unlock(); } else { inode->i_uid = GLOBAL_ROOT_UID; -@@ -2085,6 +2200,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir, +@@ -2095,6 +2210,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir, if (!task) goto out_no_task; @@ -74163,7 +80516,7 @@ index 3f3d7ae..68de109 100644 /* * Yes, it does not scale. And it should not. Don't add * new entries into /proc// without very good reasons. -@@ -2115,6 +2233,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx, +@@ -2125,6 +2243,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx, if (!task) return -ENOENT; @@ -74173,7 +80526,7 @@ index 3f3d7ae..68de109 100644 if (!dir_emit_dots(file, ctx)) goto out; -@@ -2557,7 +2678,7 @@ static const struct pid_entry tgid_base_stuff[] = { +@@ -2569,7 +2690,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), @@ -74182,7 +80535,7 @@ index 3f3d7ae..68de109 100644 ONE("syscall", S_IRUSR, proc_pid_syscall), #endif ONE("cmdline", S_IRUGO, proc_pid_cmdline), -@@ -2582,10 +2703,10 @@ static const struct pid_entry tgid_base_stuff[] = { +@@ -2594,10 +2715,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 @@ -74195,7 +80548,7 @@ index 3f3d7ae..68de109 100644 ONE("stack", S_IRUSR, proc_pid_stack), #endif #ifdef CONFIG_SCHEDSTATS -@@ -2619,6 +2740,9 @@ static const struct pid_entry tgid_base_stuff[] = { +@@ -2631,6 +2752,9 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_HARDWALL ONE("hardwall", S_IRUGO, proc_pid_hardwall), #endif @@ -74205,7 +80558,7 @@ index 3f3d7ae..68de109 100644 #ifdef CONFIG_USER_NS REG("uid_map", S_IRUGO|S_IWUSR, proc_uid_map_operations), REG("gid_map", S_IRUGO|S_IWUSR, proc_gid_map_operations), -@@ -2751,7 +2875,14 @@ static int proc_pid_instantiate(struct inode *dir, +@@ -2763,7 +2887,14 @@ static int proc_pid_instantiate(struct inode *dir, if (!inode) goto out; @@ -74220,7 +80573,7 @@ index 3f3d7ae..68de109 100644 inode->i_op = &proc_tgid_base_inode_operations; inode->i_fop = &proc_tgid_base_operations; inode->i_flags|=S_IMMUTABLE; -@@ -2789,7 +2920,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign +@@ -2801,7 +2932,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign if (!task) goto out; @@ -74232,7 +80585,7 @@ index 3f3d7ae..68de109 100644 put_task_struct(task); out: return ERR_PTR(result); -@@ -2903,7 +3038,7 @@ static const struct pid_entry tid_base_stuff[] = { +@@ -2915,7 +3050,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), @@ -74241,7 +80594,7 @@ index 3f3d7ae..68de109 100644 ONE("syscall", S_IRUSR, proc_pid_syscall), #endif ONE("cmdline", S_IRUGO, proc_pid_cmdline), -@@ -2930,10 +3065,10 @@ static const struct pid_entry tid_base_stuff[] = { +@@ -2942,10 +3077,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 @@ -74287,10 +80640,10 @@ index 50493ed..248166b 100644 } fs_initcall(proc_devices_init); diff --git a/fs/proc/fd.c b/fs/proc/fd.c -index 8e5ad83..1f07a8c 100644 +index 6e5fcd0..06ea074 100644 --- a/fs/proc/fd.c +++ b/fs/proc/fd.c -@@ -26,7 +26,8 @@ static int seq_show(struct seq_file *m, void *v) +@@ -27,7 +27,8 @@ static int seq_show(struct seq_file *m, void *v) if (!task) return -ENOENT; @@ -74300,7 +80653,7 @@ index 8e5ad83..1f07a8c 100644 put_task_struct(task); if (files) { -@@ -284,11 +285,21 @@ static struct dentry *proc_lookupfd(struct inode *dir, struct dentry *dentry, +@@ -291,11 +292,21 @@ static struct dentry *proc_lookupfd(struct inode *dir, struct dentry *dentry, */ int proc_fd_permission(struct inode *inode, int mask) { @@ -74325,7 +80678,7 @@ index 8e5ad83..1f07a8c 100644 } diff --git a/fs/proc/generic.c b/fs/proc/generic.c -index be65b20..2998ba8 100644 +index e5dee5c..dafe21b 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c @@ -22,6 +22,7 @@ @@ -74395,7 +80748,7 @@ index be65b20..2998ba8 100644 static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp) { int ret; -@@ -441,6 +473,31 @@ struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode, +@@ -445,6 +477,31 @@ struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode, } EXPORT_SYMBOL_GPL(proc_mkdir_data); @@ -74427,7 +80780,7 @@ index be65b20..2998ba8 100644 struct proc_dir_entry *proc_mkdir_mode(const char *name, umode_t mode, struct proc_dir_entry *parent) { -@@ -455,6 +512,13 @@ struct proc_dir_entry *proc_mkdir(const char *name, +@@ -459,6 +516,13 @@ struct proc_dir_entry *proc_mkdir(const char *name, } EXPORT_SYMBOL(proc_mkdir); @@ -74438,11 +80791,11 @@ index be65b20..2998ba8 100644 +} +EXPORT_SYMBOL(proc_mkdir_restrict); + - struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, - struct proc_dir_entry *parent, - const struct file_operations *proc_fops, + struct proc_dir_entry *proc_create_mount_point(const char *name) + { + umode_t mode = S_IFDIR | S_IRUGO | S_IXUGO; diff --git a/fs/proc/inode.c b/fs/proc/inode.c -index 7697b66..8d8e541 100644 +index e3eb552..bcb0f25 100644 --- a/fs/proc/inode.c +++ b/fs/proc/inode.c @@ -24,11 +24,17 @@ @@ -74477,7 +80830,7 @@ index 7697b66..8d8e541 100644 } static struct kmem_cache * proc_inode_cachep; -@@ -426,7 +439,11 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) +@@ -430,7 +443,11 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) if (de->mode) { inode->i_mode = de->mode; inode->i_uid = de->uid; @@ -74490,7 +80843,7 @@ index 7697b66..8d8e541 100644 if (de->size) inode->i_size = de->size; diff --git a/fs/proc/internal.h b/fs/proc/internal.h -index c835b94..c9e01a3 100644 +index aa27810..9f2d3b2 100644 --- a/fs/proc/internal.h +++ b/fs/proc/internal.h @@ -47,9 +47,10 @@ struct proc_dir_entry { @@ -74649,7 +81002,7 @@ index d4a3574..b421ce9 100644 seq_putc(m, '\n'); diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c -index 1bde894..22ac7eb 100644 +index 350984a..0fb02a9 100644 --- a/fs/proc/proc_net.c +++ b/fs/proc/proc_net.c @@ -23,9 +23,27 @@ @@ -74715,7 +81068,7 @@ index 1bde894..22ac7eb 100644 net = get_proc_net(inode); if (net == NULL) diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c -index f92d5dd..26398ac 100644 +index fdda62e..cd7c75f 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -11,13 +11,21 @@ @@ -74740,9 +81093,29 @@ index f92d5dd..26398ac 100644 -static const struct inode_operations proc_sys_dir_operations; +const struct inode_operations proc_sys_dir_operations; - void proc_sys_poll_notify(struct ctl_table_poll *poll) + /* Support for permanently empty directories */ + +@@ -32,13 +40,17 @@ static bool is_empty_dir(struct ctl_table_header *head) + + static void set_empty_dir(struct ctl_dir *dir) + { +- dir->header.ctl_table[0].child = sysctl_mount_point; ++ pax_open_kernel(); ++ *(const void **)&dir->header.ctl_table[0].child = sysctl_mount_point; ++ pax_close_kernel(); + } + + static void clear_empty_dir(struct ctl_dir *dir) + { -@@ -467,6 +475,9 @@ static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry, +- dir->header.ctl_table[0].child = NULL; ++ pax_open_kernel(); ++ *(void **)&dir->header.ctl_table[0].child = NULL; ++ pax_close_kernel(); + } + + void proc_sys_poll_notify(struct ctl_table_poll *poll) +@@ -504,6 +516,9 @@ static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry, err = NULL; d_set_d_op(dentry, &proc_sys_dentry_operations); @@ -74752,7 +81125,7 @@ index f92d5dd..26398ac 100644 d_add(dentry, inode); out: -@@ -482,6 +493,7 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf, +@@ -519,6 +534,7 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf, struct inode *inode = file_inode(filp); struct ctl_table_header *head = grab_header(inode); struct ctl_table *table = PROC_I(inode)->sysctl_entry; @@ -74760,7 +81133,7 @@ index f92d5dd..26398ac 100644 ssize_t error; size_t res; -@@ -493,7 +505,7 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf, +@@ -530,7 +546,7 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf, * and won't be until we finish. */ error = -EPERM; @@ -74769,7 +81142,7 @@ index f92d5dd..26398ac 100644 goto out; /* if that can happen at all, it should be -EINVAL, not -EISDIR */ -@@ -501,6 +513,27 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf, +@@ -538,6 +554,27 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf, if (!table->proc_handler) goto out; @@ -74797,7 +81170,7 @@ index f92d5dd..26398ac 100644 /* careful: calling conventions are nasty here */ res = count; error = table->proc_handler(table, write, buf, &res, ppos); -@@ -598,6 +631,9 @@ static bool proc_sys_fill_cache(struct file *file, +@@ -635,6 +672,9 @@ static bool proc_sys_fill_cache(struct file *file, return false; } else { d_set_d_op(child, &proc_sys_dentry_operations); @@ -74807,7 +81180,7 @@ index f92d5dd..26398ac 100644 d_add(child, inode); } } else { -@@ -641,6 +677,9 @@ static int scan(struct ctl_table_header *head, struct ctl_table *table, +@@ -678,6 +718,9 @@ static int scan(struct ctl_table_header *head, struct ctl_table *table, if ((*pos)++ < ctx->pos) return true; @@ -74817,7 +81190,7 @@ index f92d5dd..26398ac 100644 if (unlikely(S_ISLNK(table->mode))) res = proc_sys_link_fill_cache(file, ctx, head, table); else -@@ -734,6 +773,9 @@ static int proc_sys_getattr(struct vfsmount *mnt, struct dentry *dentry, struct +@@ -771,6 +814,9 @@ static int proc_sys_getattr(struct vfsmount *mnt, struct dentry *dentry, struct if (IS_ERR(head)) return PTR_ERR(head); @@ -74827,7 +81200,7 @@ index f92d5dd..26398ac 100644 generic_fillattr(inode, stat); if (table) stat->mode = (stat->mode & S_IFMT) | table->mode; -@@ -756,13 +798,13 @@ static const struct file_operations proc_sys_dir_file_operations = { +@@ -793,13 +839,13 @@ static const struct file_operations proc_sys_dir_file_operations = { .llseek = generic_file_llseek, }; @@ -74843,7 +81216,7 @@ index f92d5dd..26398ac 100644 .lookup = proc_sys_lookup, .permission = proc_sys_permission, .setattr = proc_sys_setattr, -@@ -839,7 +881,7 @@ static struct ctl_dir *find_subdir(struct ctl_dir *dir, +@@ -876,7 +922,7 @@ static struct ctl_dir *find_subdir(struct ctl_dir *dir, static struct ctl_dir *new_dir(struct ctl_table_set *set, const char *name, int namelen) { @@ -74852,7 +81225,7 @@ index f92d5dd..26398ac 100644 struct ctl_dir *new; struct ctl_node *node; char *new_name; -@@ -851,7 +893,7 @@ static struct ctl_dir *new_dir(struct ctl_table_set *set, +@@ -888,7 +934,7 @@ static struct ctl_dir *new_dir(struct ctl_table_set *set, return NULL; node = (struct ctl_node *)(new + 1); @@ -74861,7 +81234,7 @@ index f92d5dd..26398ac 100644 new_name = (char *)(table + 2); memcpy(new_name, name, namelen); new_name[namelen] = '\0'; -@@ -1020,7 +1062,8 @@ static int sysctl_check_table(const char *path, struct ctl_table *table) +@@ -1057,7 +1103,8 @@ static int sysctl_check_table(const char *path, struct ctl_table *table) static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table *table, struct ctl_table_root *link_root) { @@ -74871,7 +81244,7 @@ index f92d5dd..26398ac 100644 struct ctl_table_header *links; struct ctl_node *node; char *link_name; -@@ -1043,7 +1086,7 @@ static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table +@@ -1080,7 +1127,7 @@ static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table return NULL; node = (struct ctl_node *)(links + 1); @@ -74880,7 +81253,7 @@ index f92d5dd..26398ac 100644 link_name = (char *)&link_table[nr_entries + 1]; for (link = link_table, entry = table; entry->procname; link++, entry++) { -@@ -1291,8 +1334,8 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, +@@ -1328,8 +1375,8 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, struct ctl_table_header ***subheader, struct ctl_table_set *set, struct ctl_table *table) { @@ -74891,7 +81264,7 @@ index f92d5dd..26398ac 100644 int nr_files = 0; int nr_dirs = 0; int err = -ENOMEM; -@@ -1304,10 +1347,9 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, +@@ -1341,10 +1388,9 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, nr_files++; } @@ -74903,7 +81276,7 @@ index f92d5dd..26398ac 100644 files = kzalloc(sizeof(struct ctl_table) * (nr_files + 1), GFP_KERNEL); if (!files) -@@ -1325,7 +1367,7 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, +@@ -1362,7 +1408,7 @@ static int register_leaf_sysctl_tables(const char *path, char *pos, /* Register everything except a directory full of subdirectories */ if (nr_files || !nr_dirs) { struct ctl_table_header *header; @@ -74913,11 +81286,11 @@ index f92d5dd..26398ac 100644 kfree(ctl_table_arg); goto out; diff --git a/fs/proc/root.c b/fs/proc/root.c -index e74ac9f..35e89f4 100644 +index 68feb0f..2c04780 100644 --- a/fs/proc/root.c +++ b/fs/proc/root.c -@@ -188,7 +188,15 @@ void __init proc_root_init(void) - proc_mkdir("openprom", NULL); +@@ -185,7 +185,15 @@ void __init proc_root_init(void) + proc_create_mount_point("openprom"); #endif proc_tty_init(); +#ifdef CONFIG_GRKERNSEC_PROC_ADD @@ -75354,10 +81727,10 @@ index bb2869f..d34ada8 100644 if (!msg_head) { printk(KERN_ERR diff --git a/fs/read_write.c b/fs/read_write.c -index 8e1b687..bad2eec 100644 +index 819ef3f..f07222d 100644 --- a/fs/read_write.c +++ b/fs/read_write.c -@@ -553,7 +553,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t +@@ -505,7 +505,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t old_fs = get_fs(); set_fs(get_ds()); @@ -75365,7 +81738,7 @@ index 8e1b687..bad2eec 100644 + p = (const char __force_user *)buf; if (count > MAX_RW_COUNT) count = MAX_RW_COUNT; - if (file->f_op->write) + ret = __vfs_write(file, p, count, pos); diff --git a/fs/readdir.c b/fs/readdir.c index ced6791..936687b 100644 --- a/fs/readdir.c @@ -75520,7 +81893,7 @@ index 621b9f3..af527fd 100644 SF(s_do_balance), SF(s_unneeded_left_neighbor), SF(s_good_search_by_key_reada), SF(s_bmaps), diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h -index bb79cdd..fcf49ef 100644 +index 2adcde1..7d27bc8 100644 --- a/fs/reiserfs/reiserfs.h +++ b/fs/reiserfs/reiserfs.h @@ -580,7 +580,7 @@ struct reiserfs_sb_info { @@ -75532,7 +81905,7 @@ index bb79cdd..fcf49ef 100644 /* File system properties. Currently holds on-disk FS format */ unsigned long s_properties; -@@ -2301,7 +2301,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode) +@@ -2300,7 +2300,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode) #define REISERFS_USER_MEM 1 /* user memory mode */ #define fs_generation(s) (REISERFS_SB(s)->s_generation_counter) @@ -75542,7 +81915,7 @@ index bb79cdd..fcf49ef 100644 #define __fs_changed(gen,s) (gen != get_generation (s)) #define fs_changed(gen,s) \ diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c -index 71fbbe3..eff29ba 100644 +index 0111ad0..00f4749 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c @@ -1868,6 +1868,10 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent) @@ -75671,10 +82044,10 @@ index 555f821..34684d7 100644 { const struct seq_operations *op = ((struct seq_file *)file->private_data)->op; diff --git a/fs/splice.c b/fs/splice.c -index 7968da9..4ce985b 100644 +index bfe62ae..a84920d 100644 --- a/fs/splice.c +++ b/fs/splice.c -@@ -193,7 +193,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, +@@ -192,7 +192,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, pipe_lock(pipe); for (;;) { @@ -75683,7 +82056,7 @@ index 7968da9..4ce985b 100644 send_sig(SIGPIPE, current, 0); if (!ret) ret = -EPIPE; -@@ -216,7 +216,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, +@@ -215,7 +215,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, page_nr++; ret += buf->len; @@ -75692,7 +82065,7 @@ index 7968da9..4ce985b 100644 do_wakeup = 1; if (!--spd->nr_pages) -@@ -247,9 +247,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, +@@ -246,9 +246,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, do_wakeup = 0; } @@ -75704,7 +82077,7 @@ index 7968da9..4ce985b 100644 } pipe_unlock(pipe); -@@ -576,7 +576,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec, +@@ -578,7 +578,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() */ @@ -75713,7 +82086,7 @@ index 7968da9..4ce985b 100644 set_fs(old_fs); return res; -@@ -591,7 +591,7 @@ ssize_t kernel_write(struct file *file, const char *buf, size_t count, +@@ -593,7 +593,7 @@ 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() */ @@ -75722,7 +82095,7 @@ index 7968da9..4ce985b 100644 set_fs(old_fs); return res; -@@ -644,7 +644,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos, +@@ -646,7 +646,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); @@ -75731,7 +82104,7 @@ index 7968da9..4ce985b 100644 vec[i].iov_len = this_len; spd.pages[i] = page; spd.nr_pages++; -@@ -783,7 +783,7 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des +@@ -785,7 +785,7 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des ops->release(pipe, buf); pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1); pipe->nrbufs--; @@ -75740,7 +82113,7 @@ index 7968da9..4ce985b 100644 sd->need_wakeup = true; } -@@ -807,10 +807,10 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des +@@ -809,10 +809,10 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd) { while (!pipe->nrbufs) { @@ -75753,7 +82126,7 @@ index 7968da9..4ce985b 100644 return 0; if (sd->flags & SPLICE_F_NONBLOCK) -@@ -1025,7 +1025,7 @@ iter_file_splice_write(struct pipe_inode_info *pipe, struct file *out, +@@ -1027,7 +1027,7 @@ iter_file_splice_write(struct pipe_inode_info *pipe, struct file *out, ops->release(pipe, buf); pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1); pipe->nrbufs--; @@ -75762,16 +82135,7 @@ index 7968da9..4ce985b 100644 sd.need_wakeup = true; } else { buf->offset += ret; -@@ -1159,7 +1159,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, - long ret, bytes; - umode_t i_mode; - size_t len; -- int i, flags; -+ int i, flags, more; - - /* - * We require the input being a regular file, as we don't want to -@@ -1185,7 +1185,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, +@@ -1187,7 +1187,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. */ @@ -75780,31 +82144,7 @@ index 7968da9..4ce985b 100644 current->splice_pipe = pipe; } -@@ -1202,6 +1202,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, - * Don't block on output, we have to drain the direct pipe. - */ - sd->flags &= ~SPLICE_F_NONBLOCK; -+ more = sd->flags & SPLICE_F_MORE; - - while (len) { - size_t read_len; -@@ -1215,6 +1216,15 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, - sd->total_len = read_len; - - /* -+ * If more data is pending, set SPLICE_F_MORE -+ * If this is the last data and SPLICE_F_MORE was not set -+ * initially, clears it. -+ */ -+ if (read_len < len) -+ sd->flags |= SPLICE_F_MORE; -+ else if (!more) -+ sd->flags &= ~SPLICE_F_MORE; -+ /* - * NOTE: nonblocking mode only applies to the input. We - * must not do the output in nonblocking mode as then we - * could get stuck data in the internal pipe: -@@ -1482,6 +1492,7 @@ static int get_iovec_page_array(const struct iovec __user *iov, +@@ -1494,6 +1494,7 @@ static int get_iovec_page_array(const struct iovec __user *iov, partial[buffers].offset = off; partial[buffers].len = plen; @@ -75812,7 +82152,7 @@ index 7968da9..4ce985b 100644 off = 0; len -= plen; -@@ -1718,9 +1729,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags) +@@ -1725,9 +1726,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags) ret = -ERESTARTSYS; break; } @@ -75824,7 +82164,7 @@ index 7968da9..4ce985b 100644 if (flags & SPLICE_F_NONBLOCK) { ret = -EAGAIN; break; -@@ -1752,7 +1763,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) +@@ -1759,7 +1760,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) pipe_lock(pipe); while (pipe->nrbufs >= pipe->buffers) { @@ -75833,7 +82173,7 @@ index 7968da9..4ce985b 100644 send_sig(SIGPIPE, current, 0); ret = -EPIPE; break; -@@ -1765,9 +1776,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) +@@ -1772,9 +1773,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) ret = -ERESTARTSYS; break; } @@ -75845,7 +82185,7 @@ index 7968da9..4ce985b 100644 } pipe_unlock(pipe); -@@ -1803,14 +1814,14 @@ retry: +@@ -1810,14 +1811,14 @@ retry: pipe_double_lock(ipipe, opipe); do { @@ -75862,7 +82202,7 @@ index 7968da9..4ce985b 100644 break; /* -@@ -1907,7 +1918,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, +@@ -1914,7 +1915,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, pipe_double_lock(ipipe, opipe); do { @@ -75871,7 +82211,7 @@ index 7968da9..4ce985b 100644 send_sig(SIGPIPE, current, 0); if (!ret) ret = -EPIPE; -@@ -1952,7 +1963,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, +@@ -1959,7 +1960,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 */ @@ -75881,7 +82221,7 @@ index 7968da9..4ce985b 100644 pipe_unlock(ipipe); diff --git a/fs/squashfs/xattr.c b/fs/squashfs/xattr.c -index 92fcde7..1687329 100644 +index e5e0ddf..09598c4 100644 --- a/fs/squashfs/xattr.c +++ b/fs/squashfs/xattr.c @@ -46,8 +46,8 @@ ssize_t squashfs_listxattr(struct dentry *d, char *buffer, @@ -75928,7 +82268,7 @@ index 92fcde7..1687329 100644 failed: return err; diff --git a/fs/stat.c b/fs/stat.c -index ae0c3ce..9ee641c 100644 +index cccc1aa..7fe8951 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -28,8 +28,13 @@ void generic_fillattr(struct inode *inode, struct kstat *stat) @@ -75950,7 +82290,7 @@ index ae0c3ce..9ee641c 100644 @@ -52,9 +57,16 @@ EXPORT_SYMBOL(generic_fillattr); int vfs_getattr_nosec(struct path *path, struct kstat *stat) { - struct inode *inode = path->dentry->d_inode; + struct inode *inode = d_backing_inode(path->dentry); + int retval; - if (inode->i_op->getattr) @@ -75967,7 +82307,7 @@ index ae0c3ce..9ee641c 100644 generic_fillattr(inode, stat); return 0; diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c -index 0b45ff4..edf9d3a 100644 +index 94374e4..b5da3a1 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -33,6 +33,10 @@ void sysfs_warn_dup(struct kernfs_node *parent, const char *name) @@ -76039,8 +82379,34 @@ index 69d4889..a810bd4 100644 { if (sbi->s_bytesex == BYTESEX_PDP) return PDP_swab((__force __u32)n); +diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c +index a43df11..c368e71 100644 +--- a/fs/tracefs/inode.c ++++ b/fs/tracefs/inode.c +@@ -53,7 +53,7 @@ static const struct file_operations tracefs_file_operations = { + static struct tracefs_dir_ops { + int (*mkdir)(const char *name); + int (*rmdir)(const char *name); +-} tracefs_ops; ++} __no_const tracefs_ops __read_only; + + static char *get_dname(struct dentry *dentry) + { +@@ -490,8 +490,10 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare + if (!dentry) + return NULL; + +- tracefs_ops.mkdir = mkdir; +- tracefs_ops.rmdir = rmdir; ++ pax_open_kernel(); ++ *(void **)&tracefs_ops.mkdir = mkdir; ++ *(void **)&tracefs_ops.rmdir = rmdir; ++ pax_close_kernel(); + + return dentry; + } diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c -index fb08b0c..65fcc7e 100644 +index 97be412..974b37f 100644 --- a/fs/ubifs/io.c +++ b/fs/ubifs/io.c @@ -155,7 +155,7 @@ int ubifs_leb_change(struct ubifs_info *c, int lnum, const void *buf, int len) @@ -76053,10 +82419,10 @@ index fb08b0c..65fcc7e 100644 int err; diff --git a/fs/udf/misc.c b/fs/udf/misc.c -index c175b4d..8f36a16 100644 +index 71d1c25..084e2ad 100644 --- a/fs/udf/misc.c +++ b/fs/udf/misc.c -@@ -289,7 +289,7 @@ void udf_new_tag(char *data, uint16_t ident, uint16_t version, uint16_t snum, +@@ -288,7 +288,7 @@ void udf_new_tag(char *data, uint16_t ident, uint16_t version, uint16_t snum, u8 udf_tag_checksum(const struct tag *t) { @@ -76234,10 +82600,10 @@ index 4ef6985..a6cd6567 100644 } fdput(f); diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c -index 61ec015..7c18807 100644 +index f1026e8..a0fbe4f 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c -@@ -580,7 +580,7 @@ xfs_bmap_validate_ret( +@@ -554,7 +554,7 @@ xfs_bmap_validate_ret( #else #define xfs_bmap_check_leaf_extents(cur, ip, whichfork) do { } while (0) @@ -76265,7 +82631,7 @@ index 098cd78..724d3f8 100644 return 0; sfep = dp->d_ops->sf_nextentry(sfp, sfep); diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c -index ac4feae..386d551 100644 +index 87f67c6..7e335bf 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -120,7 +120,7 @@ xfs_find_handle( @@ -76278,10 +82644,10 @@ index ac4feae..386d551 100644 goto out_put; diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h -index c31d2c2..6ec8f62 100644 +index 7c7842c..ce15222 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h -@@ -234,7 +234,7 @@ static inline kgid_t xfs_gid_to_kgid(__uint32_t gid) +@@ -225,7 +225,7 @@ static inline kgid_t xfs_gid_to_kgid(__uint32_t gid) * of the compiler which do not like us using do_div in the middle * of large functions. */ @@ -76290,7 +82656,7 @@ index c31d2c2..6ec8f62 100644 { __u32 mod; -@@ -290,7 +290,7 @@ static inline __u32 xfs_do_mod(void *a, __u32 b, int n) +@@ -281,7 +281,7 @@ static inline __u32 xfs_do_mod(void *a, __u32 b, int n) return 0; } #else @@ -77549,10 +83915,10 @@ index 0000000..30ababb +endif diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c new file mode 100644 -index 0000000..811af1f +index 0000000..7ad630a --- /dev/null +++ b/grsecurity/gracl.c -@@ -0,0 +1,2749 @@ +@@ -0,0 +1,2757 @@ +#include +#include +#include @@ -77652,22 +84018,26 @@ index 0000000..811af1f + +static inline dev_t __get_dev(const struct dentry *dentry) +{ ++ struct dentry *ldentry = d_backing_dentry((struct dentry *)dentry); ++ +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE) -+ if (dentry->d_sb->s_magic == BTRFS_SUPER_MAGIC) -+ return BTRFS_I(dentry->d_inode)->root->anon_dev; ++ if (ldentry->d_sb->s_magic == BTRFS_SUPER_MAGIC) ++ return BTRFS_I(d_inode(ldentry))->root->anon_dev; + else +#endif -+ return dentry->d_sb->s_dev; ++ return d_inode(ldentry)->i_sb->s_dev; +} + +static inline u64 __get_ino(const struct dentry *dentry) +{ ++ struct dentry *ldentry = d_backing_dentry((struct dentry *)dentry); ++ +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE) -+ if (dentry->d_sb->s_magic == BTRFS_SUPER_MAGIC) -+ return btrfs_ino(dentry->d_inode); ++ if (ldentry->d_sb->s_magic == BTRFS_SUPER_MAGIC) ++ return btrfs_ino(d_inode(dentry)); + else +#endif -+ return dentry->d_inode->i_ino; ++ return d_inode(ldentry)->i_ino; +} + +dev_t gr_get_dev_from_dentry(struct dentry *dentry) @@ -78454,6 +84824,7 @@ index 0000000..811af1f +{ + struct dentry *dentry = (struct dentry *) l_dentry; + struct vfsmount *mnt = (struct vfsmount *) l_mnt; ++ struct inode * inode = d_backing_inode(dentry); + struct mount *real_mnt = real_mount(mnt); + struct acl_object_label *retval; + struct dentry *parent; @@ -78461,15 +84832,15 @@ index 0000000..811af1f + read_seqlock_excl(&mount_lock); + write_seqlock(&rename_lock); + -+ if (unlikely((mnt == shm_mnt && dentry->d_inode->i_nlink == 0) || mnt == pipe_mnt || ++ if (unlikely((mnt == shm_mnt && inode->i_nlink == 0) || mnt == pipe_mnt || +#ifdef CONFIG_NET + mnt == sock_mnt || +#endif +#ifdef CONFIG_HUGETLBFS -+ (is_hugetlbfs_mnt(mnt) && dentry->d_inode->i_nlink == 0) || ++ (is_hugetlbfs_mnt(mnt) && inode->i_nlink == 0) || +#endif + /* ignore Eric Biederman */ -+ IS_PRIVATE(l_dentry->d_inode))) { ++ IS_PRIVATE(inode))) { + retval = (subj->mode & GR_SHMEXEC) ? fakefs_obj_rwx : fakefs_obj_rw; + goto out; + } @@ -79699,7 +86070,8 @@ index 0000000..811af1f + struct name_entry *matchn; + struct name_entry *matchn2 = NULL; + struct inodev_entry *inodev; -+ struct inode *inode = new_dentry->d_inode; ++ struct inode *inode = d_backing_inode(new_dentry); ++ struct inode *old_inode = d_backing_inode(old_dentry); + u64 old_ino = __get_ino(old_dentry); + dev_t old_dev = __get_dev(old_dentry); + unsigned int exchange = flags & RENAME_EXCHANGE; @@ -79746,12 +86118,12 @@ index 0000000..811af1f + dev_t new_dev = __get_dev(new_dentry); + + inodev = lookup_inodev_entry(new_ino, new_dev); -+ if (inodev != NULL && ((inode->i_nlink <= 1) || S_ISDIR(inode->i_mode))) ++ if (inodev != NULL && ((inode->i_nlink <= 1) || d_is_dir(new_dentry))) + do_handle_delete(inodev, new_ino, new_dev); + } + + inodev = lookup_inodev_entry(old_ino, old_dev); -+ if (inodev != NULL && ((old_dentry->d_inode->i_nlink <= 1) || S_ISDIR(old_dentry->d_inode->i_mode))) ++ if (inodev != NULL && ((old_inode->i_nlink <= 1) || d_is_dir(old_dentry))) + do_handle_delete(inodev, old_ino, old_dev); + + if (unlikely(matchn != NULL)) @@ -80025,14 +86397,16 @@ index 0000000..811af1f +{ + struct task_struct *task = current; + struct acl_object_label *obj, *obj2; ++ struct dentry *dentry = filp->f_path.dentry; ++ struct vfsmount *mnt = filp->f_path.mnt; ++ struct inode *inode = d_backing_inode(dentry); + + if (gr_status & GR_READY && !(task->acl->mode & GR_OVERRIDE) && -+ !task->is_writable && S_ISREG(filp->f_path.dentry->d_inode->i_mode) && (filp->f_path.mnt != shm_mnt || (filp->f_path.dentry->d_inode->i_nlink > 0))) { -+ obj = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, running_polstate.default_role->root_label); -+ obj2 = chk_obj_label(filp->f_path.dentry, filp->f_path.mnt, -+ task->role->root_label); ++ !task->is_writable && d_is_reg(dentry) && (mnt != shm_mnt || (inode->i_nlink > 0))) { ++ obj = chk_obj_label(dentry, mnt, running_polstate.default_role->root_label); ++ obj2 = chk_obj_label(dentry, mnt, task->role->root_label); + if (unlikely((obj->mode & GR_WRITE) || (obj2->mode & GR_WRITE))) { -+ gr_log_fs_generic(GR_DONT_AUDIT, GR_WRITLIB_ACL_MSG, filp->f_path.dentry, filp->f_path.mnt); ++ gr_log_fs_generic(GR_DONT_AUDIT, GR_WRITLIB_ACL_MSG, dentry, mnt); + return 1; + } + } @@ -80222,7 +86596,7 @@ index 0000000..811af1f + return 1; + + /* ignore Eric Biederman */ -+ if (IS_PRIVATE(dentry->d_inode)) ++ if (IS_PRIVATE(d_backing_inode(dentry))) + return 1; + + subj = task->acl; @@ -80823,10 +87197,10 @@ index 0000000..a43dd06 + diff --git a/grsecurity/gracl_fs.c b/grsecurity/gracl_fs.c new file mode 100644 -index 0000000..8ee8e4f +index 0000000..fce7f71 --- /dev/null +++ b/grsecurity/gracl_fs.c -@@ -0,0 +1,447 @@ +@@ -0,0 +1,448 @@ +#include +#include +#include @@ -80884,7 +87258,7 @@ index 0000000..8ee8e4f + reqmode |= GR_APPEND; + else if (acc_mode & MAY_WRITE) + reqmode |= GR_WRITE; -+ if ((acc_mode & MAY_READ) && !S_ISDIR(dentry->d_inode->i_mode)) ++ if ((acc_mode & MAY_READ) && !d_is_dir(dentry)) + reqmode |= GR_READ; + + mode = @@ -80925,7 +87299,7 @@ index 0000000..8ee8e4f + // if a directory was required or the directory already exists, then + // don't count this open as a read + if ((acc_mode & MAY_READ) && -+ !((open_flags & O_DIRECTORY) || (dentry->d_inode && S_ISDIR(dentry->d_inode->i_mode)))) ++ !((open_flags & O_DIRECTORY) || d_is_dir(dentry))) + reqmode |= GR_READ; + if ((open_flags & O_CREAT) && + ((imode & S_ISUID) || ((imode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)))) @@ -80961,7 +87335,7 @@ index 0000000..8ee8e4f +{ + __u32 mode, reqmode = GR_FIND; + -+ if ((fmode & S_IXOTH) && !S_ISDIR(dentry->d_inode->i_mode)) ++ if ((fmode & S_IXOTH) && !d_is_dir(dentry)) + reqmode |= GR_EXEC; + if (fmode & S_IWOTH) + reqmode |= GR_WRITE; @@ -81039,14 +87413,15 @@ index 0000000..8ee8e4f + umode_t *modeptr) +{ + umode_t mode; ++ struct inode *inode = d_backing_inode(dentry); + + *modeptr &= ~gr_acl_umask(); + mode = *modeptr; + -+ if (unlikely(dentry->d_inode && S_ISSOCK(dentry->d_inode->i_mode))) ++ if (unlikely(inode && S_ISSOCK(inode->i_mode))) + return 1; + -+ if (unlikely(dentry->d_inode && !S_ISDIR(dentry->d_inode->i_mode) && ++ if (unlikely(!d_is_dir(dentry) && + ((mode & S_ISUID) || ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))))) { + return generic_fs_handler(dentry, mnt, GR_WRITE | GR_SETID, + GR_CHMOD_ACL_MSG); @@ -81276,7 +87651,7 @@ index 0000000..8ee8e4f +} diff --git a/grsecurity/gracl_ip.c b/grsecurity/gracl_ip.c new file mode 100644 -index 0000000..f056b81 +index 0000000..ed6ee43 --- /dev/null +++ b/grsecurity/gracl_ip.c @@ -0,0 +1,386 @@ @@ -81350,7 +87725,7 @@ index 0000000..f056b81 + "unspec", "unix", "inet", "ax25", "ipx", "appletalk", "netrom", "bridge", "atmpvc", "x25", + "inet6", "rose", "decnet", "netbeui", "security", "key", "netlink", "packet", "ash", + "econet", "atmsvc", "rds", "sna", "irda", "ppox", "wanpipe", "llc", "fam_27", "fam_28", -+ "tipc", "bluetooth", "iucv", "rxrpc", "isdn", "phonet", "ieee802154", "ciaf" ++ "tipc", "bluetooth", "iucv", "rxrpc", "isdn", "phonet", "ieee802154", "ciaf", "alg", "nfc", "vsock" + }; + +const char * @@ -81881,10 +88256,10 @@ index 0000000..25f54ef +}; diff --git a/grsecurity/gracl_policy.c b/grsecurity/gracl_policy.c new file mode 100644 -index 0000000..fd26052 +index 0000000..0773423 --- /dev/null +++ b/grsecurity/gracl_policy.c -@@ -0,0 +1,1781 @@ +@@ -0,0 +1,1786 @@ +#include +#include +#include @@ -82340,7 +88715,7 @@ index 0000000..fd26052 + get_fs_root(reaper->fs, &gr_real_root); + +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG -+ printk(KERN_ALERT "Obtained real root device=%d, inode=%lu\n", __get_dev(gr_real_root.dentry), gr_real_root.dentry->d_inode->i_ino); ++ printk(KERN_ALERT "Obtained real root device=%d, inode=%lu\n", gr_get_dev_from_dentry(gr_real_root.dentry), gr_get_ino_from_dentry(gr_real_root.dentry)); +#endif + + fakefs_obj_rw = kzalloc(sizeof(struct acl_object_label), GFP_KERNEL); @@ -83279,6 +89654,7 @@ index 0000000..fd26052 + struct files_struct *files; + struct fdtable *fdt; + struct file *our_file = NULL, *file; ++ struct inode *our_inode = NULL; + int i; + + if (task->signal->tty == NULL) @@ -83302,6 +89678,8 @@ index 0000000..fd26052 + if (our_file == NULL) + return 1; + ++ our_inode = d_backing_inode(our_file->f_path.dentry); ++ + read_lock(&tasklist_lock); + do_each_thread(p2, p) { + files = get_files_struct(p); @@ -83314,9 +89692,11 @@ index 0000000..fd26052 + rcu_read_lock(); + fdt = files_fdtable(files); + for (i=0; i < fdt->max_fds; i++) { ++ struct inode *inode = NULL; + file = fcheck_files(files, i); -+ if (file && S_ISCHR(file->f_path.dentry->d_inode->i_mode) && -+ file->f_path.dentry->d_inode->i_rdev == our_file->f_path.dentry->d_inode->i_rdev) { ++ if (file) ++ inode = d_backing_inode(file->f_path.dentry); ++ if (inode && S_ISCHR(inode->i_mode) && inode->i_rdev == our_inode->i_rdev) { + p3 = task; + while (task_pid_nr(p3) > 0) { + if (p3 == p) @@ -83742,10 +90122,10 @@ index 0000000..39645c9 +} diff --git a/grsecurity/gracl_segv.c b/grsecurity/gracl_segv.c new file mode 100644 -index 0000000..35d9e65 +index 0000000..21646aa --- /dev/null +++ b/grsecurity/gracl_segv.c -@@ -0,0 +1,324 @@ +@@ -0,0 +1,304 @@ +#include +#include +#include @@ -83779,26 +90159,6 @@ index 0000000..35d9e65 + lookup_acl_subj_label(const u64 inode, const dev_t dev, + struct acl_role_label *role); + -+static inline dev_t __get_dev(const struct dentry *dentry) -+{ -+#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE) -+ if (dentry->d_sb->s_magic == BTRFS_SUPER_MAGIC) -+ return BTRFS_I(dentry->d_inode)->root->anon_dev; -+ else -+#endif -+ return dentry->d_sb->s_dev; -+} -+ -+static inline u64 __get_ino(const struct dentry *dentry) -+{ -+#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE) -+ if (dentry->d_sb->s_magic == BTRFS_SUPER_MAGIC) -+ return btrfs_ino(dentry->d_inode); -+ else -+#endif -+ return dentry->d_inode->i_ino; -+} -+ +int +gr_init_uidset(void) +{ @@ -84026,7 +90386,7 @@ index 0000000..35d9e65 + + read_lock(&gr_inode_lock); + dentry = filp->f_path.dentry; -+ curr = lookup_acl_subj_label(__get_ino(dentry), __get_dev(dentry), ++ curr = lookup_acl_subj_label(gr_get_ino_from_dentry(dentry), gr_get_dev_from_dentry(dentry), + current->role); + read_unlock(&gr_inode_lock); + @@ -84143,7 +90503,7 @@ index 0000000..bc0be01 +} diff --git a/grsecurity/grsec_chroot.c b/grsecurity/grsec_chroot.c new file mode 100644 -index 0000000..114ea4f +index 0000000..652ab45 --- /dev/null +++ b/grsecurity/grsec_chroot.c @@ -0,0 +1,467 @@ @@ -84605,7 +90965,7 @@ index 0000000..114ea4f +{ +#ifdef CONFIG_GRKERNSEC_CHROOT_CHMOD + /* allow chmod +s on directories, but not files */ -+ if (grsec_enable_chroot_chmod && !S_ISDIR(dentry->d_inode->i_mode) && ++ if (grsec_enable_chroot_chmod && !d_is_dir(dentry) && + ((mode & S_ISUID) || ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))) && + proc_is_chrooted(current)) { + gr_log_fs_generic(GR_DONT_AUDIT, GR_CHMOD_CHROOT_MSG, dentry, mnt); @@ -84616,7 +90976,7 @@ index 0000000..114ea4f +} diff --git a/grsecurity/grsec_disabled.c b/grsecurity/grsec_disabled.c new file mode 100644 -index 0000000..946f750 +index 0000000..e723c08 --- /dev/null +++ b/grsecurity/grsec_disabled.c @@ -0,0 +1,445 @@ @@ -85048,12 +91408,12 @@ index 0000000..946f750 + +dev_t gr_get_dev_from_dentry(struct dentry *dentry) +{ -+ return dentry->d_sb->s_dev; ++ return d_backing_inode(dentry)->i_sb->s_dev; +} + +u64 gr_get_ino_from_dentry(struct dentry *dentry) +{ -+ return dentry->d_inode->i_ino; ++ return d_backing_inode(dentry)->i_ino; +} + +void gr_put_exec_file(struct task_struct *task) @@ -85262,10 +91622,10 @@ index 0000000..fb7531e +EXPORT_SYMBOL_GPL(gr_task_is_capable_nolog); diff --git a/grsecurity/grsec_fifo.c b/grsecurity/grsec_fifo.c new file mode 100644 -index 0000000..06cc6ea +index 0000000..cdec49b --- /dev/null +++ b/grsecurity/grsec_fifo.c -@@ -0,0 +1,24 @@ +@@ -0,0 +1,26 @@ +#include +#include +#include @@ -85278,13 +91638,15 @@ index 0000000..06cc6ea +{ +#ifdef CONFIG_GRKERNSEC_FIFO + const struct cred *cred = current_cred(); -+ -+ if (grsec_enable_fifo && S_ISFIFO(dentry->d_inode->i_mode) && -+ !(flag & O_EXCL) && (dir->d_inode->i_mode & S_ISVTX) && -+ !uid_eq(dentry->d_inode->i_uid, dir->d_inode->i_uid) && -+ !uid_eq(cred->fsuid, dentry->d_inode->i_uid)) { -+ if (!inode_permission(dentry->d_inode, acc_mode)) -+ gr_log_fs_int2(GR_DONT_AUDIT, GR_FIFO_MSG, dentry, mnt, GR_GLOBAL_UID(dentry->d_inode->i_uid), GR_GLOBAL_GID(dentry->d_inode->i_gid)); ++ struct inode *inode = d_backing_inode(dentry); ++ struct inode *dir_inode = d_backing_inode(dir); ++ ++ if (grsec_enable_fifo && S_ISFIFO(inode->i_mode) && ++ !(flag & O_EXCL) && (dir_inode->i_mode & S_ISVTX) && ++ !uid_eq(inode->i_uid, dir_inode->i_uid) && ++ !uid_eq(cred->fsuid, inode->i_uid)) { ++ if (!inode_permission(inode, acc_mode)) ++ gr_log_fs_int2(GR_DONT_AUDIT, GR_FIFO_MSG, dentry, mnt, GR_GLOBAL_UID(inode->i_uid), GR_GLOBAL_GID(inode->i_gid)); + return -EACCES; + } +#endif @@ -85321,7 +91683,7 @@ index 0000000..8ca18bf +} diff --git a/grsecurity/grsec_init.c b/grsecurity/grsec_init.c new file mode 100644 -index 0000000..4ed9e7d +index 0000000..a364c58 --- /dev/null +++ b/grsecurity/grsec_init.c @@ -0,0 +1,290 @@ @@ -85334,61 +91696,61 @@ index 0000000..4ed9e7d +#include +#include + -+int grsec_enable_ptrace_readexec; -+int grsec_enable_setxid; -+int grsec_enable_symlinkown; -+kgid_t grsec_symlinkown_gid; -+int grsec_enable_brute; -+int grsec_enable_link; -+int grsec_enable_dmesg; -+int grsec_enable_harden_ptrace; -+int grsec_enable_harden_ipc; -+int grsec_enable_fifo; -+int grsec_enable_execlog; -+int grsec_enable_signal; -+int grsec_enable_forkfail; -+int grsec_enable_audit_ptrace; -+int grsec_enable_time; -+int grsec_enable_group; -+kgid_t grsec_audit_gid; -+int grsec_enable_chdir; -+int grsec_enable_mount; -+int grsec_enable_rofs; -+int grsec_deny_new_usb; -+int grsec_enable_chroot_findtask; -+int grsec_enable_chroot_mount; -+int grsec_enable_chroot_shmat; -+int grsec_enable_chroot_fchdir; -+int grsec_enable_chroot_double; -+int grsec_enable_chroot_pivot; -+int grsec_enable_chroot_chdir; -+int grsec_enable_chroot_chmod; -+int grsec_enable_chroot_mknod; -+int grsec_enable_chroot_nice; -+int grsec_enable_chroot_execlog; -+int grsec_enable_chroot_caps; -+int grsec_enable_chroot_rename; -+int grsec_enable_chroot_sysctl; -+int grsec_enable_chroot_unix; -+int grsec_enable_tpe; -+kgid_t grsec_tpe_gid; -+int grsec_enable_blackhole; ++int grsec_enable_ptrace_readexec __read_only; ++int grsec_enable_setxid __read_only; ++int grsec_enable_symlinkown __read_only; ++kgid_t grsec_symlinkown_gid __read_only; ++int grsec_enable_brute __read_only; ++int grsec_enable_link __read_only; ++int grsec_enable_dmesg __read_only; ++int grsec_enable_harden_ptrace __read_only; ++int grsec_enable_harden_ipc __read_only; ++int grsec_enable_fifo __read_only; ++int grsec_enable_execlog __read_only; ++int grsec_enable_signal __read_only; ++int grsec_enable_forkfail __read_only; ++int grsec_enable_audit_ptrace __read_only; ++int grsec_enable_time __read_only; ++int grsec_enable_group __read_only; ++kgid_t grsec_audit_gid __read_only; ++int grsec_enable_chdir __read_only; ++int grsec_enable_mount __read_only; ++int grsec_enable_rofs __read_only; ++int grsec_deny_new_usb __read_only; ++int grsec_enable_chroot_findtask __read_only; ++int grsec_enable_chroot_mount __read_only; ++int grsec_enable_chroot_shmat __read_only; ++int grsec_enable_chroot_fchdir __read_only; ++int grsec_enable_chroot_double __read_only; ++int grsec_enable_chroot_pivot __read_only; ++int grsec_enable_chroot_chdir __read_only; ++int grsec_enable_chroot_chmod __read_only; ++int grsec_enable_chroot_mknod __read_only; ++int grsec_enable_chroot_nice __read_only; ++int grsec_enable_chroot_execlog __read_only; ++int grsec_enable_chroot_caps __read_only; ++int grsec_enable_chroot_rename __read_only; ++int grsec_enable_chroot_sysctl __read_only; ++int grsec_enable_chroot_unix __read_only; ++int grsec_enable_tpe __read_only; ++kgid_t grsec_tpe_gid __read_only; ++int grsec_enable_blackhole __read_only; +#ifdef CONFIG_IPV6_MODULE +EXPORT_SYMBOL_GPL(grsec_enable_blackhole); +#endif -+int grsec_lastack_retries; -+int grsec_enable_tpe_all; -+int grsec_enable_tpe_invert; -+int grsec_enable_socket_all; -+kgid_t grsec_socket_all_gid; -+int grsec_enable_socket_client; -+kgid_t grsec_socket_client_gid; -+int grsec_enable_socket_server; -+kgid_t grsec_socket_server_gid; -+int grsec_resource_logging; -+int grsec_disable_privio; -+int grsec_enable_log_rwxmaps; -+int grsec_lock; ++int grsec_lastack_retries __read_only; ++int grsec_enable_tpe_all __read_only; ++int grsec_enable_tpe_invert __read_only; ++int grsec_enable_socket_all __read_only; ++kgid_t grsec_socket_all_gid __read_only; ++int grsec_enable_socket_client __read_only; ++kgid_t grsec_socket_client_gid __read_only; ++int grsec_enable_socket_server __read_only; ++kgid_t grsec_socket_server_gid __read_only; ++int grsec_resource_logging __read_only; ++int grsec_disable_privio __read_only; ++int grsec_enable_log_rwxmaps __read_only; ++int grsec_lock __read_only; + +DEFINE_SPINLOCK(grsec_alert_lock); +unsigned long grsec_alert_wtime = 0; @@ -85671,10 +92033,10 @@ index 0000000..1773300 +} diff --git a/grsecurity/grsec_link.c b/grsecurity/grsec_link.c new file mode 100644 -index 0000000..5e05e20 +index 0000000..8ef2b75 --- /dev/null +++ b/grsecurity/grsec_link.c -@@ -0,0 +1,58 @@ +@@ -0,0 +1,59 @@ +#include +#include +#include @@ -85684,7 +92046,7 @@ index 0000000..5e05e20 +int gr_handle_symlink_owner(const struct path *link, const struct inode *target) +{ +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN -+ const struct inode *link_inode = link->dentry->d_inode; ++ const struct inode *link_inode = d_backing_inode(link->dentry); + + if (grsec_enable_symlinkown && in_group_p(grsec_symlinkown_gid) && + /* ignore root-owned links, e.g. /proc/self */ @@ -85698,14 +92060,14 @@ index 0000000..5e05e20 +} + +int -+gr_handle_follow_link(const struct inode *parent, -+ const struct inode *inode, -+ const struct dentry *dentry, const struct vfsmount *mnt) ++gr_handle_follow_link(const struct dentry *dentry, const struct vfsmount *mnt) +{ +#ifdef CONFIG_GRKERNSEC_LINK ++ struct inode *inode = d_backing_inode(dentry); ++ struct inode *parent = d_backing_inode(dentry->d_parent); + const struct cred *cred = current_cred(); + -+ if (grsec_enable_link && S_ISLNK(inode->i_mode) && ++ if (grsec_enable_link && d_is_symlink(dentry) && + (parent->i_mode & S_ISVTX) && !uid_eq(parent->i_uid, inode->i_uid) && + (parent->i_mode & S_IWOTH) && !uid_eq(cred->fsuid, inode->i_uid)) { + gr_log_fs_int2(GR_DONT_AUDIT, GR_SYMLINK_MSG, dentry, mnt, inode->i_uid, inode->i_gid); @@ -85718,13 +92080,14 @@ index 0000000..5e05e20 +int +gr_handle_hardlink(const struct dentry *dentry, + const struct vfsmount *mnt, -+ struct inode *inode, const int mode, const struct filename *to) ++ const struct filename *to) +{ +#ifdef CONFIG_GRKERNSEC_LINK ++ struct inode *inode = d_backing_inode(dentry); + const struct cred *cred = current_cred(); + + if (grsec_enable_link && !uid_eq(cred->fsuid, inode->i_uid) && -+ (!S_ISREG(mode) || is_privileged_binary(dentry) || ++ (!d_is_reg(dentry) || is_privileged_binary(dentry) || + (inode_permission(inode, MAY_READ | MAY_WRITE))) && + !capable(CAP_FOWNER) && gr_is_global_nonroot(cred->uid)) { + gr_log_fs_int2_str(GR_DONT_AUDIT, GR_HARDLINK_MSG, dentry, mnt, inode->i_uid, inode->i_gid, to->name); @@ -86136,7 +92499,7 @@ index 0000000..0e39d8c +} diff --git a/grsecurity/grsec_mount.c b/grsecurity/grsec_mount.c new file mode 100644 -index 0000000..6f9eb73 +index 0000000..fe02bf4 --- /dev/null +++ b/grsecurity/grsec_mount.c @@ -0,0 +1,65 @@ @@ -86194,7 +92557,7 @@ index 0000000..6f9eb73 +gr_handle_rofs_blockwrite(struct dentry *dentry, struct vfsmount *mnt, int acc_mode) +{ +#ifdef CONFIG_GRKERNSEC_ROFS -+ struct inode *inode = dentry->d_inode; ++ struct inode *inode = d_backing_inode(dentry); + + if (grsec_enable_rofs && (acc_mode & MAY_WRITE) && + inode && (S_ISBLK(inode->i_mode) || (S_ISCHR(inode->i_mode) && imajor(inode) == RAW_MAJOR))) { @@ -86284,7 +92647,7 @@ index 0000000..2005a3a +} diff --git a/grsecurity/grsec_ptrace.c b/grsecurity/grsec_ptrace.c new file mode 100644 -index 0000000..f7f29aa +index 0000000..304c518 --- /dev/null +++ b/grsecurity/grsec_ptrace.c @@ -0,0 +1,30 @@ @@ -86311,7 +92674,7 @@ index 0000000..f7f29aa + 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))) { ++ (inode_permission(d_backing_inode(dentry), 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; + } @@ -86812,7 +93175,7 @@ index 0000000..a523bd2 +} diff --git a/grsecurity/grsec_sysctl.c b/grsecurity/grsec_sysctl.c new file mode 100644 -index 0000000..cce889e +index 0000000..aaec43c --- /dev/null +++ b/grsecurity/grsec_sysctl.c @@ -0,0 +1,488 @@ @@ -86851,7 +93214,7 @@ index 0000000..cce889e + .data = &grsec_disable_privio, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#endif @@ -86861,7 +93224,7 @@ index 0000000..cce889e + .data = &grsec_enable_link, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_SYMLINKOWN @@ -86870,14 +93233,14 @@ index 0000000..cce889e + .data = &grsec_enable_symlinkown, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, + { + .procname = "symlinkown_gid", + .data = &grsec_symlinkown_gid, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_BRUTE @@ -86886,7 +93249,7 @@ index 0000000..cce889e + .data = &grsec_enable_brute, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_FIFO @@ -86895,7 +93258,7 @@ index 0000000..cce889e + .data = &grsec_enable_fifo, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_PTRACE_READEXEC @@ -86904,7 +93267,7 @@ index 0000000..cce889e + .data = &grsec_enable_ptrace_readexec, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_SETXID @@ -86913,7 +93276,7 @@ index 0000000..cce889e + .data = &grsec_enable_setxid, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_BLACKHOLE @@ -86922,14 +93285,14 @@ index 0000000..cce889e + .data = &grsec_enable_blackhole, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, + { + .procname = "lastack_retries", + .data = &grsec_lastack_retries, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_EXECLOG @@ -86938,7 +93301,7 @@ index 0000000..cce889e + .data = &grsec_enable_execlog, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG @@ -86947,7 +93310,7 @@ index 0000000..cce889e + .data = &grsec_enable_log_rwxmaps, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_SIGNAL @@ -86956,7 +93319,7 @@ index 0000000..cce889e + .data = &grsec_enable_signal, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_FORKFAIL @@ -86965,7 +93328,7 @@ index 0000000..cce889e + .data = &grsec_enable_forkfail, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_TIME @@ -86974,7 +93337,7 @@ index 0000000..cce889e + .data = &grsec_enable_time, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_SHMAT @@ -86983,7 +93346,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_shmat, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_UNIX @@ -86992,7 +93355,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_unix, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_MOUNT @@ -87001,7 +93364,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_mount, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_FCHDIR @@ -87010,7 +93373,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_fchdir, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_DOUBLE @@ -87019,7 +93382,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_double, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_PIVOT @@ -87028,7 +93391,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_pivot, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_CHDIR @@ -87037,7 +93400,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_chdir, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_CHMOD @@ -87046,7 +93409,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_chmod, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_MKNOD @@ -87055,7 +93418,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_mknod, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_NICE @@ -87064,7 +93427,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_nice, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_EXECLOG @@ -87073,7 +93436,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_execlog, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS @@ -87082,7 +93445,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_caps, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_RENAME @@ -87091,7 +93454,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_rename, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_SYSCTL @@ -87100,7 +93463,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_sysctl, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_TPE @@ -87109,14 +93472,14 @@ index 0000000..cce889e + .data = &grsec_enable_tpe, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, + { + .procname = "tpe_gid", + .data = &grsec_tpe_gid, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_TPE_INVERT @@ -87125,7 +93488,7 @@ index 0000000..cce889e + .data = &grsec_enable_tpe_invert, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_TPE_ALL @@ -87134,7 +93497,7 @@ index 0000000..cce889e + .data = &grsec_enable_tpe_all, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_SOCKET_ALL @@ -87143,14 +93506,14 @@ index 0000000..cce889e + .data = &grsec_enable_socket_all, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, + { + .procname = "socket_all_gid", + .data = &grsec_socket_all_gid, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_SOCKET_CLIENT @@ -87159,14 +93522,14 @@ index 0000000..cce889e + .data = &grsec_enable_socket_client, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, + { + .procname = "socket_client_gid", + .data = &grsec_socket_client_gid, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_SOCKET_SERVER @@ -87175,14 +93538,14 @@ index 0000000..cce889e + .data = &grsec_enable_socket_server, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, + { + .procname = "socket_server_gid", + .data = &grsec_socket_server_gid, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_AUDIT_GROUP @@ -87191,14 +93554,14 @@ index 0000000..cce889e + .data = &grsec_enable_group, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, + { + .procname = "audit_gid", + .data = &grsec_audit_gid, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_AUDIT_CHDIR @@ -87207,7 +93570,7 @@ index 0000000..cce889e + .data = &grsec_enable_chdir, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT @@ -87216,7 +93579,7 @@ index 0000000..cce889e + .data = &grsec_enable_mount, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_DMESG @@ -87225,7 +93588,7 @@ index 0000000..cce889e + .data = &grsec_enable_dmesg, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK @@ -87234,7 +93597,7 @@ index 0000000..cce889e + .data = &grsec_enable_chroot_findtask, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_RESLOG @@ -87243,7 +93606,7 @@ index 0000000..cce889e + .data = &grsec_resource_logging, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_AUDIT_PTRACE @@ -87252,7 +93615,7 @@ index 0000000..cce889e + .data = &grsec_enable_audit_ptrace, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_HARDEN_PTRACE @@ -87261,7 +93624,7 @@ index 0000000..cce889e + .data = &grsec_enable_harden_ptrace, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_HARDEN_IPC @@ -87270,7 +93633,7 @@ index 0000000..cce889e + .data = &grsec_enable_harden_ipc, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif + { @@ -87278,7 +93641,7 @@ index 0000000..cce889e + .data = &grsec_lock, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif +#ifdef CONFIG_GRKERNSEC_ROFS @@ -87287,7 +93650,7 @@ index 0000000..cce889e + .data = &grsec_enable_rofs, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec_minmax, ++ .proc_handler = &proc_dointvec_minmax_secure, + .extra1 = &one, + .extra2 = &one, + }, @@ -87298,7 +93661,7 @@ index 0000000..cce889e + .data = &grsec_deny_new_usb, + .maxlen = sizeof(int), + .mode = 0600, -+ .proc_handler = &proc_dointvec, ++ .proc_handler = &proc_dointvec_secure, + }, +#endif + { } @@ -87328,7 +93691,7 @@ index 0000000..61b514e +EXPORT_SYMBOL_GPL(gr_log_timechange); diff --git a/grsecurity/grsec_tpe.c b/grsecurity/grsec_tpe.c new file mode 100644 -index 0000000..d1953de +index 0000000..9786671 --- /dev/null +++ b/grsecurity/grsec_tpe.c @@ -0,0 +1,78 @@ @@ -87344,8 +93707,8 @@ index 0000000..d1953de +gr_tpe_allow(const struct file *file) +{ +#ifdef CONFIG_GRKERNSEC -+ struct inode *inode = file->f_path.dentry->d_parent->d_inode; -+ struct inode *file_inode = file->f_path.dentry->d_inode; ++ struct inode *inode = d_backing_inode(file->f_path.dentry->d_parent); ++ struct inode *file_inode = d_backing_inode(file->f_path.dentry); + const struct cred *cred = current_cred(); + char *msg = NULL; + char *msg2 = NULL; @@ -88155,10 +94518,10 @@ index 810431d..0ec4804f 100644 * (puds are folded into pgds so this doesn't get actually called, * but the define is needed for a generic inline function.) diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h -index 4d46085..f4e92ef 100644 +index 39f1d6a..7dae6fb 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h -@@ -689,6 +689,22 @@ static inline int pmd_protnone(pmd_t pmd) +@@ -695,6 +695,22 @@ static inline int pmd_protnone(pmd_t pmd) } #endif /* CONFIG_NUMA_BALANCING */ @@ -88180,7 +94543,7 @@ index 4d46085..f4e92ef 100644 + #endif /* CONFIG_MMU */ - #endif /* !__ASSEMBLY__ */ + #ifdef CONFIG_HAVE_ARCH_HUGE_VMAP diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h index 72d8803..cb9749c 100644 --- a/include/asm-generic/uaccess.h @@ -88207,10 +94570,10 @@ index 72d8803..cb9749c 100644 + #endif /* __ASM_GENERIC_UACCESS_H */ diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h -index ac78910..8b5f068 100644 +index 8bd374d..9590e70 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h -@@ -234,6 +234,7 @@ +@@ -246,6 +246,7 @@ .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start_rodata) = .; \ *(.rodata) *(.rodata.*) \ @@ -88218,7 +94581,7 @@ index ac78910..8b5f068 100644 *(__vermagic) /* Kernel version magic */ \ . = ALIGN(8); \ VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .; \ -@@ -492,6 +493,7 @@ +@@ -504,6 +505,7 @@ KERNEL_CTORS() \ MCOUNT_REC() \ *(.init.rodata) \ @@ -88226,7 +94589,7 @@ index ac78910..8b5f068 100644 FTRACE_EVENTS() \ TRACE_SYSCALLS() \ KPROBE_BLACKLIST() \ -@@ -511,6 +513,8 @@ +@@ -525,6 +527,8 @@ #define EXIT_DATA \ *(.exit.data) \ @@ -88235,7 +94598,7 @@ index ac78910..8b5f068 100644 MEM_DISCARD(exit.data) \ MEM_DISCARD(exit.rodata) -@@ -727,17 +731,18 @@ +@@ -741,17 +745,18 @@ * section in the linker script will go there too. @phdr should have * a leading colon. * @@ -88259,7 +94622,7 @@ index ac78910..8b5f068 100644 /** * PERCPU_SECTION - define output section for percpu area, simple version diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h -index 623a59c..1e79ab9 100644 +index 0ecb768..f910132 100644 --- a/include/crypto/algapi.h +++ b/include/crypto/algapi.h @@ -34,7 +34,7 @@ struct crypto_type { @@ -88272,7 +94635,7 @@ index 623a59c..1e79ab9 100644 struct crypto_instance { struct crypto_alg alg; diff --git a/include/drm/drmP.h b/include/drm/drmP.h -index e928625..ff97886 100644 +index 62c40777..f980496 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -59,6 +59,7 @@ @@ -88283,7 +94646,7 @@ index e928625..ff97886 100644 #include #include -@@ -133,17 +134,18 @@ void drm_err(const char *format, ...); +@@ -137,17 +138,18 @@ void drm_err(const char *format, ...); /*@{*/ /* driver capabilities and requirements mask */ @@ -88313,7 +94676,7 @@ index e928625..ff97886 100644 /***********************************************************************/ /** \name Macros to make printk easier */ -@@ -224,10 +226,12 @@ void drm_err(const char *format, ...); +@@ -233,10 +235,12 @@ void drm_err(const char *format, ...); * \param cmd command. * \param arg argument. */ @@ -88328,20 +94691,19 @@ index e928625..ff97886 100644 unsigned long arg); #define DRM_IOCTL_NR(n) _IOC_NR(n) -@@ -243,10 +247,10 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd, +@@ -252,9 +256,9 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd, struct drm_ioctl_desc { unsigned int cmd; int flags; - drm_ioctl_t *func; + drm_ioctl_t func; - unsigned int cmd_drv; const char *name; -}; +} __do_const; /** * Creates a driver or general drm_ioctl_desc array entry for the given -@@ -632,7 +636,8 @@ struct drm_info_list { +@@ -645,7 +649,8 @@ struct drm_info_list { int (*show)(struct seq_file*, void*); /** show callback */ u32 driver_features; /**< Required driver features for this entry */ void *data; @@ -88351,7 +94713,7 @@ index e928625..ff97886 100644 /** * debugfs node structure. This structure represents a debugfs file. -@@ -716,7 +721,7 @@ struct drm_device { +@@ -729,7 +734,7 @@ struct drm_device { /** \name Usage Counters */ /*@{ */ @@ -88361,10 +94723,10 @@ index e928625..ff97886 100644 int buf_use; /**< Buffers in use -- cannot alloc */ atomic_t buf_alloc; /**< Buffer allocation in progress */ diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h -index c250a22..59d2094 100644 +index c8fc187..079d4c2 100644 --- a/include/drm/drm_crtc_helper.h +++ b/include/drm/drm_crtc_helper.h -@@ -160,7 +160,7 @@ struct drm_encoder_helper_funcs { +@@ -161,7 +161,7 @@ struct drm_encoder_helper_funcs { int (*atomic_check)(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); @@ -88374,7 +94736,7 @@ index c250a22..59d2094 100644 /** * struct drm_connector_helper_funcs - helper operations for connectors diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h -index d016dc5..3951fe0 100644 +index 6133723..4c1fccb 100644 --- a/include/drm/i915_pciids.h +++ b/include/drm/i915_pciids.h @@ -37,7 +37,7 @@ @@ -88498,11 +94860,11 @@ index 576e463..28fd926 100644 extern void __register_binfmt(struct linux_binfmt *fmt, int insert); diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h -index dbfbf49..10be372 100644 +index ea17cca..dd56e56 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h -@@ -299,7 +299,7 @@ static inline int bitmap_full(const unsigned long *src, unsigned int nbits) - return __bitmap_full(src, nbits); +@@ -295,7 +295,7 @@ static inline int bitmap_full(const unsigned long *src, unsigned int nbits) + return find_first_zero_bit(src, nbits) == nbits; } -static inline int bitmap_weight(const unsigned long *src, unsigned int nbits) @@ -88511,7 +94873,7 @@ index dbfbf49..10be372 100644 if (small_const_nbits(nbits)) return hweight_long(*src & BITMAP_LAST_WORD_MASK(nbits)); diff --git a/include/linux/bitops.h b/include/linux/bitops.h -index 5d858e0..336c1d9 100644 +index 297f5bd..0b6d1e8 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h @@ -105,7 +105,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift) @@ -88542,10 +94904,10 @@ index 5d858e0..336c1d9 100644 if (sizeof(l) == 4) return fls(l); diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h -index 7f9a516..8889453 100644 +index 5d93a66..978c4a0 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h -@@ -1616,7 +1616,7 @@ struct block_device_operations { +@@ -1614,7 +1614,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; @@ -88587,12 +94949,26 @@ index 17e7e82..1d7da26 100644 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES))) #endif diff --git a/include/linux/capability.h b/include/linux/capability.h -index aa93e5e..985a1b0 100644 +index af9f0b9..71a5e5c 100644 --- a/include/linux/capability.h +++ b/include/linux/capability.h -@@ -214,9 +214,14 @@ extern bool has_ns_capability_noaudit(struct task_struct *t, - extern bool capable(int cap); - extern bool ns_capable(struct user_namespace *ns, int cap); +@@ -237,15 +237,28 @@ static inline bool capable(int cap) + { + return true; + } ++static inline bool capable_nolog(int cap) ++{ ++ return true; ++} + static inline bool ns_capable(struct user_namespace *ns, int cap) + { + return true; + } ++static inline bool ns_capable_nolog(struct user_namespace *ns, int cap) ++{ ++ return true; ++} + #endif /* CONFIG_MULTIUSER */ extern bool capable_wrt_inode_uidgid(const struct inode *inode, int cap); +extern bool capable_wrt_inode_uidgid_nolog(const struct inode *inode, int cap); extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap); @@ -88618,20 +94994,20 @@ index 8609d57..86e4d79 100644 int (*generic_packet) (struct cdrom_device_info *, struct packet_command *); diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h -index 4ce9056..86caac6 100644 +index bda5ec0b4..51d8ea1 100644 --- a/include/linux/cleancache.h +++ b/include/linux/cleancache.h -@@ -31,7 +31,7 @@ struct cleancache_ops { +@@ -35,7 +35,7 @@ struct cleancache_ops { void (*invalidate_page)(int, struct cleancache_filekey, pgoff_t); void (*invalidate_inode)(int, struct cleancache_filekey); void (*invalidate_fs)(int); -}; +} __no_const; - extern struct cleancache_ops * - cleancache_register_ops(struct cleancache_ops *ops); + extern int cleancache_register_ops(struct cleancache_ops *ops); + extern void __cleancache_init_fs(struct super_block *); diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h -index 5591ea7..61b77ce 100644 +index df69531..0180e68 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -195,6 +195,7 @@ struct clk_ops { @@ -88642,8 +95018,55 @@ index 5591ea7..61b77ce 100644 /** * struct clk_init_data - holds init data that's common to all clocks and is +@@ -209,7 +210,7 @@ struct clk_ops { + struct clk_init_data { + const char *name; + const struct clk_ops *ops; +- const char **parent_names; ++ const char * const *parent_names; + u8 num_parents; + unsigned long flags; + }; +@@ -426,12 +427,12 @@ extern const struct clk_ops clk_mux_ops; + extern const struct clk_ops clk_mux_ro_ops; + + struct clk *clk_register_mux(struct device *dev, const char *name, +- const char **parent_names, u8 num_parents, unsigned long flags, ++ const char * const *parent_names, u8 num_parents, unsigned long flags, + void __iomem *reg, u8 shift, u8 width, + u8 clk_mux_flags, spinlock_t *lock); + + struct clk *clk_register_mux_table(struct device *dev, const char *name, +- const char **parent_names, u8 num_parents, unsigned long flags, ++ const char * const *parent_names, u8 num_parents, unsigned long flags, + void __iomem *reg, u8 shift, u32 mask, + u8 clk_mux_flags, u32 *table, spinlock_t *lock); + +diff --git a/include/linux/clkdev.h b/include/linux/clkdev.h +index 94bad77..a39e810 100644 +--- a/include/linux/clkdev.h ++++ b/include/linux/clkdev.h +@@ -32,7 +32,7 @@ struct clk_lookup { + } + + struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id, +- const char *dev_fmt, ...); ++ const char *dev_fmt, ...) __printf(3, 4); + + void clkdev_add(struct clk_lookup *cl); + void clkdev_drop(struct clk_lookup *cl); +@@ -40,7 +40,8 @@ void clkdev_drop(struct clk_lookup *cl); + void clkdev_add_table(struct clk_lookup *, size_t); + int clk_add_alias(const char *, const char *, char *, struct device *); + +-int clk_register_clkdev(struct clk *, const char *, const char *, ...); ++int clk_register_clkdev(struct clk *, const char *, const char *, ...) ++ __printf(3, 4); + int clk_register_clkdevs(struct clk *, struct clk_lookup *, size_t); + + #ifdef CONFIG_COMMON_CLK diff --git a/include/linux/compat.h b/include/linux/compat.h -index ab25814..d1540d1 100644 +index ab25814..63b52db 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -316,7 +316,7 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr, @@ -88664,6 +95087,15 @@ index ab25814..d1540d1 100644 asmlinkage long compat_sys_keyctl(u32 option, u32 arg2, u32 arg3, u32 arg4, u32 arg5); asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u32); +@@ -424,7 +424,7 @@ asmlinkage long compat_sys_settimeofday(struct compat_timeval __user *tv, + + asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp); + +-extern int compat_printk(const char *fmt, ...); ++extern __printf(1, 2) int compat_printk(const char *fmt, ...); + extern void sigset_from_compat(sigset_t *set, const compat_sigset_t *compat); + extern void sigset_to_compat(compat_sigset_t *compat, const sigset_t *set); + @@ -439,7 +439,7 @@ extern int compat_ptrace_request(struct task_struct *child, extern long compat_arch_ptrace(struct task_struct *child, compat_long_t request, compat_ulong_t addr, compat_ulong_t data); @@ -88674,10 +95106,10 @@ index ab25814..d1540d1 100644 asmlinkage long compat_sys_lookup_dcookie(u32, u32, char __user *, compat_size_t); /* diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h -index cdf13ca..ba5e086 100644 +index 371e560..e2e4e3e 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h -@@ -94,8 +94,8 @@ +@@ -108,8 +108,8 @@ */ #define __pure __attribute__((pure)) #define __aligned(x) __attribute__((aligned(x))) @@ -88771,7 +95203,7 @@ index efee493..8aa8f6b 100644 * Mark a position in code as unreachable. This can be used to * suppress control flow warnings after asm blocks that transfer diff --git a/include/linux/compiler.h b/include/linux/compiler.h -index 1b45e4a..eff29a7 100644 +index 8677225..2d49df1 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -5,11 +5,14 @@ @@ -88839,25 +95271,22 @@ index 1b45e4a..eff29a7 100644 #endif /* Indirect macros required for expanded argument pasting, eg. __LINE__. */ -@@ -205,32 +227,32 @@ static __always_inline void data_access_exceeds_word_size(void) +@@ -199,27 +221,27 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); static __always_inline void __read_once_size(const volatile void *p, void *res, int size) { switch (size) { - case 1: *(__u8 *)res = *(volatile __u8 *)p; break; - case 2: *(__u16 *)res = *(volatile __u16 *)p; break; - case 4: *(__u32 *)res = *(volatile __u32 *)p; break; +- case 8: *(__u64 *)res = *(volatile __u64 *)p; break; + case 1: *(__u8 *)res = *(const volatile __u8 *)p; break; + case 2: *(__u16 *)res = *(const volatile __u16 *)p; break; + case 4: *(__u32 *)res = *(const volatile __u32 *)p; break; - #ifdef CONFIG_64BIT -- case 8: *(__u64 *)res = *(volatile __u64 *)p; break; + case 8: *(__u64 *)res = *(const volatile __u64 *)p; break; - #endif default: barrier(); - __builtin_memcpy((void *)res, (const void *)p, size); + __builtin_memcpy(res, (const void *)p, size); - data_access_exceeds_word_size(); barrier(); } } @@ -88869,21 +95298,19 @@ index 1b45e4a..eff29a7 100644 - case 1: *(volatile __u8 *)p = *(__u8 *)res; break; - case 2: *(volatile __u16 *)p = *(__u16 *)res; break; - case 4: *(volatile __u32 *)p = *(__u32 *)res; break; +- case 8: *(volatile __u64 *)p = *(__u64 *)res; break; + case 1: *(volatile __u8 *)p = *(const __u8 *)res; break; + case 2: *(volatile __u16 *)p = *(const __u16 *)res; break; + case 4: *(volatile __u32 *)p = *(const __u32 *)res; break; - #ifdef CONFIG_64BIT -- case 8: *(volatile __u64 *)p = *(__u64 *)res; break; + case 8: *(volatile __u64 *)p = *(const __u64 *)res; break; - #endif default: barrier(); - __builtin_memcpy((void *)p, (const void *)res, size); + __builtin_memcpy((void *)p, res, size); - data_access_exceeds_word_size(); barrier(); } -@@ -364,6 +386,38 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s + } +@@ -352,6 +374,38 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s # define __attribute_const__ /* unimplemented */ #endif @@ -88922,7 +95349,7 @@ index 1b45e4a..eff29a7 100644 /* * Tell gcc if a function is cold. The compiler will assume any path * directly leading to the call is unlikely. -@@ -373,6 +427,22 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s +@@ -361,6 +415,22 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s #define __cold #endif @@ -88945,7 +95372,7 @@ index 1b45e4a..eff29a7 100644 /* Simple shorthand for a section definition */ #ifndef __section # define __section(S) __attribute__ ((__section__(#S))) -@@ -387,6 +457,8 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s +@@ -375,6 +445,8 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) #endif @@ -88954,7 +95381,7 @@ index 1b45e4a..eff29a7 100644 /* Is this type a native word size -- useful for atomic operations */ #ifndef __native_word # define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) -@@ -466,8 +538,9 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s +@@ -454,8 +526,9 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s */ #define __ACCESS_ONCE(x) ({ \ __maybe_unused typeof(x) __var = (__force typeof(x)) 0; \ @@ -88993,10 +95420,20 @@ index 5d5aaae..0ea9b84 100644 extern bool completion_done(struct completion *x); diff --git a/include/linux/configfs.h b/include/linux/configfs.h -index 34025df..d94bbbc 100644 +index 34025df..9c263df 100644 --- a/include/linux/configfs.h +++ b/include/linux/configfs.h -@@ -125,7 +125,7 @@ struct configfs_attribute { +@@ -64,7 +64,8 @@ struct config_item { + struct dentry *ci_dentry; + }; + +-extern int config_item_set_name(struct config_item *, const char *, ...); ++extern __printf(2, 3) ++int config_item_set_name(struct config_item *, const char *, ...); + + static inline char *config_item_name(struct config_item * item) + { +@@ -125,7 +126,7 @@ struct configfs_attribute { const char *ca_name; struct module *ca_owner; umode_t ca_mode; @@ -89005,6 +95442,24 @@ index 34025df..d94bbbc 100644 /* * Users often need to create attribute structures for their configurable +diff --git a/include/linux/cpu.h b/include/linux/cpu.h +index c0fb6b1..23c30bd 100644 +--- a/include/linux/cpu.h ++++ b/include/linux/cpu.h +@@ -40,9 +40,10 @@ extern void cpu_remove_dev_attr(struct device_attribute *attr); + extern int cpu_add_dev_attr_group(struct attribute_group *attrs); + extern void cpu_remove_dev_attr_group(struct attribute_group *attrs); + +-extern struct device *cpu_device_create(struct device *parent, void *drvdata, +- const struct attribute_group **groups, +- const char *fmt, ...); ++extern __printf(4, 5) ++struct device *cpu_device_create(struct device *parent, void *drvdata, ++ const struct attribute_group **groups, ++ const char *fmt, ...); + #ifdef CONFIG_HOTPLUG_CPU + extern void unregister_cpu(struct cpu *cpu); + extern ssize_t arch_cpu_probe(const char *, size_t); diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 2ee4888..0451f5e 100644 --- a/include/linux/cpufreq.h @@ -89050,10 +95505,10 @@ index 9c5e892..feb34e0 100644 #ifdef CONFIG_CPU_IDLE extern int cpuidle_register_governor(struct cpuidle_governor *gov); diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h -index 086549a..a572d94 100644 +index 59915ea..81ebec0 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h -@@ -126,17 +126,17 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp) +@@ -127,17 +127,17 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp) } /* Valid inputs for n are -1 and 0. */ @@ -89074,7 +95529,7 @@ index 086549a..a572d94 100644 const struct cpumask *srcp, const struct cpumask *andp) { -@@ -182,7 +182,7 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp) +@@ -181,7 +181,7 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp) * * Returns >= nr_cpu_ids if no further cpus set. */ @@ -89083,7 +95538,7 @@ index 086549a..a572d94 100644 { /* -1 is a legal arg here. */ if (n != -1) -@@ -197,7 +197,7 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp) +@@ -196,7 +196,7 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp) * * Returns >= nr_cpu_ids if no further cpus unset. */ @@ -89092,16 +95547,16 @@ index 086549a..a572d94 100644 { /* -1 is a legal arg here. */ if (n != -1) -@@ -205,7 +205,7 @@ static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp) +@@ -204,7 +204,7 @@ static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp) return find_next_zero_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1); } -int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *); +int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *) __intentional_overflow(-1); int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); - int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp); + unsigned int cpumask_local_spread(unsigned int i, int node); -@@ -472,7 +472,7 @@ static inline bool cpumask_full(const struct cpumask *srcp) +@@ -471,7 +471,7 @@ static inline bool cpumask_full(const struct cpumask *srcp) * cpumask_weight - Count of bits in *srcp * @srcp: the cpumask to count bits (< nr_cpu_ids) in. */ @@ -89111,7 +95566,7 @@ index 086549a..a572d94 100644 return bitmap_weight(cpumask_bits(srcp), nr_cpumask_bits); } diff --git a/include/linux/cred.h b/include/linux/cred.h -index 2fb2ca2..d6a3340 100644 +index 8b6c083..51cb9f5 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h @@ -35,7 +35,7 @@ struct group_info { @@ -89123,7 +95578,7 @@ index 2fb2ca2..d6a3340 100644 /** * get_group_info - Get a reference to a group info structure -@@ -137,7 +137,7 @@ struct cred { +@@ -152,7 +152,7 @@ struct cred { struct user_namespace *user_ns; /* user_ns the caps and keyrings are relative to. */ struct group_info *group_info; /* supplementary groups for euid/fsgid */ struct rcu_head rcu; /* RCU deletion hook */ @@ -89132,7 +95587,7 @@ index 2fb2ca2..d6a3340 100644 extern void __put_cred(struct cred *); extern void exit_creds(struct task_struct *); -@@ -195,6 +195,9 @@ static inline void validate_creds_for_do_exit(struct task_struct *tsk) +@@ -210,6 +210,9 @@ static inline void validate_creds_for_do_exit(struct task_struct *tsk) static inline void validate_process_creds(void) { } @@ -89142,7 +95597,7 @@ index 2fb2ca2..d6a3340 100644 #endif /** -@@ -332,6 +335,7 @@ static inline void put_cred(const struct cred *_cred) +@@ -347,6 +350,7 @@ static inline void put_cred(const struct cred *_cred) #define task_uid(task) (task_cred_xxx((task), uid)) #define task_euid(task) (task_cred_xxx((task), euid)) @@ -89151,10 +95606,10 @@ index 2fb2ca2..d6a3340 100644 #define current_cred_xxx(xxx) \ ({ \ diff --git a/include/linux/crypto.h b/include/linux/crypto.h -index fb5ef16..05d1e59 100644 +index 10df5d2..503d678 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h -@@ -626,7 +626,7 @@ struct cipher_tfm { +@@ -632,7 +632,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); @@ -89163,7 +95618,7 @@ index fb5ef16..05d1e59 100644 struct hash_tfm { int (*init)(struct hash_desc *desc); -@@ -647,13 +647,13 @@ struct compress_tfm { +@@ -653,13 +653,13 @@ struct compress_tfm { int (*cot_decompress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); @@ -89193,7 +95648,7 @@ index 653589e..4ef254a 100644 return c | 0x20; } diff --git a/include/linux/dcache.h b/include/linux/dcache.h -index d835879..c8e5b92 100644 +index df334cb..e730faa 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -123,6 +123,9 @@ struct dentry { @@ -89215,7 +95670,7 @@ index d835879..c8e5b92 100644 /* * dentry->d_lock spinlock nesting subclasses: -@@ -319,7 +322,7 @@ extern struct dentry *__d_lookup_rcu(const struct dentry *parent, +@@ -319,13 +322,14 @@ extern struct dentry *__d_lookup_rcu(const struct dentry *parent, static inline unsigned d_count(const struct dentry *dentry) { @@ -89224,7 +95679,15 @@ index d835879..c8e5b92 100644 } /* -@@ -347,7 +350,7 @@ extern char *dentry_path(struct dentry *, char *, int); + * helper function for dentry_operations.d_dname() members + */ +-extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); ++extern __printf(4, 5) ++char *dynamic_dname(struct dentry *, char *, int, const char *, ...); + extern char *simple_dname(struct dentry *, char *, int); + + extern char *__d_path(const struct path *, const struct path *, char *, int); +@@ -347,7 +351,7 @@ extern char *dentry_path(struct dentry *, char *, int); static inline struct dentry *dget_dlock(struct dentry *dentry) { if (dentry) @@ -89260,10 +95723,10 @@ index ce447f0..83c66bd 100644 /** * struct devfreq - Device devfreq structure diff --git a/include/linux/device.h b/include/linux/device.h -index 0eb8ee2..c603b6a 100644 +index 6558af9..48bce1a 100644 --- a/include/linux/device.h +++ b/include/linux/device.h -@@ -311,7 +311,7 @@ struct subsys_interface { +@@ -312,7 +312,7 @@ struct subsys_interface { struct list_head node; int (*add_dev)(struct device *dev, struct subsys_interface *sif); int (*remove_dev)(struct device *dev, struct subsys_interface *sif); @@ -89272,7 +95735,7 @@ index 0eb8ee2..c603b6a 100644 int subsys_interface_register(struct subsys_interface *sif); void subsys_interface_unregister(struct subsys_interface *sif); -@@ -507,7 +507,7 @@ struct device_type { +@@ -508,7 +508,7 @@ struct device_type { void (*release)(struct device *dev); const struct dev_pm_ops *pm; @@ -89281,7 +95744,7 @@ index 0eb8ee2..c603b6a 100644 /* interface for exporting device attributes */ struct device_attribute { -@@ -517,11 +517,12 @@ struct device_attribute { +@@ -518,11 +518,12 @@ struct device_attribute { ssize_t (*store)(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); }; @@ -89295,11 +95758,40 @@ index 0eb8ee2..c603b6a 100644 ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr, char *buf); +@@ -607,8 +608,9 @@ extern int devres_release_group(struct device *dev, void *id); + + /* managed devm_k.alloc/kfree for device drivers */ + extern void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp); +-extern char *devm_kvasprintf(struct device *dev, gfp_t gfp, const char *fmt, +- va_list ap); ++extern __printf(3, 0) ++char *devm_kvasprintf(struct device *dev, gfp_t gfp, const char *fmt, ++ va_list ap); + extern __printf(3, 4) + char *devm_kasprintf(struct device *dev, gfp_t gfp, const char *fmt, ...); + static inline void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp) +@@ -980,12 +982,10 @@ extern int __must_check device_reprobe(struct device *dev); + /* + * Easy functions for dynamically creating devices on the fly + */ +-extern struct device *device_create_vargs(struct class *cls, +- struct device *parent, +- dev_t devt, +- void *drvdata, +- const char *fmt, +- va_list vargs); ++extern __printf(5, 0) ++struct device *device_create_vargs(struct class *cls, struct device *parent, ++ dev_t devt, void *drvdata, ++ const char *fmt, va_list vargs); + extern __printf(5, 6) + struct device *device_create(struct class *cls, struct device *parent, + dev_t devt, void *drvdata, diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h -index c3007cb..43efc8c 100644 +index ac07ff0..edff186 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h -@@ -60,7 +60,7 @@ struct dma_map_ops { +@@ -64,7 +64,7 @@ struct dma_map_ops { u64 (*get_required_mask)(struct device *dev); #endif int is_phys; @@ -89308,27 +95800,11 @@ index c3007cb..43efc8c 100644 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) -diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h -index b6997a0..108be6c 100644 ---- a/include/linux/dmaengine.h -+++ b/include/linux/dmaengine.h -@@ -1133,9 +1133,9 @@ struct dma_pinned_list { - struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len); - void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list); - --dma_cookie_t dma_memcpy_to_iovec(struct dma_chan *chan, struct iovec *iov, -+dma_cookie_t __intentional_overflow(0) dma_memcpy_to_iovec(struct dma_chan *chan, struct iovec *iov, - struct dma_pinned_list *pinned_list, unsigned char *kdata, size_t len); --dma_cookie_t dma_memcpy_pg_to_iovec(struct dma_chan *chan, struct iovec *iov, -+dma_cookie_t __intentional_overflow(0) dma_memcpy_pg_to_iovec(struct dma_chan *chan, struct iovec *iov, - struct dma_pinned_list *pinned_list, struct page *page, - unsigned int offset, size_t len); - diff --git a/include/linux/efi.h b/include/linux/efi.h -index cf7e431..d239dce 100644 +index af5be03..d8a6ae2 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h -@@ -1056,6 +1056,7 @@ struct efivar_operations { +@@ -1057,6 +1057,7 @@ struct efivar_operations { efi_set_variable_nonblocking_t *set_variable_nonblocking; efi_query_variable_store_t *query_variable_store; }; @@ -89429,10 +95905,10 @@ index 8293262..2b3b8bd 100644 extern bool frontswap_enabled; extern struct frontswap_ops * diff --git a/include/linux/fs.h b/include/linux/fs.h -index 52cc449..31f35cb 100644 +index 571aab9..03a5b06 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -410,7 +410,7 @@ struct address_space { +@@ -437,7 +437,7 @@ struct address_space { spinlock_t private_lock; /* for use by the address_space */ struct list_head private_list; /* ditto */ void *private_data; /* ditto */ @@ -89441,7 +95917,7 @@ index 52cc449..31f35cb 100644 /* * On most architectures that alignment is already the case; but * must be enforced here for CRIS, to let the least significant bit -@@ -453,7 +453,7 @@ struct block_device { +@@ -480,7 +480,7 @@ struct block_device { int bd_fsfreeze_count; /* Mutex for freeze */ struct mutex bd_fsfreeze_mutex; @@ -89450,7 +95926,7 @@ index 52cc449..31f35cb 100644 /* * Radix-tree tags, for tagging dirty and writeback pages within the pagecache -@@ -639,7 +639,7 @@ struct inode { +@@ -666,7 +666,7 @@ struct inode { #endif void *i_private; /* fs or device private pointer */ @@ -89459,7 +95935,7 @@ index 52cc449..31f35cb 100644 static inline int inode_unhashed(struct inode *inode) { -@@ -834,7 +834,7 @@ struct file { +@@ -861,7 +861,7 @@ struct file { struct list_head f_tfile_llink; #endif /* #ifdef CONFIG_EPOLL */ struct address_space *f_mapping; @@ -89468,7 +95944,7 @@ index 52cc449..31f35cb 100644 struct file_handle { __u32 handle_bytes; -@@ -962,7 +962,7 @@ struct file_lock { +@@ -990,7 +990,7 @@ struct file_lock { int state; /* state of grant or error if -ve */ } afs; } fl_u; @@ -89477,7 +95953,7 @@ index 52cc449..31f35cb 100644 struct file_lock_context { spinlock_t flc_lock; -@@ -1316,7 +1316,7 @@ struct super_block { +@@ -1351,7 +1351,7 @@ struct super_block { * Indicates how deep in a filesystem stack this SB is */ int s_stack_depth; @@ -89486,7 +95962,7 @@ index 52cc449..31f35cb 100644 extern struct timespec current_fs_time(struct super_block *sb); -@@ -1570,7 +1570,8 @@ struct file_operations { +@@ -1603,7 +1603,8 @@ struct file_operations { #ifndef CONFIG_MMU unsigned (*mmap_capabilities)(struct file *); #endif @@ -89496,7 +95972,7 @@ index 52cc449..31f35cb 100644 struct inode_operations { struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); -@@ -2269,7 +2270,7 @@ extern int register_chrdev_region(dev_t, unsigned, const char *); +@@ -2303,7 +2304,7 @@ extern int register_chrdev_region(dev_t, unsigned, const char *); extern int __register_chrdev(unsigned int major, unsigned int baseminor, unsigned int count, const char *name, const struct file_operations *fops); @@ -89505,7 +95981,7 @@ index 52cc449..31f35cb 100644 unsigned int count, const char *name); extern void unregister_chrdev_region(dev_t, unsigned); extern void chrdev_show(struct seq_file *,off_t); -@@ -2918,4 +2919,14 @@ static inline bool dir_relax(struct inode *inode) +@@ -2989,4 +2990,14 @@ static inline bool dir_relax(struct inode *inode) return !IS_DEADDIR(inode); } @@ -89644,10 +96120,10 @@ index 667c311..abac2a7 100644 }; diff --git a/include/linux/gfp.h b/include/linux/gfp.h -index 51bd1e7..0486343 100644 +index 15928f0..90b31d7 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h -@@ -34,6 +34,13 @@ struct vm_area_struct; +@@ -35,6 +35,13 @@ struct vm_area_struct; #define ___GFP_NO_KSWAPD 0x400000u #define ___GFP_OTHER_NODE 0x800000u #define ___GFP_WRITE 0x1000000u @@ -89661,7 +96137,7 @@ index 51bd1e7..0486343 100644 /* If the above are modified, __GFP_BITS_SHIFT may need updating */ /* -@@ -90,6 +97,7 @@ struct vm_area_struct; +@@ -94,6 +101,7 @@ struct vm_area_struct; #define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD) #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */ #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) /* Allocator intends to dirty page */ @@ -89669,7 +96145,7 @@ index 51bd1e7..0486343 100644 /* * This may seem redundant, but it's a way of annotating false positives vs. -@@ -97,7 +105,7 @@ struct vm_area_struct; +@@ -101,7 +109,7 @@ struct vm_area_struct; */ #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK) @@ -89678,7 +96154,7 @@ index 51bd1e7..0486343 100644 #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) /* This equals 0, but use constants in case they ever change */ -@@ -152,6 +160,8 @@ struct vm_area_struct; +@@ -146,6 +154,8 @@ struct vm_area_struct; /* 4GB DMA on some platforms */ #define GFP_DMA32 __GFP_DMA32 @@ -90720,10 +97196,10 @@ index 0000000..26ef560 +#define GR_MSRWRITE_MSG "denied write to CPU MSR by " diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h new file mode 100644 -index 0000000..63c1850 +index 0000000..085a746 --- /dev/null +++ b/include/linux/grsecurity.h -@@ -0,0 +1,250 @@ +@@ -0,0 +1,247 @@ +#ifndef GR_SECURITY_H +#define GR_SECURITY_H +#include @@ -90816,9 +97292,7 @@ index 0000000..63c1850 +void gr_log_rwxmmap(struct file *file); +void gr_log_rwxmprotect(struct vm_area_struct *vma); + -+int gr_handle_follow_link(const struct inode *parent, -+ const struct inode *inode, -+ const struct dentry *dentry, ++int gr_handle_follow_link(const struct dentry *dentry, + const struct vfsmount *mnt); +int gr_handle_fifo(const struct dentry *dentry, + const struct vfsmount *mnt, @@ -90826,8 +97300,7 @@ index 0000000..63c1850 + const int acc_mode); +int gr_handle_hardlink(const struct dentry *dentry, + const struct vfsmount *mnt, -+ struct inode *inode, -+ const int mode, const struct filename *to); ++ const struct filename *to); + +int gr_is_capable(const int cap); +int gr_is_capable_nolog(const int cap); @@ -91047,7 +97520,7 @@ index 1c7b89a..7dda400 100644 container_of(_dev_attr, struct sensor_device_attribute_2, dev_attr) diff --git a/include/linux/i2c.h b/include/linux/i2c.h -index f17da50..2f8b203 100644 +index e83a738..8b323fa 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -409,6 +409,7 @@ struct i2c_algorithm { @@ -91059,10 +97532,10 @@ index f17da50..2f8b203 100644 /** * struct i2c_bus_recovery_info - I2C bus recovery information diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h -index aff7ad8..3942bbd 100644 +index 66a7d76..5e68d20 100644 --- a/include/linux/if_pppox.h +++ b/include/linux/if_pppox.h -@@ -76,7 +76,7 @@ struct pppox_proto { +@@ -78,7 +78,7 @@ struct pppox_proto { int (*ioctl)(struct socket *sock, unsigned int cmd, unsigned long arg); struct module *owner; @@ -91072,7 +97545,7 @@ index aff7ad8..3942bbd 100644 extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp); extern void unregister_pppox_proto(int proto_num); diff --git a/include/linux/init.h b/include/linux/init.h -index 2df8e8d..3e1280d 100644 +index 21b6d76..4a6775c 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -37,9 +37,17 @@ @@ -91129,10 +97602,10 @@ index 696d223..6d6b39f 100644 .files = &init_files, \ .signal = &init_signals, \ diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h -index 2e88580..f6a99a0 100644 +index 950ae45..df6ac60 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h -@@ -420,8 +420,8 @@ extern const char * const softirq_to_name[NR_SOFTIRQS]; +@@ -432,8 +432,8 @@ extern const char * const softirq_to_name[NR_SOFTIRQS]; struct softirq_action { @@ -91143,7 +97616,7 @@ index 2e88580..f6a99a0 100644 asmlinkage void do_softirq(void); asmlinkage void __do_softirq(void); -@@ -435,7 +435,7 @@ static inline void do_softirq_own_stack(void) +@@ -447,7 +447,7 @@ static inline void do_softirq_own_stack(void) } #endif @@ -91153,10 +97626,10 @@ index 2e88580..f6a99a0 100644 extern void __raise_softirq_irqoff(unsigned int nr); diff --git a/include/linux/iommu.h b/include/linux/iommu.h -index 38daa45..4de4317 100644 +index 0546b87..46fd5b6 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h -@@ -147,7 +147,7 @@ struct iommu_ops { +@@ -174,7 +174,7 @@ struct iommu_ops { unsigned long pgsize_bitmap; void *priv; @@ -91165,8 +97638,17 @@ index 38daa45..4de4317 100644 #define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1 /* Device added */ #define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2 /* Pre Device removed */ +@@ -234,7 +234,7 @@ extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr, + void *data); + struct device *iommu_device_create(struct device *parent, void *drvdata, + const struct attribute_group **groups, +- const char *fmt, ...); ++ const char *fmt, ...) __printf(4, 5); + void iommu_device_destroy(struct device *dev); + int iommu_device_link(struct device *dev, struct device *link); + void iommu_device_unlink(struct device *dev, struct device *link); diff --git a/include/linux/ioport.h b/include/linux/ioport.h -index 2c525022..345b106 100644 +index 388e3ae..d7e45a1 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -161,7 +161,7 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start); @@ -91192,11 +97674,11 @@ index 1eee6bc..9cf4912 100644 extern struct ipc_namespace init_ipc_ns; extern atomic_t nr_ipc_ns; diff --git a/include/linux/irq.h b/include/linux/irq.h -index d09ec7a..f373eb5 100644 +index 62c6901..827f8f6 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h -@@ -364,7 +364,8 @@ struct irq_chip { - void (*irq_write_msi_msg)(struct irq_data *data, struct msi_msg *msg); +@@ -370,7 +370,8 @@ struct irq_chip { + int (*irq_set_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool state); unsigned long flags; -}; @@ -91205,19 +97687,6 @@ index d09ec7a..f373eb5 100644 /* * irq_chip specific flags -diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h -index 71d706d..817cdec 100644 ---- a/include/linux/irqchip/arm-gic.h -+++ b/include/linux/irqchip/arm-gic.h -@@ -95,7 +95,7 @@ - - struct device_node; - --extern struct irq_chip gic_arch_extn; -+extern irq_chip_no_const gic_arch_extn; - - void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *, - u32 offset, struct device_node *); diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h index dd1109f..4f4fdda 100644 --- a/include/linux/irqdesc.h @@ -91312,10 +97781,10 @@ index 6883e19..e854fcb 100644 /* This macro allows us to keep printk typechecking */ static __printf(1, 2) diff --git a/include/linux/kernel.h b/include/linux/kernel.h -index d6d630d..feea1f5 100644 +index 3a5b48e..240107b 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h -@@ -378,7 +378,7 @@ static inline int __must_check kstrtos32_from_user(const char __user *s, size_t +@@ -390,7 +390,7 @@ static inline int __must_check kstrtos32_from_user(const char __user *s, size_t /* Obsolete, do not use. Use kstrto instead */ extern unsigned long simple_strtoul(const char *,char **,unsigned int); @@ -91324,6 +97793,38 @@ index d6d630d..feea1f5 100644 extern unsigned long long simple_strtoull(const char *,char **,unsigned int); extern long long simple_strtoll(const char *,char **,unsigned int); +@@ -410,7 +410,8 @@ extern __printf(3, 0) + int vscnprintf(char *buf, size_t size, const char *fmt, va_list args); + extern __printf(2, 3) + char *kasprintf(gfp_t gfp, const char *fmt, ...); +-extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); ++extern __printf(2, 0) ++char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); + + extern __scanf(2, 3) + int sscanf(const char *, const char *, ...); +@@ -681,10 +682,10 @@ do { \ + __ftrace_vprintk(_THIS_IP_, fmt, vargs); \ + } while (0) + +-extern int ++extern __printf(2, 0) int + __ftrace_vbprintk(unsigned long ip, const char *fmt, va_list ap); + +-extern int ++extern __printf(2, 0) int + __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap); + + extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); +@@ -704,7 +705,7 @@ int trace_printk(const char *fmt, ...) + { + return 0; + } +-static inline int ++static __printf(1, 0) inline int + ftrace_vprintk(const char *fmt, va_list ap) + { + return 0; diff --git a/include/linux/key-type.h b/include/linux/key-type.h index ff9f1d3..6712be5 100644 --- a/include/linux/key-type.h @@ -91369,7 +97870,7 @@ index e465bb1..19f605fd 100644 extern struct kgdb_arch arch_kgdb_ops; diff --git a/include/linux/kmemleak.h b/include/linux/kmemleak.h -index e705467..a92471d 100644 +index d0a1f99..0bd8b7c 100644 --- a/include/linux/kmemleak.h +++ b/include/linux/kmemleak.h @@ -27,7 +27,7 @@ @@ -91378,10 +97879,10 @@ index e705467..a92471d 100644 extern void kmemleak_alloc(const void *ptr, size_t size, int min_count, - gfp_t gfp) __ref; + gfp_t gfp) __ref __size_overflow(2); - extern void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size) __ref; + extern void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size, + gfp_t gfp) __ref; extern void kmemleak_free(const void *ptr) __ref; - extern void kmemleak_free_part(const void *ptr, size_t size) __ref; -@@ -62,7 +62,7 @@ static inline void kmemleak_erase(void **ptr) +@@ -63,7 +63,7 @@ static inline void kmemleak_erase(void **ptr) static inline void kmemleak_init(void) { } @@ -91414,10 +97915,22 @@ index 0555cc6..40116ce 100644 char **envp; int wait; diff --git a/include/linux/kobject.h b/include/linux/kobject.h -index 2d61b90..a1d0a13 100644 +index 2d61b90..3d69945 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h -@@ -118,7 +118,7 @@ struct kobj_type { +@@ -80,8 +80,9 @@ struct kobject { + + extern __printf(2, 3) + int kobject_set_name(struct kobject *kobj, const char *name, ...); +-extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, +- va_list vargs); ++extern __printf(2, 0) ++int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, ++ va_list vargs); + + static inline const char *kobject_name(const struct kobject *kobj) + { +@@ -118,7 +119,7 @@ struct kobj_type { struct attribute **default_attrs; const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj); const void *(*namespace)(struct kobject *kobj); @@ -91426,7 +97939,7 @@ index 2d61b90..a1d0a13 100644 struct kobj_uevent_env { char *argv[3]; -@@ -142,6 +142,7 @@ struct kobj_attribute { +@@ -142,6 +143,7 @@ struct kobj_attribute { ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count); }; @@ -91434,7 +97947,7 @@ index 2d61b90..a1d0a13 100644 extern const struct sysfs_ops kobj_sysfs_ops; -@@ -169,7 +170,7 @@ struct kset { +@@ -169,7 +171,7 @@ struct kset { spinlock_t list_lock; struct kobject kobj; const struct kset_uevent_ops *uevent_ops; @@ -91470,7 +97983,7 @@ index 484604d..0f6c5b6 100644 if (atomic_sub_and_test((int) count, &kref->refcount)) { release(kref); diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h -index d12b210..d91fd76 100644 +index ad45054..7c54663 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -455,7 +455,7 @@ static inline void kvm_irqfd_exit(void) @@ -91492,10 +98005,10 @@ index d12b210..d91fd76 100644 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu); diff --git a/include/linux/libata.h b/include/linux/libata.h -index 6b08cc1..248c5e9 100644 +index 28aeae4..320b3bf6 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h -@@ -980,7 +980,7 @@ struct ata_port_operations { +@@ -988,7 +988,7 @@ struct ata_port_operations { * fields must be pointers. */ const struct ata_port_operations *inherits; @@ -91669,7 +98182,7 @@ index 3d385c8..deacb6a 100644 static inline int vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst) diff --git a/include/linux/mm.h b/include/linux/mm.h -index 47a9392..ef645bc 100644 +index 0755b9f..2960e96 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -135,6 +135,11 @@ extern unsigned int kobjsize(const void *objp); @@ -91684,7 +98197,7 @@ index 47a9392..ef645bc 100644 #define VM_ACCOUNT 0x00100000 /* Is a VM accounted object */ #define VM_NORESERVE 0x00200000 /* should the VM suppress accounting */ #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ -@@ -254,8 +259,8 @@ struct vm_operations_struct { +@@ -257,8 +262,8 @@ struct vm_operations_struct { /* called by access_process_vm when get_user_pages() fails, typically * for use by special VMAs that can switch between memory and hardware */ @@ -91695,7 +98208,7 @@ index 47a9392..ef645bc 100644 /* Called by the /proc/PID/maps code to ask the vma whether it * has a special name. Returning non-NULL will also cause this -@@ -293,6 +298,7 @@ struct vm_operations_struct { +@@ -296,6 +301,7 @@ struct vm_operations_struct { struct page *(*find_special_page)(struct vm_area_struct *vma, unsigned long addr); }; @@ -91703,7 +98216,7 @@ index 47a9392..ef645bc 100644 struct mmu_gather; struct inode; -@@ -1213,8 +1219,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address, +@@ -1131,8 +1137,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn); int follow_phys(struct vm_area_struct *vma, unsigned long address, unsigned int flags, unsigned long *prot, resource_size_t *phys); @@ -91714,7 +98227,7 @@ index 47a9392..ef645bc 100644 static inline void unmap_shared_mapping_range(struct address_space *mapping, loff_t const holebegin, loff_t const holelen) -@@ -1254,9 +1260,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, +@@ -1172,9 +1178,9 @@ static inline int fixup_user_fault(struct task_struct *tsk, } #endif @@ -91727,8 +98240,8 @@ index 47a9392..ef645bc 100644 long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start, unsigned long nr_pages, -@@ -1299,34 +1305,6 @@ int set_page_dirty_lock(struct page *page); - int clear_page_dirty_for_io(struct page *page); +@@ -1219,34 +1225,6 @@ int clear_page_dirty_for_io(struct page *page); + int get_cmdline(struct task_struct *task, char *buffer, int buflen); -/* Is the vma a continuation of the stack vma above it? */ @@ -91762,7 +98275,7 @@ index 47a9392..ef645bc 100644 extern struct task_struct *task_of_stack(struct task_struct *task, struct vm_area_struct *vma, bool in_group); -@@ -1449,8 +1427,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, +@@ -1369,8 +1347,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, { return 0; } @@ -91778,7 +98291,7 @@ index 47a9392..ef645bc 100644 #endif #if defined(__PAGETABLE_PMD_FOLDED) || !defined(CONFIG_MMU) -@@ -1460,6 +1445,12 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, +@@ -1380,6 +1365,12 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, return 0; } @@ -91791,7 +98304,7 @@ index 47a9392..ef645bc 100644 static inline void mm_nr_pmds_init(struct mm_struct *mm) {} static inline unsigned long mm_nr_pmds(struct mm_struct *mm) -@@ -1472,6 +1463,7 @@ static inline void mm_dec_nr_pmds(struct mm_struct *mm) {} +@@ -1392,6 +1383,7 @@ static inline void mm_dec_nr_pmds(struct mm_struct *mm) {} #else int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); @@ -91799,7 +98312,7 @@ index 47a9392..ef645bc 100644 static inline void mm_nr_pmds_init(struct mm_struct *mm) { -@@ -1509,11 +1501,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a +@@ -1429,11 +1421,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a NULL: pud_offset(pgd, address); } @@ -91823,7 +98336,7 @@ index 47a9392..ef645bc 100644 #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */ #if USE_SPLIT_PTE_PTLOCKS -@@ -1890,12 +1894,23 @@ extern struct vm_area_struct *copy_vma(struct vm_area_struct **, +@@ -1810,12 +1814,23 @@ extern struct vm_area_struct *copy_vma(struct vm_area_struct **, bool *need_rmap_locks); extern void exit_mmap(struct mm_struct *); @@ -91847,7 +98360,7 @@ index 47a9392..ef645bc 100644 if (rlim < RLIM_INFINITY) { if (((new - start) + (end_data - start_data)) > rlim) return -ENOSPC; -@@ -1920,7 +1935,7 @@ extern int install_special_mapping(struct mm_struct *mm, +@@ -1840,7 +1855,7 @@ extern int install_special_mapping(struct mm_struct *mm, unsigned long addr, unsigned long len, unsigned long flags, struct page **pages); @@ -91856,7 +98369,7 @@ index 47a9392..ef645bc 100644 extern unsigned long mmap_region(struct file *file, unsigned long addr, unsigned long len, vm_flags_t vm_flags, unsigned long pgoff); -@@ -1928,6 +1943,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, +@@ -1848,6 +1863,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long pgoff, unsigned long *populate); extern int do_munmap(struct mm_struct *, unsigned long, size_t); @@ -91864,7 +98377,7 @@ index 47a9392..ef645bc 100644 #ifdef CONFIG_MMU extern int __mm_populate(unsigned long addr, unsigned long len, -@@ -1956,10 +1972,11 @@ struct vm_unmapped_area_info { +@@ -1876,10 +1892,11 @@ struct vm_unmapped_area_info { unsigned long high_limit; unsigned long align_mask; unsigned long align_offset; @@ -91878,16 +98391,16 @@ index 47a9392..ef645bc 100644 /* * Search for an unmapped address range. -@@ -1971,7 +1988,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); +@@ -1891,7 +1908,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); * - satisfies (begin_addr & align_mask) == (align_offset & align_mask) */ static inline unsigned long -vm_unmapped_area(struct vm_unmapped_area_info *info) +vm_unmapped_area(const struct vm_unmapped_area_info *info) { - if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN)) - return unmapped_area(info); -@@ -2033,6 +2050,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add + if (info->flags & VM_UNMAPPED_AREA_TOPDOWN) + return unmapped_area_topdown(info); +@@ -1953,6 +1970,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); @@ -91898,7 +98411,7 @@ index 47a9392..ef645bc 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) -@@ -2062,10 +2083,10 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, +@@ -1982,10 +2003,10 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, } #ifdef CONFIG_MMU @@ -91911,7 +98424,7 @@ index 47a9392..ef645bc 100644 { return __pgprot(0); } -@@ -2127,6 +2148,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); +@@ -2047,6 +2068,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); static inline void vm_stat_account(struct mm_struct *mm, unsigned long flags, struct file *file, long pages) { @@ -91923,7 +98436,7 @@ index 47a9392..ef645bc 100644 mm->total_vm += pages; } #endif /* CONFIG_PROC_FS */ -@@ -2229,7 +2255,7 @@ extern int unpoison_memory(unsigned long pfn); +@@ -2149,7 +2175,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); @@ -91932,7 +98445,7 @@ index 47a9392..ef645bc 100644 extern int soft_offline_page(struct page *page, int flags); #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS) -@@ -2280,5 +2306,11 @@ void __init setup_nr_node_ids(void); +@@ -2200,5 +2226,11 @@ void __init setup_nr_node_ids(void); static inline void setup_nr_node_ids(void) {} #endif @@ -91945,7 +98458,7 @@ index 47a9392..ef645bc 100644 #endif /* __KERNEL__ */ #endif /* _LINUX_MM_H */ diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 199a03a..7328440 100644 +index 8d37e26..6a6f55b 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -313,7 +313,9 @@ struct vm_area_struct { @@ -91959,7 +98472,7 @@ index 199a03a..7328440 100644 struct core_thread { struct task_struct *task; -@@ -464,7 +466,25 @@ struct mm_struct { +@@ -466,7 +468,25 @@ struct mm_struct { /* address of the bounds directory */ void __user *bd_addr; #endif @@ -91986,21 +98499,8 @@ index 199a03a..7328440 100644 static inline void mm_init_cpumask(struct mm_struct *mm) { -diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h -index 160448f..7b332b7 100644 ---- a/include/linux/mmc/core.h -+++ b/include/linux/mmc/core.h -@@ -79,7 +79,7 @@ struct mmc_command { - #define mmc_cmd_type(cmd) ((cmd)->flags & MMC_CMD_MASK) - - unsigned int retries; /* max number of retries */ -- unsigned int error; /* command error */ -+ int error; /* command error */ - - /* - * Standard errno values are used for errors, but some have specific diff --git a/include/linux/mmiotrace.h b/include/linux/mmiotrace.h -index c5d5278..f0b68c8 100644 +index c5d5278..85cd5ce 100644 --- a/include/linux/mmiotrace.h +++ b/include/linux/mmiotrace.h @@ -46,7 +46,7 @@ extern int kmmio_handler(struct pt_regs *regs, unsigned long addr); @@ -92021,8 +98521,16 @@ index c5d5278..f0b68c8 100644 { } +@@ -106,6 +106,6 @@ extern void enable_mmiotrace(void); + extern void disable_mmiotrace(void); + extern void mmio_trace_rw(struct mmiotrace_rw *rw); + extern void mmio_trace_mapping(struct mmiotrace_map *map); +-extern int mmio_trace_printk(const char *fmt, va_list args); ++extern __printf(1, 0) int mmio_trace_printk(const char *fmt, va_list args); + + #endif /* _LINUX_MMIOTRACE_H */ diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h -index 2782df4..abe756e 100644 +index 54d74f6..0728424 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -526,7 +526,7 @@ struct zone { @@ -92035,7 +98543,7 @@ index 2782df4..abe756e 100644 enum zone_flags { diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h -index e530533..c9620c7 100644 +index 3bfd567..72e7d8f 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -139,7 +139,7 @@ struct usb_device_id { @@ -92057,7 +98565,7 @@ index e530533..c9620c7 100644 * struct dmi_device_id appears during expansion of * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it diff --git a/include/linux/module.h b/include/linux/module.h -index b03485b..a26974f 100644 +index c883b86..516812e 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -17,9 +17,11 @@ @@ -92129,10 +98637,10 @@ index b03485b..a26974f 100644 /* Arch-specific module values */ struct mod_arch_specific arch; -@@ -338,6 +338,10 @@ struct module { - #ifdef CONFIG_EVENT_TRACING - struct ftrace_event_call **trace_events; +@@ -340,6 +340,10 @@ struct module { unsigned int num_trace_events; + struct trace_enum_map **trace_enums; + unsigned int num_trace_enums; + struct file_operations trace_id; + struct file_operations trace_enable; + struct file_operations trace_format; @@ -92140,7 +98648,7 @@ index b03485b..a26974f 100644 #endif #ifdef CONFIG_FTRACE_MCOUNT_RECORD unsigned int num_ftrace_callsites; -@@ -365,7 +369,7 @@ struct module { +@@ -367,7 +371,7 @@ struct module { ctor_fn_t *ctors; unsigned int num_ctors; #endif @@ -92149,7 +98657,7 @@ index b03485b..a26974f 100644 #ifndef MODULE_ARCH_INIT #define MODULE_ARCH_INIT {} #endif -@@ -386,18 +390,48 @@ bool is_module_address(unsigned long addr); +@@ -388,18 +392,48 @@ bool is_module_address(unsigned long addr); bool is_module_percpu_address(unsigned long addr); bool is_module_text_address(unsigned long addr); @@ -92273,7 +98781,7 @@ index 1c9effa..1160bdd 100644 .ops = ¶m_ops_##type, \ .elemsize = sizeof(array[0]), .elem = array }; \ diff --git a/include/linux/mount.h b/include/linux/mount.h -index 564beee..653be6f 100644 +index f822c3c..958ca0a 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -67,7 +67,7 @@ struct vfsmount { @@ -92301,10 +98809,10 @@ index c899077..b9a2010 100644 static inline void nd_terminate_link(void *name, size_t len, size_t maxlen) { diff --git a/include/linux/net.h b/include/linux/net.h -index 17d8339..81656c0 100644 +index 738ea48..409dc09 100644 --- a/include/linux/net.h +++ b/include/linux/net.h -@@ -192,7 +192,7 @@ struct net_proto_family { +@@ -190,7 +190,7 @@ struct net_proto_family { int (*create)(struct net *net, struct socket *sock, int protocol, int kern); struct module *owner; @@ -92314,18 +98822,27 @@ index 17d8339..81656c0 100644 struct iovec; struct kvec; diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 2787388..1dd8e88 100644 +index 05b9a69..4d7e300 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -1198,6 +1198,7 @@ struct net_device_ops { - u8 state); - #endif +@@ -1208,6 +1208,7 @@ struct net_device_ops { + u32 maxrate); + int (*ndo_get_iflink)(const struct net_device *dev); }; +typedef struct net_device_ops __no_const net_device_ops_no_const; /** * enum net_device_priv_flags - &struct net_device priv_flags -@@ -1546,10 +1547,10 @@ struct net_device { +@@ -1515,7 +1516,7 @@ struct net_device { + unsigned long base_addr; + int irq; + +- atomic_t carrier_changes; ++ atomic_unchecked_t carrier_changes; + + /* + * Some hardware also needs these fields (state,dev_list, +@@ -1554,8 +1555,8 @@ struct net_device { struct net_device_stats stats; @@ -92334,16 +98851,13 @@ index 2787388..1dd8e88 100644 + atomic_long_unchecked_t rx_dropped; + atomic_long_unchecked_t tx_dropped; -- atomic_t carrier_changes; -+ atomic_unchecked_t carrier_changes; - #ifdef CONFIG_WIRELESS_EXT const struct iw_handler_def * wireless_handlers; diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h -index 2517ece..0bbfcfb 100644 +index 63560d0..64aba5c 100644 --- a/include/linux/netfilter.h +++ b/include/linux/netfilter.h -@@ -85,7 +85,7 @@ struct nf_sockopt_ops { +@@ -113,7 +113,7 @@ struct nf_sockopt_ops { #endif /* Use the module struct to lock set/get code in place */ struct module *owner; @@ -92494,10 +99008,10 @@ index caebf2a..4c3ae9d 100644 /* diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h -index 2b62198..2b74233 100644 +index d8a82a8..8b580f0 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h -@@ -343,8 +343,8 @@ struct perf_event { +@@ -379,8 +379,8 @@ struct perf_event { enum perf_event_active_state state; unsigned int attach_state; @@ -92508,7 +99022,7 @@ index 2b62198..2b74233 100644 /* * These are the total time in nanoseconds that the event -@@ -395,8 +395,8 @@ struct perf_event { +@@ -431,8 +431,8 @@ struct perf_event { * These accumulate total time (in nanoseconds) that children * events have been enabled and running, respectively. */ @@ -92519,7 +99033,16 @@ index 2b62198..2b74233 100644 /* * Protect attach/detach and child_list: -@@ -752,7 +752,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64 +@@ -812,7 +812,7 @@ static inline void perf_event_task_sched_out(struct task_struct *prev, + + static inline u64 __perf_event_count(struct perf_event *event) + { +- return local64_read(&event->count) + atomic64_read(&event->child_count); ++ return local64_read(&event->count) + atomic64_read_unchecked(&event->child_count); + } + + extern void perf_event_mmap(struct vm_area_struct *vma); +@@ -836,7 +836,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64 entry->ip[entry->nr++] = ip; } @@ -92528,7 +99051,7 @@ index 2b62198..2b74233 100644 extern int sysctl_perf_event_mlock; extern int sysctl_perf_event_sample_rate; extern int sysctl_perf_cpu_time_max_percent; -@@ -767,19 +767,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write, +@@ -851,19 +851,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write, loff_t *ppos); @@ -92556,7 +99079,7 @@ index 2b62198..2b74233 100644 } extern void perf_event_init(void); -@@ -912,7 +917,7 @@ struct perf_pmu_events_attr { +@@ -1017,7 +1022,7 @@ struct perf_pmu_events_attr { struct device_attribute attr; u64 id; const char *event_str; @@ -92598,19 +99121,19 @@ index eb8b8ac..62649e1 100644 unsigned int w_counter; struct page *tmp_page; diff --git a/include/linux/pm.h b/include/linux/pm.h -index e2f1be6..78a0506 100644 +index 2d29c64..1b25b2a 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h -@@ -608,6 +608,7 @@ struct dev_pm_domain { - struct dev_pm_ops ops; - void (*detach)(struct device *dev, bool power_off); +@@ -616,6 +616,7 @@ struct dev_pm_domain { + void (*sync)(struct device *dev); + void (*dismiss)(struct device *dev); }; +typedef struct dev_pm_domain __no_const dev_pm_domain_no_const; /* * The PM_EVENT_ messages are also used by drivers implementing the legacy diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h -index 080e778..cbdaef7 100644 +index 681ccb0..a90e0b7 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -39,11 +39,11 @@ struct gpd_dev_ops { @@ -92641,7 +99164,7 @@ index 30e84d4..22278b4 100644 static inline bool pm_runtime_is_irq_safe(struct device *dev) diff --git a/include/linux/pnp.h b/include/linux/pnp.h -index 6512e9c..ec27fa2 100644 +index 5df733b..d55f252 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h @@ -298,7 +298,7 @@ static inline void pnp_set_drvdata(struct pnp_dev *pdev, void *data) @@ -92767,13 +99290,15 @@ index de83b4e..c4b997d 100644 #define preempt_set_need_resched() \ do { \ diff --git a/include/linux/printk.h b/include/linux/printk.h -index baa3f97..168cff1 100644 +index 9b30871..1aebc2d 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h -@@ -121,6 +121,7 @@ void early_printk(const char *s, ...) { } +@@ -120,7 +120,8 @@ static inline __printf(1, 2) __cold + void early_printk(const char *s, ...) { } #endif - typedef int(*printk_func_t)(const char *fmt, va_list args); +-typedef int(*printk_func_t)(const char *fmt, va_list args); ++typedef __printf(1, 0) int (*printk_func_t)(const char *fmt, va_list args); +extern int kptr_restrict; #ifdef CONFIG_PRINTK @@ -92786,6 +99311,24 @@ index baa3f97..168cff1 100644 extern void wake_up_klogd(void); +@@ -164,7 +164,7 @@ char *log_buf_addr_get(void); + u32 log_buf_len_get(void); + void log_buf_kexec_setup(void); + void __init setup_log_buf(int early); +-void dump_stack_set_arch_desc(const char *fmt, ...); ++__printf(1, 2) void dump_stack_set_arch_desc(const char *fmt, ...); + void dump_stack_print_info(const char *log_lvl); + void show_regs_print_info(const char *log_lvl); + #else +@@ -215,7 +215,7 @@ static inline void setup_log_buf(int early) + { + } + +-static inline void dump_stack_set_arch_desc(const char *fmt, ...) ++static inline __printf(1, 2) void dump_stack_set_arch_desc(const char *fmt, ...) + { + } + diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index b97bf2e..f14c92d4 100644 --- a/include/linux/proc_fs.h @@ -92858,10 +99401,10 @@ index 42dfc61..8113a99 100644 extern const struct proc_ns_operations netns_operations; extern const struct proc_ns_operations utsns_operations; diff --git a/include/linux/quota.h b/include/linux/quota.h -index d534e8e..782e604 100644 +index b2505ac..5f7ab55 100644 --- a/include/linux/quota.h +++ b/include/linux/quota.h -@@ -75,7 +75,7 @@ struct kqid { /* Type in which we store the quota identifier */ +@@ -76,7 +76,7 @@ struct kqid { /* Type in which we store the quota identifier */ extern bool qid_eq(struct kqid left, struct kqid right); extern bool qid_lt(struct kqid left, struct kqid right); @@ -93005,10 +99548,10 @@ index a18b16f..2683096 100644 * hlist_del_init_rcu - deletes entry from hash list with re-initialization * @n: the element to delete from the hash list. diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h -index 7809749..1cd9315 100644 +index 573a5af..de97a14 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h -@@ -333,7 +333,7 @@ extern struct srcu_struct tasks_rcu_exit_srcu; +@@ -365,7 +365,7 @@ extern struct srcu_struct tasks_rcu_exit_srcu; do { \ rcu_all_qs(); \ if (ACCESS_ONCE((t)->rcu_tasks_holdout)) \ @@ -93018,7 +99561,7 @@ index 7809749..1cd9315 100644 #else /* #ifdef CONFIG_TASKS_RCU */ #define TASKS_RCU(x) do { } while (0) diff --git a/include/linux/reboot.h b/include/linux/reboot.h -index 67fc8fc..a90f7d8 100644 +index a7ff409..03e2fa8 100644 --- a/include/linux/reboot.h +++ b/include/linux/reboot.h @@ -47,9 +47,9 @@ extern void do_kernel_restart(char *cmd); @@ -93047,7 +99590,7 @@ index 67fc8fc..a90f7d8 100644 extern int C_A_D; /* for sysctl */ void ctrl_alt_del(void); -@@ -76,7 +76,7 @@ extern int orderly_poweroff(bool force); +@@ -77,7 +77,7 @@ extern void orderly_reboot(void); * Emergency restart, callable from an interrupt handler. */ @@ -93097,10 +99640,10 @@ index 6bda06f..bf39a9b 100644 #define RIO_RESOURCE_MEM 0x00000100 #define RIO_RESOURCE_DOORBELL 0x00000200 diff --git a/include/linux/rmap.h b/include/linux/rmap.h -index c4c559a..6ba9a26 100644 +index c89c53a..aa0a65a 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h -@@ -154,8 +154,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma) +@@ -146,8 +146,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma) void anon_vma_init(void); /* create anon_vma_cachep */ int anon_vma_prepare(struct vm_area_struct *); void unlink_anon_vmas(struct vm_area_struct *); @@ -93112,7 +99655,7 @@ index c4c559a..6ba9a26 100644 static inline void anon_vma_merge(struct vm_area_struct *vma, struct vm_area_struct *next) diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h -index ed8f9e70..999bc96 100644 +index ed8f9e70..2e627f2 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -1,6 +1,7 @@ @@ -93123,24 +99666,31 @@ index ed8f9e70..999bc96 100644 #include #include #include -@@ -114,6 +115,12 @@ static inline void sg_set_buf(struct scatterlist *sg, const void *buf, - #ifdef CONFIG_DEBUG_SG - BUG_ON(!virt_addr_valid(buf)); - #endif +@@ -111,10 +112,17 @@ static inline struct page *sg_page(struct scatterlist *sg) + static inline void sg_set_buf(struct scatterlist *sg, const void *buf, + unsigned int buflen) + { ++ const void *realbuf = buf; ++ +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW -+ if (object_starts_on_stack(buf)) { -+ void *adjbuf = buf - current->stack + current->lowmem_stack; -+ sg_set_page(sg, virt_to_page(adjbuf), buflen, offset_in_page(adjbuf)); -+ } else ++ if (object_starts_on_stack(buf)) ++ realbuf = buf - current->stack + current->lowmem_stack; +#endif - sg_set_page(sg, virt_to_page(buf), buflen, offset_in_page(buf)); ++ + #ifdef CONFIG_DEBUG_SG +- BUG_ON(!virt_addr_valid(buf)); ++ BUG_ON(!virt_addr_valid(realbuf)); + #endif +- sg_set_page(sg, virt_to_page(buf), buflen, offset_in_page(buf)); ++ sg_set_page(sg, virt_to_page(realbuf), buflen, offset_in_page(realbuf)); } + /* diff --git a/include/linux/sched.h b/include/linux/sched.h -index 51348f7..8c8b0ba 100644 +index 26a2e61..36bbf4b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -133,6 +133,7 @@ struct fs_struct; +@@ -132,6 +132,7 @@ struct fs_struct; struct perf_event_context; struct blk_plug; struct filename; @@ -93148,7 +99698,7 @@ index 51348f7..8c8b0ba 100644 #define VMACACHE_BITS 2 #define VMACACHE_SIZE (1U << VMACACHE_BITS) -@@ -420,7 +421,7 @@ extern char __sched_text_start[], __sched_text_end[]; +@@ -413,7 +414,7 @@ extern char __sched_text_start[], __sched_text_end[]; extern int in_sched_functions(unsigned long addr); #define MAX_SCHEDULE_TIMEOUT LONG_MAX @@ -93157,7 +99707,7 @@ index 51348f7..8c8b0ba 100644 extern signed long schedule_timeout_interruptible(signed long timeout); extern signed long schedule_timeout_killable(signed long timeout); extern signed long schedule_timeout_uninterruptible(signed long timeout); -@@ -438,6 +439,19 @@ struct nsproxy; +@@ -431,6 +432,19 @@ struct nsproxy; struct user_namespace; #ifdef CONFIG_MMU @@ -93177,7 +99727,7 @@ index 51348f7..8c8b0ba 100644 extern void arch_pick_mmap_layout(struct mm_struct *mm); extern unsigned long arch_get_unmapped_area(struct file *, unsigned long, unsigned long, -@@ -736,6 +750,17 @@ struct signal_struct { +@@ -729,6 +743,17 @@ struct signal_struct { #ifdef CONFIG_TASKSTATS struct taskstats *stats; #endif @@ -93195,7 +99745,7 @@ index 51348f7..8c8b0ba 100644 #ifdef CONFIG_AUDIT unsigned audit_tty; unsigned audit_tty_log_passwd; -@@ -762,7 +787,7 @@ struct signal_struct { +@@ -755,7 +780,7 @@ struct signal_struct { struct mutex cred_guard_mutex; /* guard against foreign influences on * credential calculations * (notably. ptrace) */ @@ -93204,7 +99754,7 @@ index 51348f7..8c8b0ba 100644 /* * Bits in flags field of signal_struct. -@@ -815,6 +840,14 @@ struct user_struct { +@@ -808,6 +833,14 @@ struct user_struct { struct key *session_keyring; /* UID's default session keyring */ #endif @@ -93219,7 +99769,7 @@ index 51348f7..8c8b0ba 100644 /* Hash table maintenance information */ struct hlist_node uidhash_node; kuid_t uid; -@@ -822,7 +855,7 @@ struct user_struct { +@@ -815,7 +848,7 @@ struct user_struct { #ifdef CONFIG_PERF_EVENTS atomic_long_t locked_vm; #endif @@ -93228,7 +99778,7 @@ index 51348f7..8c8b0ba 100644 extern int uids_sysfs_init(void); -@@ -1286,6 +1319,9 @@ enum perf_event_task_context { +@@ -1292,6 +1325,9 @@ enum perf_event_task_context { struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; @@ -93238,7 +99788,7 @@ index 51348f7..8c8b0ba 100644 atomic_t usage; unsigned int flags; /* per process flags, defined below */ unsigned int ptrace; -@@ -1419,8 +1455,8 @@ struct task_struct { +@@ -1425,8 +1461,8 @@ struct task_struct { struct list_head thread_node; struct completion *vfork_done; /* for vfork() */ @@ -93249,7 +99799,7 @@ index 51348f7..8c8b0ba 100644 cputime_t utime, stime, utimescaled, stimescaled; cputime_t gtime; -@@ -1445,11 +1481,6 @@ struct task_struct { +@@ -1451,11 +1487,6 @@ struct task_struct { struct task_cputime cputime_expires; struct list_head cpu_timers[3]; @@ -93261,7 +99811,7 @@ index 51348f7..8c8b0ba 100644 char comm[TASK_COMM_LEN]; /* executable name excluding path - access with [gs]et_task_comm (which lock it with task_lock()) -@@ -1467,6 +1498,10 @@ struct task_struct { +@@ -1473,6 +1504,10 @@ struct task_struct { #endif /* CPU-specific state of this task */ struct thread_struct thread; @@ -93272,7 +99822,7 @@ index 51348f7..8c8b0ba 100644 /* filesystem information */ struct fs_struct *fs; /* open file information */ -@@ -1541,6 +1576,10 @@ struct task_struct { +@@ -1547,6 +1582,10 @@ struct task_struct { gfp_t lockdep_reclaim_gfp; #endif @@ -93283,7 +99833,7 @@ index 51348f7..8c8b0ba 100644 /* journalling filesystem info */ void *journal_info; -@@ -1579,6 +1618,10 @@ struct task_struct { +@@ -1585,6 +1624,10 @@ struct task_struct { /* cg_list protected by css_set_lock and tsk->alloc_lock */ struct list_head cg_list; #endif @@ -93294,7 +99844,7 @@ index 51348f7..8c8b0ba 100644 #ifdef CONFIG_FUTEX struct robust_list_head __user *robust_list; #ifdef CONFIG_COMPAT -@@ -1690,7 +1733,7 @@ struct task_struct { +@@ -1696,7 +1739,7 @@ struct task_struct { * Number of functions that haven't been traced * because of depth overrun. */ @@ -93303,7 +99853,7 @@ index 51348f7..8c8b0ba 100644 /* Pause for the tracing */ atomic_t tracing_graph_pause; #endif -@@ -1718,7 +1761,78 @@ struct task_struct { +@@ -1724,7 +1767,78 @@ struct task_struct { #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; #endif @@ -93383,7 +99933,7 @@ index 51348f7..8c8b0ba 100644 /* Future-safe accessor for struct task_struct's cpus_allowed. */ #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed) -@@ -1801,7 +1915,7 @@ struct pid_namespace; +@@ -1807,7 +1921,7 @@ struct pid_namespace; pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, struct pid_namespace *ns); @@ -93392,7 +99942,7 @@ index 51348f7..8c8b0ba 100644 { return tsk->pid; } -@@ -2169,6 +2283,25 @@ extern u64 sched_clock_cpu(int cpu); +@@ -2175,6 +2289,25 @@ extern u64 sched_clock_cpu(int cpu); extern void sched_clock_init(void); @@ -93418,8 +99968,8 @@ index 51348f7..8c8b0ba 100644 #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK static inline void sched_clock_tick(void) { -@@ -2302,7 +2435,9 @@ void yield(void); - extern struct exec_domain default_exec_domain; +@@ -2303,7 +2436,9 @@ extern void set_curr_task(int cpu, struct task_struct *p); + void yield(void); union thread_union { +#ifndef CONFIG_X86 @@ -93428,7 +99978,7 @@ index 51348f7..8c8b0ba 100644 unsigned long stack[THREAD_SIZE/sizeof(long)]; }; -@@ -2335,6 +2470,7 @@ extern struct pid_namespace init_pid_ns; +@@ -2336,6 +2471,7 @@ extern struct pid_namespace init_pid_ns; */ extern struct task_struct *find_task_by_vpid(pid_t nr); @@ -93436,7 +99986,7 @@ index 51348f7..8c8b0ba 100644 extern struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns); -@@ -2499,7 +2635,7 @@ extern void __cleanup_sighand(struct sighand_struct *); +@@ -2500,7 +2636,7 @@ extern void __cleanup_sighand(struct sighand_struct *); extern void exit_itimers(struct signal_struct *); extern void flush_itimer_signals(void); @@ -93445,7 +99995,7 @@ index 51348f7..8c8b0ba 100644 extern int do_execve(struct filename *, const char __user * const __user *, -@@ -2720,9 +2856,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p) +@@ -2721,9 +2857,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p) #define task_stack_end_corrupted(task) \ (*(end_of_stack(task)) != STACK_END_MAGIC) @@ -93470,7 +100020,7 @@ index 596a0e0..bea77ec 100644 extern unsigned int sysctl_sched_latency; extern unsigned int sysctl_sched_min_granularity; diff --git a/include/linux/security.h b/include/linux/security.h -index a1b7dbd..036f47f 100644 +index 18264ea..e0238e4 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -27,6 +27,7 @@ @@ -93490,7 +100040,7 @@ index a1b7dbd..036f47f 100644 #ifdef CONFIG_MMU extern unsigned long mmap_min_addr; extern unsigned long dac_mmap_min_addr; -@@ -1756,7 +1755,7 @@ struct security_operations { +@@ -1755,7 +1754,7 @@ struct security_operations { struct audit_context *actx); void (*audit_rule_free) (void *lsmrule); #endif /* CONFIG_AUDIT */ @@ -93579,10 +100129,10 @@ index ab1e039..ad4229e 100644 static inline void disallow_signal(int sig) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index bdccc4b..e9f8670 100644 +index f15154a..72cf02c 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -771,7 +771,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags, +@@ -776,7 +776,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags, int node); struct sk_buff *__build_skb(void *data, unsigned int frag_size); struct sk_buff *build_skb(void *data, unsigned int frag_size); @@ -93591,7 +100141,7 @@ index bdccc4b..e9f8670 100644 gfp_t priority) { return __alloc_skb(size, priority, 0, NUMA_NO_NODE); -@@ -1967,7 +1967,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb) +@@ -1971,7 +1971,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb) return skb->inner_transport_header - skb->inner_network_header; } @@ -93600,7 +100150,7 @@ index bdccc4b..e9f8670 100644 { return skb_network_header(skb) - skb->data; } -@@ -2027,7 +2027,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) +@@ -2031,7 +2031,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 @@ -93609,7 +100159,7 @@ index bdccc4b..e9f8670 100644 #endif int ___pskb_trim(struct sk_buff *skb, unsigned int len); -@@ -2669,9 +2669,9 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock, +@@ -2673,9 +2673,9 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock, int *err); unsigned int datagram_poll(struct file *file, struct socket *sock, struct poll_table_struct *wait); @@ -93621,7 +100171,7 @@ index bdccc4b..e9f8670 100644 struct msghdr *msg, int size) { return skb_copy_datagram_iter(from, offset, &msg->msg_iter, size); -@@ -3193,6 +3193,9 @@ static inline void nf_reset(struct sk_buff *skb) +@@ -3197,6 +3197,9 @@ static inline void nf_reset(struct sk_buff *skb) nf_bridge_put(skb->nf_bridge); skb->nf_bridge = NULL; #endif @@ -93632,19 +100182,18 @@ index bdccc4b..e9f8670 100644 static inline void nf_reset_trace(struct sk_buff *skb) diff --git a/include/linux/slab.h b/include/linux/slab.h -index 76f1fee..d95e6d2 100644 +index ffd24c8..cbbe7de 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h -@@ -14,15 +14,29 @@ - #include +@@ -15,14 +15,29 @@ #include #include -- + +#include /* * Flags to pass to kmem_cache_create(). - * The ones marked DEBUG are only valid if CONFIG_SLAB_DEBUG is set. + * The ones marked DEBUG are only valid if CONFIG_DEBUG_SLAB is set. */ #define SLAB_DEBUG_FREE 0x00000100UL /* DEBUG: Perform (expensive) checks on free */ + @@ -93666,7 +100215,7 @@ index 76f1fee..d95e6d2 100644 #define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */ #define SLAB_CACHE_DMA 0x00004000UL /* Use GFP_DMA memory */ #define SLAB_STORE_USER 0x00010000UL /* DEBUG: Store the last owner for bug hunting */ -@@ -98,10 +112,13 @@ +@@ -98,10 +113,13 @@ * ZERO_SIZE_PTR can be passed to kfree though in the same way that NULL can. * Both make kfree a no-op. */ @@ -93683,7 +100232,7 @@ index 76f1fee..d95e6d2 100644 #include #include -@@ -143,6 +160,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t); +@@ -143,6 +161,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t); void kfree(const void *); void kzfree(const void *); size_t ksize(const void *); @@ -93692,7 +100241,7 @@ index 76f1fee..d95e6d2 100644 /* * Some archs want to perform DMA into kmalloc caches and need a guaranteed -@@ -235,6 +254,10 @@ extern struct kmem_cache *kmalloc_caches[KMALLOC_SHIFT_HIGH + 1]; +@@ -235,6 +255,10 @@ extern struct kmem_cache *kmalloc_caches[KMALLOC_SHIFT_HIGH + 1]; extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; #endif @@ -93703,7 +100252,7 @@ index 76f1fee..d95e6d2 100644 /* * Figure out which kmalloc slab an allocation of a certain size * belongs to. -@@ -243,7 +266,7 @@ extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; +@@ -243,7 +267,7 @@ extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1]; * 2 = 120 .. 192 bytes * n = 2^(n-1) .. 2^n -1 */ @@ -93712,7 +100261,7 @@ index 76f1fee..d95e6d2 100644 { if (!size) return 0; -@@ -286,15 +309,15 @@ static __always_inline int kmalloc_index(size_t size) +@@ -286,15 +310,15 @@ static __always_inline int kmalloc_index(size_t size) } #endif /* !CONFIG_SLOB */ @@ -93777,7 +100326,7 @@ index 3388511..6252f90 100644 int inuse; /* Offset to metadata */ int align; /* Alignment */ diff --git a/include/linux/smp.h b/include/linux/smp.h -index be91db2..3f23232 100644 +index c441407..f487b83 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h @@ -183,7 +183,9 @@ static inline void smp_init(void) { } @@ -93791,7 +100340,7 @@ index be91db2..3f23232 100644 /* * Callback to arch code if there's nosmp or maxcpus=0 on the diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h -index 46cca4c..3323536 100644 +index 083ac38..b23e3e8 100644 --- a/include/linux/sock_diag.h +++ b/include/linux/sock_diag.h @@ -11,7 +11,7 @@ struct sock; @@ -94002,10 +100551,10 @@ index 27b3b0b..e093dd9 100644 extern void register_syscore_ops(struct syscore_ops *ops); extern void unregister_syscore_ops(struct syscore_ops *ops); diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h -index b7361f8..341a15a 100644 +index fa7bc29..0d96561 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h -@@ -39,6 +39,8 @@ typedef int proc_handler (struct ctl_table *ctl, int write, +@@ -39,10 +39,16 @@ typedef int proc_handler (struct ctl_table *ctl, int write, extern int proc_dostring(struct ctl_table *, int, void __user *, size_t *, loff_t *); @@ -94013,8 +100562,16 @@ index b7361f8..341a15a 100644 + void __user *, size_t *, loff_t *); extern int proc_dointvec(struct ctl_table *, int, void __user *, size_t *, loff_t *); ++extern int proc_dointvec_secure(struct ctl_table *, int, ++ void __user *, size_t *, loff_t *); extern int proc_dointvec_minmax(struct ctl_table *, int, -@@ -113,7 +115,8 @@ struct ctl_table + void __user *, size_t *, loff_t *); ++extern int proc_dointvec_minmax_secure(struct ctl_table *, int, ++ void __user *, size_t *, loff_t *); + extern int proc_dointvec_jiffies(struct ctl_table *, int, + void __user *, size_t *, loff_t *); + extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int, +@@ -113,7 +119,8 @@ struct ctl_table struct ctl_table_poll *poll; void *extra1; void *extra2; @@ -94025,7 +100582,7 @@ index b7361f8..341a15a 100644 struct ctl_node { struct rb_node node; diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h -index ddad161..a3efd26 100644 +index 9f65758..487a6f1 100644 --- a/include/linux/sysfs.h +++ b/include/linux/sysfs.h @@ -34,7 +34,8 @@ struct attribute { @@ -94038,7 +100595,7 @@ index ddad161..a3efd26 100644 /** * sysfs_attr_init - initialize a dynamically allocated sysfs attribute -@@ -63,7 +64,8 @@ struct attribute_group { +@@ -78,7 +79,8 @@ struct attribute_group { struct attribute *, int); struct attribute **attrs; struct bin_attribute **bin_attrs; @@ -94048,7 +100605,7 @@ index ddad161..a3efd26 100644 /** * Use these macros to make defining attributes easier. See include/linux/device.h -@@ -137,7 +139,8 @@ struct bin_attribute { +@@ -152,7 +154,8 @@ struct bin_attribute { char *, loff_t, size_t); int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr, struct vm_area_struct *vma); @@ -94098,7 +100655,7 @@ index ff307b5..f1a4468 100644 #endif /* _LINUX_THREAD_INFO_H */ diff --git a/include/linux/tty.h b/include/linux/tty.h -index 358a337..8829c1f 100644 +index d76631f..de91e82 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -225,7 +225,7 @@ struct tty_port { @@ -94119,7 +100676,7 @@ index 358a337..8829c1f 100644 /* Each of a tty's open files has private_data pointing to tty_file_private */ struct tty_file_private { -@@ -572,7 +572,7 @@ extern int tty_port_open(struct tty_port *port, +@@ -573,7 +573,7 @@ extern int tty_port_open(struct tty_port *port, struct tty_struct *tty, struct file *filp); static inline int tty_port_users(struct tty_port *port) { @@ -94164,10 +100721,10 @@ index 00c9d68..bc0188b 100644 struct tty_ldisc { diff --git a/include/linux/types.h b/include/linux/types.h -index 6747247..fc7ec8b 100644 +index 8715287..1be77ee 100644 --- a/include/linux/types.h +++ b/include/linux/types.h -@@ -174,10 +174,26 @@ typedef struct { +@@ -176,10 +176,26 @@ typedef struct { int counter; } atomic_t; @@ -94214,10 +100771,10 @@ index ecd3319..8a36ded 100644 }) diff --git a/include/linux/uidgid.h b/include/linux/uidgid.h -index 2d1f9b6..d7a9fce 100644 +index 0383552..a0125dd 100644 --- a/include/linux/uidgid.h +++ b/include/linux/uidgid.h -@@ -175,4 +175,9 @@ static inline bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid) +@@ -187,4 +187,9 @@ static inline bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid) #endif /* CONFIG_USER_NS */ @@ -94314,7 +100871,7 @@ index 447fe29..9fc875f 100644 void *data, int len, int *actual_length, int timeout); extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h -index 9fd9e48..e2c5f35 100644 +index f06529c..dfeabd8 100644 --- a/include/linux/usb/renesas_usbhs.h +++ b/include/linux/usb/renesas_usbhs.h @@ -39,7 +39,7 @@ enum { @@ -94578,10 +101135,10 @@ index 92dbbd3..13ab0b3 100644 Returns the number of bytes that needs to be allocated for a per- stream workspace with the specified parameters. A pointer to this diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h -index 3e4fddf..5ec9104 100644 +index acbcd2f..c3abe84 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h -@@ -75,7 +75,7 @@ struct v4l2_file_operations { +@@ -74,7 +74,7 @@ struct v4l2_file_operations { int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct file *); int (*release) (struct file *); @@ -94591,10 +101148,10 @@ index 3e4fddf..5ec9104 100644 /* * Newer version of video_device, handled by videodev2.c diff --git a/include/media/v4l2-device.h b/include/media/v4l2-device.h -index ffb69da..040393e 100644 +index 9c58157..d86ebf5 100644 --- a/include/media/v4l2-device.h +++ b/include/media/v4l2-device.h -@@ -95,7 +95,7 @@ int __must_check v4l2_device_register(struct device *dev, struct v4l2_device *v4 +@@ -93,7 +93,7 @@ int __must_check v4l2_device_register(struct device *dev, struct v4l2_device *v4 this function returns 0. If the name ends with a digit (e.g. cx18), then the name will be set to cx18-0 since cx180 looks really odd. */ int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename, @@ -94604,13 +101161,13 @@ index ffb69da..040393e 100644 /* Set v4l2_dev->dev to NULL. Call when the USB parent disconnects. Since the parent disappears this ensures that v4l2_dev doesn't have an diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h -index 2a25dec..bf6dd8a 100644 +index 5122b5e..598b440 100644 --- a/include/net/9p/transport.h +++ b/include/net/9p/transport.h @@ -62,7 +62,7 @@ struct p9_trans_module { int (*cancelled)(struct p9_client *, struct p9_req_t *req); int (*zc_request)(struct p9_client *, struct p9_req_t *, - char *, char *, int , int, int, int); + struct iov_iter *, struct iov_iter *, int , int, int); -}; +} __do_const; @@ -94643,10 +101200,10 @@ index 2239a37..a83461f 100644 struct l2cap_conn { struct hci_conn *hcon; diff --git a/include/net/bonding.h b/include/net/bonding.h -index fda6fee..dbdf83c 100644 +index 78ed135..2f53667 100644 --- a/include/net/bonding.h +++ b/include/net/bonding.h -@@ -665,7 +665,7 @@ extern struct rtnl_link_ops bond_link_ops; +@@ -658,7 +658,7 @@ extern struct rtnl_link_ops bond_link_ops; static inline void bond_tx_drop(struct net_device *dev, struct sk_buff *skb) { @@ -94692,10 +101249,10 @@ index 8109a15..504466d 100644 #endif diff --git a/include/net/genetlink.h b/include/net/genetlink.h -index 0574abd..0f16881 100644 +index a9af1cc..1f3fa7b 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h -@@ -130,7 +130,7 @@ struct genl_ops { +@@ -128,7 +128,7 @@ struct genl_ops { u8 cmd; u8 internal_flags; u8 flags; @@ -94718,7 +101275,7 @@ index 0f712c0..cd762c4 100644 return; } diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h -index 5976bde..3a81660 100644 +index 0320bbb..938789c 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h @@ -63,7 +63,7 @@ struct inet_connection_sock_af_ops { @@ -94731,10 +101288,10 @@ index 5976bde..3a81660 100644 /** inet_connection_sock - INET connection oriented sock * diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h -index 80479ab..0c3f647 100644 +index d5332dd..10a5c3c 100644 --- a/include/net/inetpeer.h +++ b/include/net/inetpeer.h -@@ -47,7 +47,7 @@ struct inet_peer { +@@ -48,7 +48,7 @@ struct inet_peer { */ union { struct { @@ -94744,20 +101301,20 @@ index 80479ab..0c3f647 100644 struct rcu_head rcu; struct inet_peer *gc_next; diff --git a/include/net/ip.h b/include/net/ip.h -index 6cc1eaf..14059b0 100644 +index d14af7e..52816c2 100644 --- a/include/net/ip.h +++ b/include/net/ip.h -@@ -317,7 +317,7 @@ static inline unsigned int ip_skb_dst_mtu(const struct sk_buff *skb) +@@ -318,7 +318,7 @@ static inline unsigned int ip_skb_dst_mtu(const struct sk_buff *skb) } } -u32 ip_idents_reserve(u32 hash, int segs); +u32 ip_idents_reserve(u32 hash, int segs) __intentional_overflow(-1); - void __ip_select_ident(struct iphdr *iph, int segs); + void __ip_select_ident(struct net *net, struct iphdr *iph, int segs); - static inline void ip_select_ident_segs(struct sk_buff *skb, struct sock *sk, int segs) + static inline void ip_select_ident_segs(struct net *net, struct sk_buff *skb, diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h -index 5bd120e4..03fb812 100644 +index 54271ed..eb7e0e6 100644 --- a/include/net/ip_fib.h +++ b/include/net/ip_fib.h @@ -170,7 +170,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh); @@ -94770,10 +101327,10 @@ index 5bd120e4..03fb812 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 615b20b..fd4cbd8 100644 +index 4e3731e..a242e28 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h -@@ -534,7 +534,7 @@ struct ip_vs_conn { +@@ -551,7 +551,7 @@ struct ip_vs_conn { struct ip_vs_conn *control; /* Master control connection */ atomic_t n_control; /* Number of controlled ones */ struct ip_vs_dest *dest; /* real server */ @@ -94782,7 +101339,7 @@ index 615b20b..fd4cbd8 100644 /* Packet transmitter for different forwarding methods. If it * mangles the packet, it must return NF_DROP or better NF_STOLEN, -@@ -682,7 +682,7 @@ struct ip_vs_dest { +@@ -699,7 +699,7 @@ struct ip_vs_dest { __be16 port; /* port number of the server */ union nf_inet_addr addr; /* IP address of the server */ volatile unsigned int flags; /* dest status flags */ @@ -94791,7 +101348,7 @@ index 615b20b..fd4cbd8 100644 atomic_t weight; /* server weight */ atomic_t refcnt; /* reference counter */ -@@ -928,11 +928,11 @@ struct netns_ipvs { +@@ -946,11 +946,11 @@ struct netns_ipvs { /* ip_vs_lblc */ int sysctl_lblc_expiration; struct ctl_table_header *lblc_ctl_header; @@ -94898,10 +101455,10 @@ index c4359e2..76dbc4a 100644 struct llc_sap_state { u8 curr_state; diff --git a/include/net/mac80211.h b/include/net/mac80211.h -index d52914b..2b13cec 100644 +index fc57f6b..9c1fdb2 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h -@@ -4915,7 +4915,7 @@ struct rate_control_ops { +@@ -5104,7 +5104,7 @@ struct rate_control_ops { void (*remove_sta_debugfs)(void *priv, void *priv_sta); u32 (*get_expected_throughput)(void *priv_sta); @@ -94911,10 +101468,10 @@ index d52914b..2b13cec 100644 static inline int rate_supported(struct ieee80211_sta *sta, enum ieee80211_band band, diff --git a/include/net/neighbour.h b/include/net/neighbour.h -index 76f7084..8f36e39 100644 +index bd33e66..6508d00 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h -@@ -163,7 +163,7 @@ struct neigh_ops { +@@ -162,7 +162,7 @@ struct neigh_ops { void (*error_report)(struct neighbour *, struct sk_buff *); int (*output)(struct neighbour *, struct sk_buff *); int (*connected_output)(struct neighbour *, struct sk_buff *); @@ -94923,7 +101480,7 @@ index 76f7084..8f36e39 100644 struct pneigh_entry { struct pneigh_entry *next; -@@ -217,7 +217,7 @@ struct neigh_table { +@@ -216,7 +216,7 @@ struct neigh_table { struct neigh_statistics __percpu *stats; struct neigh_hash_table __rcu *nht; struct pneigh_entry **phash_buckets; @@ -94933,11 +101490,11 @@ index 76f7084..8f36e39 100644 enum { NEIGH_ARP_TABLE = 0, diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h -index 36faf49..6927638 100644 +index f733656..54053db 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h -@@ -131,8 +131,8 @@ struct net { - struct netns_ipvs *ipvs; +@@ -132,8 +132,8 @@ struct net { + struct netns_mpls mpls; #endif struct sock *diag_nlsk; - atomic_t fnhe_genid; @@ -94947,7 +101504,7 @@ index 36faf49..6927638 100644 #include -@@ -288,7 +288,11 @@ static inline struct net *read_pnet(struct net * const *pnet) +@@ -268,7 +268,11 @@ static inline struct net *read_pnet(const possible_net_t *pnet) #define __net_init __init #define __net_exit __exit_refok #define __net_initdata __initdata @@ -94959,7 +101516,7 @@ index 36faf49..6927638 100644 #endif int peernet2id(struct net *net, struct net *peer); -@@ -301,7 +305,7 @@ struct pernet_operations { +@@ -281,7 +285,7 @@ struct pernet_operations { void (*exit_batch)(struct list_head *net_exit_list); int *id; size_t size; @@ -94968,7 +101525,7 @@ index 36faf49..6927638 100644 /* * Use these carefully. If you implement a network device and it -@@ -349,12 +353,12 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header) +@@ -329,12 +333,12 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header) static inline int rt_genid_ipv4(struct net *net) { @@ -94983,7 +101540,7 @@ index 36faf49..6927638 100644 } extern void (*__fib6_flush_trees)(struct net *net); -@@ -381,12 +385,12 @@ static inline void rt_genid_bump_all(struct net *net) +@@ -361,12 +365,12 @@ static inline void rt_genid_bump_all(struct net *net) static inline int fnhe_genid(struct net *net) { @@ -94999,10 +101556,10 @@ index 36faf49..6927638 100644 #endif /* __NET_NET_NAMESPACE_H */ diff --git a/include/net/netlink.h b/include/net/netlink.h -index e010ee8..405b9f4 100644 +index 2a5dbcc..8243656 100644 --- a/include/net/netlink.h +++ b/include/net/netlink.h -@@ -518,7 +518,7 @@ static inline void nlmsg_trim(struct sk_buff *skb, const void *mark) +@@ -521,7 +521,7 @@ static inline void nlmsg_trim(struct sk_buff *skb, const void *mark) { if (mark) { WARN_ON((unsigned char *) mark < skb->data); @@ -95038,10 +101595,10 @@ index 29d6a94..235d3d84 100644 }; diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h -index dbe2254..ed0c151 100644 +index 614a49b..0b94386 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h -@@ -87,7 +87,7 @@ struct netns_ipv4 { +@@ -90,7 +90,7 @@ struct netns_ipv4 { struct ping_group_range ping_group_range; @@ -95050,7 +101607,7 @@ index dbe2254..ed0c151 100644 #ifdef CONFIG_SYSCTL unsigned long *sysctl_local_reserved_ports; -@@ -101,6 +101,6 @@ struct netns_ipv4 { +@@ -104,6 +104,6 @@ struct netns_ipv4 { struct fib_rules_ops *mr_rules_ops; #endif #endif @@ -95059,10 +101616,10 @@ index dbe2254..ed0c151 100644 }; #endif diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h -index 69ae41f..4f94868 100644 +index d2527bf..2c802d5 100644 --- a/include/net/netns/ipv6.h +++ b/include/net/netns/ipv6.h -@@ -75,8 +75,8 @@ struct netns_ipv6 { +@@ -78,8 +78,8 @@ struct netns_ipv6 { struct fib_rules_ops *mr6_rules_ops; #endif #endif @@ -95087,7 +101644,7 @@ index 730d82a..045f2c4 100644 spinlock_t flow_cache_gc_lock; struct work_struct flow_cache_gc_work; diff --git a/include/net/ping.h b/include/net/ping.h -index cc16d41..664f40b 100644 +index ac80cb4..ec1ed09 100644 --- a/include/net/ping.h +++ b/include/net/ping.h @@ -54,7 +54,7 @@ struct ping_iter_state { @@ -95122,7 +101679,7 @@ index d6fcc1f..ca277058 100644 #define INET6_PROTO_NOPOLICY 0x1 #define INET6_PROTO_FINAL 0x2 diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h -index 6c6d539..af70817 100644 +index 343d922..7959cde 100644 --- a/include/net/rtnetlink.h +++ b/include/net/rtnetlink.h @@ -95,7 +95,7 @@ struct rtnl_link_ops { @@ -95172,10 +101729,10 @@ index 487ef34..d457f98 100644 /* Get the size of a DATA chunk payload. */ diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h -index 2bb2fcf..d17c291 100644 +index 495c87e..5b327ff 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h -@@ -509,7 +509,7 @@ struct sctp_pf { +@@ -513,7 +513,7 @@ struct sctp_pf { void (*to_sk_saddr)(union sctp_addr *, struct sock *sk); void (*to_sk_daddr)(union sctp_addr *, struct sock *sk); struct sctp_af *af; @@ -95185,10 +101742,10 @@ index 2bb2fcf..d17c291 100644 /* Structure to track chunk fragments that have been acked, but peer diff --git a/include/net/sock.h b/include/net/sock.h -index e4079c2..79c5d3a 100644 +index 3a4898e..67456ac 100644 --- a/include/net/sock.h +++ b/include/net/sock.h -@@ -362,7 +362,7 @@ struct sock { +@@ -363,7 +363,7 @@ struct sock { unsigned int sk_napi_id; unsigned int sk_ll_usec; #endif @@ -95215,7 +101772,7 @@ index e4079c2..79c5d3a 100644 sk_memory_allocated(const struct sock *sk) { struct proto *prot = sk->sk_prot; -@@ -1778,7 +1778,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags) +@@ -1777,7 +1777,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags) } static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb, @@ -95224,7 +101781,7 @@ index e4079c2..79c5d3a 100644 int copy, int offset) { if (skb->ip_summed == CHECKSUM_NONE) { -@@ -2025,7 +2025,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) +@@ -2024,7 +2024,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) } } @@ -95233,11 +101790,20 @@ index e4079c2..79c5d3a 100644 /** * sk_page_frag - return an appropriate page_frag +@@ -2099,7 +2099,7 @@ struct sock_skb_cb { + static inline void + sock_skb_set_dropcount(const struct sock *sk, struct sk_buff *skb) + { +- SOCK_SKB_CB(skb)->dropcount = atomic_read(&sk->sk_drops); ++ SOCK_SKB_CB(skb)->dropcount = atomic_read_unchecked(&sk->sk_drops); + } + + void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk, diff --git a/include/net/tcp.h b/include/net/tcp.h -index 8d6b983..5813205 100644 +index 6d204f3..d5a8ff0 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h -@@ -516,7 +516,7 @@ void tcp_retransmit_timer(struct sock *sk); +@@ -523,7 +523,7 @@ void tcp_retransmit_timer(struct sock *sk); void tcp_xmit_retransmit_queue(struct sock *); void tcp_simple_retransmit(struct sock *); int tcp_trim_head(struct sock *, struct sk_buff *, u32); @@ -95246,7 +101812,7 @@ index 8d6b983..5813205 100644 void tcp_send_probe0(struct sock *); void tcp_send_partial(struct sock *); -@@ -694,8 +694,8 @@ static inline u32 tcp_skb_timestamp(const struct sk_buff *skb) +@@ -699,8 +699,8 @@ static inline u32 tcp_skb_timestamp(const struct sk_buff *skb) * If this grows please adjust skbuff.h:skbuff->cb[xxx] size appropriately. */ struct tcp_skb_cb { @@ -95257,7 +101823,7 @@ index 8d6b983..5813205 100644 union { /* Note : tcp_tw_isn is used in input path only * (isn chosen by tcp_timewait_state_process()) -@@ -720,7 +720,7 @@ struct tcp_skb_cb { +@@ -725,7 +725,7 @@ struct tcp_skb_cb { __u8 ip_dsfield; /* IPv4 tos or IPv6 dsfield */ /* 1 byte hole */ @@ -95267,10 +101833,10 @@ index 8d6b983..5813205 100644 struct inet_skb_parm h4; #if IS_ENABLED(CONFIG_IPV6) diff --git a/include/net/xfrm.h b/include/net/xfrm.h -index dc4865e..152ee4c 100644 +index 36ac102..6e8b34b 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h -@@ -285,7 +285,6 @@ struct xfrm_dst; +@@ -283,7 +283,6 @@ struct xfrm_dst; struct xfrm_policy_afinfo { unsigned short family; struct dst_ops *dst_ops; @@ -95278,7 +101844,7 @@ index dc4865e..152ee4c 100644 struct dst_entry *(*dst_lookup)(struct net *net, int tos, const xfrm_address_t *saddr, const xfrm_address_t *daddr); -@@ -303,7 +302,7 @@ struct xfrm_policy_afinfo { +@@ -301,7 +300,7 @@ struct xfrm_policy_afinfo { struct net_device *dev, const struct flowi *fl); struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *orig); @@ -95287,7 +101853,7 @@ index dc4865e..152ee4c 100644 int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo); int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo); -@@ -342,7 +341,7 @@ struct xfrm_state_afinfo { +@@ -340,7 +339,7 @@ struct xfrm_state_afinfo { int (*transport_finish)(struct sk_buff *skb, int async); void (*local_error)(struct sk_buff *skb, u32 mtu); @@ -95296,7 +101862,7 @@ index dc4865e..152ee4c 100644 int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo); int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo); -@@ -437,7 +436,7 @@ struct xfrm_mode { +@@ -435,7 +434,7 @@ struct xfrm_mode { struct module *owner; unsigned int encap; int flags; @@ -95305,7 +101871,7 @@ index dc4865e..152ee4c 100644 /* Flags for xfrm_mode. */ enum { -@@ -534,7 +533,7 @@ struct xfrm_policy { +@@ -530,7 +529,7 @@ struct xfrm_policy { struct timer_list timer; struct flow_cache_object flo; @@ -95314,7 +101880,7 @@ index dc4865e..152ee4c 100644 u32 priority; u32 index; struct xfrm_mark mark; -@@ -1167,6 +1166,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk) +@@ -1163,6 +1162,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk) } void xfrm_garbage_collect(struct net *net); @@ -95322,7 +101888,7 @@ index dc4865e..152ee4c 100644 #else -@@ -1205,6 +1205,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir, +@@ -1201,6 +1201,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir, static inline void xfrm_garbage_collect(struct net *net) { } @@ -95383,11 +101949,24 @@ index a4c9336..d6f8f34 100644 struct device sdev_gendev, sdev_dev; +diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h +index 891a658..fcd68df 100644 +--- a/include/scsi/scsi_driver.h ++++ b/include/scsi/scsi_driver.h +@@ -14,7 +14,7 @@ struct scsi_driver { + void (*rescan)(struct device *); + int (*init_command)(struct scsi_cmnd *); + void (*uninit_command)(struct scsi_cmnd *); +- int (*done)(struct scsi_cmnd *); ++ unsigned int (*done)(struct scsi_cmnd *); + int (*eh_action)(struct scsi_cmnd *, int); + }; + #define to_scsi_driver(drv) \ diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h -index 007a0bc..7188db8 100644 +index 784bc2c..855a04c 100644 --- a/include/scsi/scsi_transport_fc.h +++ b/include/scsi/scsi_transport_fc.h -@@ -756,7 +756,8 @@ struct fc_function_template { +@@ -757,7 +757,8 @@ struct fc_function_template { unsigned long show_host_system_hostname:1; unsigned long disable_target_scan:1; @@ -95398,7 +101977,7 @@ index 007a0bc..7188db8 100644 /** diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h -index f48089d..73abe48 100644 +index fa1d055..3647940 100644 --- a/include/sound/compress_driver.h +++ b/include/sound/compress_driver.h @@ -130,7 +130,7 @@ struct snd_compr_ops { @@ -95411,10 +101990,10 @@ index f48089d..73abe48 100644 /** * struct snd_compr: Compressed device diff --git a/include/sound/soc.h b/include/sound/soc.h -index 0d1ade1..34e77d3 100644 +index f6226914..e919a2e 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h -@@ -856,7 +856,7 @@ struct snd_soc_codec_driver { +@@ -870,7 +870,7 @@ struct snd_soc_codec_driver { enum snd_soc_dapm_type, int); bool ignore_pmdown_time; /* Doesn't benefit from pmdown delay */ @@ -95423,7 +102002,7 @@ index 0d1ade1..34e77d3 100644 /* SoC platform interface */ struct snd_soc_platform_driver { -@@ -883,7 +883,7 @@ struct snd_soc_platform_driver { +@@ -897,7 +897,7 @@ struct snd_soc_platform_driver { const struct snd_compr_ops *compr_ops; int (*bespoke_trigger)(struct snd_pcm_substream *, int); @@ -95433,7 +102012,7 @@ index 0d1ade1..34e77d3 100644 struct snd_soc_dai_link_component { const char *name; diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h -index 985ca4c..b55b54a 100644 +index 480e9f8..2d59c93 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h @@ -767,7 +767,7 @@ struct se_device { @@ -95505,10 +102084,10 @@ index 0000000..fb634b7 +/* This part must be outside protection */ +#include diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h -index 3608beb..df39d8a 100644 +index ff8f6c0..6b6bae3 100644 --- a/include/trace/events/irq.h +++ b/include/trace/events/irq.h -@@ -36,7 +36,7 @@ struct softirq_action; +@@ -51,7 +51,7 @@ SOFTIRQ_NAME_LIST */ TRACE_EVENT(irq_handler_entry, @@ -95517,7 +102096,7 @@ index 3608beb..df39d8a 100644 TP_ARGS(irq, action), -@@ -66,7 +66,7 @@ TRACE_EVENT(irq_handler_entry, +@@ -81,7 +81,7 @@ TRACE_EVENT(irq_handler_entry, */ TRACE_EVENT(irq_handler_exit, @@ -95527,13 +102106,13 @@ index 3608beb..df39d8a 100644 TP_ARGS(irq, action, ret), diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h -index 6eed16b..3e05750 100644 +index 551b673..9c680df 100644 --- a/include/uapi/drm/i915_drm.h +++ b/include/uapi/drm/i915_drm.h -@@ -347,6 +347,7 @@ typedef struct drm_i915_irq_wait { - #define I915_PARAM_HAS_COHERENT_PHYS_GTT 29 - #define I915_PARAM_MMAP_VERSION 30 - #define I915_PARAM_HAS_BSD2 31 +@@ -350,6 +350,7 @@ typedef struct drm_i915_irq_wait { + #define I915_PARAM_REVISION 32 + #define I915_PARAM_SUBSLICE_TOTAL 33 + #define I915_PARAM_EU_TOTAL 34 +#define I915_PARAM_HAS_LEGACY_CONTEXT 35 typedef struct drm_i915_getparam { @@ -95813,10 +102392,10 @@ index 30f5362..8ed8ac9 100644 void *pmi_pal; u8 *vbe_state_orig; /* diff --git a/init/Kconfig b/init/Kconfig -index f5dbc6d..8259396 100644 +index dc24dec..b77638f 100644 --- a/init/Kconfig +++ b/init/Kconfig -@@ -1136,6 +1136,7 @@ endif # CGROUPS +@@ -1145,6 +1145,7 @@ endif # CGROUPS config CHECKPOINT_RESTORE bool "Checkpoint/restore support" if EXPERT @@ -95824,7 +102403,7 @@ index f5dbc6d..8259396 100644 default n help Enables additional kernel features in a sake of checkpoint/restore. -@@ -1646,7 +1647,7 @@ config SLUB_DEBUG +@@ -1670,7 +1671,7 @@ config SLUB_DEBUG config COMPAT_BRK bool "Disable heap randomization" @@ -95833,7 +102412,7 @@ index f5dbc6d..8259396 100644 help Randomizing heap placement makes heap exploits harder, but it also breaks ancient binaries (including anything libc5 based). -@@ -1977,7 +1978,7 @@ config INIT_ALL_POSSIBLE +@@ -2001,7 +2002,7 @@ config INIT_ALL_POSSIBLE config STOP_MACHINE bool default y @@ -95857,10 +102436,10 @@ index 7bc47ee..6da2dc7 100644 ifneq ($(CONFIG_BLK_DEV_INITRD),y) obj-y += noinitramfs.o diff --git a/init/do_mounts.c b/init/do_mounts.c -index eb41008..f5dbbf9 100644 +index a95bbdb..82c48fd 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c -@@ -360,11 +360,11 @@ static void __init get_fs_names(char *page) +@@ -363,11 +363,11 @@ static void __init get_fs_names(char *page) static int __init do_mount_root(char *name, char *fs, int flags, void *data) { struct super_block *s; @@ -95874,7 +102453,7 @@ index eb41008..f5dbbf9 100644 s = current->fs->pwd.dentry->d_sb; ROOT_DEV = s->s_dev; printk(KERN_INFO -@@ -487,18 +487,18 @@ void __init change_floppy(char *fmt, ...) +@@ -490,18 +490,18 @@ void __init change_floppy(char *fmt, ...) va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); @@ -95896,7 +102475,7 @@ index eb41008..f5dbbf9 100644 termios.c_lflag |= ICANON; sys_ioctl(fd, TCSETSF, (long)&termios); sys_close(fd); -@@ -592,8 +592,8 @@ void __init prepare_namespace(void) +@@ -595,8 +595,8 @@ void __init prepare_namespace(void) mount_root(); out: devtmpfs_mount("dev"); @@ -96182,10 +102761,10 @@ index ad1bd77..dca2c1b 100644 next_state = Reset; return 0; diff --git a/init/main.c b/init/main.c -index 6f0f1c5f..a542824 100644 +index 2a89545..eb9203f 100644 --- a/init/main.c +++ b/init/main.c -@@ -96,6 +96,8 @@ extern void radix_tree_init(void); +@@ -97,6 +97,8 @@ extern void radix_tree_init(void); static inline void mark_rodata_ro(void) { } #endif @@ -96194,7 +102773,7 @@ index 6f0f1c5f..a542824 100644 /* * Debug helper: via this flag we know that we are in 'early bootup code' * where only the boot processor is running with IRQ disabled. This means -@@ -157,6 +159,85 @@ static int __init set_reset_devices(char *str) +@@ -158,6 +160,84 @@ static int __init set_reset_devices(char *str) __setup("reset_devices", set_reset_devices); @@ -96247,8 +102826,7 @@ index 6f0f1c5f..a542824 100644 + memcpy(pax_exit_kernel_user, (unsigned char []){0xc3}, 1); + clone_pgd_mask = ~(pgdval_t)0UL; + pax_user_shadow_base = 0UL; -+ setup_clear_cpu_cap(X86_FEATURE_PCID); -+ setup_clear_cpu_cap(X86_FEATURE_INVPCID); ++ setup_clear_cpu_cap(X86_FEATURE_PCIDUDEREF); +#endif + + return 0; @@ -96280,7 +102858,7 @@ index 6f0f1c5f..a542824 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; -@@ -722,7 +803,7 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn) +@@ -726,7 +806,7 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn) struct blacklist_entry *entry; char *fn_name; @@ -96289,7 +102867,7 @@ index 6f0f1c5f..a542824 100644 if (!fn_name) return false; -@@ -774,7 +855,7 @@ int __init_or_module do_one_initcall(initcall_t fn) +@@ -778,7 +858,7 @@ int __init_or_module do_one_initcall(initcall_t fn) { int count = preempt_count(); int ret; @@ -96298,7 +102876,7 @@ index 6f0f1c5f..a542824 100644 if (initcall_blacklisted(fn)) return -EPERM; -@@ -784,18 +865,17 @@ int __init_or_module do_one_initcall(initcall_t fn) +@@ -788,18 +868,17 @@ int __init_or_module do_one_initcall(initcall_t fn) else ret = fn(); @@ -96321,7 +102899,7 @@ index 6f0f1c5f..a542824 100644 return ret; } -@@ -901,8 +981,8 @@ static int run_init_process(const char *init_filename) +@@ -905,8 +984,8 @@ static int run_init_process(const char *init_filename) { argv_init[0] = init_filename; return do_execve(getname_kernel(init_filename), @@ -96332,7 +102910,7 @@ index 6f0f1c5f..a542824 100644 } static int try_to_run_init_process(const char *init_filename) -@@ -919,6 +999,10 @@ static int try_to_run_init_process(const char *init_filename) +@@ -923,6 +1002,10 @@ static int try_to_run_init_process(const char *init_filename) return ret; } @@ -96343,7 +102921,7 @@ index 6f0f1c5f..a542824 100644 static noinline void __init kernel_init_freeable(void); static int __ref kernel_init(void *unused) -@@ -943,6 +1027,11 @@ static int __ref kernel_init(void *unused) +@@ -947,6 +1030,11 @@ static int __ref kernel_init(void *unused) ramdisk_execute_command, ret); } @@ -96355,7 +102933,7 @@ index 6f0f1c5f..a542824 100644 /* * We try each of these until one succeeds. * -@@ -998,7 +1087,7 @@ static noinline void __init kernel_init_freeable(void) +@@ -1002,7 +1090,7 @@ static noinline void __init kernel_init_freeable(void) do_basic_setup(); /* Open the /dev/console on the rootfs, this should never fail */ @@ -96364,7 +102942,7 @@ index 6f0f1c5f..a542824 100644 pr_err("Warning: unable to open an initial console.\n"); (void) sys_dup(0); -@@ -1011,11 +1100,13 @@ static noinline void __init kernel_init_freeable(void) +@@ -1015,11 +1103,13 @@ static noinline void __init kernel_init_freeable(void) if (!ramdisk_execute_command) ramdisk_execute_command = "/init"; @@ -96464,7 +103042,7 @@ index 68d4e95..1477ded 100644 mq_table.data = get_mq(table); diff --git a/ipc/mqueue.c b/ipc/mqueue.c -index 7635a1c..7432cb6 100644 +index 3aaea7f..e8a13d6 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c @@ -278,6 +278,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb, @@ -96476,7 +103054,7 @@ index 7635a1c..7432cb6 100644 if (u->mq_bytes + mq_bytes < u->mq_bytes || u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) { diff --git a/ipc/sem.c b/ipc/sem.c -index 9284211..bca5b1b 100644 +index d1a6edd..ef08b40 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -1780,7 +1780,7 @@ static int get_queue_result(struct sem_queue *q) @@ -96498,7 +103076,7 @@ index 9284211..bca5b1b 100644 return sys_semtimedop(semid, tsops, nsops, NULL); } diff --git a/ipc/shm.c b/ipc/shm.c -index 19633b4..d454904 100644 +index 6d76707..b646bbe 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -72,6 +72,14 @@ static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp); @@ -96562,11 +103140,11 @@ index 19633b4..d454904 100644 +#ifdef CONFIG_GRKERNSEC + shp->shm_lapid = current->pid; +#endif - size = i_size_read(path.dentry->d_inode); + size = i_size_read(d_inode(path.dentry)); ipc_unlock_object(&shp->shm_perm); rcu_read_unlock(); diff --git a/ipc/util.c b/ipc/util.c -index 106bed0..f851429 100644 +index ff3323e..d6d63d1 100644 --- a/ipc/util.c +++ b/ipc/util.c @@ -71,6 +71,8 @@ struct ipc_proc_iface { @@ -96590,10 +103168,10 @@ index 106bed0..f851429 100644 if ((requested_mode & ~granted_mode & 0007) && !ns_capable(ns->user_ns, CAP_IPC_OWNER)) diff --git a/kernel/audit.c b/kernel/audit.c -index 72ab759..757deba 100644 +index 1c13e42..6c171ab 100644 --- a/kernel/audit.c +++ b/kernel/audit.c -@@ -122,7 +122,7 @@ u32 audit_sig_sid = 0; +@@ -124,7 +124,7 @@ u32 audit_sig_sid = 0; 3) suppressed due to audit_rate_limit 4) suppressed due to audit_backlog_limit */ @@ -96602,7 +103180,7 @@ index 72ab759..757deba 100644 /* The netlink socket. */ static struct sock *audit_sock; -@@ -256,7 +256,7 @@ void audit_log_lost(const char *message) +@@ -258,7 +258,7 @@ void audit_log_lost(const char *message) unsigned long now; int print; @@ -96611,7 +103189,7 @@ index 72ab759..757deba 100644 print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit); -@@ -273,7 +273,7 @@ void audit_log_lost(const char *message) +@@ -275,7 +275,7 @@ void audit_log_lost(const char *message) if (print) { if (printk_ratelimit()) pr_warn("audit_lost=%u audit_rate_limit=%u audit_backlog_limit=%u\n", @@ -96620,7 +103198,7 @@ index 72ab759..757deba 100644 audit_rate_limit, audit_backlog_limit); audit_panic(message); -@@ -831,7 +831,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) +@@ -833,7 +833,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) s.pid = audit_pid; s.rate_limit = audit_rate_limit; s.backlog_limit = audit_backlog_limit; @@ -96628,11 +103206,20 @@ index 72ab759..757deba 100644 + s.lost = atomic_read_unchecked(&audit_lost); s.backlog = skb_queue_len(&audit_skb_queue); s.feature_bitmap = AUDIT_FEATURE_BITMAP_ALL; - s.backlog_wait_time = audit_backlog_wait_time; + s.backlog_wait_time = audit_backlog_wait_time_master; diff --git a/kernel/auditsc.c b/kernel/auditsc.c -index dc4ae70..2a2bddc 100644 +index 9fb9d1c..afb1610 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c +@@ -1023,7 +1023,7 @@ static int audit_log_single_execve_arg(struct audit_context *context, + * for strings that are too long, we should not have created + * any. + */ +- if (unlikely((len == -1) || len > MAX_ARG_STRLEN - 1)) { ++ if (unlikely(len > MAX_ARG_STRLEN - 1)) { + WARN_ON(1); + send_sig(SIGKILL, current, 0); + return -1; @@ -1955,7 +1955,7 @@ int auditsc_get_stamp(struct audit_context *ctx, } @@ -96652,7 +103239,7 @@ index dc4ae70..2a2bddc 100644 task->sessionid = sessionid; task->loginuid = loginuid; diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c -index 0c5796e..a9414e2 100644 +index 54f0e7f..fed997b 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -143,14 +143,17 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr, @@ -96684,10 +103271,10 @@ index 0c5796e..a9414e2 100644 #endif /* CONFIG_BPF_JIT */ diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c -index 536edc2..d28c85d 100644 +index 3bae6c5..59ea175 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c -@@ -548,11 +548,15 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz +@@ -554,11 +554,15 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz int err; /* the syscall is limited to root temporarily. This restriction will be @@ -96706,10 +103293,10 @@ index 536edc2..d28c85d 100644 if (!access_ok(VERIFY_READ, uattr, 1)) return -EFAULT; diff --git a/kernel/capability.c b/kernel/capability.c -index 989f5bf..d317ca0 100644 +index 45432b5..988f1e4 100644 --- a/kernel/capability.c +++ b/kernel/capability.c -@@ -192,6 +192,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr) +@@ -193,6 +193,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr) * before modification is attempted and the application * fails. */ @@ -96719,7 +103306,7 @@ index 989f5bf..d317ca0 100644 if (copy_to_user(dataptr, kdata, tocopy * sizeof(struct __user_cap_data_struct))) { return -EFAULT; -@@ -297,10 +300,11 @@ bool has_ns_capability(struct task_struct *t, +@@ -298,10 +301,11 @@ bool has_ns_capability(struct task_struct *t, int ret; rcu_read_lock(); @@ -96733,7 +103320,7 @@ index 989f5bf..d317ca0 100644 } /** -@@ -337,10 +341,10 @@ bool has_ns_capability_noaudit(struct task_struct *t, +@@ -338,10 +342,10 @@ bool has_ns_capability_noaudit(struct task_struct *t, int ret; rcu_read_lock(); @@ -96746,7 +103333,7 @@ index 989f5bf..d317ca0 100644 } /** -@@ -378,7 +382,7 @@ bool ns_capable(struct user_namespace *ns, int cap) +@@ -379,7 +383,7 @@ bool ns_capable(struct user_namespace *ns, int cap) BUG(); } @@ -96755,14 +103342,14 @@ index 989f5bf..d317ca0 100644 current->flags |= PF_SUPERPRIV; return true; } -@@ -386,6 +390,21 @@ bool ns_capable(struct user_namespace *ns, int cap) +@@ -387,6 +391,20 @@ bool ns_capable(struct user_namespace *ns, int cap) } EXPORT_SYMBOL(ns_capable); +bool ns_capable_nolog(struct user_namespace *ns, int cap) +{ + if (unlikely(!cap_valid(cap))) { -+ printk(KERN_CRIT "capable_nolog() called with invalid cap=%u\n", cap); ++ pr_crit("capable_nolog() called with invalid cap=%u\n", cap); + BUG(); + } + @@ -96773,24 +103360,24 @@ index 989f5bf..d317ca0 100644 + return false; +} +EXPORT_SYMBOL(ns_capable_nolog); -+ + /** - * file_ns_capable - Determine if the file's opener had a capability in effect - * @file: The file we want to check -@@ -427,6 +446,12 @@ bool capable(int cap) + * capable - Determine if the current task has a superior capability in effect +@@ -403,6 +421,13 @@ bool capable(int cap) + return ns_capable(&init_user_ns, cap); } EXPORT_SYMBOL(capable); - ++ +bool capable_nolog(int cap) +{ + return ns_capable_nolog(&init_user_ns, cap); +} +EXPORT_SYMBOL(capable_nolog); + + #endif /* CONFIG_MULTIUSER */ + /** - * capable_wrt_inode_uidgid - Check nsown_capable and uid and gid mapped - * @inode: The inode in question -@@ -444,3 +469,12 @@ bool capable_wrt_inode_uidgid(const struct inode *inode, int cap) +@@ -447,3 +472,12 @@ bool capable_wrt_inode_uidgid(const struct inode *inode, int cap) kgid_has_mapping(ns, inode->i_gid); } EXPORT_SYMBOL(capable_wrt_inode_uidgid); @@ -96804,7 +103391,7 @@ index 989f5bf..d317ca0 100644 +} +EXPORT_SYMBOL(capable_wrt_inode_uidgid_nolog); diff --git a/kernel/cgroup.c b/kernel/cgroup.c -index 29a7b2c..a64e30a 100644 +index e8a5491..ab4bfa3 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -5347,6 +5347,9 @@ static void cgroup_release_agent(struct work_struct *work) @@ -96827,7 +103414,7 @@ index 29a7b2c..a64e30a 100644 list_for_each_entry(task, &cset->tasks, cg_list) { if (count++ > MAX_TASKS_SHOWN_PER_CSS) diff --git a/kernel/compat.c b/kernel/compat.c -index 24f0061..ea80802 100644 +index 333d364..762ec00 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -13,6 +13,7 @@ @@ -96972,7 +103559,7 @@ index 24f0061..ea80802 100644 set_fs(oldfs); if ((err == -ERESTART_RESTARTBLOCK) && rmtp && -@@ -1145,7 +1146,7 @@ COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval, +@@ -1147,7 +1148,7 @@ COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval, mm_segment_t old_fs = get_fs(); set_fs(KERNEL_DS); @@ -97006,10 +103593,10 @@ index c18b1f1..b9a0132 100644 return -ENOMEM; diff --git a/kernel/cred.c b/kernel/cred.c -index e0573a4..26c0fd3 100644 +index ec1c076..7da8a0e 100644 --- a/kernel/cred.c +++ b/kernel/cred.c -@@ -164,6 +164,16 @@ void exit_creds(struct task_struct *tsk) +@@ -167,6 +167,15 @@ void exit_creds(struct task_struct *tsk) validate_creds(cred); alter_cred_subscribers(cred, -1); put_cred(cred); @@ -97019,14 +103606,13 @@ index e0573a4..26c0fd3 100644 + if (cred != NULL) { + tsk->delayed_cred = NULL; + validate_creds(cred); -+ alter_cred_subscribers(cred, -1); + put_cred(cred); + } +#endif } /** -@@ -411,7 +421,7 @@ static bool cred_cap_issubset(const struct cred *set, const struct cred *subset) +@@ -414,7 +423,7 @@ static bool cred_cap_issubset(const struct cred *set, const struct cred *subset) * Always returns 0 thus allowing this function to be tail-called at the end * of, say, sys_setgid(). */ @@ -97035,7 +103621,7 @@ index e0573a4..26c0fd3 100644 { struct task_struct *task = current; const struct cred *old = task->real_cred; -@@ -430,6 +440,8 @@ int commit_creds(struct cred *new) +@@ -433,6 +442,8 @@ int commit_creds(struct cred *new) get_cred(new); /* we will require a ref for the subj creds too */ @@ -97044,7 +103630,7 @@ index e0573a4..26c0fd3 100644 /* dumpability changes */ if (!uid_eq(old->euid, new->euid) || !gid_eq(old->egid, new->egid) || -@@ -479,6 +491,105 @@ int commit_creds(struct cred *new) +@@ -482,6 +493,105 @@ int commit_creds(struct cred *new) put_cred(old); return 0; } @@ -97237,10 +103823,10 @@ index 41213454..861e178 100644 #ifdef CONFIG_MODULE_UNLOAD { diff --git a/kernel/events/core.c b/kernel/events/core.c -index 2fabc06..79cceec 100644 +index 0ceb386..ddaf008 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c -@@ -170,8 +170,15 @@ static struct srcu_struct pmus_srcu; +@@ -172,8 +172,15 @@ static struct srcu_struct pmus_srcu; * 0 - disallow raw tracepoint access for unpriv * 1 - disallow cpu events for unpriv * 2 - disallow kernel profiling for unpriv @@ -97248,16 +103834,16 @@ index 2fabc06..79cceec 100644 */ -int sysctl_perf_event_paranoid __read_mostly = 1; +#ifdef CONFIG_GRKERNSEC_PERF_HARDEN -+int sysctl_perf_event_legitimately_concerned __read_mostly = 3; ++int sysctl_perf_event_legitimately_concerned __read_only = 3; +#elif defined(CONFIG_GRKERNSEC_HIDESYM) -+int sysctl_perf_event_legitimately_concerned __read_mostly = 2; ++int sysctl_perf_event_legitimately_concerned __read_only = 2; +#else -+int sysctl_perf_event_legitimately_concerned __read_mostly = 1; ++int sysctl_perf_event_legitimately_concerned __read_only = 1; +#endif /* Minimum for 512 kiB + 1 user control page */ int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ -@@ -197,7 +204,7 @@ void update_perf_cpu_limits(void) +@@ -199,7 +206,7 @@ void update_perf_cpu_limits(void) tmp *= sysctl_perf_cpu_time_max_percent; do_div(tmp, 100); @@ -97266,7 +103852,7 @@ index 2fabc06..79cceec 100644 } static int perf_rotate_context(struct perf_cpu_context *cpuctx); -@@ -303,7 +310,7 @@ void perf_sample_event_took(u64 sample_len_ns) +@@ -305,7 +312,7 @@ void perf_sample_event_took(u64 sample_len_ns) } } @@ -97275,16 +103861,7 @@ index 2fabc06..79cceec 100644 static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx, enum event_type_t event_type); -@@ -3220,7 +3227,7 @@ static void __perf_event_read(void *info) - - static inline u64 perf_event_count(struct perf_event *event) - { -- return local64_read(&event->count) + atomic64_read(&event->child_count); -+ return local64_read(&event->count) + atomic64_read_unchecked(&event->child_count); - } - - static u64 perf_event_read(struct perf_event *event) -@@ -3656,9 +3663,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) +@@ -3771,9 +3778,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 + @@ -97296,7 +103873,7 @@ index 2fabc06..79cceec 100644 list_for_each_entry(child, &event->child_list, child_list) { total += perf_event_read(child); -@@ -4147,10 +4154,10 @@ void perf_event_update_userpage(struct perf_event *event) +@@ -4268,10 +4275,10 @@ void perf_event_update_userpage(struct perf_event *event) userpg->offset -= local64_read(&event->hw.prev_count); userpg->time_enabled = enabled + @@ -97309,7 +103886,7 @@ index 2fabc06..79cceec 100644 arch_perf_update_userpage(event, userpg, now); -@@ -4740,7 +4747,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, +@@ -4946,7 +4953,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size, /* Data. */ sp = perf_user_stack_pointer(regs); @@ -97318,7 +103895,7 @@ index 2fabc06..79cceec 100644 dyn_size = dump_size - rem; perf_output_skip(handle, rem); -@@ -4831,11 +4838,11 @@ static void perf_output_read_one(struct perf_output_handle *handle, +@@ -5037,11 +5044,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 + @@ -97332,7 +103909,7 @@ index 2fabc06..79cceec 100644 } if (read_format & PERF_FORMAT_ID) values[n++] = primary_event_id(event); -@@ -7180,7 +7187,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, +@@ -7533,7 +7540,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, event->parent = parent_event; event->ns = get_pid_ns(task_active_pid_ns(current)); @@ -97341,7 +103918,7 @@ index 2fabc06..79cceec 100644 event->state = PERF_EVENT_STATE_INACTIVE; -@@ -7470,6 +7477,11 @@ SYSCALL_DEFINE5(perf_event_open, +@@ -7892,6 +7899,11 @@ SYSCALL_DEFINE5(perf_event_open, if (flags & ~PERF_FLAG_ALL) return -EINVAL; @@ -97353,7 +103930,7 @@ index 2fabc06..79cceec 100644 err = perf_copy_attr(attr_uptr, &attr); if (err) return err; -@@ -7892,10 +7904,10 @@ static void sync_child_event(struct perf_event *child_event, +@@ -8340,10 +8352,10 @@ static void sync_child_event(struct perf_event *child_event, /* * Add back the child's count to the parent's count: */ @@ -97368,11 +103945,11 @@ index 2fabc06..79cceec 100644 /* diff --git a/kernel/events/internal.h b/kernel/events/internal.h -index 569b2187..19940d9 100644 +index 9f6ce9b..e4f2cbb 100644 --- a/kernel/events/internal.h +++ b/kernel/events/internal.h -@@ -81,10 +81,10 @@ static inline unsigned long perf_data_size(struct ring_buffer *rb) - return rb->nr_pages << (PAGE_SHIFT + page_order(rb)); +@@ -114,10 +114,10 @@ static inline unsigned long perf_aux_size(struct ring_buffer *rb) + return rb->aux_nr_pages << PAGE_SHIFT; } -#define DEFINE_OUTPUT_COPY(func_name, memcpy_func) \ @@ -97384,7 +103961,7 @@ index 569b2187..19940d9 100644 { \ unsigned long size, written; \ \ -@@ -117,7 +117,7 @@ memcpy_common(void *dst, const void *src, unsigned long n) +@@ -150,7 +150,7 @@ memcpy_common(void *dst, const void *src, unsigned long n) return 0; } @@ -97393,7 +103970,7 @@ index 569b2187..19940d9 100644 static inline unsigned long memcpy_skip(void *dst, const void *src, unsigned long n) -@@ -125,7 +125,7 @@ memcpy_skip(void *dst, const void *src, unsigned long n) +@@ -158,7 +158,7 @@ memcpy_skip(void *dst, const void *src, unsigned long n) return 0; } @@ -97402,7 +103979,7 @@ index 569b2187..19940d9 100644 #ifndef arch_perf_out_copy_user #define arch_perf_out_copy_user arch_perf_out_copy_user -@@ -143,7 +143,7 @@ arch_perf_out_copy_user(void *dst, const void *src, unsigned long n) +@@ -176,7 +176,7 @@ arch_perf_out_copy_user(void *dst, const void *src, unsigned long n) } #endif @@ -97425,7 +104002,7 @@ index cb346f2..e4dc317 100644 pagefault_disable(); result = __copy_from_user_inatomic(&opcode, (void __user*)vaddr, diff --git a/kernel/exit.c b/kernel/exit.c -index feff10b..f623dd5 100644 +index 22fcc05..5f07dbc 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -171,6 +171,10 @@ void release_task(struct task_struct *p) @@ -97466,7 +104043,7 @@ index feff10b..f623dd5 100644 exit_mm(tsk); if (group_dead) -@@ -849,7 +857,7 @@ SYSCALL_DEFINE1(exit, int, error_code) +@@ -847,7 +855,7 @@ SYSCALL_DEFINE1(exit, int, error_code) * Take down every thread in the group. This is called by fatal signals * as well as by sys_exit_group (below). */ @@ -97476,10 +104053,10 @@ index feff10b..f623dd5 100644 { struct signal_struct *sig = current->signal; diff --git a/kernel/fork.c b/kernel/fork.c -index cf65139..704476e 100644 +index 03c1eaa..461be4c 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -177,12 +177,54 @@ static void free_thread_info(struct thread_info *ti) +@@ -188,12 +188,54 @@ static void free_thread_info(struct thread_info *ti) void thread_info_cache_init(void) { thread_info_cache = kmem_cache_create("thread_info", THREAD_SIZE, @@ -97535,7 +104112,7 @@ index cf65139..704476e 100644 /* SLAB cache for signal_struct structures (tsk->signal) */ static struct kmem_cache *signal_cachep; -@@ -201,18 +243,22 @@ struct kmem_cache *vm_area_cachep; +@@ -212,18 +254,22 @@ struct kmem_cache *vm_area_cachep; /* SLAB cache for mm_struct structures (tsk->mm) */ static struct kmem_cache *mm_cachep; @@ -97561,7 +104138,7 @@ index cf65139..704476e 100644 rt_mutex_debug_task_free(tsk); ftrace_graph_exit_task(tsk); put_seccomp_filter(tsk); -@@ -306,6 +352,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) +@@ -329,6 +375,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) { struct task_struct *tsk; struct thread_info *ti; @@ -97569,7 +104146,7 @@ index cf65139..704476e 100644 int node = tsk_fork_get_node(orig); int err; -@@ -313,7 +360,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) +@@ -336,7 +383,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) if (!tsk) return NULL; @@ -97578,7 +104155,7 @@ index cf65139..704476e 100644 if (!ti) goto free_tsk; -@@ -322,6 +369,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) +@@ -345,6 +392,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) goto free_ti; tsk->stack = ti; @@ -97588,7 +104165,7 @@ index cf65139..704476e 100644 #ifdef CONFIG_SECCOMP /* * We must handle setting up seccomp filters once we're under -@@ -338,7 +388,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) +@@ -361,7 +411,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) set_task_stack_end_magic(tsk); #ifdef CONFIG_CC_STACKPROTECTOR @@ -97597,7 +104174,7 @@ index cf65139..704476e 100644 #endif /* -@@ -352,24 +402,89 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) +@@ -375,24 +425,89 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) tsk->splice_pipe = NULL; tsk->task_frag.page = NULL; @@ -97691,7 +104268,7 @@ index cf65139..704476e 100644 uprobe_start_dup_mmap(); down_write(&oldmm->mmap_sem); -@@ -397,51 +512,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) +@@ -423,51 +538,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) prev = NULL; for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) { @@ -97747,7 +104324,7 @@ index cf65139..704476e 100644 } /* -@@ -473,6 +552,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) +@@ -499,6 +578,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) if (retval) goto out; } @@ -97779,7 +104356,7 @@ index cf65139..704476e 100644 /* a new mm has just been created */ arch_dup_mmap(oldmm, mm); retval = 0; -@@ -482,14 +586,6 @@ out: +@@ -508,14 +612,6 @@ out: up_write(&oldmm->mmap_sem); uprobe_end_dup_mmap(); return retval; @@ -97794,7 +104371,7 @@ index cf65139..704476e 100644 } static inline int mm_alloc_pgd(struct mm_struct *mm) -@@ -739,8 +835,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) +@@ -790,8 +886,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) return ERR_PTR(err); mm = get_task_mm(task); @@ -97805,7 +104382,7 @@ index cf65139..704476e 100644 mmput(mm); mm = ERR_PTR(-EACCES); } -@@ -943,13 +1039,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) +@@ -992,13 +1088,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) spin_unlock(&fs->lock); return -EAGAIN; } @@ -97827,7 +104404,7 @@ index cf65139..704476e 100644 return 0; } -@@ -1187,7 +1290,7 @@ init_task_pid(struct task_struct *task, enum pid_type type, struct pid *pid) +@@ -1236,7 +1339,7 @@ init_task_pid(struct task_struct *task, enum pid_type type, struct pid *pid) * parts of the process environment (as per the clone * flags). The actual kick-off is left to the caller. */ @@ -97836,7 +104413,7 @@ index cf65139..704476e 100644 unsigned long stack_start, unsigned long stack_size, int __user *child_tidptr, -@@ -1258,6 +1361,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, +@@ -1307,6 +1410,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled); #endif retval = -EAGAIN; @@ -97846,7 +104423,7 @@ index cf65139..704476e 100644 if (atomic_read(&p->real_cred->user->processes) >= task_rlimit(p, RLIMIT_NPROC)) { if (p->real_cred->user != INIT_USER && -@@ -1507,6 +1613,11 @@ static struct task_struct *copy_process(unsigned long clone_flags, +@@ -1554,6 +1660,11 @@ static struct task_struct *copy_process(unsigned long clone_flags, goto bad_fork_free_pid; } @@ -97858,7 +104435,7 @@ index cf65139..704476e 100644 if (likely(p->pid)) { ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace); -@@ -1597,6 +1708,8 @@ bad_fork_cleanup_count: +@@ -1643,6 +1754,8 @@ bad_fork_cleanup_count: bad_fork_free: free_task(p); fork_out: @@ -97867,7 +104444,7 @@ index cf65139..704476e 100644 return ERR_PTR(retval); } -@@ -1658,6 +1771,7 @@ long do_fork(unsigned long clone_flags, +@@ -1704,6 +1817,7 @@ long do_fork(unsigned long clone_flags, p = copy_process(clone_flags, stack_start, stack_size, child_tidptr, NULL, trace); @@ -97875,7 +104452,7 @@ index cf65139..704476e 100644 /* * Do this prior waking up the new thread - the thread pointer * might get invalid after that point, if the thread exits quickly. -@@ -1674,6 +1788,8 @@ long do_fork(unsigned long clone_flags, +@@ -1720,6 +1834,8 @@ long do_fork(unsigned long clone_flags, if (clone_flags & CLONE_PARENT_SETTID) put_user(nr, parent_tidptr); @@ -97884,7 +104461,7 @@ index cf65139..704476e 100644 if (clone_flags & CLONE_VFORK) { p->vfork_done = &vfork; init_completion(&vfork); -@@ -1792,7 +1908,7 @@ void __init proc_caches_init(void) +@@ -1838,7 +1954,7 @@ void __init proc_caches_init(void) mm_cachep = kmem_cache_create("mm_struct", sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN, SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL); @@ -97893,7 +104470,7 @@ index cf65139..704476e 100644 mmap_init(); nsproxy_cache_init(); } -@@ -1832,7 +1948,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) +@@ -1878,7 +1994,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 */ @@ -97902,7 +104479,7 @@ index cf65139..704476e 100644 return 0; *new_fsp = copy_fs_struct(fs); -@@ -1944,7 +2060,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) +@@ -1990,7 +2106,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) fs = current->fs; spin_lock(&fs->lock); current->fs = new_fs; @@ -97912,8 +104489,17 @@ index cf65139..704476e 100644 new_fs = NULL; else new_fs = fs; +@@ -2054,7 +2171,7 @@ int unshare_files(struct files_struct **displaced) + int sysctl_max_threads(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, loff_t *ppos) + { +- struct ctl_table t; ++ ctl_table_no_const t; + int ret; + int threads = max_threads; + int min = MIN_THREADS; diff --git a/kernel/futex.c b/kernel/futex.c -index 2a5e383..878bac6 100644 +index 2579e40..c33f33e 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -201,7 +201,7 @@ struct futex_pi_state { @@ -97989,10 +104575,10 @@ index 55c8c93..9ba7ad6 100644 { compat_uptr_t base = ptr_to_compat(entry); diff --git a/kernel/gcov/base.c b/kernel/gcov/base.c -index b358a80..fc25240 100644 +index a744098..539f7b6 100644 --- a/kernel/gcov/base.c +++ b/kernel/gcov/base.c -@@ -114,11 +114,6 @@ void gcov_enable_events(void) +@@ -117,11 +117,6 @@ void gcov_enable_events(void) } #ifdef CONFIG_MODULES @@ -98004,7 +104590,7 @@ index b358a80..fc25240 100644 /* Update list and generate events when modules are unloaded. */ static int gcov_module_notifier(struct notifier_block *nb, unsigned long event, void *data) -@@ -133,7 +128,7 @@ static int gcov_module_notifier(struct notifier_block *nb, unsigned long event, +@@ -136,7 +131,7 @@ static int gcov_module_notifier(struct notifier_block *nb, unsigned long event, /* Remove entries located in module from linked list. */ while ((info = gcov_info_next(info))) { @@ -98014,10 +104600,10 @@ index b358a80..fc25240 100644 if (gcov_events_enabled) gcov_event(GCOV_REMOVE, info); diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c -index 886d09e..c7ff4e5 100644 +index e68932b..2247e06 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c -@@ -874,7 +874,7 @@ static int irq_thread(void *data) +@@ -906,7 +906,7 @@ static int irq_thread(void *data) action_ret = handler_fn(desc, action); if (action_ret == IRQ_HANDLED) @@ -98195,9 +104781,18 @@ index 0aa69ea..a7fcafb 100644 /* diff --git a/kernel/kexec.c b/kernel/kexec.c -index 38c25b1..12b3f69 100644 +index 7a36fdc..de8c4ed 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c +@@ -1232,7 +1232,7 @@ static int kimage_load_segment(struct kimage *image, + */ + struct kimage *kexec_image; + struct kimage *kexec_crash_image; +-int kexec_load_disabled; ++int kexec_load_disabled __read_only; + + static DEFINE_MUTEX(kexec_mutex); + @@ -1348,7 +1348,8 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry, compat_ulong_t, flags) { @@ -98476,10 +105071,10 @@ index 6683cce..daf8999 100644 .name = "notes", .mode = S_IRUGO, diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index ba77ab5..d6a3e20 100644 +index aaeae88..10f3663 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c -@@ -599,6 +599,10 @@ static int static_obj(void *obj) +@@ -613,6 +613,10 @@ static int static_obj(void *obj) end = (unsigned long) &_end, addr = (unsigned long) obj; @@ -98490,7 +105085,7 @@ index ba77ab5..d6a3e20 100644 /* * static variable? */ -@@ -743,6 +747,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force) +@@ -757,6 +761,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"); @@ -98498,7 +105093,7 @@ index ba77ab5..d6a3e20 100644 printk("the code is fine but needs lockdep annotation.\n"); printk("turning off the locking correctness validator.\n"); dump_stack(); -@@ -3088,7 +3093,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, +@@ -3102,7 +3107,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, if (!class) return 0; } @@ -98508,7 +105103,7 @@ index ba77ab5..d6a3e20 100644 printk("\nacquire class [%p] %s", class->key, class->name); if (class->name_version > 1) diff --git a/kernel/locking/lockdep_proc.c b/kernel/locking/lockdep_proc.c -index ef43ac4..2720dfa 100644 +index d83d798..ea3120d 100644 --- a/kernel/locking/lockdep_proc.c +++ b/kernel/locking/lockdep_proc.c @@ -65,7 +65,7 @@ static int l_show(struct seq_file *m, void *v) @@ -98538,7 +105133,7 @@ index ef43ac4..2720dfa 100644 print_name(m, class); seq_puts(m, "\n"); } -@@ -496,7 +496,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) +@@ -508,7 +508,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) if (!i) seq_line(m, '-', 40-namelen, namelen); @@ -98547,7 +105142,7 @@ index ef43ac4..2720dfa 100644 (void *)class->contention_point[i]); seq_printf(m, "%40s %14lu %29s %pS\n", name, stats->contention_point[i], -@@ -511,7 +511,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) +@@ -523,7 +523,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) if (!i) seq_line(m, '-', 40-namelen, namelen); @@ -98556,19 +105151,6 @@ index ef43ac4..2720dfa 100644 (void *)class->contending_point[i]); seq_printf(m, "%40s %14lu %29s %pS\n", name, stats->contending_point[i], -diff --git a/kernel/locking/mcs_spinlock.h b/kernel/locking/mcs_spinlock.h -index d1fe2ba..180cd65e 100644 ---- a/kernel/locking/mcs_spinlock.h -+++ b/kernel/locking/mcs_spinlock.h -@@ -78,7 +78,7 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node) - */ - return; - } -- ACCESS_ONCE(prev->next) = node; -+ ACCESS_ONCE_RW(prev->next) = node; - - /* Wait until the lock holder passes the lock down. */ - arch_mcs_spin_lock_contended(&node->locked); diff --git a/kernel/locking/mutex-debug.c b/kernel/locking/mutex-debug.c index 3ef3736..9c951fa 100644 --- a/kernel/locking/mutex-debug.c @@ -98618,10 +105200,10 @@ index 0799fd3..d06ae3b 100644 extern void debug_mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key); diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c -index 94674e5..de4966f 100644 +index 4cccea6..4382db9 100644 --- a/kernel/locking/mutex.c +++ b/kernel/locking/mutex.c -@@ -542,7 +542,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, +@@ -533,7 +533,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, goto skip_wait; debug_mutex_lock_common(lock, &waiter); @@ -98630,7 +105212,7 @@ index 94674e5..de4966f 100644 /* add waiting tasks to the end of the waitqueue (FIFO): */ list_add_tail(&waiter.list, &lock->wait_list); -@@ -589,7 +589,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, +@@ -580,7 +580,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, } __set_task_state(task, TASK_RUNNING); @@ -98639,7 +105221,7 @@ index 94674e5..de4966f 100644 /* set it to 0 if there are no waiters left: */ if (likely(list_empty(&lock->wait_list))) atomic_set(&lock->count, 0); -@@ -610,7 +610,7 @@ skip_wait: +@@ -601,7 +601,7 @@ skip_wait: return 0; err: @@ -98648,44 +105230,6 @@ index 94674e5..de4966f 100644 spin_unlock_mutex(&lock->wait_lock, flags); debug_mutex_free_waiter(&waiter); mutex_release(&lock->dep_map, 1, ip); -diff --git a/kernel/locking/osq_lock.c b/kernel/locking/osq_lock.c -index c112d00..1946ad9 100644 ---- a/kernel/locking/osq_lock.c -+++ b/kernel/locking/osq_lock.c -@@ -98,7 +98,7 @@ bool osq_lock(struct optimistic_spin_queue *lock) - - prev = decode_cpu(old); - node->prev = prev; -- ACCESS_ONCE(prev->next) = node; -+ ACCESS_ONCE_RW(prev->next) = node; - - /* - * Normally @prev is untouchable after the above store; because at that -@@ -170,8 +170,8 @@ unqueue: - * it will wait in Step-A. - */ - -- ACCESS_ONCE(next->prev) = prev; -- ACCESS_ONCE(prev->next) = next; -+ ACCESS_ONCE_RW(next->prev) = prev; -+ ACCESS_ONCE_RW(prev->next) = next; - - return false; - } -@@ -193,11 +193,11 @@ void osq_unlock(struct optimistic_spin_queue *lock) - node = this_cpu_ptr(&osq_node); - next = xchg(&node->next, NULL); - if (next) { -- ACCESS_ONCE(next->locked) = 1; -+ ACCESS_ONCE_RW(next->locked) = 1; - return; - } - - next = osq_wait_next(lock, node, NULL); - if (next) -- ACCESS_ONCE(next->locked) = 1; -+ ACCESS_ONCE_RW(next->locked) = 1; - } diff --git a/kernel/locking/rtmutex-tester.c b/kernel/locking/rtmutex-tester.c index 1d96dd0..994ff19 100644 --- a/kernel/locking/rtmutex-tester.c @@ -98781,7 +105325,7 @@ index 1d96dd0..994ff19 100644 default: diff --git a/kernel/module.c b/kernel/module.c -index ec53f59..67d9655 100644 +index cfc9e84..a058697 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -59,6 +59,7 @@ @@ -98792,6 +105336,15 @@ index ec53f59..67d9655 100644 #include #include "module-internal.h" +@@ -145,7 +146,7 @@ module_param(sig_enforce, bool_enable_only, 0644); + #endif /* CONFIG_MODULE_SIG */ + + /* Block module loading/unloading? */ +-int modules_disabled = 0; ++int modules_disabled __read_only = 0; + core_param(nomodule, modules_disabled, bint, 0); + + /* Waiting for a module to finish initializing? */ @@ -155,7 +156,8 @@ static BLOCKING_NOTIFIER_HEAD(module_notify_list); /* Bounds of module allocation, for speeding __module_address. @@ -99232,7 +105785,7 @@ index ec53f59..67d9655 100644 mutex_unlock(&module_mutex); } return ret; -@@ -2665,7 +2728,15 @@ static struct module *setup_load_info(struct load_info *info, int flags) +@@ -2666,7 +2729,15 @@ static struct module *setup_load_info(struct load_info *info, int flags) mod = (void *)info->sechdrs[info->index.mod].sh_addr; if (info->index.sym == 0) { @@ -99248,7 +105801,7 @@ index ec53f59..67d9655 100644 return ERR_PTR(-ENOEXEC); } -@@ -2681,8 +2752,14 @@ static struct module *setup_load_info(struct load_info *info, int flags) +@@ -2682,8 +2753,14 @@ static struct module *setup_load_info(struct load_info *info, int flags) static int check_modinfo(struct module *mod, struct load_info *info, int flags) { const char *modmagic = get_modinfo(info, "vermagic"); @@ -99263,7 +105816,7 @@ index ec53f59..67d9655 100644 if (flags & MODULE_INIT_IGNORE_VERMAGIC) modmagic = NULL; -@@ -2707,7 +2784,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) +@@ -2708,7 +2785,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) } /* Set up license info based on the info section */ @@ -99272,7 +105825,7 @@ index ec53f59..67d9655 100644 return 0; } -@@ -2801,7 +2878,7 @@ static int move_module(struct module *mod, struct load_info *info) +@@ -2805,7 +2882,7 @@ static int move_module(struct module *mod, struct load_info *info) void *ptr; /* Do the allocs. */ @@ -99281,7 +105834,7 @@ index ec53f59..67d9655 100644 /* * The pointer to this block is stored in the module structure * which is inside the block. Just mark it as not being a -@@ -2811,11 +2888,11 @@ static int move_module(struct module *mod, struct load_info *info) +@@ -2815,11 +2892,11 @@ static int move_module(struct module *mod, struct load_info *info) if (!ptr) return -ENOMEM; @@ -99297,7 +105850,7 @@ index ec53f59..67d9655 100644 /* * The pointer to this block is stored in the module structure * which is inside the block. This block doesn't need to be -@@ -2824,13 +2901,45 @@ static int move_module(struct module *mod, struct load_info *info) +@@ -2828,13 +2905,45 @@ static int move_module(struct module *mod, struct load_info *info) */ kmemleak_ignore(ptr); if (!ptr) { @@ -99347,7 +105900,7 @@ index ec53f59..67d9655 100644 /* Transfer each section which specifies SHF_ALLOC */ pr_debug("final section addresses:\n"); -@@ -2841,16 +2950,45 @@ static int move_module(struct module *mod, struct load_info *info) +@@ -2845,16 +2954,45 @@ static int move_module(struct module *mod, struct load_info *info) if (!(shdr->sh_flags & SHF_ALLOC)) continue; @@ -99400,7 +105953,7 @@ index ec53f59..67d9655 100644 pr_debug("\t0x%lx %s\n", (long)shdr->sh_addr, info->secstrings + shdr->sh_name); } -@@ -2907,12 +3045,12 @@ static void flush_module_icache(const struct module *mod) +@@ -2911,12 +3049,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. */ @@ -99419,7 +105972,7 @@ index ec53f59..67d9655 100644 set_fs(old_fs); } -@@ -2970,8 +3108,10 @@ static void module_deallocate(struct module *mod, struct load_info *info) +@@ -2974,8 +3112,10 @@ static void module_deallocate(struct module *mod, struct load_info *info) { percpu_modfree(mod); module_arch_freeing_init(mod); @@ -99432,7 +105985,7 @@ index ec53f59..67d9655 100644 } int __weak module_finalize(const Elf_Ehdr *hdr, -@@ -2984,7 +3124,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr, +@@ -2988,7 +3128,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr, static int post_relocation(struct module *mod, const struct load_info *info) { /* Sort exception table now relocations are done. */ @@ -99442,7 +105995,7 @@ index ec53f59..67d9655 100644 /* Copy relocated percpu area over. */ percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr, -@@ -3032,13 +3174,15 @@ static void do_mod_ctors(struct module *mod) +@@ -3036,13 +3178,15 @@ static void do_mod_ctors(struct module *mod) /* For freeing module_init on success, in case kallsyms traversing */ struct mod_initfree { struct rcu_head rcu; @@ -99460,7 +106013,7 @@ index ec53f59..67d9655 100644 kfree(m); } -@@ -3058,7 +3202,8 @@ static noinline int do_init_module(struct module *mod) +@@ -3062,7 +3206,8 @@ static noinline int do_init_module(struct module *mod) ret = -ENOMEM; goto fail; } @@ -99470,7 +106023,7 @@ index ec53f59..67d9655 100644 /* * We want to find out whether @mod uses async during init. Clear -@@ -3117,10 +3262,10 @@ static noinline int do_init_module(struct module *mod) +@@ -3121,10 +3266,10 @@ static noinline int do_init_module(struct module *mod) #endif unset_module_init_ro_nx(mod); module_arch_freeing_init(mod); @@ -99485,7 +106038,7 @@ index ec53f59..67d9655 100644 /* * We want to free module_init, but be aware that kallsyms may be * walking this with preempt disabled. In all the failure paths, -@@ -3208,16 +3353,16 @@ static int complete_formation(struct module *mod, struct load_info *info) +@@ -3212,16 +3357,16 @@ static int complete_formation(struct module *mod, struct load_info *info) module_bug_finalize(info->hdr, info->sechdrs, mod); /* Set RO and NX regions for core */ @@ -99510,7 +106063,7 @@ index ec53f59..67d9655 100644 /* Mark state as coming so strong_try_module_get() ignores us, * but kallsyms etc. can see us. */ -@@ -3301,9 +3446,38 @@ static int load_module(struct load_info *info, const char __user *uargs, +@@ -3305,9 +3450,38 @@ static int load_module(struct load_info *info, const char __user *uargs, if (err) goto free_unload; @@ -99549,7 +106102,7 @@ index ec53f59..67d9655 100644 /* Fix up syms, so that st_value is a pointer to location. */ err = simplify_symbols(mod, info); if (err < 0) -@@ -3319,13 +3493,6 @@ static int load_module(struct load_info *info, const char __user *uargs, +@@ -3323,13 +3497,6 @@ static int load_module(struct load_info *info, const char __user *uargs, flush_module_icache(mod); @@ -99563,7 +106116,7 @@ index ec53f59..67d9655 100644 dynamic_debug_setup(info->debug, info->num_debug); /* Ftrace init must be called in the MODULE_STATE_UNFORMED state */ -@@ -3373,11 +3540,10 @@ static int load_module(struct load_info *info, const char __user *uargs, +@@ -3380,11 +3547,10 @@ static int load_module(struct load_info *info, const char __user *uargs, ddebug_cleanup: dynamic_debug_remove(info->debug); synchronize_sched(); @@ -99576,7 +106129,7 @@ index ec53f59..67d9655 100644 free_unload: module_unload_free(mod); unlink_mod: -@@ -3390,7 +3556,8 @@ static int load_module(struct load_info *info, const char __user *uargs, +@@ -3397,7 +3563,8 @@ static int load_module(struct load_info *info, const char __user *uargs, mutex_unlock(&module_mutex); free_module: /* Free lock-classes; relies on the preceding sync_rcu() */ @@ -99586,7 +106139,7 @@ index ec53f59..67d9655 100644 module_deallocate(mod, info); free_copy: -@@ -3467,10 +3634,16 @@ static const char *get_ksymbol(struct module *mod, +@@ -3474,10 +3641,16 @@ static const char *get_ksymbol(struct module *mod, unsigned long nextval; /* At worse, next value is at end of module */ @@ -99606,7 +106159,7 @@ index ec53f59..67d9655 100644 /* Scan for closest preceding symbol, and next symbol. (ELF starts real symbols at 1). */ -@@ -3718,7 +3891,7 @@ static int m_show(struct seq_file *m, void *p) +@@ -3725,7 +3898,7 @@ static int m_show(struct seq_file *m, void *p) return 0; seq_printf(m, "%s %u", @@ -99615,7 +106168,7 @@ index ec53f59..67d9655 100644 print_unload_info(m, mod); /* Informative for users. */ -@@ -3727,7 +3900,7 @@ static int m_show(struct seq_file *m, void *p) +@@ -3734,7 +3907,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. */ @@ -99624,7 +106177,7 @@ index ec53f59..67d9655 100644 /* Taints info */ if (mod->taints) -@@ -3763,7 +3936,17 @@ static const struct file_operations proc_modules_operations = { +@@ -3770,7 +3943,17 @@ static const struct file_operations proc_modules_operations = { static int __init proc_modules_init(void) { @@ -99642,7 +106195,7 @@ index ec53f59..67d9655 100644 return 0; } module_init(proc_modules_init); -@@ -3824,7 +4007,8 @@ struct module *__module_address(unsigned long addr) +@@ -3831,7 +4014,8 @@ struct module *__module_address(unsigned long addr) { struct module *mod; @@ -99652,7 +106205,7 @@ index ec53f59..67d9655 100644 return NULL; list_for_each_entry_rcu(mod, &modules, list) { -@@ -3865,11 +4049,20 @@ bool is_module_text_address(unsigned long addr) +@@ -3872,11 +4056,20 @@ bool is_module_text_address(unsigned long addr) */ struct module *__module_text_address(unsigned long addr) { @@ -99787,7 +106340,7 @@ index 8136ad7..15c857b 100644 } EXPORT_SYMBOL(__stack_chk_fail); diff --git a/kernel/pid.c b/kernel/pid.c -index cd36a5e..11f185d 100644 +index 4fd07d5..02bce4f 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -33,6 +33,7 @@ @@ -99807,7 +106360,7 @@ index cd36a5e..11f185d 100644 int pid_max_min = RESERVED_PIDS + 1; int pid_max_max = PID_MAX_LIMIT; -@@ -450,10 +451,18 @@ EXPORT_SYMBOL(pid_task); +@@ -451,10 +452,18 @@ EXPORT_SYMBOL(pid_task); */ struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns) { @@ -99827,7 +106380,7 @@ index cd36a5e..11f185d 100644 } struct task_struct *find_task_by_vpid(pid_t vnr) -@@ -461,6 +470,14 @@ struct task_struct *find_task_by_vpid(pid_t vnr) +@@ -462,6 +471,14 @@ struct task_struct *find_task_by_vpid(pid_t vnr) return find_task_by_pid_ns(vnr, task_active_pid_ns(current)); } @@ -99912,9 +106465,18 @@ index 564f786..361a18e 100644 if (pm_wakeup_pending()) { diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index bb0635b..9aff9f3 100644 +index c099b08..54bcfe8 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c +@@ -463,7 +463,7 @@ static int log_store(int facility, int level, + return msg->text_len; + } + +-int dmesg_restrict = IS_ENABLED(CONFIG_SECURITY_DMESG_RESTRICT); ++int dmesg_restrict __read_only = IS_ENABLED(CONFIG_SECURITY_DMESG_RESTRICT); + + static int syslog_action_restricted(int type) + { @@ -486,6 +486,11 @@ int check_syslog_permissions(int type, bool from_file) if (from_file && type != SYSLOG_ACTION_OPEN) return 0; @@ -99989,7 +106551,7 @@ index a7bcd28..5b368fa 100644 } diff --git a/kernel/ptrace.c b/kernel/ptrace.c -index 9a34bd8..38d90e5 100644 +index c8e0e05..2be5614 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -321,7 +321,7 @@ static int ptrace_attach(struct task_struct *task, long request, @@ -100001,7 +106563,7 @@ index 9a34bd8..38d90e5 100644 flags |= PT_PTRACE_CAP; rcu_read_unlock(); task->ptrace = flags; -@@ -515,7 +515,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst +@@ -514,7 +514,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst break; return -EIO; } @@ -100010,7 +106572,7 @@ index 9a34bd8..38d90e5 100644 return -EFAULT; copied += retval; src += retval; -@@ -803,7 +803,7 @@ int ptrace_request(struct task_struct *child, long request, +@@ -802,7 +802,7 @@ int ptrace_request(struct task_struct *child, long request, bool seized = child->ptrace & PT_SEIZED; int ret = -EIO; siginfo_t siginfo, *si; @@ -100019,7 +106581,7 @@ index 9a34bd8..38d90e5 100644 unsigned long __user *datalp = datavp; unsigned long flags; -@@ -1049,14 +1049,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr, +@@ -1048,14 +1048,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr, goto out; } @@ -100042,7 +106604,7 @@ index 9a34bd8..38d90e5 100644 goto out_put_task_struct; } -@@ -1084,7 +1091,7 @@ int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr, +@@ -1083,7 +1090,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; @@ -100051,7 +106613,7 @@ index 9a34bd8..38d90e5 100644 } int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr, -@@ -1177,7 +1184,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request, +@@ -1176,7 +1183,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request, } COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid, @@ -100060,7 +106622,7 @@ index 9a34bd8..38d90e5 100644 { struct task_struct *child; long ret; -@@ -1193,14 +1200,21 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid, +@@ -1192,14 +1199,21 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid, goto out; } @@ -100084,7 +106646,7 @@ index 9a34bd8..38d90e5 100644 } diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c -index 30d42aa..cac5d66 100644 +index 8dbe276..8e87dbd 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -134,12 +134,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], @@ -100156,7 +106718,7 @@ index 30d42aa..cac5d66 100644 WARN_ON(signal_pending(current)); for (i = 0; i < cbflood_n_burst; i++) { for (j = 0; j < cbflood_n_per_burst; j++) { -@@ -915,7 +915,7 @@ rcu_torture_writer(void *arg) +@@ -923,7 +923,7 @@ rcu_torture_writer(void *arg) i = old_rp->rtort_pipe_count; if (i > RCU_TORTURE_PIPE_LEN) i = RCU_TORTURE_PIPE_LEN; @@ -100165,7 +106727,7 @@ index 30d42aa..cac5d66 100644 old_rp->rtort_pipe_count++; switch (synctype[torture_random(&rand) % nsynctypes]) { case RTWS_DEF_FREE: -@@ -1036,7 +1036,7 @@ static void rcu_torture_timer(unsigned long unused) +@@ -1061,7 +1061,7 @@ static void rcu_torture_timer(unsigned long unused) return; } if (p->rtort_mbtest == 0) @@ -100174,7 +106736,7 @@ index 30d42aa..cac5d66 100644 spin_lock(&rand_lock); cur_ops->read_delay(&rand); n_rcu_torture_timers++; -@@ -1111,7 +1111,7 @@ rcu_torture_reader(void *arg) +@@ -1136,7 +1136,7 @@ rcu_torture_reader(void *arg) continue; } if (p->rtort_mbtest == 0) @@ -100183,7 +106745,7 @@ index 30d42aa..cac5d66 100644 cur_ops->read_delay(&rand); preempt_disable(); pipe_count = p->rtort_pipe_count; -@@ -1180,11 +1180,11 @@ rcu_torture_stats_print(void) +@@ -1205,11 +1205,11 @@ rcu_torture_stats_print(void) rcu_torture_current, rcu_torture_current_version, list_empty(&rcu_torture_freelist), @@ -100199,7 +106761,7 @@ index 30d42aa..cac5d66 100644 n_rcu_torture_boost_ktrerror, n_rcu_torture_boost_rterror); pr_cont("rtbf: %ld rtb: %ld nt: %ld ", -@@ -1196,17 +1196,17 @@ rcu_torture_stats_print(void) +@@ -1221,17 +1221,17 @@ rcu_torture_stats_print(void) n_barrier_successes, n_barrier_attempts, n_rcu_torture_barrier_error); @@ -100220,7 +106782,7 @@ index 30d42aa..cac5d66 100644 WARN_ON_ONCE(1); } pr_cont("Reader Pipe: "); -@@ -1223,7 +1223,7 @@ rcu_torture_stats_print(void) +@@ -1248,7 +1248,7 @@ rcu_torture_stats_print(void) pr_alert("%s%s ", torture_type, TORTURE_FLAG); pr_cont("Free-Block Circulation: "); for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) { @@ -100229,7 +106791,7 @@ index 30d42aa..cac5d66 100644 } pr_cont("\n"); -@@ -1570,7 +1570,7 @@ rcu_torture_cleanup(void) +@@ -1595,7 +1595,7 @@ rcu_torture_cleanup(void) rcu_torture_stats_print(); /* -After- the stats thread is stopped! */ @@ -100238,7 +106800,7 @@ index 30d42aa..cac5d66 100644 rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE"); else if (torture_onoff_failures()) rcu_torture_print_module_parms(cur_ops, -@@ -1695,18 +1695,18 @@ rcu_torture_init(void) +@@ -1720,18 +1720,18 @@ rcu_torture_init(void) rcu_torture_current = NULL; rcu_torture_current_version = 0; @@ -100264,7 +106826,7 @@ index 30d42aa..cac5d66 100644 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) { per_cpu(rcu_torture_count, cpu)[i] = 0; diff --git a/kernel/rcu/tiny.c b/kernel/rcu/tiny.c -index cc9ceca..ce075a6 100644 +index ec30868..89752ff 100644 --- a/kernel/rcu/tiny.c +++ b/kernel/rcu/tiny.c @@ -42,7 +42,7 @@ @@ -100276,7 +106838,7 @@ index cc9ceca..ce075a6 100644 static void __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), struct rcu_ctrlblk *rcp); -@@ -210,7 +210,7 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp) +@@ -203,7 +203,7 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp) false)); } @@ -100312,10 +106874,10 @@ index f94e209..d2985bd 100644 static void check_cpu_stalls(void) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c -index 48d640c..9401d30 100644 +index 8cf7304..953f8ad 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c -@@ -268,7 +268,7 @@ static void rcu_momentary_dyntick_idle(void) +@@ -290,7 +290,7 @@ static void rcu_momentary_dyntick_idle(void) */ rdtp = this_cpu_ptr(&rcu_dynticks); smp_mb__before_atomic(); /* Earlier stuff before QS. */ @@ -100324,7 +106886,7 @@ index 48d640c..9401d30 100644 smp_mb__after_atomic(); /* Later stuff after QS. */ break; } -@@ -580,9 +580,9 @@ static void rcu_eqs_enter_common(long long oldval, bool user) +@@ -602,9 +602,9 @@ static void rcu_eqs_enter_common(long long oldval, bool user) rcu_prepare_for_idle(); /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ smp_mb__before_atomic(); /* See above. */ @@ -100336,7 +106898,7 @@ index 48d640c..9401d30 100644 rcu_dynticks_task_enter(); /* -@@ -703,10 +703,10 @@ static void rcu_eqs_exit_common(long long oldval, int user) +@@ -725,10 +725,10 @@ static void rcu_eqs_exit_common(long long oldval, int user) rcu_dynticks_task_exit(); smp_mb__before_atomic(); /* Force ordering w/previous sojourn. */ @@ -100349,7 +106911,7 @@ index 48d640c..9401d30 100644 rcu_cleanup_after_idle(); trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting); if (!user && !is_idle_task(current)) { -@@ -840,12 +840,12 @@ void rcu_nmi_enter(void) +@@ -862,12 +862,12 @@ void rcu_nmi_enter(void) * to be in the outermost NMI handler that interrupted an RCU-idle * period (observation due to Andy Lutomirski). */ @@ -100365,7 +106927,7 @@ index 48d640c..9401d30 100644 incby = 1; } rdtp->dynticks_nmi_nesting += incby; -@@ -870,7 +870,7 @@ void rcu_nmi_exit(void) +@@ -892,7 +892,7 @@ void rcu_nmi_exit(void) * to us!) */ WARN_ON_ONCE(rdtp->dynticks_nmi_nesting <= 0); @@ -100374,7 +106936,7 @@ index 48d640c..9401d30 100644 /* * If the nesting level is not 1, the CPU wasn't RCU-idle, so -@@ -885,9 +885,9 @@ void rcu_nmi_exit(void) +@@ -907,9 +907,9 @@ void rcu_nmi_exit(void) rdtp->dynticks_nmi_nesting = 0; /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ smp_mb__before_atomic(); /* See above. */ @@ -100386,7 +106948,7 @@ index 48d640c..9401d30 100644 } /** -@@ -900,7 +900,7 @@ void rcu_nmi_exit(void) +@@ -922,7 +922,7 @@ void rcu_nmi_exit(void) */ bool notrace __rcu_is_watching(void) { @@ -100395,7 +106957,7 @@ index 48d640c..9401d30 100644 } /** -@@ -983,7 +983,7 @@ static int rcu_is_cpu_rrupt_from_idle(void) +@@ -1005,7 +1005,7 @@ static int rcu_is_cpu_rrupt_from_idle(void) static int dyntick_save_progress_counter(struct rcu_data *rdp, bool *isidle, unsigned long *maxj) { @@ -100404,7 +106966,7 @@ index 48d640c..9401d30 100644 rcu_sysidle_check_cpu(rdp, isidle, maxj); if ((rdp->dynticks_snap & 0x1) == 0) { trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti")); -@@ -991,7 +991,7 @@ static int dyntick_save_progress_counter(struct rcu_data *rdp, +@@ -1013,7 +1013,7 @@ static int dyntick_save_progress_counter(struct rcu_data *rdp, } else { if (ULONG_CMP_LT(ACCESS_ONCE(rdp->gpnum) + ULONG_MAX / 4, rdp->mynode->gpnum)) @@ -100413,7 +106975,7 @@ index 48d640c..9401d30 100644 return 0; } } -@@ -1009,7 +1009,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, +@@ -1031,7 +1031,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, int *rcrmp; unsigned int snap; @@ -100422,7 +106984,7 @@ index 48d640c..9401d30 100644 snap = (unsigned int)rdp->dynticks_snap; /* -@@ -1072,10 +1072,10 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, +@@ -1094,10 +1094,10 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, rdp->rsp->gp_start + jiffies_till_sched_qs) || ULONG_CMP_GE(jiffies, rdp->rsp->jiffies_resched)) { if (!(ACCESS_ONCE(*rcrmp) & rdp->rsp->flavor_mask)) { @@ -100435,7 +106997,7 @@ index 48d640c..9401d30 100644 ACCESS_ONCE(*rcrmp) + rdp->rsp->flavor_mask; resched_cpu(rdp->cpu); /* Force CPU into scheduler. */ rdp->rsp->jiffies_resched += 5; /* Enable beating. */ -@@ -1097,7 +1097,7 @@ static void record_gp_stall_check_time(struct rcu_state *rsp) +@@ -1119,7 +1119,7 @@ static void record_gp_stall_check_time(struct rcu_state *rsp) rsp->gp_start = j; smp_wmb(); /* Record start time before stall time. */ j1 = rcu_jiffies_till_stall_check(); @@ -100444,7 +107006,7 @@ index 48d640c..9401d30 100644 rsp->jiffies_resched = j + j1 / 2; rsp->n_force_qs_gpstart = ACCESS_ONCE(rsp->n_force_qs); } -@@ -1156,7 +1156,7 @@ static void print_other_cpu_stall(struct rcu_state *rsp, unsigned long gpnum) +@@ -1178,7 +1178,7 @@ static void print_other_cpu_stall(struct rcu_state *rsp, unsigned long gpnum) raw_spin_unlock_irqrestore(&rnp->lock, flags); return; } @@ -100453,7 +107015,7 @@ index 48d640c..9401d30 100644 raw_spin_unlock_irqrestore(&rnp->lock, flags); /* -@@ -1240,7 +1240,7 @@ static void print_cpu_stall(struct rcu_state *rsp) +@@ -1263,7 +1263,7 @@ static void print_cpu_stall(struct rcu_state *rsp) raw_spin_lock_irqsave(&rnp->lock, flags); if (ULONG_CMP_GE(jiffies, ACCESS_ONCE(rsp->jiffies_stall))) @@ -100462,7 +107024,7 @@ index 48d640c..9401d30 100644 3 * rcu_jiffies_till_stall_check() + 3; raw_spin_unlock_irqrestore(&rnp->lock, flags); -@@ -1324,7 +1324,7 @@ void rcu_cpu_stall_reset(void) +@@ -1347,7 +1347,7 @@ void rcu_cpu_stall_reset(void) struct rcu_state *rsp; for_each_rcu_flavor(rsp) @@ -100471,7 +107033,7 @@ index 48d640c..9401d30 100644 } /* -@@ -1671,7 +1671,7 @@ static bool __note_gp_changes(struct rcu_state *rsp, struct rcu_node *rnp, +@@ -1704,7 +1704,7 @@ static bool __note_gp_changes(struct rcu_state *rsp, struct rcu_node *rnp, rdp->rcu_qs_ctr_snap = __this_cpu_read(rcu_qs_ctr); rdp->qs_pending = !!(rnp->qsmask & rdp->grpmask); zero_cpu_stall_ticks(rdp); @@ -100480,16 +107042,16 @@ index 48d640c..9401d30 100644 } return ret; } -@@ -1706,7 +1706,7 @@ static int rcu_gp_init(struct rcu_state *rsp) +@@ -1740,7 +1740,7 @@ static int rcu_gp_init(struct rcu_state *rsp) struct rcu_data *rdp; struct rcu_node *rnp = rcu_get_root(rsp); - ACCESS_ONCE(rsp->gp_activity) = jiffies; + ACCESS_ONCE_RW(rsp->gp_activity) = jiffies; - rcu_bind_gp_kthread(); raw_spin_lock_irq(&rnp->lock); smp_mb__after_unlock_lock(); -@@ -1715,7 +1715,7 @@ static int rcu_gp_init(struct rcu_state *rsp) + if (!ACCESS_ONCE(rsp->gp_flags)) { +@@ -1748,7 +1748,7 @@ static int rcu_gp_init(struct rcu_state *rsp) raw_spin_unlock_irq(&rnp->lock); return 0; } @@ -100498,28 +107060,28 @@ index 48d640c..9401d30 100644 if (WARN_ON_ONCE(rcu_gp_in_progress(rsp))) { /* -@@ -1756,9 +1756,9 @@ static int rcu_gp_init(struct rcu_state *rsp) +@@ -1834,9 +1834,9 @@ static int rcu_gp_init(struct rcu_state *rsp) rdp = this_cpu_ptr(rsp->rda); rcu_preempt_check_blocked_tasks(rnp); rnp->qsmask = rnp->qsmaskinit; - ACCESS_ONCE(rnp->gpnum) = rsp->gpnum; + ACCESS_ONCE_RW(rnp->gpnum) = rsp->gpnum; - WARN_ON_ONCE(rnp->completed != rsp->completed); -- ACCESS_ONCE(rnp->completed) = rsp->completed; -+ ACCESS_ONCE_RW(rnp->completed) = rsp->completed; + if (WARN_ON_ONCE(rnp->completed != rsp->completed)) +- ACCESS_ONCE(rnp->completed) = rsp->completed; ++ ACCESS_ONCE_RW(rnp->completed) = rsp->completed; if (rnp == rdp->mynode) (void)__note_gp_changes(rsp, rnp, rdp); rcu_preempt_boost_start_gp(rnp); -@@ -1767,7 +1767,7 @@ static int rcu_gp_init(struct rcu_state *rsp) +@@ -1845,7 +1845,7 @@ static int rcu_gp_init(struct rcu_state *rsp) rnp->grphi, rnp->qsmask); raw_spin_unlock_irq(&rnp->lock); cond_resched_rcu_qs(); - ACCESS_ONCE(rsp->gp_activity) = jiffies; + ACCESS_ONCE_RW(rsp->gp_activity) = jiffies; - } - - mutex_unlock(&rsp->onoff_mutex); -@@ -1784,7 +1784,7 @@ static int rcu_gp_fqs(struct rcu_state *rsp, int fqs_state_in) + if (gp_init_delay > 0 && + !(rsp->gpnum % (rcu_num_nodes * PER_RCU_NODE_PERIOD))) + schedule_timeout_uninterruptible(gp_init_delay); +@@ -1864,7 +1864,7 @@ static int rcu_gp_fqs(struct rcu_state *rsp, int fqs_state_in) unsigned long maxj; struct rcu_node *rnp = rcu_get_root(rsp); @@ -100528,7 +107090,7 @@ index 48d640c..9401d30 100644 rsp->n_force_qs++; if (fqs_state == RCU_SAVE_DYNTICK) { /* Collect dyntick-idle snapshots. */ -@@ -1805,7 +1805,7 @@ static int rcu_gp_fqs(struct rcu_state *rsp, int fqs_state_in) +@@ -1885,7 +1885,7 @@ static int rcu_gp_fqs(struct rcu_state *rsp, int fqs_state_in) if (ACCESS_ONCE(rsp->gp_flags) & RCU_GP_FLAG_FQS) { raw_spin_lock_irq(&rnp->lock); smp_mb__after_unlock_lock(); @@ -100537,7 +107099,7 @@ index 48d640c..9401d30 100644 ACCESS_ONCE(rsp->gp_flags) & ~RCU_GP_FLAG_FQS; raw_spin_unlock_irq(&rnp->lock); } -@@ -1823,7 +1823,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) +@@ -1903,7 +1903,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) struct rcu_data *rdp; struct rcu_node *rnp = rcu_get_root(rsp); @@ -100546,16 +107108,16 @@ index 48d640c..9401d30 100644 raw_spin_lock_irq(&rnp->lock); smp_mb__after_unlock_lock(); gp_duration = jiffies - rsp->gp_start; -@@ -1852,7 +1852,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) - rcu_for_each_node_breadth_first(rsp, rnp) { - raw_spin_lock_irq(&rnp->lock); +@@ -1934,7 +1934,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) smp_mb__after_unlock_lock(); + WARN_ON_ONCE(rcu_preempt_blocked_readers_cgp(rnp)); + WARN_ON_ONCE(rnp->qsmask); - ACCESS_ONCE(rnp->completed) = rsp->gpnum; + ACCESS_ONCE_RW(rnp->completed) = rsp->gpnum; rdp = this_cpu_ptr(rsp->rda); if (rnp == rdp->mynode) needgp = __note_gp_changes(rsp, rnp, rdp) || needgp; -@@ -1860,7 +1860,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) +@@ -1942,7 +1942,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) nocb += rcu_future_gp_cleanup(rsp, rnp); raw_spin_unlock_irq(&rnp->lock); cond_resched_rcu_qs(); @@ -100564,7 +107126,7 @@ index 48d640c..9401d30 100644 } rnp = rcu_get_root(rsp); raw_spin_lock_irq(&rnp->lock); -@@ -1868,14 +1868,14 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) +@@ -1950,14 +1950,14 @@ static void rcu_gp_cleanup(struct rcu_state *rsp) rcu_nocb_gp_set(rnp, nocb); /* Declare grace period done. */ @@ -100581,7 +107143,7 @@ index 48d640c..9401d30 100644 trace_rcu_grace_period(rsp->name, ACCESS_ONCE(rsp->gpnum), TPS("newreq")); -@@ -1910,7 +1910,7 @@ static int __noreturn rcu_gp_kthread(void *arg) +@@ -1993,7 +1993,7 @@ static int __noreturn rcu_gp_kthread(void *arg) if (rcu_gp_init(rsp)) break; cond_resched_rcu_qs(); @@ -100590,7 +107152,7 @@ index 48d640c..9401d30 100644 WARN_ON(signal_pending(current)); trace_rcu_grace_period(rsp->name, ACCESS_ONCE(rsp->gpnum), -@@ -1954,11 +1954,11 @@ static int __noreturn rcu_gp_kthread(void *arg) +@@ -2037,11 +2037,11 @@ static int __noreturn rcu_gp_kthread(void *arg) ACCESS_ONCE(rsp->gpnum), TPS("fqsend")); cond_resched_rcu_qs(); @@ -100604,7 +107166,7 @@ index 48d640c..9401d30 100644 WARN_ON(signal_pending(current)); trace_rcu_grace_period(rsp->name, ACCESS_ONCE(rsp->gpnum), -@@ -2003,7 +2003,7 @@ rcu_start_gp_advanced(struct rcu_state *rsp, struct rcu_node *rnp, +@@ -2086,7 +2086,7 @@ rcu_start_gp_advanced(struct rcu_state *rsp, struct rcu_node *rnp, */ return false; } @@ -100613,7 +107175,7 @@ index 48d640c..9401d30 100644 trace_rcu_grace_period(rsp->name, ACCESS_ONCE(rsp->gpnum), TPS("newreq")); -@@ -2228,7 +2228,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp, +@@ -2359,7 +2359,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp, rsp->qlen += rdp->qlen; rdp->n_cbs_orphaned += rdp->qlen; rdp->qlen_lazy = 0; @@ -100622,7 +107184,7 @@ index 48d640c..9401d30 100644 } /* -@@ -2490,7 +2490,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) +@@ -2636,7 +2636,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) } smp_mb(); /* List handling before counting for rcu_barrier(). */ rdp->qlen_lazy -= count_lazy; @@ -100631,7 +107193,7 @@ index 48d640c..9401d30 100644 rdp->n_cbs_invoked += count; /* Reinstate batch limit if we have worked down the excess. */ -@@ -2647,7 +2647,7 @@ static void force_quiescent_state(struct rcu_state *rsp) +@@ -2814,7 +2814,7 @@ static void force_quiescent_state(struct rcu_state *rsp) raw_spin_unlock_irqrestore(&rnp_old->lock, flags); return; /* Someone beat us to it. */ } @@ -100640,7 +107202,7 @@ index 48d640c..9401d30 100644 ACCESS_ONCE(rsp->gp_flags) | RCU_GP_FLAG_FQS; raw_spin_unlock_irqrestore(&rnp_old->lock, flags); rcu_gp_kthread_wake(rsp); -@@ -2693,7 +2693,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) +@@ -2860,7 +2860,7 @@ __rcu_process_callbacks(struct rcu_state *rsp) /* * Do RCU core processing for the current CPU. */ @@ -100649,7 +107211,7 @@ index 48d640c..9401d30 100644 { struct rcu_state *rsp; -@@ -2805,7 +2805,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), +@@ -2972,7 +2972,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), WARN_ON_ONCE((unsigned long)head & 0x1); /* Misaligned rcu_head! */ if (debug_rcu_head_queue(head)) { /* Probable double call_rcu(), so leak the callback. */ @@ -100658,16 +107220,16 @@ index 48d640c..9401d30 100644 WARN_ONCE(1, "__call_rcu(): Leaked duplicate callback\n"); return; } -@@ -2833,7 +2833,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), - local_irq_restore(flags); - return; +@@ -3011,7 +3011,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), + if (!likely(rdp->nxtlist)) + init_default_callback_list(rdp); } - ACCESS_ONCE(rdp->qlen) = rdp->qlen + 1; + ACCESS_ONCE_RW(rdp->qlen) = rdp->qlen + 1; if (lazy) rdp->qlen_lazy++; else -@@ -3106,11 +3106,11 @@ void synchronize_sched_expedited(void) +@@ -3284,11 +3284,11 @@ void synchronize_sched_expedited(void) * counter wrap on a 32-bit system. Quite a few more CPUs would of * course be required on a 64-bit system. */ @@ -100681,7 +107243,7 @@ index 48d640c..9401d30 100644 return; } -@@ -3118,12 +3118,12 @@ void synchronize_sched_expedited(void) +@@ -3296,12 +3296,12 @@ void synchronize_sched_expedited(void) * Take a ticket. Note that atomic_inc_return() implies a * full memory barrier. */ @@ -100696,7 +107258,7 @@ index 48d640c..9401d30 100644 return; } WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id())); -@@ -3136,7 +3136,7 @@ void synchronize_sched_expedited(void) +@@ -3314,7 +3314,7 @@ void synchronize_sched_expedited(void) for_each_cpu(cpu, cm) { struct rcu_dynticks *rdtp = &per_cpu(rcu_dynticks, cpu); @@ -100705,7 +107267,7 @@ index 48d640c..9401d30 100644 cpumask_clear_cpu(cpu, cm); } if (cpumask_weight(cm) == 0) -@@ -3151,14 +3151,14 @@ void synchronize_sched_expedited(void) +@@ -3329,14 +3329,14 @@ void synchronize_sched_expedited(void) synchronize_sched_expedited_cpu_stop, NULL) == -EAGAIN) { put_online_cpus(); @@ -100722,7 +107284,7 @@ index 48d640c..9401d30 100644 free_cpumask_var(cm); return; } -@@ -3168,7 +3168,7 @@ void synchronize_sched_expedited(void) +@@ -3346,7 +3346,7 @@ void synchronize_sched_expedited(void) udelay(trycount * num_online_cpus()); } else { wait_rcu_gp(call_rcu_sched); @@ -100731,7 +107293,7 @@ index 48d640c..9401d30 100644 free_cpumask_var(cm); return; } -@@ -3178,7 +3178,7 @@ void synchronize_sched_expedited(void) +@@ -3356,7 +3356,7 @@ void synchronize_sched_expedited(void) if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { /* ensure test happens before caller kfree */ smp_mb__before_atomic(); /* ^^^ */ @@ -100740,7 +107302,7 @@ index 48d640c..9401d30 100644 free_cpumask_var(cm); return; } -@@ -3193,14 +3193,14 @@ void synchronize_sched_expedited(void) +@@ -3371,14 +3371,14 @@ void synchronize_sched_expedited(void) if (!try_get_online_cpus()) { /* CPU hotplug operation in flight, use normal GP. */ wait_rcu_gp(call_rcu_sched); @@ -100758,7 +107320,7 @@ index 48d640c..9401d30 100644 all_cpus_idle: free_cpumask_var(cm); -@@ -3212,16 +3212,16 @@ all_cpus_idle: +@@ -3390,16 +3390,16 @@ all_cpus_idle: * than we did already did their update. */ do { @@ -100778,7 +107340,7 @@ index 48d640c..9401d30 100644 put_online_cpus(); } -@@ -3431,7 +3431,7 @@ static void _rcu_barrier(struct rcu_state *rsp) +@@ -3609,7 +3609,7 @@ static void _rcu_barrier(struct rcu_state *rsp) * ACCESS_ONCE() to prevent the compiler from speculating * the increment to precede the early-exit check. */ @@ -100787,7 +107349,7 @@ index 48d640c..9401d30 100644 WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1); _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done); smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */ -@@ -3487,7 +3487,7 @@ static void _rcu_barrier(struct rcu_state *rsp) +@@ -3665,7 +3665,7 @@ static void _rcu_barrier(struct rcu_state *rsp) /* Increment ->n_barrier_done to prevent duplicate work. */ smp_mb(); /* Keep increment after above mechanism. */ @@ -100796,7 +107358,7 @@ index 48d640c..9401d30 100644 WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0); _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done); smp_mb(); /* Keep increment before caller's subsequent code. */ -@@ -3532,7 +3532,7 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) +@@ -3732,7 +3732,7 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo); rdp->dynticks = &per_cpu(rcu_dynticks, cpu); WARN_ON_ONCE(rdp->dynticks->dynticks_nesting != DYNTICK_TASK_EXIT_IDLE); @@ -100805,8 +107367,8 @@ index 48d640c..9401d30 100644 rdp->cpu = cpu; rdp->rsp = rsp; rcu_boot_init_nocb_percpu_data(rdp); -@@ -3565,8 +3565,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp) - init_callback_list(rdp); /* Re-enable callbacks on this CPU. */ +@@ -3763,8 +3763,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp) + init_callback_list(rdp); /* Re-enable callbacks on this CPU. */ rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE; rcu_sysidle_init_percpu_data(rdp->dynticks); - atomic_set(&rdp->dynticks->dynticks, @@ -100815,9 +107377,9 @@ index 48d640c..9401d30 100644 + (atomic_read_unchecked(&rdp->dynticks->dynticks) & ~0x1) + 1); raw_spin_unlock(&rnp->lock); /* irqs remain disabled. */ - /* Add CPU to rcu_node bitmasks. */ + /* diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h -index 119de39..f07d31a 100644 +index a69d3da..51993c4 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h @@ -86,11 +86,11 @@ struct rcu_dynticks { @@ -100834,7 +107396,7 @@ index 119de39..f07d31a 100644 /* "Idle" excludes userspace execution. */ unsigned long dynticks_idle_jiffies; /* End of last non-NMI non-idle period. */ -@@ -457,17 +457,17 @@ struct rcu_state { +@@ -463,17 +463,17 @@ struct rcu_state { /* _rcu_barrier(). */ /* End of fields guarded by barrier_mutex. */ @@ -100864,10 +107426,10 @@ index 119de39..f07d31a 100644 unsigned long jiffies_force_qs; /* Time at which to invoke */ /* force_quiescent_state(). */ diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h -index 0a571e9..fbfd611 100644 +index 8c0ec0f..99d52c5 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h -@@ -619,7 +619,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp) +@@ -570,7 +570,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp) static int sync_rcu_preempt_exp_done(struct rcu_node *rnp) { return !rcu_preempted_readers_exp(rnp) && @@ -100885,7 +107447,7 @@ index 0a571e9..fbfd611 100644 sync_rcu_preempt_exp_count + 1; unlock_mb_ret: mutex_unlock(&sync_rcu_preempt_exp_mutex); -@@ -1290,7 +1290,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu) +@@ -1286,7 +1286,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu) free_cpumask_var(cm); } @@ -100894,7 +107456,7 @@ index 0a571e9..fbfd611 100644 .store = &rcu_cpu_kthread_task, .thread_should_run = rcu_cpu_kthread_should_run, .thread_fn = rcu_cpu_kthread, -@@ -1761,7 +1761,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu) +@@ -1757,7 +1757,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu) print_cpu_stall_fast_no_hz(fast_no_hz, cpu); pr_err("\t%d: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u fqs=%ld %s\n", cpu, ticks_value, ticks_title, @@ -100903,7 +107465,7 @@ index 0a571e9..fbfd611 100644 rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting, rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu), ACCESS_ONCE(rsp->n_force_qs) - rsp->n_force_qs_gpstart, -@@ -1906,7 +1906,7 @@ static void wake_nocb_leader(struct rcu_data *rdp, bool force) +@@ -1902,7 +1902,7 @@ static void wake_nocb_leader(struct rcu_data *rdp, bool force) return; if (ACCESS_ONCE(rdp_leader->nocb_leader_sleep) || force) { /* Prior smp_mb__after_atomic() orders against prior enqueue. */ @@ -100912,7 +107474,7 @@ index 0a571e9..fbfd611 100644 wake_up(&rdp_leader->nocb_wq); } } -@@ -1978,7 +1978,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp, +@@ -1975,7 +1975,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp, atomic_long_add(rhcount, &rdp->nocb_q_count); /* rcu_barrier() relies on ->nocb_q_count add before xchg. */ old_rhpp = xchg(&rdp->nocb_tail, rhtp); @@ -100921,7 +107483,7 @@ index 0a571e9..fbfd611 100644 atomic_long_add(rhcount_lazy, &rdp->nocb_q_count_lazy); smp_mb__after_atomic(); /* Store *old_rhpp before _wake test. */ -@@ -2167,7 +2167,7 @@ wait_again: +@@ -2164,7 +2164,7 @@ wait_again: continue; /* No CBs here, try next follower. */ /* Move callbacks to wait-for-GP list, which is empty. */ @@ -100930,7 +107492,7 @@ index 0a571e9..fbfd611 100644 rdp->nocb_gp_tail = xchg(&rdp->nocb_tail, &rdp->nocb_head); gotcbs = true; } -@@ -2288,7 +2288,7 @@ static int rcu_nocb_kthread(void *arg) +@@ -2285,7 +2285,7 @@ static int rcu_nocb_kthread(void *arg) list = ACCESS_ONCE(rdp->nocb_follower_head); BUG_ON(!list); trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, "WokeNonEmpty"); @@ -100939,7 +107501,7 @@ index 0a571e9..fbfd611 100644 tail = xchg(&rdp->nocb_follower_tail, &rdp->nocb_follower_head); /* Each pass through the following loop invokes a callback. */ -@@ -2338,7 +2338,7 @@ static void do_nocb_deferred_wakeup(struct rcu_data *rdp) +@@ -2335,7 +2335,7 @@ static void do_nocb_deferred_wakeup(struct rcu_data *rdp) if (!rcu_nocb_need_deferred_wakeup(rdp)) return; ndw = ACCESS_ONCE(rdp->nocb_defer_wakeup); @@ -100948,7 +107510,7 @@ index 0a571e9..fbfd611 100644 wake_nocb_leader(rdp, ndw == RCU_NOGP_WAKE_FORCE); trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, TPS("DeferredWake")); } -@@ -2461,7 +2461,7 @@ static void rcu_spawn_one_nocb_kthread(struct rcu_state *rsp, int cpu) +@@ -2448,7 +2448,7 @@ static void rcu_spawn_one_nocb_kthread(struct rcu_state *rsp, int cpu) t = kthread_run(rcu_nocb_kthread, rdp_spawn, "rcuo%c/%d", rsp->abbr, cpu); BUG_ON(IS_ERR(t)); @@ -100957,7 +107519,7 @@ index 0a571e9..fbfd611 100644 } /* -@@ -2666,11 +2666,11 @@ static void rcu_sysidle_enter(int irq) +@@ -2663,11 +2663,11 @@ static void rcu_sysidle_enter(int irq) /* Record start of fully idle period. */ j = jiffies; @@ -100972,7 +107534,7 @@ index 0a571e9..fbfd611 100644 } /* -@@ -2741,9 +2741,9 @@ static void rcu_sysidle_exit(int irq) +@@ -2738,9 +2738,9 @@ static void rcu_sysidle_exit(int irq) /* Record end of idle period. */ smp_mb__before_atomic(); @@ -100984,8 +107546,8 @@ index 0a571e9..fbfd611 100644 /* * If we are the timekeeping CPU, we are permitted to be non-idle -@@ -2788,7 +2788,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle, - WARN_ON_ONCE(smp_processor_id() != tick_do_timer_cpu); +@@ -2786,7 +2786,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle, + WARN_ON_ONCE(smp_processor_id() != tick_do_timer_cpu); /* Pick up current idle and NMI-nesting counter and check. */ - cur = atomic_read(&rdtp->dynticks_idle); @@ -100993,7 +107555,7 @@ index 0a571e9..fbfd611 100644 if (cur & 0x1) { *isidle = false; /* We are not idle! */ return; -@@ -2837,7 +2837,7 @@ static void rcu_sysidle(unsigned long j) +@@ -2835,7 +2835,7 @@ static void rcu_sysidle(unsigned long j) case RCU_SYSIDLE_NOT: /* First time all are idle, so note a short idle period. */ @@ -101002,7 +107564,7 @@ index 0a571e9..fbfd611 100644 break; case RCU_SYSIDLE_SHORT: -@@ -2875,7 +2875,7 @@ static void rcu_sysidle_cancel(void) +@@ -2873,7 +2873,7 @@ static void rcu_sysidle_cancel(void) { smp_mb(); if (full_sysidle_state > RCU_SYSIDLE_SHORT) @@ -101011,7 +107573,7 @@ index 0a571e9..fbfd611 100644 } /* -@@ -2927,7 +2927,7 @@ static void rcu_sysidle_cb(struct rcu_head *rhp) +@@ -2925,7 +2925,7 @@ static void rcu_sysidle_cb(struct rcu_head *rhp) smp_mb(); /* grace period precedes setting inuse. */ rshp = container_of(rhp, struct rcu_sysidle_head, rh); @@ -101020,7 +107582,7 @@ index 0a571e9..fbfd611 100644 } /* -@@ -3080,7 +3080,7 @@ static void rcu_bind_gp_kthread(void) +@@ -3077,7 +3077,7 @@ static void rcu_bind_gp_kthread(void) static void rcu_dynticks_task_enter(void) { #if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL) @@ -101029,7 +107591,7 @@ index 0a571e9..fbfd611 100644 #endif /* #if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL) */ } -@@ -3088,6 +3088,6 @@ static void rcu_dynticks_task_enter(void) +@@ -3085,6 +3085,6 @@ static void rcu_dynticks_task_enter(void) static void rcu_dynticks_task_exit(void) { #if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL) @@ -101038,7 +107600,7 @@ index 0a571e9..fbfd611 100644 #endif /* #if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL) */ } diff --git a/kernel/rcu/tree_trace.c b/kernel/rcu/tree_trace.c -index fbb6240..f6c5097 100644 +index f92361e..0052f88 100644 --- a/kernel/rcu/tree_trace.c +++ b/kernel/rcu/tree_trace.c @@ -125,7 +125,7 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp) @@ -101079,10 +107641,10 @@ index fbb6240..f6c5097 100644 } diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c -index e0d31a3..f4dafe3 100644 +index 1f13335..77ebb7f 100644 --- a/kernel/rcu/update.c +++ b/kernel/rcu/update.c -@@ -342,10 +342,10 @@ int rcu_jiffies_till_stall_check(void) +@@ -396,10 +396,10 @@ int rcu_jiffies_till_stall_check(void) * for CONFIG_RCU_CPU_STALL_TIMEOUT. */ if (till_stall_check < 3) { @@ -101095,7 +107657,7 @@ index e0d31a3..f4dafe3 100644 till_stall_check = 300; } return till_stall_check * HZ + RCU_STALL_DELAY_DELTA; -@@ -501,7 +501,7 @@ static void check_holdout_task(struct task_struct *t, +@@ -555,7 +555,7 @@ static void check_holdout_task(struct task_struct *t, !ACCESS_ONCE(t->on_rq) || (IS_ENABLED(CONFIG_NO_HZ_FULL) && !is_idle_task(t) && t->rcu_tasks_idle_cpu >= 0)) { @@ -101104,7 +107666,7 @@ index e0d31a3..f4dafe3 100644 list_del_init(&t->rcu_tasks_holdout_list); put_task_struct(t); return; -@@ -589,7 +589,7 @@ static int __noreturn rcu_tasks_kthread(void *arg) +@@ -643,7 +643,7 @@ static int __noreturn rcu_tasks_kthread(void *arg) !is_idle_task(t)) { get_task_struct(t); t->rcu_tasks_nvcsw = ACCESS_ONCE(t->nvcsw); @@ -101113,7 +107675,7 @@ index e0d31a3..f4dafe3 100644 list_add(&t->rcu_tasks_holdout_list, &rcu_tasks_holdouts); } -@@ -686,7 +686,7 @@ static void rcu_spawn_tasks_kthread(void) +@@ -740,7 +740,7 @@ static void rcu_spawn_tasks_kthread(void) t = kthread_run(rcu_tasks_kthread, NULL, "rcu_tasks_kthread"); BUG_ON(IS_ERR(t)); smp_mb(); /* Ensure others see full kthread. */ @@ -101123,7 +107685,7 @@ index e0d31a3..f4dafe3 100644 } diff --git a/kernel/resource.c b/kernel/resource.c -index 19f2357..ebe7f35 100644 +index 90552aa..8c02098 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -162,8 +162,18 @@ static const struct file_operations proc_iomem_operations = { @@ -101199,10 +107761,10 @@ index 8d0f35d..c16360d 100644 unsigned long timeout) { diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 3d5f6f6..a94298f 100644 +index 1236732..df281d6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1862,7 +1862,7 @@ void set_numabalancing_state(bool enabled) +@@ -1867,7 +1867,7 @@ void set_numabalancing_state(bool enabled) int sysctl_numa_balancing(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -101211,7 +107773,7 @@ index 3d5f6f6..a94298f 100644 int err; int state = numabalancing_enabled; -@@ -2312,8 +2312,10 @@ context_switch(struct rq *rq, struct task_struct *prev, +@@ -2317,8 +2317,10 @@ context_switch(struct rq *rq, struct task_struct *prev, next->active_mm = oldmm; atomic_inc(&oldmm->mm_count); enter_lazy_tlb(oldmm, next); @@ -101223,7 +107785,7 @@ index 3d5f6f6..a94298f 100644 if (!prev->mm) { prev->active_mm = NULL; -@@ -3124,6 +3126,8 @@ int can_nice(const struct task_struct *p, const int nice) +@@ -3129,6 +3131,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 = nice_to_rlimit(nice); @@ -101232,7 +107794,7 @@ index 3d5f6f6..a94298f 100644 return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) || capable(CAP_SYS_NICE)); } -@@ -3150,7 +3154,8 @@ SYSCALL_DEFINE1(nice, int, increment) +@@ -3155,7 +3159,8 @@ SYSCALL_DEFINE1(nice, int, increment) nice = task_nice(current) + increment; nice = clamp_val(nice, MIN_NICE, MAX_NICE); @@ -101242,7 +107804,7 @@ index 3d5f6f6..a94298f 100644 return -EPERM; retval = security_task_setnice(current, nice); -@@ -3459,6 +3464,7 @@ recheck: +@@ -3467,6 +3472,7 @@ recheck: if (policy != p->policy && !rlim_rtprio) return -EPERM; @@ -101250,7 +107812,7 @@ index 3d5f6f6..a94298f 100644 /* can't increase priority */ if (attr->sched_priority > p->rt_priority && attr->sched_priority > rlim_rtprio) -@@ -4946,6 +4952,7 @@ void idle_task_exit(void) +@@ -4950,6 +4956,7 @@ void idle_task_exit(void) if (mm != &init_mm) { switch_mm(mm, &init_mm, current); @@ -101258,7 +107820,7 @@ index 3d5f6f6..a94298f 100644 finish_arch_post_lock_switch(); } mmdrop(mm); -@@ -5041,7 +5048,7 @@ static void migrate_tasks(unsigned int dead_cpu) +@@ -5045,7 +5052,7 @@ static void migrate_tasks(unsigned int dead_cpu) #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL) @@ -101267,7 +107829,7 @@ index 3d5f6f6..a94298f 100644 { .procname = "sched_domain", .mode = 0555, -@@ -5058,17 +5065,17 @@ static struct ctl_table sd_ctl_root[] = { +@@ -5062,17 +5069,17 @@ static struct ctl_table sd_ctl_root[] = { {} }; @@ -101289,7 +107851,7 @@ index 3d5f6f6..a94298f 100644 /* * In the intermediate directories, both the child directory and -@@ -5076,22 +5083,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep) +@@ -5080,22 +5087,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep) * will always be set. In the lowest directory the names are * static strings and all have proc handlers. */ @@ -101321,7 +107883,7 @@ index 3d5f6f6..a94298f 100644 const char *procname, void *data, int maxlen, umode_t mode, proc_handler *proc_handler, bool load_idx) -@@ -5111,7 +5121,7 @@ set_table_entry(struct ctl_table *entry, +@@ -5115,7 +5125,7 @@ set_table_entry(struct ctl_table *entry, static struct ctl_table * sd_alloc_ctl_domain_table(struct sched_domain *sd) { @@ -101330,7 +107892,7 @@ index 3d5f6f6..a94298f 100644 if (table == NULL) return NULL; -@@ -5149,9 +5159,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) +@@ -5153,9 +5163,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) return table; } @@ -101342,7 +107904,7 @@ index 3d5f6f6..a94298f 100644 struct sched_domain *sd; int domain_num = 0, i; char buf[32]; -@@ -5178,11 +5188,13 @@ static struct ctl_table_header *sd_sysctl_header; +@@ -5182,11 +5192,13 @@ static struct ctl_table_header *sd_sysctl_header; static void register_sched_domain_sysctl(void) { int i, cpu_num = num_possible_cpus(); @@ -101357,7 +107919,7 @@ index 3d5f6f6..a94298f 100644 if (entry == NULL) return; -@@ -5205,8 +5217,12 @@ static void unregister_sched_domain_sysctl(void) +@@ -5209,8 +5221,12 @@ static void unregister_sched_domain_sysctl(void) if (sd_sysctl_header) unregister_sysctl_table(sd_sysctl_header); sd_sysctl_header = NULL; @@ -101373,10 +107935,10 @@ index 3d5f6f6..a94298f 100644 #else static void register_sched_domain_sysctl(void) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 241213b..6a64c91 100644 +index c2980e8..4737a6d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -2092,7 +2092,7 @@ void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags) +@@ -2107,7 +2107,7 @@ void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags) static void reset_ptenuma_scan(struct task_struct *p) { @@ -101385,7 +107947,7 @@ index 241213b..6a64c91 100644 p->mm->numa_scan_offset = 0; } -@@ -7656,7 +7656,7 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { } +@@ -7753,7 +7753,7 @@ static void nohz_idle_balance(struct rq *this_rq, 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). */ @@ -101395,10 +107957,10 @@ index 241213b..6a64c91 100644 struct rq *this_rq = this_rq(); enum cpu_idle_type idle = this_rq->idle_balance ? diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index dc0f435..ae2e085 100644 +index e0e1299..e1e896b 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h -@@ -1200,7 +1200,7 @@ struct sched_class { +@@ -1219,7 +1219,7 @@ struct sched_class { #ifdef CONFIG_FAIR_GROUP_SCHED void (*task_move_group) (struct task_struct *p, int on_rq); #endif @@ -101408,7 +107970,7 @@ index dc0f435..ae2e085 100644 static inline void put_prev_task(struct rq *rq, struct task_struct *prev) { diff --git a/kernel/signal.c b/kernel/signal.c -index a390499..ebe9a21 100644 +index d51c5dd..065c4c8 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -53,12 +53,12 @@ static struct kmem_cache *sigqueue_cachep; @@ -101534,7 +108096,7 @@ index a390499..ebe9a21 100644 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) { error = check_kill_permission(sig, info, p); /* -@@ -3248,8 +3279,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack, +@@ -3244,8 +3275,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack, } seg = get_fs(); set_fs(KERNEL_DS); @@ -101546,10 +108108,10 @@ index a390499..ebe9a21 100644 set_fs(seg); if (ret >= 0 && uoss_ptr) { diff --git a/kernel/smpboot.c b/kernel/smpboot.c -index 40190f2..8861d40 100644 +index c697f73..4ef1c25 100644 --- a/kernel/smpboot.c +++ b/kernel/smpboot.c -@@ -290,7 +290,7 @@ int smpboot_register_percpu_thread(struct smp_hotplug_thread *plug_thread) +@@ -291,7 +291,7 @@ int smpboot_register_percpu_thread(struct smp_hotplug_thread *plug_thread) } smpboot_unpark_thread(plug_thread, cpu); } @@ -101558,7 +108120,7 @@ index 40190f2..8861d40 100644 out: mutex_unlock(&smpboot_threads_lock); put_online_cpus(); -@@ -308,7 +308,7 @@ void smpboot_unregister_percpu_thread(struct smp_hotplug_thread *plug_thread) +@@ -309,7 +309,7 @@ void smpboot_unregister_percpu_thread(struct smp_hotplug_thread *plug_thread) { get_online_cpus(); mutex_lock(&smpboot_threads_lock); @@ -101626,7 +108188,7 @@ index 479e443..66d845e1 100644 .thread_should_run = ksoftirqd_should_run, .thread_fn = run_ksoftirqd, diff --git a/kernel/sys.c b/kernel/sys.c -index a03d9cd..55dbe9c 100644 +index a4e372b..766810e 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -160,6 +160,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error) @@ -101642,7 +108204,7 @@ index a03d9cd..55dbe9c 100644 no_nice = security_task_setnice(p, niceval); if (no_nice) { error = no_nice; -@@ -365,6 +371,20 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid) +@@ -366,6 +372,20 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid) goto error; } @@ -101663,7 +108225,7 @@ index a03d9cd..55dbe9c 100644 if (rgid != (gid_t) -1 || (egid != (gid_t) -1 && !gid_eq(kegid, old->gid))) new->sgid = new->egid; -@@ -400,6 +420,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid) +@@ -401,6 +421,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid) old = current_cred(); retval = -EPERM; @@ -101674,7 +108236,7 @@ index a03d9cd..55dbe9c 100644 if (ns_capable(old->user_ns, CAP_SETGID)) new->gid = new->egid = new->sgid = new->fsgid = kgid; else if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->sgid)) -@@ -417,7 +441,7 @@ error: +@@ -418,7 +442,7 @@ error: /* * change the user struct in a credentials set to match the new UID */ @@ -101683,7 +108245,7 @@ index a03d9cd..55dbe9c 100644 { struct user_struct *new_user; -@@ -497,7 +521,18 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid) +@@ -498,7 +522,18 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid) goto error; } @@ -101702,7 +108264,7 @@ index a03d9cd..55dbe9c 100644 retval = set_user(new); if (retval < 0) goto error; -@@ -547,6 +582,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid) +@@ -548,6 +583,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid) old = current_cred(); retval = -EPERM; @@ -101715,7 +108277,7 @@ index a03d9cd..55dbe9c 100644 if (ns_capable(old->user_ns, CAP_SETUID)) { new->suid = new->uid = kuid; if (!uid_eq(kuid, old->uid)) { -@@ -616,6 +657,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid) +@@ -617,6 +658,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid) goto error; } @@ -101725,7 +108287,7 @@ index a03d9cd..55dbe9c 100644 if (ruid != (uid_t) -1) { new->uid = kruid; if (!uid_eq(kruid, old->uid)) { -@@ -700,6 +744,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid) +@@ -701,6 +745,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid) goto error; } @@ -101735,7 +108297,7 @@ index a03d9cd..55dbe9c 100644 if (rgid != (gid_t) -1) new->gid = krgid; if (egid != (gid_t) -1) -@@ -764,12 +811,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid) +@@ -765,12 +812,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid) uid_eq(kuid, old->suid) || uid_eq(kuid, old->fsuid) || ns_capable(old->user_ns, CAP_SETUID)) { if (!uid_eq(kuid, old->fsuid)) { @@ -101752,7 +108314,7 @@ index a03d9cd..55dbe9c 100644 abort_creds(new); return old_fsuid; -@@ -802,12 +853,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid) +@@ -803,12 +854,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid) if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->egid) || gid_eq(kgid, old->sgid) || gid_eq(kgid, old->fsgid) || ns_capable(old->user_ns, CAP_SETGID)) { @@ -101769,7 +108331,7 @@ index a03d9cd..55dbe9c 100644 abort_creds(new); return old_fsgid; -@@ -1185,19 +1240,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name) +@@ -1187,19 +1242,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name) return -EFAULT; down_read(&uts_sem); @@ -101794,7 +108356,7 @@ index a03d9cd..55dbe9c 100644 __OLD_UTS_LEN); error |= __put_user(0, name->machine + __OLD_UTS_LEN); up_read(&uts_sem); -@@ -1398,6 +1453,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource, +@@ -1400,6 +1455,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource, */ new_rlim->rlim_cur = 1; } @@ -101809,18 +108371,22 @@ index a03d9cd..55dbe9c 100644 if (!retval) { if (old_rlim) diff --git a/kernel/sysctl.c b/kernel/sysctl.c -index ce410bb..cd276f0 100644 +index c3eee4c..586e4a0 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -94,7 +94,6 @@ - + #endif #if defined(CONFIG_SYSCTL) - /* External variables not in a header file. */ - extern int max_threads; extern int suid_dumpable; -@@ -115,19 +114,20 @@ extern int sysctl_nr_trim_pages; + #ifdef CONFIG_COREDUMP +@@ -111,22 +110,24 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max; + #ifndef CONFIG_MMU + extern int sysctl_nr_trim_pages; + #endif ++extern int sysctl_modify_ldt; /* Constants used for minimum and maximum */ #ifdef CONFIG_LOCKUP_DETECTOR @@ -101850,18 +108416,19 @@ index ce410bb..cd276f0 100644 #endif /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */ -@@ -181,10 +181,8 @@ static int proc_taint(struct ctl_table *table, int write, +@@ -180,10 +181,8 @@ static int proc_taint(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos); #endif -#ifdef CONFIG_PRINTK - static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, +-static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, ++static int proc_dointvec_minmax_secure_sysadmin(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos); -#endif static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos); -@@ -215,6 +213,8 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write, +@@ -214,6 +213,8 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write, #endif @@ -101870,7 +108437,7 @@ index ce410bb..cd276f0 100644 static struct ctl_table kern_table[]; static struct ctl_table vm_table[]; static struct ctl_table fs_table[]; -@@ -229,6 +229,20 @@ extern struct ctl_table epoll_table[]; +@@ -228,6 +229,20 @@ extern struct ctl_table epoll_table[]; int sysctl_legacy_va_layout; #endif @@ -101891,7 +108458,7 @@ index ce410bb..cd276f0 100644 /* The default sysctl tables: */ static struct ctl_table sysctl_base_table[] = { -@@ -277,6 +291,22 @@ static int max_extfrag_threshold = 1000; +@@ -276,6 +291,22 @@ static int max_extfrag_threshold = 1000; #endif static struct ctl_table kern_table[] = { @@ -101914,7 +108481,16 @@ index ce410bb..cd276f0 100644 { .procname = "sched_child_runs_first", .data = &sysctl_sched_child_runs_first, -@@ -649,7 +679,7 @@ static struct ctl_table kern_table[] = { +@@ -637,7 +668,7 @@ static struct ctl_table kern_table[] = { + .maxlen = sizeof(int), + .mode = 0644, + /* only handle a transition from default "0" to "1" */ +- .proc_handler = proc_dointvec_minmax, ++ .proc_handler = proc_dointvec_minmax_secure, + .extra1 = &one, + .extra2 = &one, + }, +@@ -648,7 +679,7 @@ static struct ctl_table kern_table[] = { .data = &modprobe_path, .maxlen = KMOD_PATH_LEN, .mode = 0644, @@ -101923,7 +108499,21 @@ index ce410bb..cd276f0 100644 }, { .procname = "modules_disabled", -@@ -816,16 +846,20 @@ static struct ctl_table kern_table[] = { +@@ -656,7 +687,7 @@ static struct ctl_table kern_table[] = { + .maxlen = sizeof(int), + .mode = 0644, + /* only handle a transition from default "0" to "1" */ +- .proc_handler = proc_dointvec_minmax, ++ .proc_handler = proc_dointvec_minmax_secure, + .extra1 = &one, + .extra2 = &one, + }, +@@ -811,20 +842,24 @@ static struct ctl_table kern_table[] = { + .data = &dmesg_restrict, + .maxlen = sizeof(int), + .mode = 0644, +- .proc_handler = proc_dointvec_minmax_sysadmin, ++ .proc_handler = proc_dointvec_minmax_secure_sysadmin, .extra1 = &zero, .extra2 = &one, }, @@ -101933,7 +108523,8 @@ index ce410bb..cd276f0 100644 .data = &kptr_restrict, .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_dointvec_minmax_sysadmin, +- .proc_handler = proc_dointvec_minmax_sysadmin, ++ .proc_handler = proc_dointvec_minmax_secure_sysadmin, +#ifdef CONFIG_GRKERNSEC_HIDESYM + .extra1 = &two, +#else @@ -101945,7 +108536,23 @@ index ce410bb..cd276f0 100644 { .procname = "ngroups_max", .data = &ngroups_max, -@@ -1072,10 +1106,17 @@ static struct ctl_table kern_table[] = { +@@ -962,6 +997,15 @@ static struct ctl_table kern_table[] = { + .mode = 0644, + .proc_handler = proc_dointvec, + }, ++ { ++ .procname = "modify_ldt", ++ .data = &sysctl_modify_ldt, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = proc_dointvec_minmax_secure_sysadmin, ++ .extra1 = &zero, ++ .extra2 = &one, ++ }, + #endif + #if defined(CONFIG_MMU) + { +@@ -1084,10 +1128,17 @@ static struct ctl_table kern_table[] = { */ { .procname = "perf_event_paranoid", @@ -101956,7 +108563,7 @@ index ce410bb..cd276f0 100644 .mode = 0644, - .proc_handler = proc_dointvec, + /* go ahead, be a hero */ -+ .proc_handler = proc_dointvec_minmax_sysadmin, ++ .proc_handler = proc_dointvec_minmax_secure_sysadmin, + .extra1 = &neg_one, +#ifdef CONFIG_GRKERNSEC_PERF_HARDEN + .extra2 = &three, @@ -101966,7 +108573,7 @@ index ce410bb..cd276f0 100644 }, { .procname = "perf_event_mlock_kb", -@@ -1348,6 +1389,13 @@ static struct ctl_table vm_table[] = { +@@ -1369,6 +1420,13 @@ static struct ctl_table vm_table[] = { .proc_handler = proc_dointvec_minmax, .extra1 = &zero, }, @@ -101980,7 +108587,7 @@ index ce410bb..cd276f0 100644 #else { .procname = "nr_trim_pages", -@@ -1830,6 +1878,16 @@ int proc_dostring(struct ctl_table *table, int write, +@@ -1845,6 +1903,16 @@ int proc_dostring(struct ctl_table *table, int write, (char __user *)buffer, lenp, ppos); } @@ -101997,7 +108604,7 @@ index ce410bb..cd276f0 100644 static size_t proc_skip_spaces(char **buf) { size_t ret; -@@ -1935,6 +1993,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val, +@@ -1950,6 +2018,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val, len = strlen(tmp); if (len > *size) len = *size; @@ -102006,7 +108613,52 @@ index ce410bb..cd276f0 100644 if (copy_to_user(*buf, tmp, len)) return -EFAULT; *size -= len; -@@ -2112,7 +2172,7 @@ int proc_dointvec(struct ctl_table *table, int write, +@@ -2128,6 +2198,44 @@ int proc_dointvec(struct ctl_table *table, int write, + NULL,NULL); + } + ++static int do_proc_dointvec_conv_secure(bool *negp, unsigned long *lvalp, ++ int *valp, ++ int write, void *data) ++{ ++ if (write) { ++ if (*negp) { ++ if (*lvalp > (unsigned long) INT_MAX + 1) ++ return -EINVAL; ++ pax_open_kernel(); ++ *valp = -*lvalp; ++ pax_close_kernel(); ++ } else { ++ if (*lvalp > (unsigned long) INT_MAX) ++ return -EINVAL; ++ pax_open_kernel(); ++ *valp = *lvalp; ++ pax_close_kernel(); ++ } ++ } else { ++ int val = *valp; ++ if (val < 0) { ++ *negp = true; ++ *lvalp = (unsigned long)-val; ++ } else { ++ *negp = false; ++ *lvalp = (unsigned long)val; ++ } ++ } ++ return 0; ++} ++ ++int proc_dointvec_secure(struct ctl_table *table, int write, ++ void __user *buffer, size_t *lenp, loff_t *ppos) ++{ ++ return do_proc_dointvec(table,write,buffer,lenp,ppos, ++ do_proc_dointvec_conv_secure,NULL); ++} ++ + /* + * Taint values can only be increased + * This means we can safely use a temporary. +@@ -2135,7 +2243,7 @@ int proc_dointvec(struct ctl_table *table, int write, static int proc_taint(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -102015,23 +108667,77 @@ index ce410bb..cd276f0 100644 unsigned long tmptaint = get_taint(); int err; -@@ -2140,7 +2200,6 @@ static int proc_taint(struct ctl_table *table, int write, +@@ -2163,16 +2271,14 @@ static int proc_taint(struct ctl_table *table, int write, return err; } -#ifdef CONFIG_PRINTK - static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, +-static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, ++static int proc_dointvec_minmax_secure_sysadmin(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { -@@ -2149,7 +2208,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, + if (write && !capable(CAP_SYS_ADMIN)) + return -EPERM; - return proc_dointvec_minmax(table, write, buffer, lenp, ppos); +- return proc_dointvec_minmax(table, write, buffer, lenp, ppos); ++ return proc_dointvec_minmax_secure(table, write, buffer, lenp, ppos); } -#endif struct do_proc_dointvec_minmax_conv_param { int *min; -@@ -2709,6 +2767,12 @@ int proc_dostring(struct ctl_table *table, int write, +@@ -2203,6 +2309,32 @@ static int do_proc_dointvec_minmax_conv(bool *negp, unsigned long *lvalp, + return 0; + } + ++static int do_proc_dointvec_minmax_conv_secure(bool *negp, unsigned long *lvalp, ++ int *valp, ++ int write, void *data) ++{ ++ struct do_proc_dointvec_minmax_conv_param *param = data; ++ if (write) { ++ int val = *negp ? -*lvalp : *lvalp; ++ if ((param->min && *param->min > val) || ++ (param->max && *param->max < val)) ++ return -EINVAL; ++ pax_open_kernel(); ++ *valp = val; ++ pax_close_kernel(); ++ } else { ++ int val = *valp; ++ if (val < 0) { ++ *negp = true; ++ *lvalp = (unsigned long)-val; ++ } else { ++ *negp = false; ++ *lvalp = (unsigned long)val; ++ } ++ } ++ return 0; ++} ++ + /** + * proc_dointvec_minmax - read a vector of integers with min/max values + * @table: the sysctl table +@@ -2230,6 +2362,17 @@ int proc_dointvec_minmax(struct ctl_table *table, int write, + do_proc_dointvec_minmax_conv, ¶m); + } + ++int proc_dointvec_minmax_secure(struct ctl_table *table, int write, ++ void __user *buffer, size_t *lenp, loff_t *ppos) ++{ ++ struct do_proc_dointvec_minmax_conv_param param = { ++ .min = (int *) table->extra1, ++ .max = (int *) table->extra2, ++ }; ++ return do_proc_dointvec(table, write, buffer, lenp, ppos, ++ do_proc_dointvec_minmax_conv_secure, ¶m); ++} ++ + static void validate_coredump_safety(void) + { + #ifdef CONFIG_COREDUMP +@@ -2732,6 +2875,12 @@ int proc_dostring(struct ctl_table *table, int write, return -ENOSYS; } @@ -102044,7 +108750,7 @@ index ce410bb..cd276f0 100644 int proc_dointvec(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { -@@ -2765,5 +2829,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax); +@@ -2788,5 +2937,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax); EXPORT_SYMBOL(proc_dointvec_userhz_jiffies); EXPORT_SYMBOL(proc_dointvec_ms_jiffies); EXPORT_SYMBOL(proc_dostring); @@ -102092,10 +108798,10 @@ index 1b001ed..55ef9e4 100644 .clock_get = alarm_clock_get, .timer_create = alarm_timer_create, diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index bee0c1f..a23fe2d 100644 +index 93ef7190..7c85701 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c -@@ -1391,7 +1391,7 @@ void hrtimer_peek_ahead_timers(void) +@@ -1393,7 +1393,7 @@ void hrtimer_peek_ahead_timers(void) local_irq_restore(flags); } @@ -102258,7 +108964,7 @@ index 2c85b77..6530536 100644 update_vsyscall_tz(); if (firsttime) { diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c -index 91db941..a371671 100644 +index 946acb7..1e13c0f 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -15,6 +15,7 @@ @@ -102269,7 +108975,7 @@ index 91db941..a371671 100644 #include #include #include -@@ -802,6 +803,8 @@ int do_settimeofday64(const struct timespec64 *ts) +@@ -915,6 +916,8 @@ int do_settimeofday64(const struct timespec64 *ts) if (!timespec64_valid_strict(ts)) return -EINVAL; @@ -102279,10 +108985,10 @@ index 91db941..a371671 100644 write_seqcount_begin(&tk_core.seq); diff --git a/kernel/time/timer.c b/kernel/time/timer.c -index 2d3f5c5..7ed7dc5 100644 +index 2ece3aa..055a295 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c -@@ -1393,7 +1393,7 @@ void update_process_times(int user_tick) +@@ -1405,7 +1405,7 @@ void update_process_times(int user_tick) /* * This function runs timers and the timer-tq in bottom half context. */ @@ -102291,7 +108997,7 @@ index 2d3f5c5..7ed7dc5 100644 { struct tvec_base *base = __this_cpu_read(tvec_bases); -@@ -1456,7 +1456,7 @@ static void process_timeout(unsigned long __data) +@@ -1468,7 +1468,7 @@ static void process_timeout(unsigned long __data) * * In all cases the return value is guaranteed to be non-negative. */ @@ -102301,7 +109007,7 @@ index 2d3f5c5..7ed7dc5 100644 struct timer_list timer; unsigned long expire; diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c -index 61ed862..3b52c65 100644 +index e878c2e..cf1546bb 100644 --- a/kernel/time/timer_list.c +++ b/kernel/time/timer_list.c @@ -45,12 +45,16 @@ DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases); @@ -102333,7 +109039,7 @@ index 61ed862..3b52c65 100644 SEQ_printf(m, " .index: %d\n", base->index); SEQ_printf(m, " .resolution: %Lu nsecs\n", -@@ -362,7 +370,11 @@ static int __init init_timer_list_procfs(void) +@@ -388,7 +396,11 @@ static int __init init_timer_list_procfs(void) { struct proc_dir_entry *pe; @@ -102489,10 +109195,10 @@ index 483cecf..ac46091 100644 ret = -EIO; diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c -index 4f22802..bd268b1 100644 +index 02bece4..f9b05af 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c -@@ -2382,12 +2382,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec) +@@ -2395,12 +2395,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec) if (unlikely(ftrace_disabled)) return 0; @@ -102512,7 +109218,7 @@ index 4f22802..bd268b1 100644 } /* -@@ -4776,8 +4781,10 @@ static int ftrace_process_locs(struct module *mod, +@@ -4789,8 +4794,10 @@ static int ftrace_process_locs(struct module *mod, if (!count) return 0; @@ -102523,7 +109229,7 @@ index 4f22802..bd268b1 100644 start_pg = ftrace_allocate_pages(count); if (!start_pg) -@@ -5653,7 +5660,7 @@ static int alloc_retstack_tasklist(struct ftrace_ret_stack **ret_stack_list) +@@ -5659,7 +5666,7 @@ static int alloc_retstack_tasklist(struct ftrace_ret_stack **ret_stack_list) if (t->ret_stack == NULL) { atomic_set(&t->tracing_graph_pause, 0); @@ -102532,7 +109238,7 @@ index 4f22802..bd268b1 100644 t->curr_ret_stack = -1; /* Make sure the tasks see the -1 first: */ smp_wmb(); -@@ -5876,7 +5883,7 @@ static void +@@ -5882,7 +5889,7 @@ static void graph_init_task(struct task_struct *t, struct ftrace_ret_stack *ret_stack) { atomic_set(&t->tracing_graph_pause, 0); @@ -102542,7 +109248,7 @@ index 4f22802..bd268b1 100644 /* make curr_ret_stack visible before we add the ret_stack */ smp_wmb(); diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c -index 922048a..bb71a55 100644 +index 0315d43..2e5e9a2 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -348,9 +348,9 @@ struct buffer_data_page { @@ -102754,7 +109460,7 @@ index 922048a..bb71a55 100644 return NULL; } #endif -@@ -2901,7 +2901,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer, +@@ -2898,7 +2898,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer, /* Do the likely case first */ if (likely(bpage->page == (void *)addr)) { @@ -102763,7 +109469,7 @@ index 922048a..bb71a55 100644 return; } -@@ -2913,7 +2913,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer, +@@ -2910,7 +2910,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer, start = bpage; do { if (bpage->page == (void *)addr) { @@ -102772,7 +109478,7 @@ index 922048a..bb71a55 100644 return; } rb_inc_page(cpu_buffer, &bpage); -@@ -3197,7 +3197,7 @@ static inline unsigned long +@@ -3194,7 +3194,7 @@ static inline unsigned long rb_num_of_entries(struct ring_buffer_per_cpu *cpu_buffer) { return local_read(&cpu_buffer->entries) - @@ -102781,7 +109487,7 @@ index 922048a..bb71a55 100644 } /** -@@ -3286,7 +3286,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu) +@@ -3283,7 +3283,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu) return 0; cpu_buffer = buffer->buffers[cpu]; @@ -102790,7 +109496,7 @@ index 922048a..bb71a55 100644 return ret; } -@@ -3309,7 +3309,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu) +@@ -3306,7 +3306,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu) return 0; cpu_buffer = buffer->buffers[cpu]; @@ -102799,7 +109505,7 @@ index 922048a..bb71a55 100644 return ret; } -@@ -3331,7 +3331,7 @@ ring_buffer_dropped_events_cpu(struct ring_buffer *buffer, int cpu) +@@ -3328,7 +3328,7 @@ ring_buffer_dropped_events_cpu(struct ring_buffer *buffer, int cpu) return 0; cpu_buffer = buffer->buffers[cpu]; @@ -102808,7 +109514,7 @@ index 922048a..bb71a55 100644 return ret; } -@@ -3394,7 +3394,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer) +@@ -3391,7 +3391,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer) /* if you care about this being correct, lock the buffer */ for_each_buffer_cpu(buffer, cpu) { cpu_buffer = buffer->buffers[cpu]; @@ -102817,7 +109523,7 @@ index 922048a..bb71a55 100644 } return overruns; -@@ -3565,8 +3565,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) +@@ -3562,8 +3562,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) /* * Reset the reader page to size zero. */ @@ -102828,7 +109534,7 @@ index 922048a..bb71a55 100644 local_set(&cpu_buffer->reader_page->page->commit, 0); cpu_buffer->reader_page->real_end = 0; -@@ -3600,7 +3600,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) +@@ -3597,7 +3597,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) * want to compare with the last_overrun. */ smp_mb(); @@ -102837,7 +109543,7 @@ index 922048a..bb71a55 100644 /* * Here's the tricky part. -@@ -4172,8 +4172,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) +@@ -4169,8 +4169,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) cpu_buffer->head_page = list_entry(cpu_buffer->pages, struct buffer_page, list); @@ -102848,7 +109554,7 @@ index 922048a..bb71a55 100644 local_set(&cpu_buffer->head_page->page->commit, 0); cpu_buffer->head_page->read = 0; -@@ -4183,18 +4183,18 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) +@@ -4180,18 +4180,18 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) INIT_LIST_HEAD(&cpu_buffer->reader_page->list); INIT_LIST_HEAD(&cpu_buffer->new_pages); @@ -102873,7 +109579,7 @@ index 922048a..bb71a55 100644 cpu_buffer->read = 0; cpu_buffer->read_bytes = 0; -@@ -4595,8 +4595,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer, +@@ -4592,8 +4592,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer, rb_init_page(bpage); bpage = reader->page; reader->page = *data_page; @@ -102885,10 +109591,10 @@ index 922048a..bb71a55 100644 *data_page = bpage; diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 62c6506..5c25989 100644 +index 0533049..85e27f0 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c -@@ -3500,7 +3500,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) +@@ -3538,7 +3538,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) return 0; } @@ -102898,7 +109604,7 @@ index 62c6506..5c25989 100644 /* do nothing if flag is already set */ if (!!(trace_flags & mask) == !!enabled) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h -index dd8205a..1aae87a 100644 +index d261201..da10429 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1271,7 +1271,7 @@ extern const char *__stop___tracepoint_str[]; @@ -102931,10 +109637,10 @@ index 57b67b1..66082a9 100644 + return atomic64_inc_return_unchecked(&trace_counter); } diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c -index a9c10a3..1864f6b 100644 +index c4de47f..5f134b8 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c -@@ -1762,7 +1762,6 @@ __trace_early_add_new_event(struct ftrace_event_call *call, +@@ -1887,7 +1887,6 @@ __trace_early_add_new_event(struct ftrace_event_call *call, return 0; } @@ -102942,11 +109648,35 @@ index a9c10a3..1864f6b 100644 static void __add_event_to_tracers(struct ftrace_event_call *call); /* Add an additional event_call dynamically */ +diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c +index 7f2e97c..085a257 100644 +--- a/kernel/trace/trace_events_filter.c ++++ b/kernel/trace/trace_events_filter.c +@@ -1056,6 +1056,9 @@ static void parse_init(struct filter_parse_state *ps, + + static char infix_next(struct filter_parse_state *ps) + { ++ if (!ps->infix.cnt) ++ return 0; ++ + ps->infix.cnt--; + + return ps->infix.string[ps->infix.tail++]; +@@ -1071,6 +1074,9 @@ static char infix_peek(struct filter_parse_state *ps) + + static void infix_advance(struct filter_parse_state *ps) + { ++ if (!ps->infix.cnt) ++ return; ++ + ps->infix.cnt--; + ps->infix.tail++; + } diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c -index b6fce36..d9f11a3 100644 +index a51e796..1f32ebd 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c -@@ -133,7 +133,7 @@ ftrace_push_return_trace(unsigned long ret, unsigned long func, int *depth, +@@ -132,7 +132,7 @@ ftrace_push_return_trace(unsigned long ret, unsigned long func, int *depth, /* The return trace stack is full */ if (current->curr_ret_stack == FTRACE_RETFUNC_DEPTH - 1) { @@ -102955,7 +109685,7 @@ index b6fce36..d9f11a3 100644 return -EBUSY; } -@@ -230,7 +230,7 @@ ftrace_pop_return_trace(struct ftrace_graph_ret *trace, unsigned long *ret, +@@ -229,7 +229,7 @@ ftrace_pop_return_trace(struct ftrace_graph_ret *trace, unsigned long *ret, *ret = current->ret_stack[index].ret; trace->func = current->ret_stack[index].func; trace->calltime = current->ret_stack[index].calltime; @@ -103005,10 +109735,10 @@ index 7a9ba62..2e0e4a1 100644 } entry = ring_buffer_event_data(event); diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c -index 692bf71..6d9a9cd 100644 +index 25a086b..a918131 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c -@@ -751,14 +751,16 @@ int register_ftrace_event(struct trace_event *event) +@@ -752,14 +752,16 @@ int register_ftrace_event(struct trace_event *event) goto out; } @@ -103043,7 +109773,7 @@ index e694c9f..6775a38 100644 if (unlikely(seq_buf_has_overflowed(&s->seq))) { s->seq.len = save_len; diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c -index c3e4fcf..ef6cc43 100644 +index 3f34496..0492d95 100644 --- a/kernel/trace/trace_stack.c +++ b/kernel/trace/trace_stack.c @@ -88,7 +88,7 @@ check_stack(unsigned long ip, unsigned long *stack) @@ -103144,11 +109874,11 @@ index c8eac43..4b5f08f 100644 memcpy(&uts_table, table, sizeof(uts_table)); uts_table.data = get_uts(table, write); diff --git a/kernel/watchdog.c b/kernel/watchdog.c -index 3174bf8..3553520 100644 +index 581a68a..7ff6a89 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c -@@ -572,7 +572,7 @@ static int watchdog_nmi_enable(unsigned int cpu) { return 0; } - static void watchdog_nmi_disable(unsigned int cpu) { return; } +@@ -648,7 +648,7 @@ void watchdog_nmi_enable_all(void) {} + void watchdog_nmi_disable_all(void) {} #endif /* CONFIG_HARDLOCKUP_DETECTOR */ -static struct smp_hotplug_thread watchdog_threads = { @@ -103157,10 +109887,10 @@ index 3174bf8..3553520 100644 .thread_should_run = watchdog_should_run, .thread_fn = watchdog, diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 41ff75b..5ad683a 100644 +index 586ad91..5f8844a 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -4564,7 +4564,7 @@ static void rebind_workers(struct worker_pool *pool) +@@ -4428,7 +4428,7 @@ static void rebind_workers(struct worker_pool *pool) WARN_ON_ONCE(!(worker_flags & WORKER_UNBOUND)); worker_flags |= WORKER_REBOUND; worker_flags &= ~WORKER_UNBOUND; @@ -103170,10 +109900,10 @@ index 41ff75b..5ad683a 100644 spin_unlock_irq(&pool->lock); diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index c5cefb3..a4241e3 100644 +index ba2b0c8..a571efc 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug -@@ -923,7 +923,7 @@ config DEBUG_MUTEXES +@@ -936,7 +936,7 @@ config DEBUG_MUTEXES config DEBUG_WW_MUTEX_SLOWPATH bool "Wait/wound mutex debugging: Slowpath testing" @@ -103182,7 +109912,7 @@ index c5cefb3..a4241e3 100644 select DEBUG_LOCK_ALLOC select DEBUG_SPINLOCK select DEBUG_MUTEXES -@@ -940,7 +940,7 @@ config DEBUG_WW_MUTEX_SLOWPATH +@@ -953,7 +953,7 @@ config DEBUG_WW_MUTEX_SLOWPATH config DEBUG_LOCK_ALLOC bool "Lock debugging: detect incorrect freeing of live locks" @@ -103191,7 +109921,7 @@ index c5cefb3..a4241e3 100644 select DEBUG_SPINLOCK select DEBUG_MUTEXES select LOCKDEP -@@ -954,7 +954,7 @@ config DEBUG_LOCK_ALLOC +@@ -967,7 +967,7 @@ config DEBUG_LOCK_ALLOC config PROVE_LOCKING bool "Lock debugging: prove locking correctness" @@ -103200,7 +109930,7 @@ index c5cefb3..a4241e3 100644 select LOCKDEP select DEBUG_SPINLOCK select DEBUG_MUTEXES -@@ -1005,7 +1005,7 @@ config LOCKDEP +@@ -1018,7 +1018,7 @@ config LOCKDEP config LOCK_STAT bool "Lock usage statistics" @@ -103209,7 +109939,7 @@ index c5cefb3..a4241e3 100644 select LOCKDEP select DEBUG_SPINLOCK select DEBUG_MUTEXES -@@ -1467,6 +1467,7 @@ config LATENCYTOP +@@ -1496,6 +1496,7 @@ config LATENCYTOP depends on DEBUG_KERNEL depends on STACKTRACE_SUPPORT depends on PROC_FS @@ -103217,7 +109947,7 @@ index c5cefb3..a4241e3 100644 select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC select KALLSYMS select KALLSYMS_ALL -@@ -1483,7 +1484,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS +@@ -1512,7 +1513,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS config DEBUG_STRICT_USER_COPY_CHECKS bool "Strict user copy size checks" depends on ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS @@ -103226,7 +109956,7 @@ index c5cefb3..a4241e3 100644 help Enabling this option turns a certain set of sanity checks for user copy operations into compile time failures. -@@ -1614,7 +1615,7 @@ endmenu # runtime tests +@@ -1643,7 +1644,7 @@ endmenu # runtime tests config PROVIDE_OHCI1394_DMA_INIT bool "Remote debugging over FireWire early on boot" @@ -103236,7 +109966,7 @@ index c5cefb3..a4241e3 100644 If you want to debug problems which hang or crash the kernel early on boot and the crashing machine has a FireWire port, you can use diff --git a/lib/Makefile b/lib/Makefile -index 58f74d2..08e011f 100644 +index 6c37933..d48e7ca 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -59,7 +59,7 @@ obj-$(CONFIG_BTREE) += btree.o @@ -103262,10 +109992,10 @@ index 114d1be..ab0350c 100644 (val << avg->factor)) >> avg->weight : (val << avg->factor); diff --git a/lib/bitmap.c b/lib/bitmap.c -index d456f4c1..29a0308 100644 +index 64c0926f..9de1a1f 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c -@@ -264,7 +264,7 @@ int __bitmap_subset(const unsigned long *bitmap1, +@@ -234,7 +234,7 @@ int __bitmap_subset(const unsigned long *bitmap1, } EXPORT_SYMBOL(__bitmap_subset); @@ -103274,7 +110004,7 @@ index d456f4c1..29a0308 100644 { unsigned int k, lim = bits/BITS_PER_LONG; int w = 0; -@@ -391,7 +391,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen, +@@ -361,7 +361,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen, { int c, old_c, totaldigits, ndigits, nchunks, nbits; u32 chunk; @@ -103283,7 +110013,7 @@ index d456f4c1..29a0308 100644 bitmap_zero(maskp, nmaskbits); -@@ -476,7 +476,7 @@ int bitmap_parse_user(const char __user *ubuf, +@@ -446,7 +446,7 @@ int bitmap_parse_user(const char __user *ubuf, { if (!access_ok(VERIFY_READ, ubuf, ulen)) return -EFAULT; @@ -103292,7 +110022,7 @@ index d456f4c1..29a0308 100644 ulen, 1, maskp, nmaskbits); } -@@ -535,7 +535,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen, +@@ -505,7 +505,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen, { unsigned a, b; int c, old_c, totaldigits; @@ -103301,7 +110031,7 @@ index d456f4c1..29a0308 100644 int exp_digit, in_range; totaldigits = c = 0; -@@ -630,7 +630,7 @@ int bitmap_parselist_user(const char __user *ubuf, +@@ -600,7 +600,7 @@ int bitmap_parselist_user(const char __user *ubuf, { if (!access_ok(VERIFY_READ, ubuf, ulen)) return -EFAULT; @@ -103350,8 +110080,25 @@ index 6dd0335..1e9c239 100644 bd->dbuf = large_malloc(bd->dbufSize * sizeof(int)); if (!bd->dbuf) +diff --git a/lib/decompress_unlzma.c b/lib/decompress_unlzma.c +index 0be83af..4605e93 100644 +--- a/lib/decompress_unlzma.c ++++ b/lib/decompress_unlzma.c +@@ -39,10 +39,10 @@ + + #define MIN(a, b) (((a) < (b)) ? (a) : (b)) + +-static long long INIT read_int(unsigned char *ptr, int size) ++static unsigned long long INIT read_int(unsigned char *ptr, int size) + { + int i; +- long long ret = 0; ++ unsigned long long ret = 0; + + for (i = 0; i < size; i++) + ret = (ret << 8) | ptr[size-i-1]; diff --git a/lib/div64.c b/lib/div64.c -index 4382ad7..08aa558 100644 +index 19ea7ed..20cac21 100644 --- a/lib/div64.c +++ b/lib/div64.c @@ -59,7 +59,7 @@ uint32_t __attribute__((weak)) __div64_32(uint64_t *n, uint32_t base) @@ -103364,7 +110111,7 @@ index 4382ad7..08aa558 100644 u64 quotient; @@ -130,7 +130,7 @@ EXPORT_SYMBOL(div64_u64_rem); - * 'http://www.hackersdelight.org/HDcode/newCode/divDouble.c.txt' + * 'http://www.hackersdelight.org/hdcodetxt/divDouble.c.txt' */ #ifndef div64_u64 -u64 div64_u64(u64 dividend, u64 divisor) @@ -103373,7 +110120,7 @@ index 4382ad7..08aa558 100644 u32 high = divisor >> 32; u64 quot; diff --git a/lib/dma-debug.c b/lib/dma-debug.c -index 9722bd2..0d826f4 100644 +index ae4b65e..daf0230 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -979,7 +979,7 @@ static int dma_debug_device_change(struct notifier_block *nb, unsigned long acti @@ -103408,10 +110155,10 @@ index 013a761..c28f3fc 100644 #endif diff --git a/lib/ioremap.c b/lib/ioremap.c -index 0c9216c..863bd89 100644 +index 86c8911..f5bfc34 100644 --- a/lib/ioremap.c +++ b/lib/ioremap.c -@@ -38,7 +38,7 @@ static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr, +@@ -75,7 +75,7 @@ static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr, unsigned long next; phys_addr -= addr; @@ -103420,7 +110167,7 @@ index 0c9216c..863bd89 100644 if (!pmd) return -ENOMEM; do { -@@ -56,7 +56,7 @@ static inline int ioremap_pud_range(pgd_t *pgd, unsigned long addr, +@@ -101,7 +101,7 @@ static inline int ioremap_pud_range(pgd_t *pgd, unsigned long addr, unsigned long next; phys_addr -= addr; @@ -103444,10 +110191,22 @@ index bd2bea9..6b3c95e 100644 return false; diff --git a/lib/kobject.c b/lib/kobject.c -index 03d4ab3..46f6374 100644 +index 3b841b9..7c215aa 100644 --- a/lib/kobject.c +++ b/lib/kobject.c -@@ -931,9 +931,9 @@ EXPORT_SYMBOL_GPL(kset_create_and_add); +@@ -340,8 +340,9 @@ error: + } + EXPORT_SYMBOL(kobject_init); + +-static int kobject_add_varg(struct kobject *kobj, struct kobject *parent, +- const char *fmt, va_list vargs) ++static __printf(3, 0) int kobject_add_varg(struct kobject *kobj, ++ struct kobject *parent, ++ const char *fmt, va_list vargs) + { + int retval; + +@@ -936,9 +937,9 @@ EXPORT_SYMBOL_GPL(kset_create_and_add); static DEFINE_SPINLOCK(kobj_ns_type_lock); @@ -103681,7 +110440,7 @@ index c24c2f7..f0296f4 100644 +} +EXPORT_SYMBOL(pax_list_del_rcu); diff --git a/lib/lockref.c b/lib/lockref.c -index ecb9a66..a044fc5 100644 +index 494994b..65caf94 100644 --- a/lib/lockref.c +++ b/lib/lockref.c @@ -48,13 +48,13 @@ @@ -103905,7 +110664,7 @@ index e0af6ff..fcc9f15 100644 /* diff --git a/lib/strnlen_user.c b/lib/strnlen_user.c -index a28df52..3d55877 100644 +index fe9a325..85cd8aa 100644 --- a/lib/strnlen_user.c +++ b/lib/strnlen_user.c @@ -26,7 +26,7 @@ @@ -103918,10 +110677,10 @@ index a28df52..3d55877 100644 unsigned long c; diff --git a/lib/swiotlb.c b/lib/swiotlb.c -index 4abda07..b9d3765 100644 +index 3c365ab..75b43df 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c -@@ -682,7 +682,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent); +@@ -683,7 +683,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent); void swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr, @@ -103931,22 +110690,14 @@ index 4abda07..b9d3765 100644 phys_addr_t paddr = dma_to_phys(hwdev, dev_addr); diff --git a/lib/test-hexdump.c b/lib/test-hexdump.c -index daf29a39..56f44ac 100644 +index c227cc4..5241df3 100644 --- a/lib/test-hexdump.c +++ b/lib/test-hexdump.c -@@ -18,26 +18,26 @@ static const unsigned char data_b[] = { - - static const unsigned char data_a[] = ".2.{....p..$}.4...1.....L...C..."; - --static const char *test_data_1_le[] __initconst = { -+static const char * const test_data_1_le[] __initconst = { - "be", "32", "db", "7b", "0a", "18", "93", "b2", - "70", "ba", "c4", "24", "7d", "83", "34", "9b", - "a6", "9c", "31", "ad", "9c", "0f", "ac", "e9", +@@ -25,19 +25,19 @@ static const char * const test_data_1_le[] __initconst = { "4c", "d1", "19", "99", "43", "b1", "af", "0c", }; --static const char *test_data_2_le[] __initconst = { +-static const char *test_data_2_le[] __initdata = { +static const char * const test_data_2_le[] __initconst = { "32be", "7bdb", "180a", "b293", "ba70", "24c4", "837d", "9b34", @@ -103954,13 +110705,13 @@ index daf29a39..56f44ac 100644 "d14c", "9919", "b143", "0caf", }; --static const char *test_data_4_le[] __initconst = { +-static const char *test_data_4_le[] __initdata = { +static const char * const test_data_4_le[] __initconst = { "7bdb32be", "b293180a", "24c4ba70", "9b34837d", "ad319ca6", "e9ac0f9c", "9919d14c", "0cafb143", }; --static const char *test_data_8_le[] __initconst = { +-static const char *test_data_8_le[] __initdata = { +static const char * const test_data_8_le[] __initconst = { "b293180a7bdb32be", "9b34837d24c4ba70", "e9ac0f9cad319ca6", "0cafb1439919d14c", @@ -103980,7 +110731,7 @@ index 4f5b1dd..7cab418 100644 +} +EXPORT_SYMBOL(copy_to_user_overflow); diff --git a/lib/vsprintf.c b/lib/vsprintf.c -index b235c96..343ffc1 100644 +index da39c60..ac91239 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -16,6 +16,9 @@ @@ -103991,9 +110742,9 @@ index b235c96..343ffc1 100644 +#define __INCLUDED_BY_HIDESYM 1 +#endif #include + #include #include /* for KSYM_SYMBOL_LEN */ - #include -@@ -626,7 +629,7 @@ char *symbol_string(char *buf, char *end, void *ptr, +@@ -628,7 +631,7 @@ char *symbol_string(char *buf, char *end, void *ptr, #ifdef CONFIG_KALLSYMS if (*fmt == 'B') sprint_backtrace(sym, value); @@ -104002,19 +110753,20 @@ index b235c96..343ffc1 100644 sprint_symbol(sym, value); else sprint_symbol_no_offset(sym, value); -@@ -1322,7 +1325,11 @@ char *address_val(char *buf, char *end, const void *addr, - return number(buf, end, num, spec); +@@ -1360,7 +1363,11 @@ char *clock(char *buf, char *end, struct clk *clk, struct printf_spec spec, + } } +-int kptr_restrict __read_mostly; +#ifdef CONFIG_GRKERNSEC_HIDESYM -+int kptr_restrict __read_mostly = 2; ++int kptr_restrict __read_only = 2; +#else - int kptr_restrict __read_mostly; ++int kptr_restrict __read_only; +#endif /* * Show a '%p' thing. A kernel extension is that the '%p' is followed -@@ -1333,8 +1340,10 @@ int kptr_restrict __read_mostly; +@@ -1371,8 +1378,10 @@ int kptr_restrict __read_mostly; * * - 'F' For symbolic function descriptor pointers with offset * - 'f' For simple symbolic function names without offset @@ -104025,7 +110777,7 @@ index b235c96..343ffc1 100644 * - '[FfSs]R' as above with __builtin_extract_return_addr() translation * - 'B' For backtraced symbolic direct pointers with offset * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref] -@@ -1417,12 +1426,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1460,12 +1469,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, if (!ptr && *fmt != 'K') { /* @@ -104040,7 +110792,7 @@ index b235c96..343ffc1 100644 } switch (*fmt) { -@@ -1432,6 +1441,14 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1475,6 +1484,14 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, /* Fallthrough */ case 'S': case 's': @@ -104055,7 +110807,7 @@ index b235c96..343ffc1 100644 case 'B': return symbol_string(buf, end, ptr, spec, fmt); case 'R': -@@ -1496,6 +1513,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1539,6 +1556,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, va_end(va); return buf; } @@ -104064,7 +110816,7 @@ index b235c96..343ffc1 100644 case 'K': /* * %pK cannot be used in IRQ context because its test -@@ -1553,6 +1572,22 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, +@@ -1598,6 +1617,22 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, ((const struct file *)ptr)->f_path.dentry, spec, fmt); } @@ -104087,7 +110839,7 @@ index b235c96..343ffc1 100644 spec.flags |= SMALL; if (spec.field_width == -1) { spec.field_width = default_width; -@@ -2254,11 +2289,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) +@@ -2296,11 +2331,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)); \ @@ -104102,7 +110854,7 @@ index b235c96..343ffc1 100644 } \ args += sizeof(type); \ value; \ -@@ -2321,7 +2356,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf) +@@ -2363,7 +2398,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; @@ -104119,7 +110871,7 @@ index 0000000..7cd6065 @@ -0,0 +1 @@ +-grsec diff --git a/mm/Kconfig b/mm/Kconfig -index a03131b..1b1bafb 100644 +index 390214d..f96e3b8 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -342,10 +342,11 @@ config KSM @@ -104159,7 +110911,7 @@ index 957d3da..1d34e20 100644 depends on !KMEMCHECK select PAGE_EXTENSION diff --git a/mm/backing-dev.c b/mm/backing-dev.c -index 6dc4580..e031ec1 100644 +index 000e7b3..aad2605 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -12,7 +12,7 @@ @@ -104171,7 +110923,7 @@ index 6dc4580..e031ec1 100644 struct backing_dev_info noop_backing_dev_info = { .name = "noop", -@@ -474,7 +474,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name) +@@ -458,7 +458,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name) return err; err = bdi_register(bdi, NULL, "%.28s-%ld", name, @@ -104180,11 +110932,54 @@ index 6dc4580..e031ec1 100644 if (err) { bdi_destroy(bdi); return err; +diff --git a/mm/cma_debug.c b/mm/cma_debug.c +index 7621ee3..f8e4b60 100644 +--- a/mm/cma_debug.c ++++ b/mm/cma_debug.c +@@ -39,7 +39,7 @@ static int cma_used_get(void *data, u64 *val) + + mutex_lock(&cma->lock); + /* pages counter is smaller than sizeof(int) */ +- used = bitmap_weight(cma->bitmap, (int)cma->count); ++ used = bitmap_weight(cma->bitmap, (int)cma_bitmap_maxno(cma)); + mutex_unlock(&cma->lock); + *val = (u64)used << cma->order_per_bit; + +@@ -52,13 +52,14 @@ static int cma_maxchunk_get(void *data, u64 *val) + struct cma *cma = data; + unsigned long maxchunk = 0; + unsigned long start, end = 0; ++ unsigned long bitmap_maxno = cma_bitmap_maxno(cma); + + mutex_lock(&cma->lock); + for (;;) { +- start = find_next_zero_bit(cma->bitmap, cma->count, end); ++ start = find_next_zero_bit(cma->bitmap, bitmap_maxno, end); + if (start >= cma->count) + break; +- end = find_next_bit(cma->bitmap, cma->count, start); ++ end = find_next_bit(cma->bitmap, bitmap_maxno, start); + maxchunk = max(end - start, maxchunk); + } + mutex_unlock(&cma->lock); +@@ -170,10 +171,10 @@ static void cma_debugfs_add_one(struct cma *cma, int idx) + + tmp = debugfs_create_dir(name, cma_debugfs_root); + +- debugfs_create_file("alloc", S_IWUSR, cma_debugfs_root, cma, ++ debugfs_create_file("alloc", S_IWUSR, tmp, cma, + &cma_alloc_fops); + +- debugfs_create_file("free", S_IWUSR, cma_debugfs_root, cma, ++ debugfs_create_file("free", S_IWUSR, tmp, cma, + &cma_free_fops); + + debugfs_create_file("base_pfn", S_IRUGO, tmp, diff --git a/mm/filemap.c b/mm/filemap.c -index ad72420..0a20ef2 100644 +index 6bf5e42..1e631ee 100644 --- a/mm/filemap.c +++ b/mm/filemap.c -@@ -2097,7 +2097,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma) +@@ -2095,7 +2095,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) @@ -104193,24 +110988,24 @@ index ad72420..0a20ef2 100644 file_accessed(file); vma->vm_ops = &generic_file_vm_ops; return 0; -@@ -2275,6 +2275,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) { -+ gr_learn_resource(current, RLIMIT_FSIZE,*pos, 0); - if (*pos >= limit) { - send_sig(SIGXFSZ, current, 0); - return -EFBIG; +@@ -2276,6 +2276,7 @@ inline ssize_t generic_write_checks(struct kiocb *iocb, struct iov_iter *from) + pos = iocb->ki_pos; + + if (limit != RLIM_INFINITY) { ++ gr_learn_resource(current, RLIMIT_FSIZE, iocb->ki_pos, 0); + if (iocb->ki_pos >= limit) { + send_sig(SIGXFSZ, current, 0); + return -EFBIG; diff --git a/mm/gup.c b/mm/gup.c -index a6e24e2..72dd2cf 100644 +index 6297f6b..7652403 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -265,11 +265,6 @@ static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma, unsigned int fault_flags = 0; int ret; -- /* For mlock, just skip the stack guard page. */ -- if ((*flags & FOLL_MLOCK) && +- /* For mm_populate(), just skip the stack guard page. */ +- if ((*flags & FOLL_POPULATE) && - (stack_guard_page_start(vma, address) || - stack_guard_page_end(vma, address + PAGE_SIZE))) - return -ENOENT; @@ -104281,10 +111076,10 @@ index 123bcd3..0de52ba 100644 set_page_address(page, (void *)vaddr); diff --git a/mm/hugetlb.c b/mm/hugetlb.c -index caad3c5..4f68807 100644 +index 271e443..c582971 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c -@@ -2260,6 +2260,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, +@@ -2362,6 +2362,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, struct ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { @@ -104292,7 +111087,7 @@ index caad3c5..4f68807 100644 struct hstate *h = &default_hstate; unsigned long tmp = h->max_huge_pages; int ret; -@@ -2267,9 +2268,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, +@@ -2369,9 +2370,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, if (!hugepages_supported()) return -ENOTSUPP; @@ -104306,7 +111101,7 @@ index caad3c5..4f68807 100644 if (ret) goto out; -@@ -2304,6 +2306,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, +@@ -2406,6 +2408,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, struct hstate *h = &default_hstate; unsigned long tmp; int ret; @@ -104314,7 +111109,7 @@ index caad3c5..4f68807 100644 if (!hugepages_supported()) return -ENOTSUPP; -@@ -2313,9 +2316,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, +@@ -2415,9 +2418,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, if (write && hstate_is_gigantic(h)) return -EINVAL; @@ -104328,7 +111123,7 @@ index caad3c5..4f68807 100644 if (ret) goto out; -@@ -2800,6 +2804,27 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2907,6 +2911,27 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma, i_mmap_unlock_write(mapping); } @@ -104356,7 +111151,7 @@ index caad3c5..4f68807 100644 /* * Hugetlb_cow() should be called with page lock of the original hugepage held. * Called with hugetlb_instantiation_mutex held and pte_page locked so we -@@ -2912,6 +2937,11 @@ retry_avoidcopy: +@@ -3020,6 +3045,11 @@ retry_avoidcopy: make_huge_pte(vma, new_page, 1)); page_remove_rmap(old_page); hugepage_add_new_anon_rmap(new_page, vma, address); @@ -104368,7 +111163,7 @@ index caad3c5..4f68807 100644 /* Make the old page be freed below */ new_page = old_page; } -@@ -3072,6 +3102,10 @@ retry: +@@ -3181,6 +3211,10 @@ retry: && (vma->vm_flags & VM_SHARED))); set_huge_pte_at(mm, address, ptep, new_pte); @@ -104379,7 +111174,7 @@ index caad3c5..4f68807 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, ptl); -@@ -3139,6 +3173,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3248,6 +3282,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, struct address_space *mapping; int need_wait_lock = 0; @@ -104390,7 +111185,7 @@ index caad3c5..4f68807 100644 address &= huge_page_mask(h); ptep = huge_pte_offset(mm, address); -@@ -3152,6 +3190,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3261,6 +3299,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, VM_FAULT_SET_HINDEX(hstate_index(h)); } @@ -104418,7 +111213,7 @@ index caad3c5..4f68807 100644 if (!ptep) return VM_FAULT_OOM; diff --git a/mm/internal.h b/mm/internal.h -index a96da5b..42ebd54 100644 +index a25e359..e2c96e9 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -156,6 +156,7 @@ __find_buddy_index(unsigned long page_idx, unsigned int order) @@ -104429,7 +111224,7 @@ index a96da5b..42ebd54 100644 extern void prep_compound_page(struct page *page, unsigned long order); #ifdef CONFIG_MEMORY_FAILURE extern bool is_free_buddy_page(struct page *page); -@@ -411,7 +412,7 @@ extern u32 hwpoison_filter_enable; +@@ -413,7 +414,7 @@ extern u32 hwpoison_filter_enable; extern unsigned long vm_mmap_pgoff(struct file *, unsigned long, unsigned long, unsigned long, @@ -104439,10 +111234,10 @@ index a96da5b..42ebd54 100644 extern void set_pageblock_order(void); unsigned long reclaim_clean_pages_from_list(struct zone *zone, diff --git a/mm/kmemleak.c b/mm/kmemleak.c -index 5405aff..483406d 100644 +index 3716cdb..25b97dc 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c -@@ -365,7 +365,7 @@ static void print_unreferenced(struct seq_file *seq, +@@ -368,7 +368,7 @@ static void print_unreferenced(struct seq_file *seq, for (i = 0; i < object->trace_len; i++) { void *ptr = (void *)object->trace[i]; @@ -104451,7 +111246,7 @@ index 5405aff..483406d 100644 } } -@@ -1911,7 +1911,7 @@ static int __init kmemleak_late_init(void) +@@ -1926,7 +1926,7 @@ static int __init kmemleak_late_init(void) return -ENOMEM; } @@ -104557,7 +111352,7 @@ index d551475..8fdd7f3 100644 if (end == start) return error; diff --git a/mm/memory-failure.c b/mm/memory-failure.c -index 72a5224..51ba846 100644 +index 501820c..9612bcf 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0; @@ -104578,16 +111373,16 @@ index 72a5224..51ba846 100644 #ifdef __ARCH_SI_TRAPNO si.si_trapno = trapno; #endif -@@ -779,7 +779,7 @@ static struct page_state { +@@ -825,7 +825,7 @@ static struct page_state { unsigned long res; - char *msg; + enum action_page_type type; int (*action)(struct page *p, unsigned long pfn); -} error_states[] = { +} __do_const error_states[] = { - { reserved, reserved, "reserved kernel", me_kernel }, + { reserved, reserved, MSG_KERNEL, me_kernel }, /* * free pages are specially detected outside this table: -@@ -1087,7 +1087,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags) +@@ -1133,7 +1133,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags) nr_pages = 1 << compound_order(hpage); else /* normal page or thp */ nr_pages = 1; @@ -104596,7 +111391,7 @@ index 72a5224..51ba846 100644 /* * We need/can do nothing about count=0 pages. -@@ -1116,7 +1116,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags) +@@ -1162,7 +1162,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags) if (PageHWPoison(hpage)) { if ((hwpoison_filter(p) && TestClearPageHWPoison(p)) || (p != hpage && TestSetPageHWPoison(hpage))) { @@ -104605,7 +111400,7 @@ index 72a5224..51ba846 100644 unlock_page(hpage); return 0; } -@@ -1184,14 +1184,14 @@ int memory_failure(unsigned long pfn, int trapno, int flags) +@@ -1231,14 +1231,14 @@ int memory_failure(unsigned long pfn, int trapno, int flags) */ if (!PageHWPoison(p)) { printk(KERN_ERR "MCE %#lx: just unpoisoned\n", pfn); @@ -104622,7 +111417,7 @@ index 72a5224..51ba846 100644 unlock_page(hpage); put_page(hpage); return 0; -@@ -1421,7 +1421,7 @@ int unpoison_memory(unsigned long pfn) +@@ -1467,7 +1467,7 @@ int unpoison_memory(unsigned long pfn) return 0; } if (TestClearPageHWPoison(p)) @@ -104631,7 +111426,7 @@ index 72a5224..51ba846 100644 pr_info("MCE: Software-unpoisoned free page %#lx\n", pfn); return 0; } -@@ -1435,7 +1435,7 @@ int unpoison_memory(unsigned long pfn) +@@ -1481,7 +1481,7 @@ int unpoison_memory(unsigned long pfn) */ if (TestClearPageHWPoison(page)) { pr_info("MCE: Software-unpoisoned page %#lx\n", pfn); @@ -104640,7 +111435,7 @@ index 72a5224..51ba846 100644 freeit = 1; if (PageHuge(page)) clear_page_hwpoison_huge_page(page); -@@ -1560,11 +1560,11 @@ static int soft_offline_huge_page(struct page *page, int flags) +@@ -1616,11 +1616,11 @@ static int soft_offline_huge_page(struct page *page, int flags) if (PageHuge(page)) { set_page_hwpoison_huge_page(hpage); dequeue_hwpoisoned_huge_page(hpage); @@ -104654,7 +111449,7 @@ index 72a5224..51ba846 100644 } } return ret; -@@ -1603,7 +1603,7 @@ static int __soft_offline_page(struct page *page, int flags) +@@ -1659,7 +1659,7 @@ static int __soft_offline_page(struct page *page, int flags) put_page(page); pr_info("soft_offline: %#lx: invalidated\n", pfn); SetPageHWPoison(page); @@ -104663,7 +111458,7 @@ index 72a5224..51ba846 100644 return 0; } -@@ -1652,7 +1652,7 @@ static int __soft_offline_page(struct page *page, int flags) +@@ -1708,7 +1708,7 @@ static int __soft_offline_page(struct page *page, int flags) if (!is_free_buddy_page(page)) pr_info("soft offline: %#lx: page leaked\n", pfn); @@ -104672,7 +111467,7 @@ index 72a5224..51ba846 100644 } } else { pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n", -@@ -1722,11 +1722,11 @@ int soft_offline_page(struct page *page, int flags) +@@ -1778,11 +1778,11 @@ int soft_offline_page(struct page *page, int flags) if (PageHuge(page)) { set_page_hwpoison_huge_page(hpage); if (!dequeue_hwpoisoned_huge_page(hpage)) @@ -104687,7 +111482,7 @@ index 72a5224..51ba846 100644 } unset_migratetype_isolate(page, MIGRATE_MOVABLE); diff --git a/mm/memory.c b/mm/memory.c -index 97839f5..4bc5530 100644 +index 22e037e..347d230 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -414,6 +414,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, @@ -104723,20 +111518,16 @@ index 97839f5..4bc5530 100644 } /* -@@ -691,10 +696,10 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr, +@@ -690,7 +695,7 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr, + /* * Choose text because data symbols depend on CONFIG_KALLSYMS_ALL=y */ - if (vma->vm_ops) -- printk(KERN_ALERT "vma->vm_ops->fault: %pSR\n", -+ printk(KERN_ALERT "vma->vm_ops->fault: %pAR\n", - vma->vm_ops->fault); - if (vma->vm_file) -- printk(KERN_ALERT "vma->vm_file->f_op->mmap: %pSR\n", -+ printk(KERN_ALERT "vma->vm_file->f_op->mmap: %pAR\n", - vma->vm_file->f_op->mmap); - dump_stack(); - add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); -@@ -1464,6 +1469,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr, +- pr_alert("file:%pD fault:%pf mmap:%pf readpage:%pf\n", ++ pr_alert("file:%pD fault:%pX mmap:%pX readpage:%pX\n", + vma->vm_file, + vma->vm_ops ? vma->vm_ops->fault : NULL, + vma->vm_file ? vma->vm_file->f_op->mmap : NULL, +@@ -1463,6 +1468,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr, page_add_file_rmap(page); set_pte_at(mm, addr, pte, mk_pte(page, prot)); @@ -104747,7 +111538,7 @@ index 97839f5..4bc5530 100644 retval = 0; pte_unmap_unlock(pte, ptl); return retval; -@@ -1508,9 +1517,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr, +@@ -1507,9 +1516,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr, if (!page_count(page)) return -EINVAL; if (!(vma->vm_flags & VM_MIXEDMAP)) { @@ -104769,7 +111560,7 @@ index 97839f5..4bc5530 100644 } return insert_page(vma, addr, page, vma->vm_page_prot); } -@@ -1593,6 +1614,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, +@@ -1592,6 +1613,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn) { BUG_ON(!(vma->vm_flags & VM_MIXEDMAP)); @@ -104777,7 +111568,7 @@ index 97839f5..4bc5530 100644 if (addr < vma->vm_start || addr >= vma->vm_end) return -EFAULT; -@@ -1840,7 +1862,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, +@@ -1839,7 +1861,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, BUG_ON(pud_huge(*pud)); @@ -104788,7 +111579,7 @@ index 97839f5..4bc5530 100644 if (!pmd) return -ENOMEM; do { -@@ -1860,7 +1884,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd, +@@ -1859,7 +1883,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd, unsigned long next; int err; @@ -104799,8 +111590,8 @@ index 97839f5..4bc5530 100644 if (!pud) return -ENOMEM; do { -@@ -1982,6 +2008,185 @@ static int do_page_mkwrite(struct vm_area_struct *vma, struct page *page, - return ret; +@@ -2040,6 +2066,185 @@ static inline int wp_page_reuse(struct mm_struct *mm, + return VM_FAULT_WRITE; } +#ifdef CONFIG_PAX_SEGMEXEC @@ -104983,9 +111774,9 @@ index 97839f5..4bc5530 100644 +#endif + /* - * This routine handles present pages, when users try to write - * to a shared page. It is done by copying the page to a new address -@@ -2172,6 +2377,12 @@ gotten: + * Handle the case of a page which we actually need to copy to a new page. + * +@@ -2093,6 +2298,12 @@ static int wp_page_copy(struct mm_struct *mm, struct vm_area_struct *vma, */ page_table = pte_offset_map_lock(mm, pmd, address, &ptl); if (likely(pte_same(*page_table, orig_pte))) { @@ -104998,7 +111789,7 @@ index 97839f5..4bc5530 100644 if (old_page) { if (!PageAnon(old_page)) { dec_mm_counter_fast(mm, MM_FILEPAGES); -@@ -2225,6 +2436,10 @@ gotten: +@@ -2147,6 +2358,10 @@ static int wp_page_copy(struct mm_struct *mm, struct vm_area_struct *vma, page_remove_rmap(old_page); } @@ -105008,8 +111799,8 @@ index 97839f5..4bc5530 100644 + /* Free the old page.. */ new_page = old_page; - ret |= VM_FAULT_WRITE; -@@ -2483,6 +2698,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, + page_copied = 1; +@@ -2578,6 +2793,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, swap_free(entry); if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page)) try_to_free_swap(page); @@ -105021,7 +111812,7 @@ index 97839f5..4bc5530 100644 unlock_page(page); if (page != swapcache) { /* -@@ -2506,6 +2726,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2601,6 +2821,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, /* No need to invalidate - it was non-present before */ update_mmu_cache(vma, address, page_table); @@ -105033,7 +111824,7 @@ index 97839f5..4bc5530 100644 unlock: pte_unmap_unlock(page_table, ptl); out: -@@ -2525,40 +2750,6 @@ out_release: +@@ -2620,40 +2845,6 @@ out_release: } /* @@ -105074,7 +111865,7 @@ index 97839f5..4bc5530 100644 * We enter with non-exclusive mmap_sem (to exclude vma changes, * but allow concurrent faults), and pte mapped but not yet locked. * We return with mmap_sem still held, but pte unmapped and unlocked. -@@ -2568,27 +2759,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2663,27 +2854,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned int flags) { struct mem_cgroup *memcg; @@ -105107,7 +111898,7 @@ index 97839f5..4bc5530 100644 if (unlikely(anon_vma_prepare(vma))) goto oom; page = alloc_zeroed_user_highpage_movable(vma, address); -@@ -2612,6 +2799,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2707,6 +2894,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, if (!pte_none(*page_table)) goto release; @@ -105119,7 +111910,7 @@ index 97839f5..4bc5530 100644 inc_mm_counter_fast(mm, MM_ANONPAGES); page_add_new_anon_rmap(page, vma, address); mem_cgroup_commit_charge(page, memcg, false); -@@ -2621,6 +2813,12 @@ setpte: +@@ -2716,6 +2908,12 @@ setpte: /* No need to invalidate - it was non-present before */ update_mmu_cache(vma, address, page_table); @@ -105132,7 +111923,7 @@ index 97839f5..4bc5530 100644 unlock: pte_unmap_unlock(page_table, ptl); return 0; -@@ -2853,6 +3051,11 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2948,6 +3146,11 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma, return ret; } do_set_pte(vma, address, fault_page, pte, false, false); @@ -105144,7 +111935,7 @@ index 97839f5..4bc5530 100644 unlock_page(fault_page); unlock_out: pte_unmap_unlock(pte, ptl); -@@ -2904,7 +3107,18 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2999,7 +3202,18 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma, } goto uncharge_out; } @@ -105163,7 +111954,7 @@ index 97839f5..4bc5530 100644 mem_cgroup_commit_charge(new_page, memcg, false); lru_cache_add_active_or_unevictable(new_page, vma); pte_unmap_unlock(pte, ptl); -@@ -2962,6 +3176,11 @@ static int do_shared_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3057,6 +3271,11 @@ static int do_shared_fault(struct mm_struct *mm, struct vm_area_struct *vma, return ret; } do_set_pte(vma, address, fault_page, pte, true, false); @@ -105175,7 +111966,7 @@ index 97839f5..4bc5530 100644 pte_unmap_unlock(pte, ptl); if (set_page_dirty(fault_page)) -@@ -3185,6 +3404,12 @@ static int handle_pte_fault(struct mm_struct *mm, +@@ -3280,6 +3499,12 @@ static int handle_pte_fault(struct mm_struct *mm, if (flags & FAULT_FLAG_WRITE) flush_tlb_fix_spurious_fault(vma, address); } @@ -105188,7 +111979,7 @@ index 97839f5..4bc5530 100644 unlock: pte_unmap_unlock(pte, ptl); return 0; -@@ -3204,9 +3429,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -3299,9 +3524,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, pmd_t *pmd; pte_t *pte; @@ -105230,7 +112021,7 @@ index 97839f5..4bc5530 100644 pgd = pgd_offset(mm, address); pud = pud_alloc(mm, pgd, address); if (!pud) -@@ -3341,6 +3598,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) +@@ -3436,6 +3693,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) spin_unlock(&mm->page_table_lock); return 0; } @@ -105254,7 +112045,7 @@ index 97839f5..4bc5530 100644 #endif /* __PAGETABLE_PUD_FOLDED */ #ifndef __PAGETABLE_PMD_FOLDED -@@ -3373,6 +3647,32 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) +@@ -3468,6 +3742,32 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) spin_unlock(&mm->page_table_lock); return 0; } @@ -105287,7 +112078,7 @@ index 97839f5..4bc5530 100644 #endif /* __PAGETABLE_PMD_FOLDED */ static int __follow_pte(struct mm_struct *mm, unsigned long address, -@@ -3482,8 +3782,8 @@ out: +@@ -3577,8 +3877,8 @@ out: return ret; } @@ -105298,7 +112089,7 @@ index 97839f5..4bc5530 100644 { resource_size_t phys_addr; unsigned long prot = 0; -@@ -3509,8 +3809,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys); +@@ -3604,8 +3904,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys); * Access another process' address space as given in mm. If non-NULL, use the * given task for page fault accounting. */ @@ -105309,7 +112100,7 @@ index 97839f5..4bc5530 100644 { struct vm_area_struct *vma; void *old_buf = buf; -@@ -3518,7 +3818,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, +@@ -3613,7 +3913,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, down_read(&mm->mmap_sem); /* ignore errors, just check how much was successfully transferred */ while (len) { @@ -105318,7 +112109,7 @@ index 97839f5..4bc5530 100644 void *maddr; struct page *page = NULL; -@@ -3579,8 +3879,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, +@@ -3674,8 +3974,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, * * The caller must hold a reference on @mm. */ @@ -105329,7 +112120,7 @@ index 97839f5..4bc5530 100644 { return __access_remote_vm(NULL, mm, addr, buf, len, write); } -@@ -3590,11 +3890,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, +@@ -3685,11 +3985,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, * Source/target buffer must be kernel space, * Do not walk the page table directly, use get_user_pages */ @@ -105345,7 +112136,7 @@ index 97839f5..4bc5530 100644 mm = get_task_mm(tsk); if (!mm) diff --git a/mm/mempolicy.c b/mm/mempolicy.c -index de5dc5e..68a4ea3 100644 +index 99d4c1d..a577817 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -703,6 +703,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, @@ -105376,7 +112167,7 @@ index de5dc5e..68a4ea3 100644 } out: -@@ -1160,6 +1174,17 @@ static long do_mbind(unsigned long start, unsigned long len, +@@ -1161,6 +1175,17 @@ static long do_mbind(unsigned long start, unsigned long len, if (end < start) return -EINVAL; @@ -105394,7 +112185,7 @@ index de5dc5e..68a4ea3 100644 if (end == start) return 0; -@@ -1385,8 +1410,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, +@@ -1386,8 +1411,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, */ tcred = __task_cred(task); if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) && @@ -105404,7 +112195,7 @@ index de5dc5e..68a4ea3 100644 rcu_read_unlock(); err = -EPERM; goto out_put; -@@ -1417,6 +1441,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, +@@ -1418,6 +1442,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, goto out; } @@ -105421,10 +112212,10 @@ index de5dc5e..68a4ea3 100644 capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE); diff --git a/mm/migrate.c b/mm/migrate.c -index 85e0426..be49beb 100644 +index f53838f..a26fa94 100644 --- a/mm/migrate.c +++ b/mm/migrate.c -@@ -1472,8 +1472,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, +@@ -1484,8 +1484,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, */ tcred = __task_cred(task); if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) && @@ -105435,7 +112226,7 @@ index 85e0426..be49beb 100644 err = -EPERM; goto out; diff --git a/mm/mlock.c b/mm/mlock.c -index 8a54cd2..92f1747 100644 +index 6fd2cf1..cbae765 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -14,6 +14,7 @@ @@ -105446,7 +112237,7 @@ index 8a54cd2..92f1747 100644 #include #include #include -@@ -613,7 +614,7 @@ static int do_mlock(unsigned long start, size_t len, int on) +@@ -557,7 +558,7 @@ static int do_mlock(unsigned long start, size_t len, int on) { unsigned long nstart, end, tmp; struct vm_area_struct * vma, * prev; @@ -105455,7 +112246,7 @@ index 8a54cd2..92f1747 100644 VM_BUG_ON(start & ~PAGE_MASK); VM_BUG_ON(len != PAGE_ALIGN(len)); -@@ -622,6 +623,9 @@ static int do_mlock(unsigned long start, size_t len, int on) +@@ -566,6 +567,9 @@ static int do_mlock(unsigned long start, size_t len, int on) return -EINVAL; if (end == start) return 0; @@ -105465,7 +112256,7 @@ index 8a54cd2..92f1747 100644 vma = find_vma(current->mm, start); if (!vma || vma->vm_start > start) return -ENOMEM; -@@ -633,6 +637,11 @@ static int do_mlock(unsigned long start, size_t len, int on) +@@ -577,6 +581,11 @@ static int do_mlock(unsigned long start, size_t len, int on) for (nstart = start ; ; ) { vm_flags_t newflags; @@ -105477,7 +112268,7 @@ index 8a54cd2..92f1747 100644 /* Here we know that vma->vm_start <= nstart < vma->vm_end. */ newflags = vma->vm_flags & ~VM_LOCKED; -@@ -746,6 +755,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len) +@@ -627,6 +636,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len) locked += current->mm->locked_vm; /* check against resource limits */ @@ -105485,7 +112276,7 @@ index 8a54cd2..92f1747 100644 if ((locked <= lock_limit) || capable(CAP_IPC_LOCK)) error = do_mlock(start, len, 1); -@@ -783,6 +793,11 @@ static int do_mlockall(int flags) +@@ -668,6 +678,11 @@ static int do_mlockall(int flags) for (vma = current->mm->mmap; vma ; vma = prev->vm_next) { vm_flags_t newflags; @@ -105497,7 +112288,7 @@ index 8a54cd2..92f1747 100644 newflags = vma->vm_flags & ~VM_LOCKED; if (flags & MCL_CURRENT) newflags |= VM_LOCKED; -@@ -814,8 +829,10 @@ SYSCALL_DEFINE1(mlockall, int, flags) +@@ -699,8 +714,10 @@ SYSCALL_DEFINE1(mlockall, int, flags) lock_limit >>= PAGE_SHIFT; ret = -ENOMEM; @@ -105523,7 +112314,7 @@ index 5f420f7..dd42fb1b 100644 .priority = IPC_CALLBACK_PRI, /* use lowest priority */ }; diff --git a/mm/mmap.c b/mm/mmap.c -index 9ec50a3..0476e2d 100644 +index bb50cac..6d50a9f 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -41,6 +41,7 @@ @@ -105865,20 +112656,15 @@ index 9ec50a3..0476e2d 100644 if (!may_expand_vm(mm, len >> PAGE_SHIFT)) { unsigned long nr_pages; -@@ -1551,11 +1696,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr, - - /* Clear old maps */ - error = -ENOMEM; --munmap_back: - if (find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent)) { +@@ -1555,6 +1700,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, + &rb_parent)) { if (do_munmap(mm, addr, len)) return -ENOMEM; -- goto munmap_back; + BUG_ON(find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent)); } /* -@@ -1586,6 +1730,16 @@ munmap_back: +@@ -1586,6 +1732,16 @@ unsigned long mmap_region(struct file *file, unsigned long addr, goto unacct_error; } @@ -105895,7 +112681,7 @@ index 9ec50a3..0476e2d 100644 vma->vm_mm = mm; vma->vm_start = addr; vma->vm_end = addr + len; -@@ -1616,6 +1770,13 @@ munmap_back: +@@ -1616,6 +1772,13 @@ unsigned long mmap_region(struct file *file, unsigned long addr, if (error) goto unmap_and_free_vma; @@ -105909,7 +112695,7 @@ index 9ec50a3..0476e2d 100644 /* Can addr have changed?? * * Answer: Yes, several device drivers can do it in their -@@ -1634,6 +1795,12 @@ munmap_back: +@@ -1634,6 +1797,12 @@ unsigned long mmap_region(struct file *file, unsigned long addr, } vma_link(mm, vma, prev, rb_link, rb_parent); @@ -105922,7 +112708,7 @@ index 9ec50a3..0476e2d 100644 /* Once vma denies write, undo our temporary denial count */ if (file) { if (vm_flags & VM_SHARED) -@@ -1646,6 +1813,7 @@ out: +@@ -1646,6 +1815,7 @@ out: perf_event_mmap(vma); vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); @@ -105930,7 +112716,7 @@ index 9ec50a3..0476e2d 100644 if (vm_flags & VM_LOCKED) { if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) || vma == get_gate_vma(current->mm))) -@@ -1683,6 +1851,12 @@ allow_write_and_free_vma: +@@ -1683,6 +1853,12 @@ allow_write_and_free_vma: if (vm_flags & VM_DENYWRITE) allow_write_access(file); free_vma: @@ -105943,7 +112729,7 @@ index 9ec50a3..0476e2d 100644 kmem_cache_free(vm_area_cachep, vma); unacct_error: if (charged) -@@ -1690,7 +1864,63 @@ unacct_error: +@@ -1690,7 +1866,63 @@ unacct_error: return error; } @@ -106008,7 +112794,7 @@ index 9ec50a3..0476e2d 100644 { /* * We implement the search by looking for an rbtree node that -@@ -1738,11 +1968,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info) +@@ -1738,11 +1970,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info) } } @@ -106039,7 +112825,7 @@ index 9ec50a3..0476e2d 100644 if (gap_end >= low_limit && gap_end - gap_start >= length) goto found; -@@ -1792,7 +2040,7 @@ found: +@@ -1792,7 +2042,7 @@ found: return gap_start; } @@ -106048,7 +112834,7 @@ index 9ec50a3..0476e2d 100644 { struct mm_struct *mm = current->mm; struct vm_area_struct *vma; -@@ -1846,6 +2094,24 @@ check_current: +@@ -1846,6 +2096,24 @@ check_current: gap_end = vma->vm_start; if (gap_end < low_limit) return -ENOMEM; @@ -106073,7 +112859,7 @@ index 9ec50a3..0476e2d 100644 if (gap_start <= high_limit && gap_end - gap_start >= length) goto found; -@@ -1909,6 +2175,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -1909,6 +2177,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, struct mm_struct *mm = current->mm; struct vm_area_struct *vma; struct vm_unmapped_area_info info; @@ -106081,7 +112867,7 @@ index 9ec50a3..0476e2d 100644 if (len > TASK_SIZE - mmap_min_addr) return -ENOMEM; -@@ -1916,11 +2183,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -1916,11 +2185,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, if (flags & MAP_FIXED) return addr; @@ -106098,7 +112884,7 @@ index 9ec50a3..0476e2d 100644 return addr; } -@@ -1929,6 +2200,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, +@@ -1929,6 +2202,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, info.low_limit = mm->mmap_base; info.high_limit = TASK_SIZE; info.align_mask = 0; @@ -106106,7 +112892,7 @@ index 9ec50a3..0476e2d 100644 return vm_unmapped_area(&info); } #endif -@@ -1947,6 +2219,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -1947,6 +2221,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, struct mm_struct *mm = current->mm; unsigned long addr = addr0; struct vm_unmapped_area_info info; @@ -106114,7 +112900,7 @@ index 9ec50a3..0476e2d 100644 /* requested length too big for entire address space */ if (len > TASK_SIZE - mmap_min_addr) -@@ -1955,12 +2228,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -1955,12 +2230,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, if (flags & MAP_FIXED) return addr; @@ -106132,7 +112918,7 @@ index 9ec50a3..0476e2d 100644 return addr; } -@@ -1969,6 +2246,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -1969,6 +2248,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, info.low_limit = max(PAGE_SIZE, mmap_min_addr); info.high_limit = mm->mmap_base; info.align_mask = 0; @@ -106140,7 +112926,7 @@ index 9ec50a3..0476e2d 100644 addr = vm_unmapped_area(&info); /* -@@ -1981,6 +2259,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, +@@ -1981,6 +2261,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, VM_BUG_ON(addr != -ENOMEM); info.flags = 0; info.low_limit = TASK_UNMAPPED_BASE; @@ -106153,7 +112939,7 @@ index 9ec50a3..0476e2d 100644 info.high_limit = TASK_SIZE; addr = vm_unmapped_area(&info); } -@@ -2081,6 +2365,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, +@@ -2081,6 +2367,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, return vma; } @@ -106182,25 +112968,25 @@ index 9ec50a3..0476e2d 100644 /* * Verify that the stack growth is acceptable and * update accounting. This is shared with both the -@@ -2098,8 +2404,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns +@@ -2098,8 +2406,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns /* Stack limit test */ actual_size = size; - if (size && (vma->vm_flags & (VM_GROWSUP | VM_GROWSDOWN))) - actual_size -= PAGE_SIZE; + gr_learn_resource(current, RLIMIT_STACK, actual_size, 1); - if (actual_size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur)) + if (actual_size > READ_ONCE(rlim[RLIMIT_STACK].rlim_cur)) return -ENOMEM; -@@ -2110,6 +2415,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns +@@ -2110,6 +2417,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 = READ_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur); limit >>= PAGE_SHIFT; + gr_learn_resource(current, RLIMIT_MEMLOCK, locked << PAGE_SHIFT, 1); if (locked > limit && !capable(CAP_IPC_LOCK)) return -ENOMEM; } -@@ -2139,37 +2445,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns +@@ -2139,37 +2447,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. */ @@ -106258,7 +113044,7 @@ index 9ec50a3..0476e2d 100644 unsigned long size, grow; size = address - vma->vm_start; -@@ -2204,6 +2521,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) +@@ -2204,6 +2523,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) } } } @@ -106267,7 +113053,7 @@ index 9ec50a3..0476e2d 100644 vma_unlock_anon_vma(vma); khugepaged_enter_vma_merge(vma, vma->vm_flags); validate_mm(vma->vm_mm); -@@ -2218,6 +2537,8 @@ int expand_downwards(struct vm_area_struct *vma, +@@ -2218,6 +2539,8 @@ int expand_downwards(struct vm_area_struct *vma, unsigned long address) { int error; @@ -106276,7 +113062,7 @@ index 9ec50a3..0476e2d 100644 /* * We must make sure the anon_vma is allocated -@@ -2231,6 +2552,15 @@ int expand_downwards(struct vm_area_struct *vma, +@@ -2231,6 +2554,15 @@ int expand_downwards(struct vm_area_struct *vma, if (error) return error; @@ -106292,7 +113078,7 @@ index 9ec50a3..0476e2d 100644 vma_lock_anon_vma(vma); /* -@@ -2240,9 +2570,17 @@ int expand_downwards(struct vm_area_struct *vma, +@@ -2240,9 +2572,17 @@ int expand_downwards(struct vm_area_struct *vma, */ /* Somebody else might have raced and expanded it already */ @@ -106311,7 +113097,7 @@ index 9ec50a3..0476e2d 100644 size = vma->vm_end - address; grow = (vma->vm_start - address) >> PAGE_SHIFT; -@@ -2267,13 +2605,27 @@ int expand_downwards(struct vm_area_struct *vma, +@@ -2267,13 +2607,27 @@ int expand_downwards(struct vm_area_struct *vma, vma->vm_pgoff -= grow; anon_vma_interval_tree_post_update_vma(vma); vma_gap_update(vma); @@ -106339,7 +113125,7 @@ index 9ec50a3..0476e2d 100644 khugepaged_enter_vma_merge(vma, vma->vm_flags); validate_mm(vma->vm_mm); return error; -@@ -2373,6 +2725,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -2373,6 +2727,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) do { long nrpages = vma_pages(vma); @@ -106353,7 +113139,7 @@ index 9ec50a3..0476e2d 100644 if (vma->vm_flags & VM_ACCOUNT) nr_accounted += nrpages; vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); -@@ -2417,6 +2776,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2417,6 +2778,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 { @@ -106370,7 +113156,7 @@ index 9ec50a3..0476e2d 100644 vma_rb_erase(vma, &mm->mm_rb); mm->map_count--; tail_vma = vma; -@@ -2444,14 +2813,33 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2444,14 +2815,33 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, struct vm_area_struct *new; int err = -ENOMEM; @@ -106404,7 +113190,7 @@ index 9ec50a3..0476e2d 100644 /* most fields are the same, copy all, and then fixup */ *new = *vma; -@@ -2464,6 +2852,22 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2464,6 +2854,22 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT); } @@ -106427,7 +113213,7 @@ index 9ec50a3..0476e2d 100644 err = vma_dup_policy(vma, new); if (err) goto out_free_vma; -@@ -2484,6 +2888,38 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2484,6 +2890,38 @@ 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); @@ -106466,7 +113252,7 @@ index 9ec50a3..0476e2d 100644 /* Success. */ if (!err) return 0; -@@ -2493,10 +2929,18 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2493,10 +2931,18 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, new->vm_ops->close(new); if (new->vm_file) fput(new->vm_file); @@ -106486,7 +113272,7 @@ index 9ec50a3..0476e2d 100644 kmem_cache_free(vm_area_cachep, new); out_err: return err; -@@ -2509,6 +2953,15 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2509,6 +2955,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) { @@ -106502,7 +113288,7 @@ index 9ec50a3..0476e2d 100644 if (mm->map_count >= sysctl_max_map_count) return -ENOMEM; -@@ -2520,11 +2973,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2520,11 +2975,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, * work. This now handles partial unmappings. * Jeremy Fitzhardinge */ @@ -106533,7 +113319,7 @@ index 9ec50a3..0476e2d 100644 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start) return -EINVAL; -@@ -2602,6 +3074,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) +@@ -2602,6 +3076,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); @@ -106542,7 +113328,7 @@ index 9ec50a3..0476e2d 100644 return 0; } -@@ -2610,6 +3084,13 @@ int vm_munmap(unsigned long start, size_t len) +@@ -2610,6 +3086,13 @@ int vm_munmap(unsigned long start, size_t len) int ret; struct mm_struct *mm = current->mm; @@ -106556,7 +113342,7 @@ index 9ec50a3..0476e2d 100644 down_write(&mm->mmap_sem); ret = do_munmap(mm, start, len); up_write(&mm->mmap_sem); -@@ -2656,6 +3137,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2656,6 +3139,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, down_write(&mm->mmap_sem); vma = find_vma(mm, start); @@ -106568,7 +113354,7 @@ index 9ec50a3..0476e2d 100644 if (!vma || !(vma->vm_flags & VM_SHARED)) goto out; -@@ -2692,16 +3178,6 @@ out: +@@ -2692,16 +3180,6 @@ out: return ret; } @@ -106585,7 +113371,7 @@ index 9ec50a3..0476e2d 100644 /* * this is really a simplified "do_mmap". it only handles * anonymous maps. eventually we may be able to do some -@@ -2715,6 +3191,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2715,6 +3193,7 @@ static 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; @@ -106593,7 +113379,7 @@ index 9ec50a3..0476e2d 100644 len = PAGE_ALIGN(len); if (!len) -@@ -2722,10 +3199,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2722,10 +3201,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; @@ -106618,15 +113404,10 @@ index 9ec50a3..0476e2d 100644 error = mlock_future_check(mm, mm->def_flags, len); if (error) return error; -@@ -2739,21 +3230,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) - /* - * Clear old maps. this also does some error checking for us - */ -- munmap_back: - if (find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent)) { +@@ -2743,16 +3236,17 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) + &rb_parent)) { if (do_munmap(mm, addr, len)) return -ENOMEM; -- goto munmap_back; + BUG_ON(find_vma_links(mm, addr, addr + len, &prev, &rb_link, &rb_parent)); } @@ -106643,7 +113424,7 @@ index 9ec50a3..0476e2d 100644 return -ENOMEM; /* Can we just expand an old private anonymous mapping? */ -@@ -2767,7 +3257,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2766,7 +3260,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) */ vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); if (!vma) { @@ -106652,7 +113433,7 @@ index 9ec50a3..0476e2d 100644 return -ENOMEM; } -@@ -2781,10 +3271,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2780,10 +3274,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) vma_link(mm, vma, prev, rb_link, rb_parent); out: perf_event_mmap(vma); @@ -106666,7 +113447,7 @@ index 9ec50a3..0476e2d 100644 return addr; } -@@ -2846,6 +3337,7 @@ void exit_mmap(struct mm_struct *mm) +@@ -2845,6 +3340,7 @@ void exit_mmap(struct mm_struct *mm) while (vma) { if (vma->vm_flags & VM_ACCOUNT) nr_accounted += vma_pages(vma); @@ -106674,7 +113455,7 @@ index 9ec50a3..0476e2d 100644 vma = remove_vma(vma); } vm_unacct_memory(nr_accounted); -@@ -2860,6 +3352,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -2859,6 +3355,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) struct vm_area_struct *prev; struct rb_node **rb_link, *rb_parent; @@ -106688,7 +113469,7 @@ index 9ec50a3..0476e2d 100644 /* * The vm_pgoff of a purely anonymous vma should be irrelevant * until its first write fault, when page's anon_vma and index -@@ -2883,7 +3382,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -2882,7 +3385,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) security_vm_enough_memory_mm(mm, vma_pages(vma))) return -ENOMEM; @@ -106710,7 +113491,7 @@ index 9ec50a3..0476e2d 100644 return 0; } -@@ -2902,6 +3415,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, +@@ -2901,6 +3418,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, struct rb_node **rb_link, *rb_parent; bool faulted_in_anon_vma = true; @@ -106719,7 +113500,7 @@ index 9ec50a3..0476e2d 100644 /* * If anonymous vma has not yet been faulted, update new pgoff * to match new location, to increase its chance of merging. -@@ -2966,6 +3481,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, +@@ -2965,6 +3484,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, return NULL; } @@ -106759,7 +113540,7 @@ index 9ec50a3..0476e2d 100644 /* * Return true if the calling process may expand its vm space by the passed * number of pages -@@ -2977,6 +3525,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages) +@@ -2976,6 +3528,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages) lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT; @@ -106767,7 +113548,7 @@ index 9ec50a3..0476e2d 100644 if (cur + npages > lim) return 0; return 1; -@@ -3059,6 +3608,22 @@ static struct vm_area_struct *__install_special_mapping( +@@ -3058,6 +3611,22 @@ static struct vm_area_struct *__install_special_mapping( vma->vm_start = addr; vma->vm_end = addr + len; @@ -106791,7 +113572,7 @@ index 9ec50a3..0476e2d 100644 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); diff --git a/mm/mprotect.c b/mm/mprotect.c -index 8858483..8145fa5 100644 +index 8858483..72f2464 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -24,10 +24,18 @@ @@ -106840,8 +113621,8 @@ index 8858483..8145fa5 100644 + +#ifdef CONFIG_SMP + wmb(); -+ cpus_clear(mm->context.cpu_user_cs_mask); -+ cpu_set(smp_processor_id(), mm->context.cpu_user_cs_mask); ++ cpumask_clear(&mm->context.cpu_user_cs_mask); ++ cpumask_set_cpu(smp_processor_id(), &mm->context.cpu_user_cs_mask); +#endif + + set_user_cs(mm->context.user_cs_base, mm->context.user_cs_limit, smp_processor_id()); @@ -107020,7 +113801,7 @@ index 8858483..8145fa5 100644 if (nstart < prev->vm_end) diff --git a/mm/mremap.c b/mm/mremap.c -index 2dc44b1..caa1819 100644 +index 034e2d3..81deca5 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -142,6 +142,12 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd, @@ -107038,17 +113819,17 @@ index 2dc44b1..caa1819 100644 } @@ -350,6 +356,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr, if (is_vm_hugetlb_page(vma)) - goto Einval; + return ERR_PTR(-EINVAL); +#ifdef CONFIG_PAX_SEGMEXEC + if (pax_find_mirror_vma(vma)) -+ goto Einval; ++ return ERR_PTR(-EINVAL); +#endif + /* We can't remap across vm area boundaries */ if (old_len > vma->vm_end - addr) - goto Efault; -@@ -405,20 +416,25 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len, + return ERR_PTR(-EFAULT); +@@ -396,20 +407,25 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len, unsigned long ret = -EINVAL; unsigned long charged = 0; unsigned long map_flags; @@ -107079,7 +113860,7 @@ index 2dc44b1..caa1819 100644 goto out; ret = do_munmap(mm, new_addr, new_len); -@@ -487,6 +503,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, +@@ -478,6 +494,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, unsigned long ret = -EINVAL; unsigned long charged = 0; bool locked = false; @@ -107087,7 +113868,7 @@ index 2dc44b1..caa1819 100644 if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) return ret; -@@ -508,6 +525,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, +@@ -499,6 +516,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, if (!new_len) return ret; @@ -107105,7 +113886,7 @@ index 2dc44b1..caa1819 100644 down_write(¤t->mm->mmap_sem); if (flags & MREMAP_FIXED) { -@@ -558,6 +586,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, +@@ -549,6 +577,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, new_addr = addr; } ret = addr; @@ -107113,7 +113894,7 @@ index 2dc44b1..caa1819 100644 goto out; } } -@@ -581,7 +610,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, +@@ -572,7 +601,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, goto out; } @@ -107127,7 +113908,7 @@ index 2dc44b1..caa1819 100644 out: if (ret & ~PAGE_MASK) diff --git a/mm/nommu.c b/mm/nommu.c -index 3fba2dc..fdad748 100644 +index e544508..b56ce7a 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -72,7 +72,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT; @@ -107194,7 +113975,7 @@ index 3fba2dc..fdad748 100644 struct mm_struct *mm; diff --git a/mm/page-writeback.c b/mm/page-writeback.c -index ad05f2f..cee723a 100644 +index eb59f7e..b23a2a8 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -664,7 +664,7 @@ static long long pos_ratio_polynom(unsigned long setpoint, @@ -107207,7 +113988,7 @@ index ad05f2f..cee723a 100644 unsigned long bg_thresh, unsigned long dirty, diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 40e2942..0eb29a2 100644 +index ebffa0e..c61160a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -61,6 +61,7 @@ @@ -107312,7 +114093,25 @@ index 40e2942..0eb29a2 100644 if (order && (gfp_flags & __GFP_COMP)) prep_compound_page(page, order); -@@ -1699,7 +1739,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone, +@@ -1649,6 +1689,8 @@ int __isolate_free_page(struct page *page, unsigned int order) + zone->free_area[order].nr_free--; + rmv_page_order(page); + ++ set_page_owner(page, order, 0); ++ + /* Set the pageblock if the isolated page is at least a pageblock */ + if (order >= pageblock_order - 1) { + struct page *endpage = page + (1 << order) - 1; +@@ -1660,7 +1702,7 @@ int __isolate_free_page(struct page *page, unsigned int order) + } + } + +- set_page_owner(page, order, 0); ++ + return 1UL << order; + } + +@@ -1749,7 +1791,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone, } __mod_zone_page_state(zone, NR_ALLOC_BATCH, -(1 << order)); @@ -107321,7 +114120,7 @@ index 40e2942..0eb29a2 100644 !test_bit(ZONE_FAIR_DEPLETED, &zone->flags)) set_bit(ZONE_FAIR_DEPLETED, &zone->flags); -@@ -2018,7 +2058,7 @@ static void reset_alloc_batches(struct zone *preferred_zone) +@@ -2068,7 +2110,7 @@ static void reset_alloc_batches(struct zone *preferred_zone) do { mod_zone_page_state(zone, NR_ALLOC_BATCH, high_wmark_pages(zone) - low_wmark_pages(zone) - @@ -107330,7 +114129,7 @@ index 40e2942..0eb29a2 100644 clear_bit(ZONE_FAIR_DEPLETED, &zone->flags); } while (zone++ != preferred_zone); } -@@ -5738,7 +5778,7 @@ static void __setup_per_zone_wmarks(void) +@@ -5781,7 +5823,7 @@ static void __setup_per_zone_wmarks(void) __mod_zone_page_state(zone, NR_ALLOC_BATCH, high_wmark_pages(zone) - low_wmark_pages(zone) - @@ -107340,7 +114139,7 @@ index 40e2942..0eb29a2 100644 setup_zone_migrate_reserve(zone); spin_unlock_irqrestore(&zone->lock, flags); diff --git a/mm/percpu.c b/mm/percpu.c -index 73c97a5..508ee25 100644 +index 2dd7448..9bb6305 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -131,7 +131,7 @@ static unsigned int pcpu_low_unit_cpu __read_mostly; @@ -107353,7 +114152,7 @@ index 73c97a5..508ee25 100644 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 b159769..d07037f 100644 +index e88d071..d80e01a 100644 --- a/mm/process_vm_access.c +++ b/mm/process_vm_access.c @@ -13,6 +13,7 @@ @@ -107404,7 +114203,7 @@ index b159769..d07037f 100644 if (!mm || IS_ERR(mm)) { rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH; diff --git a/mm/rmap.c b/mm/rmap.c -index c161a14..8a069bb 100644 +index 24dd3f9..4eb43f4 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -166,6 +166,10 @@ int anon_vma_prepare(struct vm_area_struct *vma) @@ -107508,12 +114307,12 @@ index c161a14..8a069bb 100644 /* diff --git a/mm/shmem.c b/mm/shmem.c -index cf2d0ca..ec06b8b 100644 +index 47d536e..8321b4e 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -33,7 +33,7 @@ #include - #include + #include -static struct vfsmount *shm_mnt; +struct vfsmount *shm_mnt; @@ -107568,7 +114367,7 @@ index cf2d0ca..ec06b8b 100644 return -ENOMEM; diff --git a/mm/slab.c b/mm/slab.c -index c4b89ea..20990be 100644 +index 7eb38dd..a5172b1 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -314,10 +314,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) @@ -107606,7 +114405,7 @@ index c4b89ea..20990be 100644 { u32 offset = (obj - page->s_mem); return reciprocal_divide(offset, cache->reciprocal_buffer_size); -@@ -1438,7 +1442,7 @@ void __init kmem_cache_init(void) +@@ -1452,7 +1456,7 @@ void __init kmem_cache_init(void) * structures first. Without this, further allocations will bug. */ kmalloc_caches[INDEX_NODE] = create_kmalloc_cache("kmalloc-node", @@ -107615,7 +114414,7 @@ index c4b89ea..20990be 100644 slab_state = PARTIAL_NODE; slab_early_init = 0; -@@ -2059,7 +2063,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, +@@ -2073,7 +2077,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, cachep = find_mergeable(size, align, flags, name, ctor); if (cachep) { @@ -107624,7 +114423,7 @@ index c4b89ea..20990be 100644 /* * Adjust the object sizes so that we clear -@@ -3357,6 +3361,20 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp, +@@ -3371,6 +3375,20 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp, struct array_cache *ac = cpu_cache_get(cachep); check_irq_off(); @@ -107645,7 +114444,7 @@ index c4b89ea..20990be 100644 kmemleak_free_recursive(objp, cachep->flags); objp = cache_free_debugcheck(cachep, objp, caller); -@@ -3469,7 +3487,7 @@ __do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller) +@@ -3483,7 +3501,7 @@ __do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller) return kmem_cache_alloc_node_trace(cachep, flags, node, size); } @@ -107654,7 +114453,7 @@ index c4b89ea..20990be 100644 { return __do_kmalloc_node(size, flags, node, _RET_IP_); } -@@ -3489,7 +3507,7 @@ EXPORT_SYMBOL(__kmalloc_node_track_caller); +@@ -3503,7 +3521,7 @@ EXPORT_SYMBOL(__kmalloc_node_track_caller); * @flags: the type of memory to allocate (see kmalloc). * @caller: function caller for debug tracking of the caller */ @@ -107663,7 +114462,7 @@ index c4b89ea..20990be 100644 unsigned long caller) { struct kmem_cache *cachep; -@@ -3562,6 +3580,7 @@ void kfree(const void *objp) +@@ -3576,6 +3594,7 @@ void kfree(const void *objp) if (unlikely(ZERO_OR_NULL_PTR(objp))) return; @@ -107671,7 +114470,7 @@ index c4b89ea..20990be 100644 local_irq_save(flags); kfree_debugcheck(objp); c = virt_to_cache(objp); -@@ -3981,14 +4000,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep) +@@ -3995,14 +4014,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep) } /* cpu stats */ { @@ -107698,7 +114497,7 @@ index c4b89ea..20990be 100644 #endif } -@@ -4196,13 +4223,69 @@ static const struct file_operations proc_slabstats_operations = { +@@ -4210,13 +4237,69 @@ static const struct file_operations proc_slabstats_operations = { static int __init slab_proc_init(void) { #ifdef CONFIG_DEBUG_SLAB_LEAK @@ -108034,7 +114833,7 @@ index 999bb34..9843aea 100644 { void *ret; diff --git a/mm/slob.c b/mm/slob.c -index 94a7fed..cf3fb1a 100644 +index 4765f65..fafa9d5 100644 --- a/mm/slob.c +++ b/mm/slob.c @@ -157,7 +157,7 @@ static void set_slob(slob_t *s, slobidx_t size, slob_t *next) @@ -108332,7 +115131,7 @@ index 94a7fed..cf3fb1a 100644 @@ -534,23 +636,33 @@ int __kmem_cache_create(struct kmem_cache *c, unsigned long flags) - void *slob_alloc_node(struct kmem_cache *c, gfp_t flags, int node) + static void *slob_alloc_node(struct kmem_cache *c, gfp_t flags, int node) { - void *b; + void *b = NULL; @@ -108366,7 +115165,7 @@ index 94a7fed..cf3fb1a 100644 if (b && c->ctor) c->ctor(b); -@@ -567,7 +679,7 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags) +@@ -566,7 +678,7 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags) EXPORT_SYMBOL(kmem_cache_alloc); #ifdef CONFIG_NUMA @@ -108375,7 +115174,7 @@ index 94a7fed..cf3fb1a 100644 { return __do_kmalloc_node(size, gfp, node, _RET_IP_); } -@@ -580,12 +692,16 @@ void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t gfp, int node) +@@ -579,12 +691,16 @@ void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t gfp, int node) EXPORT_SYMBOL(kmem_cache_alloc_node); #endif @@ -108396,7 +115195,7 @@ index 94a7fed..cf3fb1a 100644 } static void kmem_rcu_free(struct rcu_head *head) -@@ -593,22 +709,36 @@ static void kmem_rcu_free(struct rcu_head *head) +@@ -592,22 +708,36 @@ static void kmem_rcu_free(struct rcu_head *head) struct slob_rcu *slob_rcu = (struct slob_rcu *)head; void *b = (void *)slob_rcu - (slob_rcu->size - sizeof(struct slob_rcu)); @@ -108438,7 +115237,7 @@ index 94a7fed..cf3fb1a 100644 EXPORT_SYMBOL(kmem_cache_free); diff --git a/mm/slub.c b/mm/slub.c -index 82c4737..55c316a 100644 +index 54c0876..31383a1 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -198,7 +198,7 @@ struct track { @@ -108459,7 +115258,7 @@ index 82c4737..55c316a 100644 s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid); #ifdef CONFIG_STACKTRACE { -@@ -2709,6 +2709,14 @@ static __always_inline void slab_free(struct kmem_cache *s, +@@ -2707,6 +2707,14 @@ static __always_inline void slab_free(struct kmem_cache *s, slab_free_hook(s, x); @@ -108474,7 +115273,7 @@ index 82c4737..55c316a 100644 redo: /* * Determine the currently cpus per cpu slab. -@@ -3050,6 +3058,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) +@@ -3048,6 +3056,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) s->inuse = size; if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) || @@ -108484,7 +115283,7 @@ index 82c4737..55c316a 100644 s->ctor)) { /* * Relocate free pointer after the object if it is not -@@ -3304,7 +3315,7 @@ static int __init setup_slub_min_objects(char *str) +@@ -3302,7 +3313,7 @@ static int __init setup_slub_min_objects(char *str) __setup("slub_min_objects=", setup_slub_min_objects); @@ -108493,7 +115292,7 @@ index 82c4737..55c316a 100644 { struct kmem_cache *s; void *ret; -@@ -3342,7 +3353,7 @@ static void *kmalloc_large_node(size_t size, gfp_t flags, int node) +@@ -3340,7 +3351,7 @@ static void *kmalloc_large_node(size_t size, gfp_t flags, int node) return ptr; } @@ -108502,7 +115301,7 @@ index 82c4737..55c316a 100644 { struct kmem_cache *s; void *ret; -@@ -3390,6 +3401,59 @@ static size_t __ksize(const void *object) +@@ -3388,6 +3399,59 @@ static size_t __ksize(const void *object) return slab_ksize(page->slab_cache); } @@ -108562,7 +115361,7 @@ index 82c4737..55c316a 100644 size_t ksize(const void *object) { size_t size = __ksize(object); -@@ -3410,6 +3474,7 @@ void kfree(const void *x) +@@ -3408,6 +3472,7 @@ void kfree(const void *x) if (unlikely(ZERO_OR_NULL_PTR(x))) return; @@ -108570,7 +115369,7 @@ index 82c4737..55c316a 100644 page = virt_to_head_page(x); if (unlikely(!PageSlab(page))) { BUG_ON(!PageCompound(page)); -@@ -3726,7 +3791,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, +@@ -3724,7 +3789,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, s = find_mergeable(size, align, flags, name, ctor); if (s) { @@ -108579,7 +115378,7 @@ index 82c4737..55c316a 100644 /* * Adjust the object sizes so that we clear -@@ -3742,7 +3807,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, +@@ -3740,7 +3805,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align, } if (sysfs_slab_alias(s, name)) { @@ -108588,7 +115387,7 @@ index 82c4737..55c316a 100644 s = NULL; } } -@@ -3859,7 +3924,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, +@@ -3857,7 +3922,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, } #endif @@ -108597,7 +115396,7 @@ index 82c4737..55c316a 100644 static int count_inuse(struct page *page) { return page->inuse; -@@ -4140,7 +4205,11 @@ static int list_locations(struct kmem_cache *s, char *buf, +@@ -4138,7 +4203,11 @@ static int list_locations(struct kmem_cache *s, char *buf, len += sprintf(buf + len, "%7ld ", l->count); if (l->addr) @@ -108609,7 +115408,7 @@ index 82c4737..55c316a 100644 else len += sprintf(buf + len, ""); -@@ -4238,12 +4307,12 @@ static void __init resiliency_test(void) +@@ -4236,12 +4305,12 @@ static void __init resiliency_test(void) validate_slab_cache(kmalloc_caches[9]); } #else @@ -108624,7 +115423,7 @@ index 82c4737..55c316a 100644 enum slab_stat_type { SL_ALL, /* All slabs */ SL_PARTIAL, /* Only partially allocated slabs */ -@@ -4480,13 +4549,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf) +@@ -4478,13 +4547,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf) { if (!s->ctor) return 0; @@ -108643,7 +115442,7 @@ index 82c4737..55c316a 100644 } SLAB_ATTR_RO(aliases); -@@ -4574,6 +4647,22 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf) +@@ -4572,6 +4645,22 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf) SLAB_ATTR_RO(cache_dma); #endif @@ -108666,7 +115465,7 @@ index 82c4737..55c316a 100644 static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf) { return sprintf(buf, "%d\n", !!(s->flags & SLAB_DESTROY_BY_RCU)); -@@ -4629,7 +4718,7 @@ static ssize_t trace_store(struct kmem_cache *s, const char *buf, +@@ -4627,7 +4716,7 @@ static ssize_t trace_store(struct kmem_cache *s, const char *buf, * as well as cause other issues like converting a mergeable * cache into an umergeable one. */ @@ -108675,7 +115474,7 @@ index 82c4737..55c316a 100644 return -EINVAL; s->flags &= ~SLAB_TRACE; -@@ -4749,7 +4838,7 @@ static ssize_t failslab_show(struct kmem_cache *s, char *buf) +@@ -4747,7 +4836,7 @@ static ssize_t failslab_show(struct kmem_cache *s, char *buf) static ssize_t failslab_store(struct kmem_cache *s, const char *buf, size_t length) { @@ -108684,7 +115483,7 @@ index 82c4737..55c316a 100644 return -EINVAL; s->flags &= ~SLAB_FAILSLAB; -@@ -4916,6 +5005,12 @@ static struct attribute *slab_attrs[] = { +@@ -4914,6 +5003,12 @@ static struct attribute *slab_attrs[] = { #ifdef CONFIG_ZONE_DMA &cache_dma_attr.attr, #endif @@ -108697,7 +115496,7 @@ index 82c4737..55c316a 100644 #ifdef CONFIG_NUMA &remote_node_defrag_ratio_attr.attr, #endif -@@ -5157,6 +5252,7 @@ static char *create_unique_id(struct kmem_cache *s) +@@ -5155,6 +5250,7 @@ static char *create_unique_id(struct kmem_cache *s) return name; } @@ -108705,7 +115504,7 @@ index 82c4737..55c316a 100644 static int sysfs_slab_add(struct kmem_cache *s) { int err; -@@ -5230,6 +5326,7 @@ void sysfs_slab_remove(struct kmem_cache *s) +@@ -5228,6 +5324,7 @@ void sysfs_slab_remove(struct kmem_cache *s) kobject_del(&s->kobj); kobject_put(&s->kobj); } @@ -108713,7 +115512,7 @@ index 82c4737..55c316a 100644 /* * Need to buffer aliases during bootup until sysfs becomes -@@ -5243,6 +5340,7 @@ struct saved_alias { +@@ -5241,6 +5338,7 @@ struct saved_alias { static struct saved_alias *alias_list; @@ -108721,7 +115520,7 @@ index 82c4737..55c316a 100644 static int sysfs_slab_alias(struct kmem_cache *s, const char *name) { struct saved_alias *al; -@@ -5265,6 +5363,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name) +@@ -5263,6 +5361,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name) alias_list = al; return 0; } @@ -108765,20 +115564,12 @@ index d1b48b6..6e8590e 100644 } } diff --git a/mm/swap.c b/mm/swap.c -index cd3a5e6..40c0c8f 100644 +index a7251a8..ac754a9 100644 --- a/mm/swap.c +++ b/mm/swap.c -@@ -31,6 +31,7 @@ - #include - #include - #include -+#include - - #include "internal.h" - -@@ -77,6 +78,8 @@ static void __put_compound_page(struct page *page) - - __page_cache_release(page); +@@ -85,6 +85,8 @@ static void __put_compound_page(struct page *page) + if (!PageHuge(page)) + __page_cache_release(page); dtor = get_compound_page_dtor(page); + if (!PageHuge(page)) + BUG_ON(dtor != free_compound_page); @@ -108786,7 +115577,7 @@ index cd3a5e6..40c0c8f 100644 } diff --git a/mm/swapfile.c b/mm/swapfile.c -index 63f55cc..31874e6 100644 +index a7e7210..b286e7d 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -84,7 +84,7 @@ static DEFINE_MUTEX(swapon_mutex); @@ -108837,7 +115628,7 @@ index 63f55cc..31874e6 100644 if (S_ISREG(inode->i_mode)) diff --git a/mm/util.c b/mm/util.c -index 3981ae9..28b585b 100644 +index 68ff8a5..40c7a70 100644 --- a/mm/util.c +++ b/mm/util.c @@ -233,6 +233,12 @@ struct task_struct *task_of_stack(struct task_struct *task, @@ -108853,7 +115644,7 @@ index 3981ae9..28b585b 100644 mm->get_unmapped_area = arch_get_unmapped_area; } #endif -@@ -403,6 +409,9 @@ int get_cmdline(struct task_struct *task, char *buffer, int buflen) +@@ -434,6 +440,9 @@ int get_cmdline(struct task_struct *task, char *buffer, int buflen) if (!mm->arg_end) goto out_mm; /* Shh! No looking before we're done */ @@ -108864,10 +115655,10 @@ index 3981ae9..28b585b 100644 if (len > buflen) diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index 49abccf..7bd1931 100644 +index 2faaa29..9744185 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c -@@ -39,20 +39,65 @@ struct vfree_deferred { +@@ -40,20 +40,65 @@ struct vfree_deferred { struct work_struct wq; }; static DEFINE_PER_CPU(struct vfree_deferred, vfree_deferred); @@ -108936,7 +115727,7 @@ index 49abccf..7bd1931 100644 /*** Page table manipulation functions ***/ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) -@@ -61,8 +106,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) +@@ -62,8 +107,19 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) pte = pte_offset_kernel(pmd, addr); do { @@ -108958,7 +115749,7 @@ index 49abccf..7bd1931 100644 } while (pte++, addr += PAGE_SIZE, addr != end); } -@@ -122,16 +178,29 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, +@@ -127,16 +183,29 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, pte = pte_alloc_kernel(pmd, addr); if (!pte) return -ENOMEM; @@ -108990,7 +115781,7 @@ index 49abccf..7bd1931 100644 return 0; } -@@ -141,7 +210,7 @@ static int vmap_pmd_range(pud_t *pud, unsigned long addr, +@@ -146,7 +215,7 @@ static int vmap_pmd_range(pud_t *pud, unsigned long addr, pmd_t *pmd; unsigned long next; @@ -108999,7 +115790,7 @@ index 49abccf..7bd1931 100644 if (!pmd) return -ENOMEM; do { -@@ -158,7 +227,7 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr, +@@ -163,7 +232,7 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr, pud_t *pud; unsigned long next; @@ -109008,7 +115799,7 @@ index 49abccf..7bd1931 100644 if (!pud) return -ENOMEM; do { -@@ -218,6 +287,12 @@ int is_vmalloc_or_module_addr(const void *x) +@@ -223,6 +292,12 @@ int is_vmalloc_or_module_addr(const void *x) if (addr >= MODULES_VADDR && addr < MODULES_END) return 1; #endif @@ -109021,7 +115812,7 @@ index 49abccf..7bd1931 100644 return is_vmalloc_addr(x); } -@@ -238,8 +313,14 @@ struct page *vmalloc_to_page(const void *vmalloc_addr) +@@ -243,8 +318,14 @@ struct page *vmalloc_to_page(const void *vmalloc_addr) if (!pgd_none(*pgd)) { pud_t *pud = pud_offset(pgd, addr); @@ -109036,7 +115827,7 @@ index 49abccf..7bd1931 100644 if (!pmd_none(*pmd)) { pte_t *ptep, pte; -@@ -341,7 +422,7 @@ static void purge_vmap_area_lazy(void); +@@ -346,7 +427,7 @@ static void purge_vmap_area_lazy(void); * Allocate a region of KVA of the specified size and alignment, within the * vstart and vend. */ @@ -109045,7 +115836,7 @@ index 49abccf..7bd1931 100644 unsigned long align, unsigned long vstart, unsigned long vend, int node, gfp_t gfp_mask) -@@ -1182,13 +1263,27 @@ void __init vmalloc_init(void) +@@ -1202,13 +1283,27 @@ void __init vmalloc_init(void) for_each_possible_cpu(i) { struct vmap_block_queue *vbq; struct vfree_deferred *p; @@ -109074,7 +115865,7 @@ index 49abccf..7bd1931 100644 } /* Import existing vmlist entries. */ -@@ -1313,6 +1408,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, +@@ -1333,6 +1428,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, struct vm_struct *area; BUG_ON(in_interrupt()); @@ -109089,9 +115880,9 @@ index 49abccf..7bd1931 100644 +#endif + if (flags & VM_IOREMAP) - align = 1ul << clamp(fls(size), PAGE_SHIFT, IOREMAP_MAX_ORDER); - -@@ -1510,13 +1615,36 @@ EXPORT_SYMBOL(vfree); + align = 1ul << clamp_t(int, fls_long(size), + PAGE_SHIFT, IOREMAP_MAX_ORDER); +@@ -1531,13 +1636,36 @@ EXPORT_SYMBOL(vfree); */ void vunmap(const void *addr) { @@ -109131,7 +115922,7 @@ index 49abccf..7bd1931 100644 /** * vmap - map an array of pages into virtually contiguous space * @pages: array of page pointers -@@ -1537,6 +1665,11 @@ void *vmap(struct page **pages, unsigned int count, +@@ -1558,6 +1686,11 @@ void *vmap(struct page **pages, unsigned int count, if (count > totalram_pages) return NULL; @@ -109143,7 +115934,7 @@ index 49abccf..7bd1931 100644 area = get_vm_area_caller((count << PAGE_SHIFT), flags, __builtin_return_address(0)); if (!area) -@@ -1641,6 +1774,14 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align, +@@ -1662,6 +1795,14 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align, if (!size || (size >> PAGE_SHIFT) > totalram_pages) goto fail; @@ -109158,7 +115949,7 @@ index 49abccf..7bd1931 100644 area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED | vm_flags, start, end, node, gfp_mask, caller); if (!area) -@@ -1817,10 +1958,9 @@ EXPORT_SYMBOL(vzalloc_node); +@@ -1838,10 +1979,9 @@ EXPORT_SYMBOL(vzalloc_node); * For tight control over page level allocator and protection flags * use __vmalloc() instead. */ @@ -109170,7 +115961,7 @@ index 49abccf..7bd1931 100644 NUMA_NO_NODE, __builtin_return_address(0)); } -@@ -2127,6 +2267,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr, +@@ -2148,6 +2288,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr, { struct vm_struct *area; @@ -109179,7 +115970,7 @@ index 49abccf..7bd1931 100644 size = PAGE_ALIGN(size); if (!PAGE_ALIGNED(uaddr) || !PAGE_ALIGNED(kaddr)) -@@ -2609,7 +2751,11 @@ static int s_show(struct seq_file *m, void *p) +@@ -2630,7 +2772,11 @@ static int s_show(struct seq_file *m, void *p) v->addr, v->addr + v->size, v->size); if (v->caller) @@ -109296,10 +116087,10 @@ index 4f5cd97..9fb715a 100644 return 0; } diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c -index 64c6bed..b79a5de 100644 +index 59555f0..fd7ade9 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c -@@ -481,7 +481,7 @@ out: +@@ -491,7 +491,7 @@ out: return NOTIFY_DONE; } @@ -109308,7 +116099,7 @@ index 64c6bed..b79a5de 100644 .notifier_call = vlan_device_event, }; -@@ -556,8 +556,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg) +@@ -566,8 +566,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg) err = -EPERM; if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) break; @@ -109331,37 +116122,6 @@ index c92b52f..006c052 100644 .kind = "vlan", .maxtype = IFLA_VLAN_MAX, .policy = vlan_policy, -diff --git a/net/9p/client.c b/net/9p/client.c -index e86a9bea..e91f70e 100644 ---- a/net/9p/client.c -+++ b/net/9p/client.c -@@ -596,7 +596,7 @@ static int p9_check_zc_errors(struct p9_client *c, struct p9_req_t *req, - len - inline_len); - } else { - err = copy_from_user(ename + inline_len, -- uidata, len - inline_len); -+ (char __force_user *)uidata, len - inline_len); - if (err) { - err = -EFAULT; - goto out_err; -@@ -1570,7 +1570,7 @@ p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset, - kernel_buf = 1; - indata = data; - } else -- indata = (__force char *)udata; -+ indata = (__force_kernel char *)udata; - /* - * response header len is 11 - * PDU Header(7) + IO Size (4) -@@ -1645,7 +1645,7 @@ p9_client_write(struct p9_fid *fid, char *data, const char __user *udata, - kernel_buf = 1; - odata = data; - } else -- odata = (char *)udata; -+ odata = (char __force_kernel *)udata; - req = p9_client_zc_rpc(clnt, P9_TWRITE, NULL, odata, 0, rsize, - P9_ZC_HDR_SZ, kernel_buf, "dqd", - fid->fid, offset, rsize); diff --git a/net/9p/mod.c b/net/9p/mod.c index 6ab36ae..6f1841b 100644 --- a/net/9p/mod.c @@ -109385,7 +116145,7 @@ index 6ab36ae..6f1841b 100644 } EXPORT_SYMBOL(v9fs_unregister_trans); diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c -index 80d08f6..de63fd1 100644 +index bced8c0..ef253b7 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c @@ -428,7 +428,7 @@ static int p9_fd_write(struct p9_client *client, void *v, int len) @@ -109451,7 +116211,7 @@ index 876fbe8..8bbea9f 100644 #undef __HANDLE_ITEM } diff --git a/net/atm/lec.c b/net/atm/lec.c -index 4b98f89..5a2f6cb 100644 +index cd3b379..977a3c9 100644 --- a/net/atm/lec.c +++ b/net/atm/lec.c @@ -111,9 +111,9 @@ static inline void lec_arp_put(struct lec_arp_table *entry) @@ -109575,6 +116335,18 @@ index 0447d5d..3cf4728 100644 __AAL_STAT_ITEMS #undef __HANDLE_ITEM } +diff --git a/net/ax25/ax25_subr.c b/net/ax25/ax25_subr.c +index 1997538..3b78e84 100644 +--- a/net/ax25/ax25_subr.c ++++ b/net/ax25/ax25_subr.c +@@ -264,6 +264,7 @@ void ax25_disconnect(ax25_cb *ax25, int reason) + { + ax25_clear_queues(ax25); + ++ ax25_stop_heartbeat(ax25); + ax25_stop_t1timer(ax25); + ax25_stop_t2timer(ax25); + ax25_stop_t3timer(ax25); diff --git a/net/ax25/sysctl_net_ax25.c b/net/ax25/sysctl_net_ax25.c index 919a5ce..cc6b444 100644 --- a/net/ax25/sysctl_net_ax25.c @@ -109707,10 +116479,10 @@ index 9398c3f..0e79657 100644 atomic_t batman_queue_left; char num_ifaces; diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c -index 1d65c5b..43e55fd 100644 +index 56f9edb..0a13cd1 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c -@@ -1042,7 +1042,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname, +@@ -1241,7 +1241,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname, uf.event_mask[1] = *((u32 *) f->event_mask + 1); } @@ -109720,10 +116492,10 @@ index 1d65c5b..43e55fd 100644 err = -EFAULT; break; diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c -index 6ba33f9..4afc26f 100644 +index dad4197..253bbdf 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c -@@ -3534,8 +3534,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len, +@@ -3541,8 +3541,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len, break; case L2CAP_CONF_RFC: @@ -109737,7 +116509,7 @@ index 6ba33f9..4afc26f 100644 if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) && rfc.mode != chan->mode) diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c -index 60694f0..32623ed 100644 +index a7278f0..3443626 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c @@ -633,7 +633,8 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, @@ -109788,7 +116560,7 @@ index 60694f0..32623ed 100644 err = -EFAULT; break; diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c -index 3c6d2c8..6afc970 100644 +index 825e8fb..efc24a4 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c @@ -686,7 +686,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c @@ -109831,11 +116603,31 @@ index 8e385a0..a5bdd8e 100644 tty_port_close(&dev->port, tty, filp); } +diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c +index e29ad70b..cc00066 100644 +--- a/net/bridge/br_mdb.c ++++ b/net/bridge/br_mdb.c +@@ -371,6 +371,7 @@ static int __br_mdb_add(struct net *net, struct net_bridge *br, + if (!p || p->br != br || p->state == BR_STATE_DISABLED) + return -EINVAL; + ++ memset(&ip, 0, sizeof(ip)); + ip.proto = entry->addr.proto; + if (ip.proto == htons(ETH_P_IP)) + ip.u.ip4 = entry->addr.u.ip4; +@@ -417,6 +418,7 @@ static int __br_mdb_del(struct net_bridge *br, struct br_mdb_entry *entry) + if (!netif_running(br->dev) || br->multicast_disabled) + return -EINVAL; + ++ memset(&ip, 0, sizeof(ip)); + ip.proto = entry->addr.proto; + if (ip.proto == htons(ETH_P_IP)) { + if (timer_pending(&br->ip4_other_query.timer)) diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c -index 4fbcea0..69a6786 100644 +index 4b5c236..0627070 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c -@@ -726,7 +726,7 @@ static struct rtnl_af_ops br_af_ops __read_mostly = { +@@ -841,7 +841,7 @@ static struct rtnl_af_ops br_af_ops __read_mostly = { .get_link_af_size = br_get_link_af_size, }; @@ -109932,10 +116724,10 @@ index 67a4a36..8d28068 100644 .priv_size = sizeof(struct chnl_net), .setup = ipcaif_net_setup, diff --git a/net/can/af_can.c b/net/can/af_can.c -index 32d710e..93bcf05 100644 +index 689c818..6323851 100644 --- a/net/can/af_can.c +++ b/net/can/af_can.c -@@ -884,7 +884,7 @@ static const struct net_proto_family can_family_ops = { +@@ -888,7 +888,7 @@ static const struct net_proto_family can_family_ops = { }; /* notifier block for netdevice event */ @@ -109945,10 +116737,10 @@ index 32d710e..93bcf05 100644 }; diff --git a/net/can/bcm.c b/net/can/bcm.c -index ee9ffd9..dfdf3d4 100644 +index b523453..f96e639 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c -@@ -1619,7 +1619,7 @@ static int __init bcm_module_init(void) +@@ -1618,7 +1618,7 @@ static int __init bcm_module_init(void) } /* create /proc/net/can-bcm directory */ @@ -110002,7 +116794,7 @@ index 1a19b98..df2b4ec 100644 if (!can_dir) { printk(KERN_INFO "can: failed to create /proc/net/can . " diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c -index a9f4ae4..ee19b92 100644 +index 967080a..5e75f04 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -188,7 +188,7 @@ static void con_fault(struct ceph_connection *con); @@ -110024,10 +116816,10 @@ index a9f4ae4..ee19b92 100644 switch (ss->ss_family) { diff --git a/net/compat.c b/net/compat.c -index f7bd286..76ea56a 100644 +index 5cfd26a..7e43828 100644 --- a/net/compat.c +++ b/net/compat.c -@@ -100,20 +100,20 @@ ssize_t get_compat_msghdr(struct msghdr *kmsg, +@@ -98,20 +98,20 @@ int get_compat_msghdr(struct msghdr *kmsg, #define CMSG_COMPAT_FIRSTHDR(msg) \ (((msg)->msg_controllen) >= sizeof(struct compat_cmsghdr) ? \ @@ -110051,7 +116843,7 @@ index f7bd286..76ea56a 100644 msg->msg_controllen) return NULL; return (struct compat_cmsghdr __user *)ptr; -@@ -203,7 +203,7 @@ Efault: +@@ -201,7 +201,7 @@ Efault: int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *data) { @@ -110060,7 +116852,7 @@ index f7bd286..76ea56a 100644 struct compat_cmsghdr cmhdr; struct compat_timeval ctv; struct compat_timespec cts[3]; -@@ -259,7 +259,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat +@@ -257,7 +257,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) { @@ -110069,7 +116861,7 @@ index f7bd286..76ea56a 100644 int fdmax = (kmsg->msg_controllen - sizeof(struct compat_cmsghdr)) / sizeof(int); int fdnum = scm->fp->count; struct file **fp = scm->fp->fp; -@@ -347,7 +347,7 @@ static int do_set_sock_timeout(struct socket *sock, int level, +@@ -345,7 +345,7 @@ static int do_set_sock_timeout(struct socket *sock, int level, return -EFAULT; old_fs = get_fs(); set_fs(KERNEL_DS); @@ -110078,7 +116870,7 @@ index f7bd286..76ea56a 100644 set_fs(old_fs); return err; -@@ -408,7 +408,7 @@ static int do_get_sock_timeout(struct socket *sock, int level, int optname, +@@ -406,7 +406,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); @@ -110087,7 +116879,7 @@ index f7bd286..76ea56a 100644 set_fs(old_fs); if (!err) { -@@ -551,7 +551,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, +@@ -549,7 +549,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, case MCAST_JOIN_GROUP: case MCAST_LEAVE_GROUP: { @@ -110096,7 +116888,7 @@ index f7bd286..76ea56a 100644 struct group_req __user *kgr = compat_alloc_user_space(sizeof(struct group_req)); u32 interface; -@@ -572,7 +572,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, +@@ -570,7 +570,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, case MCAST_BLOCK_SOURCE: case MCAST_UNBLOCK_SOURCE: { @@ -110105,7 +116897,7 @@ index f7bd286..76ea56a 100644 struct group_source_req __user *kgsr = compat_alloc_user_space( sizeof(struct group_source_req)); u32 interface; -@@ -593,7 +593,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, +@@ -591,7 +591,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname, } case MCAST_MSFILTER: { @@ -110114,7 +116906,7 @@ index f7bd286..76ea56a 100644 struct group_filter __user *kgf; u32 interface, fmode, numsrc; -@@ -631,7 +631,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname, +@@ -629,7 +629,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 *)) { @@ -110123,7 +116915,7 @@ index f7bd286..76ea56a 100644 struct group_filter __user *kgf; int __user *koptlen; u32 interface, fmode, numsrc; -@@ -775,7 +775,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args) +@@ -773,7 +773,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args) if (call < SYS_SOCKET || call > SYS_SENDMMSG) return -EINVAL; @@ -110133,10 +116925,87 @@ index f7bd286..76ea56a 100644 a0 = a[0]; a1 = a[1]; diff --git a/net/core/datagram.c b/net/core/datagram.c -index df493d6..1145766 100644 +index b80fb91..d9f4ea5 100644 --- a/net/core/datagram.c +++ b/net/core/datagram.c -@@ -302,7 +302,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags) +@@ -131,6 +131,35 @@ out_noerr: + goto out; + } + ++static int skb_set_peeked(struct sk_buff *skb) ++{ ++ struct sk_buff *nskb; ++ ++ if (skb->peeked) ++ return 0; ++ ++ /* We have to unshare an skb before modifying it. */ ++ if (!skb_shared(skb)) ++ goto done; ++ ++ nskb = skb_clone(skb, GFP_ATOMIC); ++ if (!nskb) ++ return -ENOMEM; ++ ++ skb->prev->next = nskb; ++ skb->next->prev = nskb; ++ nskb->prev = skb->prev; ++ nskb->next = skb->next; ++ ++ consume_skb(skb); ++ skb = nskb; ++ ++done: ++ skb->peeked = 1; ++ ++ return 0; ++} ++ + /** + * __skb_recv_datagram - Receive a datagram skbuff + * @sk: socket +@@ -165,7 +194,9 @@ out_noerr: + struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags, + int *peeked, int *off, int *err) + { ++ struct sk_buff_head *queue = &sk->sk_receive_queue; + struct sk_buff *skb, *last; ++ unsigned long cpu_flags; + long timeo; + /* + * Caller is allowed not to check sk->sk_err before skb_recv_datagram() +@@ -184,8 +215,6 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags, + * Look at current nfs client by the way... + * However, this function was correct in any case. 8) + */ +- unsigned long cpu_flags; +- struct sk_buff_head *queue = &sk->sk_receive_queue; + int _off = *off; + + last = (struct sk_buff *)queue; +@@ -199,7 +228,11 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags, + _off -= skb->len; + continue; + } +- skb->peeked = 1; ++ ++ error = skb_set_peeked(skb); ++ if (error) ++ goto unlock_err; ++ + atomic_inc(&skb->users); + } else + __skb_unlink(skb, queue); +@@ -223,6 +256,8 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags, + + return NULL; + ++unlock_err: ++ spin_unlock_irqrestore(&queue->lock, cpu_flags); + no_packet: + *err = error; + return NULL; +@@ -302,7 +337,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags) } kfree_skb(skb); @@ -110145,28 +117014,49 @@ index df493d6..1145766 100644 sk_mem_reclaim_partial(sk); return err; +@@ -622,7 +657,8 @@ __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len) + !skb->csum_complete_sw) + netdev_rx_csum_fault(skb->dev); + } +- skb->csum_valid = !sum; ++ if (!skb_shared(skb)) ++ skb->csum_valid = !sum; + return sum; + } + EXPORT_SYMBOL(__skb_checksum_complete_head); +@@ -642,11 +678,13 @@ __sum16 __skb_checksum_complete(struct sk_buff *skb) + netdev_rx_csum_fault(skb->dev); + } + +- /* Save full packet checksum */ +- skb->csum = csum; +- skb->ip_summed = CHECKSUM_COMPLETE; +- skb->csum_complete_sw = 1; +- skb->csum_valid = !sum; ++ if (!skb_shared(skb)) { ++ /* Save full packet checksum */ ++ skb->csum = csum; ++ skb->ip_summed = CHECKSUM_COMPLETE; ++ skb->csum_complete_sw = 1; ++ skb->csum_valid = !sum; ++ } + + return sum; + } diff --git a/net/core/dev.c b/net/core/dev.c -index 22a53ac..1d19af7 100644 +index aa82f9a..f28b00e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -1681,14 +1681,14 @@ int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb) +@@ -1720,7 +1720,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; - } - } - - if (unlikely(!is_skb_forwardable(dev, skb))) { + if (skb_orphan_frags(skb, GFP_ATOMIC) || + 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; } -@@ -2987,7 +2987,7 @@ recursion_alert: +@@ -3018,7 +3018,7 @@ recursion_alert: drop: rcu_read_unlock_bh(); @@ -110175,7 +117065,7 @@ index 22a53ac..1d19af7 100644 kfree_skb_list(skb); return rc; out: -@@ -3336,7 +3336,7 @@ enqueue: +@@ -3367,7 +3367,7 @@ enqueue: local_irq_restore(flags); @@ -110184,7 +117074,7 @@ index 22a53ac..1d19af7 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -3413,7 +3413,7 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -3444,7 +3444,7 @@ int netif_rx_ni(struct sk_buff *skb) } EXPORT_SYMBOL(netif_rx_ni); @@ -110193,7 +117083,7 @@ index 22a53ac..1d19af7 100644 { struct softnet_data *sd = this_cpu_ptr(&softnet_data); -@@ -3751,7 +3751,7 @@ ncls: +@@ -3783,7 +3783,7 @@ ncls: ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev); } else { drop: @@ -110202,7 +117092,7 @@ index 22a53ac..1d19af7 100644 kfree_skb(skb); /* Jamal, now you will not able to escape explaining * me how you were going to use this. :-) -@@ -4640,7 +4640,7 @@ out_unlock: +@@ -4672,7 +4672,7 @@ out_unlock: return work; } @@ -110211,7 +117101,7 @@ index 22a53ac..1d19af7 100644 { struct softnet_data *sd = this_cpu_ptr(&softnet_data); unsigned long time_limit = jiffies + 2; -@@ -6676,8 +6676,8 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, +@@ -6721,8 +6721,8 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, } else { netdev_stats_to_stats64(storage, &dev->stats); } @@ -110241,11 +117131,26 @@ index b94b1d2..da3ed7c 100644 } EXPORT_SYMBOL(dev_load); +diff --git a/net/core/dst.c b/net/core/dst.c +index e956ce6..002144be 100644 +--- a/net/core/dst.c ++++ b/net/core/dst.c +@@ -284,7 +284,9 @@ void dst_release(struct dst_entry *dst) + int newrefcnt; + + newrefcnt = atomic_dec_return(&dst->__refcnt); +- WARN_ON(newrefcnt < 0); ++ if (unlikely(newrefcnt < 0)) ++ net_warn_ratelimited("%s: dst:%p refcnt:%d\n", ++ __func__, dst, newrefcnt); + if (unlikely(dst->flags & DST_NOCACHE) && !newrefcnt) + call_rcu(&dst->rcu_head, dst_destroy_rcu); + } diff --git a/net/core/filter.c b/net/core/filter.c -index f6bdc2b..76eba8e 100644 +index bf831a8..8d2c4c2 100644 --- a/net/core/filter.c +++ b/net/core/filter.c -@@ -533,7 +533,11 @@ do_pass: +@@ -579,7 +579,11 @@ do_pass: /* Unknown instruction. */ default: @@ -110258,7 +117163,7 @@ index f6bdc2b..76eba8e 100644 } insn++; -@@ -577,7 +581,7 @@ static int check_load_and_stores(const struct sock_filter *filter, int flen) +@@ -623,7 +627,7 @@ static int check_load_and_stores(const struct sock_filter *filter, int flen) u16 *masks, memvalid = 0; /* One bit per cell, 16 cells */ int pc, ret = 0; @@ -110267,7 +117172,7 @@ index f6bdc2b..76eba8e 100644 masks = kmalloc_array(flen, sizeof(*masks), GFP_KERNEL); if (!masks) -@@ -992,7 +996,7 @@ int bpf_prog_create(struct bpf_prog **pfp, struct sock_fprog_kern *fprog) +@@ -1038,7 +1042,7 @@ int bpf_prog_create(struct bpf_prog **pfp, struct sock_fprog_kern *fprog) if (!fp) return -ENOMEM; @@ -110308,10 +117213,10 @@ index 1033725..340f65d 100644 fle->object = flo; else diff --git a/net/core/neighbour.c b/net/core/neighbour.c -index 70fe9e1..926784c 100644 +index 2237c1b..c0c80ab 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c -@@ -2806,7 +2806,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, +@@ -2818,7 +2818,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { int size, ret; @@ -110320,7 +117225,7 @@ index 70fe9e1..926784c 100644 tmp.extra1 = &zero; tmp.extra2 = &unres_qlen_max; -@@ -2868,7 +2868,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write, +@@ -2880,7 +2880,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -110381,10 +117286,10 @@ index 2bf8329..2eb1423 100644 return 0; diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c -index f2aa73b..0d1a1ea 100644 +index 4238d6d..e6b605c 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c -@@ -279,7 +279,7 @@ static ssize_t carrier_changes_show(struct device *dev, +@@ -288,7 +288,7 @@ static ssize_t carrier_changes_show(struct device *dev, { struct net_device *netdev = to_net_dev(dev); return sprintf(buf, fmt_dec, @@ -110394,10 +117299,10 @@ index f2aa73b..0d1a1ea 100644 static DEVICE_ATTR_RO(carrier_changes); diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c -index 70d3450..eb7c528 100644 +index 572af00..5acf072 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c -@@ -663,7 +663,7 @@ static int __register_pernet_operations(struct list_head *list, +@@ -734,7 +734,7 @@ static int __register_pernet_operations(struct list_head *list, int error; LIST_HEAD(net_exit_list); @@ -110406,7 +117311,7 @@ index 70d3450..eb7c528 100644 if (ops->init || (ops->id && ops->size)) { for_each_net(net) { error = ops_init(ops, net); -@@ -676,7 +676,7 @@ static int __register_pernet_operations(struct list_head *list, +@@ -747,7 +747,7 @@ static int __register_pernet_operations(struct list_head *list, out_undo: /* If I have an error cleanup all namespaces I initialized */ @@ -110415,7 +117320,7 @@ index 70d3450..eb7c528 100644 ops_exit_list(ops, &net_exit_list); ops_free_list(ops, &net_exit_list); return error; -@@ -687,7 +687,7 @@ static void __unregister_pernet_operations(struct pernet_operations *ops) +@@ -758,7 +758,7 @@ static void __unregister_pernet_operations(struct pernet_operations *ops) struct net *net; LIST_HEAD(net_exit_list); @@ -110424,7 +117329,7 @@ index 70d3450..eb7c528 100644 for_each_net(net) list_add_tail(&net->exit_list, &net_exit_list); ops_exit_list(ops, &net_exit_list); -@@ -821,7 +821,7 @@ int register_pernet_device(struct pernet_operations *ops) +@@ -892,7 +892,7 @@ int register_pernet_device(struct pernet_operations *ops) mutex_lock(&net_mutex); error = register_pernet_operations(&pernet_list, ops); if (!error && (first_device == &pernet_list)) @@ -110469,7 +117374,7 @@ index 508155b..fad080f 100644 pr_warn("cannot create /proc/net/%s\n", PG_PROC_DIR); return -ENODEV; diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c -index 7ebed55..378bf34 100644 +index 8de3682..fcb8a5e 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -61,7 +61,7 @@ struct rtnl_link { @@ -110507,7 +117412,7 @@ index 7ebed55..378bf34 100644 } EXPORT_SYMBOL_GPL(__rtnl_link_unregister); -@@ -1047,7 +1050,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev, +@@ -1066,7 +1069,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev, (dev->ifalias && nla_put_string(skb, IFLA_IFALIAS, dev->ifalias)) || nla_put_u32(skb, IFLA_CARRIER_CHANGES, @@ -110516,6 +117421,24 @@ index 7ebed55..378bf34 100644 goto nla_put_failure; if (1) { +@@ -1748,10 +1751,13 @@ static int do_setlink(const struct sk_buff *skb, + goto errout; + + nla_for_each_nested(attr, tb[IFLA_VF_PORTS], rem) { +- if (nla_type(attr) != IFLA_VF_PORT) +- continue; +- err = nla_parse_nested(port, IFLA_PORT_MAX, +- attr, ifla_port_policy); ++ if (nla_type(attr) != IFLA_VF_PORT || ++ nla_len(attr) < NLA_HDRLEN) { ++ err = -EINVAL; ++ goto errout; ++ } ++ err = nla_parse_nested(port, IFLA_PORT_MAX, attr, ++ ifla_port_policy); + if (err < 0) + goto errout; + if (!port[IFLA_PORT_VF]) { diff --git a/net/core/scm.c b/net/core/scm.c index 3b6899b..cf36238 100644 --- a/net/core/scm.c @@ -110557,7 +117480,7 @@ index 3b6899b..cf36238 100644 { struct socket *sock; diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index e9f9a15..6eb024e 100644 +index 41ec022..3cc0a1c 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -2139,7 +2139,7 @@ EXPORT_SYMBOL(__skb_checksum); @@ -110569,7 +117492,7 @@ index e9f9a15..6eb024e 100644 .update = csum_partial_ext, .combine = csum_block_add_ext, }; -@@ -3379,12 +3379,14 @@ void __init skb_init(void) +@@ -3335,12 +3335,14 @@ void __init skb_init(void) skbuff_head_cache = kmem_cache_create("skbuff_head_cache", sizeof(struct sk_buff), 0, @@ -110587,10 +117510,10 @@ index e9f9a15..6eb024e 100644 } diff --git a/net/core/sock.c b/net/core/sock.c -index 71e3e5f..ab90920 100644 +index dc30dc5..8bb3ef3 100644 --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -443,7 +443,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) +@@ -440,7 +440,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) { @@ -110599,7 +117522,7 @@ index 71e3e5f..ab90920 100644 trace_sock_rcvqueue_full(sk, skb); return -ENOMEM; } -@@ -453,7 +453,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) +@@ -450,7 +450,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) return err; if (!sk_rmem_schedule(sk, skb, skb->truesize)) { @@ -110608,16 +117531,7 @@ index 71e3e5f..ab90920 100644 return -ENOBUFS; } -@@ -466,7 +466,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) - skb_dst_force(skb); - - spin_lock_irqsave(&list->lock, flags); -- skb->dropcount = atomic_read(&sk->sk_drops); -+ skb->dropcount = atomic_read_unchecked(&sk->sk_drops); - __skb_queue_tail(list, skb); - spin_unlock_irqrestore(&list->lock, flags); - -@@ -486,7 +486,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested) +@@ -483,7 +483,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested) skb->dev = NULL; if (sk_rcvqueues_full(sk, sk->sk_rcvbuf)) { @@ -110626,7 +117540,7 @@ index 71e3e5f..ab90920 100644 goto discard_and_relse; } if (nested) -@@ -504,7 +504,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested) +@@ -501,7 +501,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, sk->sk_rcvbuf)) { bh_unlock_sock(sk); @@ -110635,7 +117549,7 @@ index 71e3e5f..ab90920 100644 goto discard_and_relse; } -@@ -910,6 +910,7 @@ set_rcvbuf: +@@ -907,6 +907,7 @@ set_rcvbuf: } break; @@ -110643,7 +117557,7 @@ index 71e3e5f..ab90920 100644 case SO_ATTACH_BPF: ret = -EINVAL; if (optlen == sizeof(u32)) { -@@ -922,7 +923,7 @@ set_rcvbuf: +@@ -919,7 +920,7 @@ set_rcvbuf: ret = sk_attach_bpf(ufd, sk); } break; @@ -110652,7 +117566,7 @@ index 71e3e5f..ab90920 100644 case SO_DETACH_FILTER: ret = sk_detach_filter(sk); break; -@@ -1026,12 +1027,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname, +@@ -1021,12 +1022,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname, struct timeval tm; } v; @@ -110668,7 +117582,7 @@ index 71e3e5f..ab90920 100644 return -EINVAL; memset(&v, 0, sizeof(v)); -@@ -1169,11 +1170,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname, +@@ -1164,11 +1165,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname, case SO_PEERNAME: { @@ -110682,7 +117596,7 @@ index 71e3e5f..ab90920 100644 return -EINVAL; if (copy_to_user(optval, address, len)) return -EFAULT; -@@ -1258,7 +1259,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname, +@@ -1256,7 +1257,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname, if (len > lv) len = lv; @@ -110691,7 +117605,7 @@ index 71e3e5f..ab90920 100644 return -EFAULT; lenout: if (put_user(len, optlen)) -@@ -2375,7 +2376,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) +@@ -2359,7 +2360,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) */ smp_wmb(); atomic_set(&sk->sk_refcnt, 1); @@ -110700,7 +117614,7 @@ index 71e3e5f..ab90920 100644 } EXPORT_SYMBOL(sock_init_data); -@@ -2503,6 +2504,7 @@ void sock_enable_timestamp(struct sock *sk, int flag) +@@ -2487,6 +2488,7 @@ void sock_enable_timestamp(struct sock *sk, int flag) int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, int level, int type) { @@ -110708,7 +117622,7 @@ index 71e3e5f..ab90920 100644 struct sock_exterr_skb *serr; struct sk_buff *skb; int copied, err; -@@ -2524,7 +2526,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, +@@ -2508,7 +2510,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, sock_recv_timestamp(msg, sk, skb); serr = SKB_EXT_ERR(skb); @@ -110719,10 +117633,10 @@ index 71e3e5f..ab90920 100644 msg->msg_flags |= MSG_ERRQUEUE; err = copied; diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c -index ad704c7..ca48aff 100644 +index 74dddf8..7f4e77e 100644 --- a/net/core/sock_diag.c +++ b/net/core/sock_diag.c -@@ -9,26 +9,33 @@ +@@ -9,7 +9,7 @@ #include #include @@ -110731,33 +117645,7 @@ index ad704c7..ca48aff 100644 static int (*inet_rcv_compat)(struct sk_buff *skb, struct nlmsghdr *nlh); static DEFINE_MUTEX(sock_diag_table_mutex); - int sock_diag_check_cookie(void *sk, __u32 *cookie) - { -+#ifndef CONFIG_GRKERNSEC_HIDESYM - if ((cookie[0] != INET_DIAG_NOCOOKIE || - cookie[1] != INET_DIAG_NOCOOKIE) && - ((u32)(unsigned long)sk != cookie[0] || - (u32)((((unsigned long)sk) >> 31) >> 1) != cookie[1])) - return -ESTALE; - else -+#endif - return 0; - } - EXPORT_SYMBOL_GPL(sock_diag_check_cookie); - - void sock_diag_save_cookie(void *sk, __u32 *cookie) - { -+#ifdef CONFIG_GRKERNSEC_HIDESYM -+ cookie[0] = 0; -+ cookie[1] = 0; -+#else - cookie[0] = (u32)(unsigned long)sk; - cookie[1] = (u32)(((unsigned long)sk >> 31) >> 1); -+#endif - } - EXPORT_SYMBOL_GPL(sock_diag_save_cookie); - -@@ -110,8 +117,11 @@ int sock_diag_register(const struct sock_diag_handler *hndl) +@@ -127,8 +127,11 @@ int sock_diag_register(const struct sock_diag_handler *hndl) mutex_lock(&sock_diag_table_mutex); if (sock_diag_handlers[hndl->family]) err = -EBUSY; @@ -110770,7 +117658,7 @@ index ad704c7..ca48aff 100644 mutex_unlock(&sock_diag_table_mutex); return err; -@@ -127,7 +137,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld) +@@ -144,7 +147,9 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld) mutex_lock(&sock_diag_table_mutex); BUG_ON(sock_diag_handlers[family] != hnld); @@ -110781,10 +117669,10 @@ index ad704c7..ca48aff 100644 } EXPORT_SYMBOL_GPL(sock_diag_unregister); diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c -index 8ce351f..2c388f7 100644 +index 95b6139..3048623 100644 --- a/net/core/sysctl_net_core.c +++ b/net/core/sysctl_net_core.c -@@ -36,7 +36,7 @@ static int rps_sock_flow_sysctl(struct ctl_table *table, int write, +@@ -35,7 +35,7 @@ static int rps_sock_flow_sysctl(struct ctl_table *table, int write, { unsigned int orig_size, size; int ret, i; @@ -110793,7 +117681,7 @@ index 8ce351f..2c388f7 100644 .data = &size, .maxlen = sizeof(size), .mode = table->mode -@@ -204,7 +204,7 @@ static int set_default_qdisc(struct ctl_table *table, int write, +@@ -203,7 +203,7 @@ static int set_default_qdisc(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { char id[IFNAMSIZ]; @@ -110802,7 +117690,7 @@ index 8ce351f..2c388f7 100644 .data = id, .maxlen = IFNAMSIZ, }; -@@ -222,7 +222,7 @@ static int set_default_qdisc(struct ctl_table *table, int write, +@@ -221,7 +221,7 @@ static int set_default_qdisc(struct ctl_table *table, int write, static int proc_do_rss_key(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { @@ -110811,7 +117699,7 @@ index 8ce351f..2c388f7 100644 char buf[NETDEV_RSS_KEY_LEN * 3]; snprintf(buf, sizeof(buf), "%*phC", NETDEV_RSS_KEY_LEN, netdev_rss_key); -@@ -286,7 +286,7 @@ static struct ctl_table net_core_table[] = { +@@ -285,7 +285,7 @@ static struct ctl_table net_core_table[] = { .mode = 0444, .proc_handler = proc_do_rss_key, }, @@ -110820,7 +117708,7 @@ index 8ce351f..2c388f7 100644 { .procname = "bpf_jit_enable", .data = &bpf_jit_enable, -@@ -411,13 +411,12 @@ static struct ctl_table netns_core_table[] = { +@@ -409,13 +409,12 @@ static struct ctl_table netns_core_table[] = { static __net_init int sysctl_core_net_init(struct net *net) { @@ -110836,7 +117724,7 @@ index 8ce351f..2c388f7 100644 if (tbl == NULL) goto err_dup; -@@ -427,17 +426,16 @@ static __net_init int sysctl_core_net_init(struct net *net) +@@ -425,17 +424,16 @@ static __net_init int sysctl_core_net_init(struct net *net) if (net->user_ns != &init_user_ns) { tbl[0].procname = NULL; } @@ -110858,7 +117746,7 @@ index 8ce351f..2c388f7 100644 err_dup: return -ENOMEM; } -@@ -452,7 +450,7 @@ static __net_exit void sysctl_core_net_exit(struct net *net) +@@ -450,7 +448,7 @@ static __net_exit void sysctl_core_net_exit(struct net *net) kfree(tbl); } @@ -110868,7 +117756,7 @@ index 8ce351f..2c388f7 100644 .exit = sysctl_core_net_exit, }; diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c -index 8102286..a0c2755 100644 +index 754484b..4f4b894 100644 --- a/net/decnet/af_decnet.c +++ b/net/decnet/af_decnet.c @@ -466,6 +466,7 @@ static struct proto dn_proto = { @@ -110914,6 +117802,19 @@ index 5325b54..a0d4d69 100644 return -EFAULT; *lenp = len; +diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c +index 392e29a..da953a2 100644 +--- a/net/dsa/dsa.c ++++ b/net/dsa/dsa.c +@@ -851,7 +851,7 @@ static struct packet_type dsa_pack_type __read_mostly = { + .func = dsa_switch_rcv, + }; + +-static struct notifier_block dsa_netdevice_nb __read_mostly = { ++static struct notifier_block dsa_netdevice_nb = { + .notifier_call = dsa_slave_netdevice_event, + }; + diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c index a2c7e4c..3dc9f67 100644 --- a/net/hsr/hsr_netlink.c @@ -110928,10 +117829,10 @@ index a2c7e4c..3dc9f67 100644 .maxtype = IFLA_HSR_MAX, .policy = hsr_policy, diff --git a/net/ieee802154/6lowpan/core.c b/net/ieee802154/6lowpan/core.c -index 055fbb7..c0dbe60 100644 +index 0ae5822..3fe3627 100644 --- a/net/ieee802154/6lowpan/core.c +++ b/net/ieee802154/6lowpan/core.c -@@ -217,7 +217,7 @@ static void lowpan_dellink(struct net_device *dev, struct list_head *head) +@@ -219,7 +219,7 @@ static void lowpan_dellink(struct net_device *dev, struct list_head *head) dev_put(real_dev); } @@ -110985,10 +117886,10 @@ index f46e4d1..30231f1 100644 return -ENOMEM; } diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c -index d2e49ba..f78e8aa 100644 +index a5aa54e..3bd5f9f 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c -@@ -1390,7 +1390,7 @@ int inet_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len) +@@ -1391,7 +1391,7 @@ int inet_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len) return ip_recv_error(sk, msg, len, addr_len); #if IS_ENABLED(CONFIG_IPV6) if (sk->sk_family == AF_INET6) @@ -110998,7 +117899,7 @@ index d2e49ba..f78e8aa 100644 return -EINVAL; } diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c -index 3a8985c..9d2a870 100644 +index 419d23c..2084616 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -69,7 +69,8 @@ @@ -111021,7 +117922,7 @@ index 3a8985c..9d2a870 100644 [IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1, [IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1, [IPV4_DEVCONF_SHARED_MEDIA - 1] = 1, -@@ -1549,7 +1551,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) +@@ -1580,7 +1582,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) idx = 0; head = &net->dev_index_head[h]; rcu_read_lock(); @@ -111030,7 +117931,7 @@ index 3a8985c..9d2a870 100644 net->dev_base_seq; hlist_for_each_entry_rcu(dev, head, index_hlist) { if (idx < s_idx) -@@ -1868,7 +1870,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb, +@@ -1899,7 +1901,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb, idx = 0; head = &net->dev_index_head[h]; rcu_read_lock(); @@ -111039,7 +117940,7 @@ index 3a8985c..9d2a870 100644 net->dev_base_seq; hlist_for_each_entry_rcu(dev, head, index_hlist) { if (idx < s_idx) -@@ -2103,7 +2105,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write, +@@ -2134,7 +2136,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write, #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \ DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush) @@ -111048,7 +117949,7 @@ index 3a8985c..9d2a870 100644 struct ctl_table_header *sysctl_header; struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX]; } devinet_sysctl = { -@@ -2235,7 +2237,7 @@ static __net_init int devinet_init_net(struct net *net) +@@ -2266,7 +2268,7 @@ static __net_init int devinet_init_net(struct net *net) int err; struct ipv4_devconf *all, *dflt; #ifdef CONFIG_SYSCTL @@ -111057,16 +117958,16 @@ index 3a8985c..9d2a870 100644 struct ctl_table_header *forw_hdr; #endif -@@ -2253,7 +2255,7 @@ static __net_init int devinet_init_net(struct net *net) +@@ -2284,7 +2286,7 @@ static __net_init int devinet_init_net(struct net *net) goto err_alloc_dflt; #ifdef CONFIG_SYSCTL - tbl = kmemdup(tbl, sizeof(ctl_forward_entry), GFP_KERNEL); + tbl = kmemdup(ctl_forward_entry, sizeof(ctl_forward_entry), GFP_KERNEL); - if (tbl == NULL) + if (!tbl) goto err_alloc_ctl; -@@ -2273,7 +2275,10 @@ static __net_init int devinet_init_net(struct net *net) +@@ -2304,7 +2306,10 @@ static __net_init int devinet_init_net(struct net *net) goto err_reg_dflt; err = -ENOMEM; @@ -111075,10 +117976,10 @@ index 3a8985c..9d2a870 100644 + forw_hdr = register_net_sysctl(net, "net/ipv4", tbl); + else + forw_hdr = register_net_sysctl(net, "net/ipv4", ctl_forward_entry); - if (forw_hdr == NULL) + if (!forw_hdr) goto err_reg_ctl; net->ipv4.forw_hdr = forw_hdr; -@@ -2289,8 +2294,7 @@ err_reg_ctl: +@@ -2320,8 +2325,7 @@ err_reg_ctl: err_reg_dflt: __devinet_sysctl_unregister(all); err_reg_all: @@ -111089,10 +117990,10 @@ index 3a8985c..9d2a870 100644 #endif if (dflt != &ipv4_devconf_dflt) diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c -index 23b9b3e..60cf0c4 100644 +index 872494e..8e0b4d1 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c -@@ -1020,12 +1020,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, +@@ -1083,12 +1083,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, #ifdef CONFIG_IP_ROUTE_MULTIPATH fib_sync_up(dev); #endif @@ -111104,10 +118005,10 @@ index 23b9b3e..60cf0c4 100644 fib_del_ifaddr(ifa, NULL); - atomic_inc(&net->ipv4.dev_addr_genid); + atomic_inc_unchecked(&net->ipv4.dev_addr_genid); - if (ifa->ifa_dev->ifa_list == NULL) { + if (!ifa->ifa_dev->ifa_list) { /* Last address was deleted from this interface. * Disable IP. -@@ -1063,7 +1063,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo +@@ -1126,7 +1126,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo #ifdef CONFIG_IP_ROUTE_MULTIPATH fib_sync_up(dev); #endif @@ -111117,10 +118018,10 @@ index 23b9b3e..60cf0c4 100644 break; case NETDEV_DOWN: diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c -index 1e2090e..351a724 100644 +index 8d695b6..752d427a 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c -@@ -753,7 +753,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh) +@@ -752,7 +752,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh) nh->nh_saddr = inet_select_addr(nh->nh_dev, nh->nh_gw, nh->nh_parent->fib_scope); @@ -111129,27 +118030,8 @@ index 1e2090e..351a724 100644 return nh->nh_saddr; } -diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c -index ff069f6..335e752 100644 ---- a/net/ipv4/fou.c -+++ b/net/ipv4/fou.c -@@ -771,12 +771,12 @@ EXPORT_SYMBOL(gue_build_header); - - #ifdef CONFIG_NET_FOU_IP_TUNNELS - --static const struct ip_tunnel_encap_ops __read_mostly fou_iptun_ops = { -+static const struct ip_tunnel_encap_ops fou_iptun_ops = { - .encap_hlen = fou_encap_hlen, - .build_header = fou_build_header, - }; - --static const struct ip_tunnel_encap_ops __read_mostly gue_iptun_ops = { -+static const struct ip_tunnel_encap_ops gue_iptun_ops = { - .encap_hlen = gue_encap_hlen, - .build_header = gue_build_header, - }; diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c -index 9111a4e..3576905 100644 +index c6fb80b..8705495 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c @@ -18,6 +18,7 @@ @@ -111160,8 +118042,8 @@ index 9111a4e..3576905 100644 #include #include -@@ -49,6 +50,8 @@ static unsigned int inet_sk_ehashfn(const struct sock *sk) - return inet_ehashfn(net, laddr, lport, faddr, fport); +@@ -53,6 +54,8 @@ u32 sk_ehashfn(const struct sock *sk) + sk->sk_daddr, sk->sk_dport); } +extern void gr_update_task_in_ip_table(const struct inet_sock *inet); @@ -111169,14 +118051,14 @@ index 9111a4e..3576905 100644 /* * Allocate and initialize a new local port bind bucket. * The bindhash mutex for snum's hash chain must be held here. -@@ -554,6 +557,8 @@ ok: +@@ -564,6 +567,8 @@ ok: twrefcnt += inet_twsk_bind_unhash(tw, hinfo); spin_unlock(&head->lock); + gr_update_task_in_ip_table(inet_sk(sk)); + if (tw) { - inet_twsk_deschedule(tw, death_row); + inet_twsk_deschedule(tw); while (twrefcnt) { diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index 241afd7..31b95d5 100644 @@ -111192,7 +118074,7 @@ index 241afd7..31b95d5 100644 p->rate_tokens = 0; /* 60*HZ is arbitrary, but chosen enough high so that the first diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c -index 145a50c..5dd8cc5 100644 +index cc1da6d..64b1534 100644 --- a/net/ipv4/ip_fragment.c +++ b/net/ipv4/ip_fragment.c @@ -268,7 +268,7 @@ static int ip_frag_too_far(struct ipq *qp) @@ -111204,7 +118086,7 @@ index 145a50c..5dd8cc5 100644 qp->rid = end; rc = qp->q.fragments && (end - start) > max; -@@ -748,12 +748,11 @@ static struct ctl_table ip4_frags_ctl_table[] = { +@@ -750,12 +750,11 @@ static struct ctl_table ip4_frags_ctl_table[] = { static int __net_init ip4_frags_ns_ctl_register(struct net *net) { @@ -111216,10 +118098,10 @@ index 145a50c..5dd8cc5 100644 if (!net_eq(net, &init_net)) { - table = kmemdup(table, sizeof(ip4_frags_ns_ctl_table), GFP_KERNEL); + table = kmemdup(ip4_frags_ns_ctl_table, sizeof(ip4_frags_ns_ctl_table), GFP_KERNEL); - if (table == NULL) + if (!table) goto err_alloc; -@@ -767,9 +766,10 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net) +@@ -769,9 +768,10 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net) /* Don't export sysctls to unprivileged users */ if (net->user_ns != &init_user_ns) table[0].procname = NULL; @@ -111229,10 +118111,10 @@ index 145a50c..5dd8cc5 100644 + hdr = register_net_sysctl(net, "net/ipv4", ip4_frags_ns_ctl_table); - hdr = register_net_sysctl(net, "net/ipv4", table); - if (hdr == NULL) + if (!hdr) goto err_reg; -@@ -777,8 +777,7 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net) +@@ -779,8 +779,7 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net) return 0; err_reg: @@ -111243,7 +118125,7 @@ index 145a50c..5dd8cc5 100644 return -ENOMEM; } diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c -index 6207275f..00323a2 100644 +index 5fd7064..d13d75f 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -115,7 +115,7 @@ static bool log_ecn_error = true; @@ -111255,7 +118137,7 @@ index 6207275f..00323a2 100644 static int ipgre_tunnel_init(struct net_device *dev); static int ipgre_net_id __read_mostly; -@@ -817,7 +817,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = { +@@ -819,7 +819,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = { [IFLA_GRE_ENCAP_DPORT] = { .type = NLA_U16 }, }; @@ -111264,7 +118146,7 @@ index 6207275f..00323a2 100644 .kind = "gre", .maxtype = IFLA_GRE_MAX, .policy = ipgre_policy, -@@ -832,7 +832,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = { +@@ -834,7 +834,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = { .get_link_net = ip_tunnel_get_link_net, }; @@ -111274,7 +118156,7 @@ index 6207275f..00323a2 100644 .maxtype = IFLA_GRE_MAX, .policy = ipgre_policy, diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c -index 3d4da2c..40f9c29 100644 +index 2db4c87..4db9282 100644 --- a/net/ipv4/ip_input.c +++ b/net/ipv4/ip_input.c @@ -147,6 +147,10 @@ @@ -111288,7 +118170,7 @@ index 3d4da2c..40f9c29 100644 /* * Process Router Attention IP option (RFC 2113) */ -@@ -223,6 +227,9 @@ static int ip_local_deliver_finish(struct sk_buff *skb) +@@ -223,6 +227,9 @@ static int ip_local_deliver_finish(struct sock *sk, struct sk_buff *skb) if (!raw) { if (xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) { IP_INC_STATS_BH(net, IPSTATS_MIB_INUNKNOWNPROTOS); @@ -111299,10 +118181,10 @@ index 3d4da2c..40f9c29 100644 ICMP_PROT_UNREACH, 0); } diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c -index 5cd9927..8610b9f 100644 +index 6ddde89..653e224 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c -@@ -1254,7 +1254,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, +@@ -1291,7 +1291,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; @@ -111312,7 +118194,7 @@ index 5cd9927..8610b9f 100644 return -EFAULT; return 0; } -@@ -1388,7 +1389,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, +@@ -1425,7 +1426,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, if (sk->sk_type != SOCK_STREAM) return -ENOPROTOOPT; @@ -111322,7 +118204,7 @@ index 5cd9927..8610b9f 100644 msg.msg_flags = flags; diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c -index 94efe14..1453fcc 100644 +index 0c15208..a3a76c5 100644 --- a/net/ipv4/ip_vti.c +++ b/net/ipv4/ip_vti.c @@ -45,7 +45,7 @@ @@ -111334,7 +118216,7 @@ index 94efe14..1453fcc 100644 static int vti_net_id __read_mostly; static int vti_tunnel_init(struct net_device *dev); -@@ -519,7 +519,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = { +@@ -525,7 +525,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = { [IFLA_VTI_REMOTE] = { .len = FIELD_SIZEOF(struct iphdr, daddr) }, }; @@ -111344,7 +118226,7 @@ index 94efe14..1453fcc 100644 .maxtype = IFLA_VTI_MAX, .policy = vti_policy, diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c -index b26376e..fc3d733 100644 +index 8e7328c..9bd7ed3 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c @@ -333,7 +333,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg) @@ -111375,7 +118257,7 @@ index b26376e..fc3d733 100644 return res; } diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c -index 915d215..48d1db7 100644 +index ff96396..2e928ba 100644 --- a/net/ipv4/ipip.c +++ b/net/ipv4/ipip.c @@ -124,7 +124,7 @@ MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN"); @@ -111397,10 +118279,10 @@ index 915d215..48d1db7 100644 .maxtype = IFLA_IPTUN_MAX, .policy = ipip_policy, diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c -index f95b6f9..2ee2097 100644 +index a612007..99ac4bc5 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c -@@ -885,14 +885,14 @@ static int compat_table_info(const struct xt_table_info *info, +@@ -884,14 +884,14 @@ static int compat_table_info(const struct xt_table_info *info, #endif static int get_info(struct net *net, void __user *user, @@ -111418,7 +118300,7 @@ index f95b6f9..2ee2097 100644 sizeof(struct arpt_getinfo)); return -EINVAL; } -@@ -929,7 +929,7 @@ static int get_info(struct net *net, void __user *user, +@@ -928,7 +928,7 @@ static int get_info(struct net *net, void __user *user, info.size = private->size; strcpy(info.name, name); @@ -111427,7 +118309,7 @@ index f95b6f9..2ee2097 100644 ret = -EFAULT; else ret = 0; -@@ -1690,7 +1690,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, +@@ -1695,7 +1695,7 @@ static int compat_do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, switch (cmd) { case ARPT_SO_GET_INFO: @@ -111436,7 +118318,7 @@ index f95b6f9..2ee2097 100644 break; case ARPT_SO_GET_ENTRIES: ret = compat_get_entries(sock_net(sk), user, len); -@@ -1735,7 +1735,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len +@@ -1740,7 +1740,7 @@ static int do_arpt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len switch (cmd) { case ARPT_SO_GET_INFO: @@ -111446,10 +118328,10 @@ index f95b6f9..2ee2097 100644 case ARPT_SO_GET_ENTRIES: diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c -index cf5e82f..75a20f5 100644 +index 2d0e265..67e5b8d 100644 --- a/net/ipv4/netfilter/ip_tables.c +++ b/net/ipv4/netfilter/ip_tables.c -@@ -1073,14 +1073,14 @@ static int compat_table_info(const struct xt_table_info *info, +@@ -1072,14 +1072,14 @@ static int compat_table_info(const struct xt_table_info *info, #endif static int get_info(struct net *net, void __user *user, @@ -111467,7 +118349,7 @@ index cf5e82f..75a20f5 100644 sizeof(struct ipt_getinfo)); return -EINVAL; } -@@ -1117,7 +1117,7 @@ static int get_info(struct net *net, void __user *user, +@@ -1116,7 +1116,7 @@ static int get_info(struct net *net, void __user *user, info.size = private->size; strcpy(info.name, name); @@ -111476,7 +118358,7 @@ index cf5e82f..75a20f5 100644 ret = -EFAULT; else ret = 0; -@@ -1973,7 +1973,7 @@ compat_do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) +@@ -1978,7 +1978,7 @@ compat_do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) switch (cmd) { case IPT_SO_GET_INFO: @@ -111485,7 +118367,7 @@ index cf5e82f..75a20f5 100644 break; case IPT_SO_GET_ENTRIES: ret = compat_get_entries(sock_net(sk), user, len); -@@ -2020,7 +2020,7 @@ do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) +@@ -2025,7 +2025,7 @@ do_ipt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) switch (cmd) { case IPT_SO_GET_INFO: @@ -111495,10 +118377,10 @@ index cf5e82f..75a20f5 100644 case IPT_SO_GET_ENTRIES: diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c -index e90f83a..3e6acca 100644 +index 771ab3d..5b99b18 100644 --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c -@@ -720,7 +720,7 @@ static int clusterip_net_init(struct net *net) +@@ -725,7 +725,7 @@ static int clusterip_net_init(struct net *net) spin_lock_init(&cn->lock); #ifdef CONFIG_PROC_FS @@ -111508,7 +118390,7 @@ index e90f83a..3e6acca 100644 pr_err("Unable to proc dir entry\n"); return -ENOMEM; diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c -index 787b0d6..ab6c0ba 100644 +index 05ff44b..da00000 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c @@ -59,7 +59,7 @@ struct ping_table { @@ -111547,7 +118429,7 @@ index 787b0d6..ab6c0ba 100644 info, (u8 *)icmph); #endif } -@@ -919,10 +919,10 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +@@ -918,10 +918,10 @@ int ping_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock, } if (inet6_sk(sk)->rxopt.all) @@ -111560,7 +118442,7 @@ index 787b0d6..ab6c0ba 100644 else if (skb->protocol == htons(ETH_P_IP) && isk->cmsg_flags) ip_cmsg_recv(msg, skb); #endif -@@ -1117,7 +1117,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f, +@@ -1116,7 +1116,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f, from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), 0, sock_i_ino(sp), atomic_read(&sp->sk_refcnt), sp, @@ -111570,10 +118452,10 @@ index 787b0d6..ab6c0ba 100644 static int ping_v4_seq_show(struct seq_file *seq, void *v) diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c -index f027a70..2e64edc 100644 +index 561cd4b..a32a155 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c -@@ -324,7 +324,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb) +@@ -323,7 +323,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)) { @@ -111582,7 +118464,7 @@ index f027a70..2e64edc 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -773,16 +773,20 @@ static int raw_init(struct sock *sk) +@@ -771,16 +771,20 @@ static int raw_init(struct sock *sk) static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen) { @@ -111604,7 +118486,7 @@ index f027a70..2e64edc 100644 if (get_user(len, optlen)) goto out; -@@ -792,8 +796,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o +@@ -790,8 +794,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; @@ -111615,7 +118497,7 @@ index f027a70..2e64edc 100644 goto out; ret = 0; out: return ret; -@@ -1022,7 +1026,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) +@@ -1020,7 +1024,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) 0, 0L, 0, from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)), 0, sock_i_ino(sp), @@ -111625,10 +118507,10 @@ index f027a70..2e64edc 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 20fc020..3ba426f 100644 +index f45f2a1..e7d47a3 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c -@@ -228,7 +228,7 @@ static const struct seq_operations rt_cache_seq_ops = { +@@ -227,7 +227,7 @@ static const struct seq_operations rt_cache_seq_ops = { static int rt_cache_seq_open(struct inode *inode, struct file *file) { @@ -111637,7 +118519,7 @@ index 20fc020..3ba426f 100644 } static const struct file_operations rt_cache_seq_fops = { -@@ -319,7 +319,7 @@ static const struct seq_operations rt_cpu_seq_ops = { +@@ -318,7 +318,7 @@ static const struct seq_operations rt_cpu_seq_ops = { static int rt_cpu_seq_open(struct inode *inode, struct file *file) { @@ -111646,7 +118528,7 @@ index 20fc020..3ba426f 100644 } static const struct file_operations rt_cpu_seq_fops = { -@@ -357,7 +357,7 @@ static int rt_acct_proc_show(struct seq_file *m, void *v) +@@ -356,7 +356,7 @@ static int rt_acct_proc_show(struct seq_file *m, void *v) static int rt_acct_proc_open(struct inode *inode, struct file *file) { @@ -111655,7 +118537,7 @@ index 20fc020..3ba426f 100644 } static const struct file_operations rt_acct_proc_fops = { -@@ -459,11 +459,11 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst, +@@ -458,11 +458,11 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst, #define IP_IDENTS_SZ 2048u struct ip_ident_bucket { @@ -111669,7 +118551,7 @@ index 20fc020..3ba426f 100644 /* In order to protect privacy, we add a perturbation to identifiers * if one generator is seldom used. This makes hard for an attacker -@@ -479,7 +479,7 @@ u32 ip_idents_reserve(u32 hash, int segs) +@@ -478,7 +478,7 @@ u32 ip_idents_reserve(u32 hash, int segs) if (old != now && cmpxchg(&bucket->stamp32, old, now) == old) delta = prandom_u32_max(now - old); @@ -111678,7 +118560,7 @@ index 20fc020..3ba426f 100644 } EXPORT_SYMBOL(ip_idents_reserve); -@@ -2639,34 +2639,34 @@ static struct ctl_table ipv4_route_flush_table[] = { +@@ -2641,34 +2641,34 @@ static struct ctl_table ipv4_route_flush_table[] = { .maxlen = sizeof(int), .mode = 0200, .proc_handler = ipv4_sysctl_rtcache_flush, @@ -111696,7 +118578,7 @@ index 20fc020..3ba426f 100644 if (!net_eq(net, &init_net)) { - tbl = kmemdup(tbl, sizeof(ipv4_route_flush_table), GFP_KERNEL); + tbl = kmemdup(ipv4_route_flush_table, sizeof(ipv4_route_flush_table), GFP_KERNEL); - if (tbl == NULL) + if (!tbl) goto err_dup; /* Don't export sysctls to unprivileged users */ @@ -111710,7 +118592,7 @@ index 20fc020..3ba426f 100644 + net->ipv4.route_hdr = register_net_sysctl(net, "net/ipv4/route", ipv4_route_flush_table); - net->ipv4.route_hdr = register_net_sysctl(net, "net/ipv4/route", tbl); - if (net->ipv4.route_hdr == NULL) + if (!net->ipv4.route_hdr) goto err_reg; return 0; @@ -111721,7 +118603,7 @@ index 20fc020..3ba426f 100644 err_dup: return -ENOMEM; } -@@ -2689,8 +2689,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { +@@ -2691,8 +2691,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { static __net_init int rt_genid_init(struct net *net) { @@ -111732,7 +118614,7 @@ index 20fc020..3ba426f 100644 get_random_bytes(&net->ipv4.dev_addr_genid, sizeof(net->ipv4.dev_addr_genid)); return 0; -@@ -2734,11 +2734,7 @@ int __init ip_rt_init(void) +@@ -2736,11 +2736,7 @@ int __init ip_rt_init(void) int rc = 0; int cpu; @@ -111746,7 +118628,7 @@ index 20fc020..3ba426f 100644 for_each_possible_cpu(cpu) { struct uncached_list *ul = &per_cpu(rt_uncached_list, cpu); diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c -index d151539..5f5e247 100644 +index c3852a7..7bdbde7 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c @@ -60,7 +60,7 @@ static int ipv4_local_port_range(struct ctl_table *table, int write, @@ -111803,7 +118685,7 @@ index d151539..5f5e247 100644 struct tcp_fastopen_context *ctxt; int ret; u32 user_key[4]; /* 16 bytes, matching TCP_FASTOPEN_KEY_LENGTH */ -@@ -888,13 +888,12 @@ static struct ctl_table ipv4_net_table[] = { +@@ -902,13 +902,12 @@ static struct ctl_table ipv4_net_table[] = { static __net_init int ipv4_sysctl_init_net(struct net *net) { @@ -111816,10 +118698,10 @@ index d151539..5f5e247 100644 - table = kmemdup(table, sizeof(ipv4_net_table), GFP_KERNEL); + table = kmemdup(ipv4_net_table, sizeof(ipv4_net_table), GFP_KERNEL); - if (table == NULL) + if (!table) goto err_alloc; -@@ -903,7 +902,10 @@ static __net_init int ipv4_sysctl_init_net(struct net *net) +@@ -917,7 +916,10 @@ static __net_init int ipv4_sysctl_init_net(struct net *net) table[i].data += (void *)net - (void *)&init_net; } @@ -111828,27 +118710,11 @@ index d151539..5f5e247 100644 + net->ipv4.ipv4_hdr = register_net_sysctl(net, "net/ipv4", table); + else + net->ipv4.ipv4_hdr = register_net_sysctl(net, "net/ipv4", ipv4_net_table); - if (net->ipv4.ipv4_hdr == NULL) + if (!net->ipv4.ipv4_hdr) goto err_reg; -diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c -index 995a225..e1e9183 100644 ---- a/net/ipv4/tcp.c -+++ b/net/ipv4/tcp.c -@@ -520,8 +520,10 @@ unsigned int tcp_poll(struct file *file, struct socket *sock, poll_table *wait) - - /* Race breaker. If space is freed after - * wspace test but before the flags are set, -- * IO signal will be lost. -+ * IO signal will be lost. Memory barrier -+ * pairs with the input side. - */ -+ smp_mb__after_atomic(); - if (sk_stream_is_writeable(sk)) - mask |= POLLOUT | POLLWRNORM; - } diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c -index f501ac04..0c5a1b2 100644 +index c9ab964..607d9f7 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -767,7 +767,7 @@ static void tcp_update_pacing_rate(struct sock *sk) @@ -111860,7 +118726,7 @@ index f501ac04..0c5a1b2 100644 sk->sk_max_pacing_rate); } -@@ -4541,7 +4541,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, +@@ -4610,7 +4610,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, * simplifies code) */ static void @@ -111869,16 +118735,7 @@ index f501ac04..0c5a1b2 100644 struct sk_buff *head, struct sk_buff *tail, u32 start, u32 end) { -@@ -4799,6 +4799,8 @@ static void tcp_check_space(struct sock *sk) - { - if (sock_flag(sk, SOCK_QUEUE_SHRUNK)) { - sock_reset_flag(sk, SOCK_QUEUE_SHRUNK); -+ /* pairs with tcp_poll() */ -+ smp_mb__after_atomic(); - if (sk->sk_socket && - test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) - tcp_new_space(sk); -@@ -5525,6 +5527,7 @@ discard: +@@ -5605,6 +5605,7 @@ discard: tcp_paws_reject(&tp->rx_opt, 0)) goto discard_and_undo; @@ -111886,7 +118743,7 @@ index f501ac04..0c5a1b2 100644 if (th->syn) { /* We see SYN without ACK. It is attempt of * simultaneous connect with crossed SYNs. -@@ -5575,6 +5578,7 @@ discard: +@@ -5655,6 +5656,7 @@ discard: goto discard; #endif } @@ -111894,7 +118751,7 @@ index f501ac04..0c5a1b2 100644 /* "fifth, if neither of the SYN or RST bits is set then * drop the segment and return." */ -@@ -5621,7 +5625,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5701,7 +5703,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, goto discard; if (th->syn) { @@ -111904,7 +118761,7 @@ index f501ac04..0c5a1b2 100644 if (icsk->icsk_af_ops->conn_request(sk, skb) < 0) return 1; diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c -index f1756ee..8908cb0 100644 +index fc1c658..42a8d34 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -89,6 +89,10 @@ int sysctl_tcp_tw_reuse __read_mostly; @@ -111918,7 +118775,7 @@ index f1756ee..8908cb0 100644 #ifdef CONFIG_TCP_MD5SIG static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key, __be32 daddr, __be32 saddr, const struct tcphdr *th); -@@ -1475,6 +1479,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1427,6 +1431,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -111928,7 +118785,7 @@ index f1756ee..8908cb0 100644 tcp_v4_send_reset(rsk, skb); discard: kfree_skb(skb); -@@ -1639,12 +1646,19 @@ int tcp_v4_rcv(struct sk_buff *skb) +@@ -1591,12 +1598,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); @@ -111951,7 +118808,7 @@ index f1756ee..8908cb0 100644 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) { NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); -@@ -1700,6 +1714,10 @@ csum_error: +@@ -1652,6 +1666,10 @@ csum_error: bad_packet: TCP_INC_STATS_BH(net, TCP_MIB_INERRS); } else { @@ -111963,7 +118820,7 @@ index f1756ee..8908cb0 100644 } diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c -index dd11ac7..c0872da 100644 +index 17e7339..c72ff6c 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c @@ -27,6 +27,10 @@ @@ -111977,7 +118834,7 @@ index dd11ac7..c0872da 100644 int sysctl_tcp_syncookies __read_mostly = 1; EXPORT_SYMBOL(sysctl_tcp_syncookies); -@@ -785,7 +789,10 @@ embryonic_reset: +@@ -778,7 +782,10 @@ embryonic_reset: * avoid becoming vulnerable to outside attack aiming at * resetting legit local connections. */ @@ -112003,7 +118860,7 @@ index ebf5ff5..4d1ff32 100644 cnt += width; } diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c -index 0732b78..a82bdc6 100644 +index 8c65dc1..55fd1ba 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c @@ -22,6 +22,10 @@ @@ -112017,7 +118874,7 @@ index 0732b78..a82bdc6 100644 int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES; int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES; int sysctl_tcp_keepalive_time __read_mostly = TCP_KEEPALIVE_TIME; -@@ -194,6 +198,13 @@ static int tcp_write_timeout(struct sock *sk) +@@ -195,6 +199,13 @@ static int tcp_write_timeout(struct sock *sk) } } @@ -112032,7 +118889,7 @@ index 0732b78..a82bdc6 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 97ef1f8b..e446c33 100644 +index 83aa604..dbfddf5 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -87,6 +87,7 @@ @@ -112043,7 +118900,7 @@ index 97ef1f8b..e446c33 100644 #include #include #include -@@ -114,6 +115,10 @@ +@@ -115,6 +116,10 @@ #include #include "udp_impl.h" @@ -112064,7 +118921,7 @@ index 97ef1f8b..e446c33 100644 /* * This routine is called by the ICMP module when it gets some * sort of error condition. If err < 0 then the socket should -@@ -945,9 +953,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +@@ -944,9 +952,18 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) dport = usin->sin_port; if (dport == 0) return -EINVAL; @@ -112083,7 +118940,7 @@ index 97ef1f8b..e446c33 100644 daddr = inet->inet_daddr; dport = inet->inet_dport; /* Open fast path for connected socket. -@@ -1195,7 +1212,7 @@ static unsigned int first_packet_length(struct sock *sk) +@@ -1193,7 +1210,7 @@ static unsigned int first_packet_length(struct sock *sk) IS_UDPLITE(sk)); UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, IS_UDPLITE(sk)); @@ -112092,7 +118949,7 @@ index 97ef1f8b..e446c33 100644 __skb_unlink(skb, rcvq); __skb_queue_tail(&list_kill, skb); } -@@ -1275,6 +1292,10 @@ try_again: +@@ -1273,6 +1290,10 @@ try_again: if (!skb) goto out; @@ -112103,7 +118960,7 @@ index 97ef1f8b..e446c33 100644 ulen = skb->len - sizeof(struct udphdr); copied = len; if (copied > ulen) -@@ -1307,7 +1328,7 @@ try_again: +@@ -1305,7 +1326,7 @@ try_again: if (unlikely(err)) { trace_kfree_skb(skb, udp_recvmsg); if (!peeked) { @@ -112112,7 +118969,7 @@ index 97ef1f8b..e446c33 100644 UDP_INC_STATS_USER(sock_net(sk), UDP_MIB_INERRORS, is_udplite); } -@@ -1605,7 +1626,7 @@ csum_error: +@@ -1599,7 +1620,7 @@ csum_error: UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); drop: UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); @@ -112121,7 +118978,7 @@ index 97ef1f8b..e446c33 100644 kfree_skb(skb); return -1; } -@@ -1624,7 +1645,7 @@ static void flush_stack(struct sock **stack, unsigned int count, +@@ -1617,7 +1638,7 @@ static void flush_stack(struct sock **stack, unsigned int count, skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); if (!skb1) { @@ -112130,7 +118987,7 @@ index 97ef1f8b..e446c33 100644 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk)); UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, -@@ -1830,6 +1851,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, +@@ -1823,6 +1844,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); @@ -112140,7 +118997,7 @@ index 97ef1f8b..e446c33 100644 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); /* -@@ -2416,7 +2440,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, +@@ -2420,7 +2444,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), 0, sock_i_ino(sp), atomic_read(&sp->sk_refcnt), sp, @@ -112150,7 +119007,7 @@ index 97ef1f8b..e446c33 100644 int udp4_seq_show(struct seq_file *seq, void *v) diff --git a/net/ipv4/xfrm4_policy.c b/net/ipv4/xfrm4_policy.c -index 6156f68..d6ab46d 100644 +index bff6974..c63736c 100644 --- a/net/ipv4/xfrm4_policy.c +++ b/net/ipv4/xfrm4_policy.c @@ -186,11 +186,11 @@ _decode_session4(struct sk_buff *skb, struct flowi *fl, int reverse) @@ -112167,7 +119024,7 @@ index 6156f68..d6ab46d 100644 return (dst_entries_get_slow(ops) > ops->gc_thresh * 2); } -@@ -269,19 +269,18 @@ static struct ctl_table xfrm4_policy_table[] = { +@@ -268,19 +268,18 @@ static struct ctl_table xfrm4_policy_table[] = { static int __net_init xfrm4_net_init(struct net *net) { @@ -112192,7 +119049,7 @@ index 6156f68..d6ab46d 100644 if (!hdr) goto err_reg; -@@ -289,8 +288,7 @@ static int __net_init xfrm4_net_init(struct net *net) +@@ -288,8 +287,7 @@ static int __net_init xfrm4_net_init(struct net *net) return 0; err_reg: @@ -112203,10 +119060,10 @@ index 6156f68..d6ab46d 100644 return -ENOMEM; } diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c -index b603002..0de5c88 100644 +index 37b70e8..1475ab7 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c -@@ -171,7 +171,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = { +@@ -178,7 +178,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = { .hop_limit = IPV6_DEFAULT_HOPLIMIT, .mtu6 = IPV6_MIN_MTU, .accept_ra = 1, @@ -112215,7 +119072,7 @@ index b603002..0de5c88 100644 .autoconf = 1, .force_mld_version = 0, .mldv1_unsolicited_report_interval = 10 * HZ, -@@ -209,7 +209,7 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = { +@@ -219,7 +219,7 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = { .hop_limit = IPV6_DEFAULT_HOPLIMIT, .mtu6 = IPV6_MIN_MTU, .accept_ra = 1, @@ -112224,7 +119081,7 @@ index b603002..0de5c88 100644 .autoconf = 1, .force_mld_version = 0, .mldv1_unsolicited_report_interval = 10 * HZ, -@@ -607,7 +607,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb, +@@ -620,7 +620,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb, idx = 0; head = &net->dev_index_head[h]; rcu_read_lock(); @@ -112233,7 +119090,7 @@ index b603002..0de5c88 100644 net->dev_base_seq; hlist_for_each_entry_rcu(dev, head, index_hlist) { if (idx < s_idx) -@@ -2438,7 +2438,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) +@@ -2506,7 +2506,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) p.iph.ihl = 5; p.iph.protocol = IPPROTO_IPV6; p.iph.ttl = 64; @@ -112242,7 +119099,7 @@ index b603002..0de5c88 100644 if (ops->ndo_do_ioctl) { mm_segment_t oldfs = get_fs(); -@@ -3587,16 +3587,23 @@ static const struct file_operations if6_fops = { +@@ -3772,16 +3772,23 @@ static const struct file_operations if6_fops = { .release = seq_release_net, }; @@ -112267,7 +119124,7 @@ index b603002..0de5c88 100644 } static struct pernet_operations if6_proc_net_ops = { -@@ -4215,7 +4222,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb, +@@ -4400,7 +4407,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb, s_ip_idx = ip_idx = cb->args[2]; rcu_read_lock(); @@ -112276,7 +119133,7 @@ index b603002..0de5c88 100644 for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) { idx = 0; head = &net->dev_index_head[h]; -@@ -4864,7 +4871,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) +@@ -5057,7 +5064,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) rt_genid_bump_ipv6(net); break; } @@ -112285,7 +119142,7 @@ index b603002..0de5c88 100644 } static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) -@@ -4884,7 +4891,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write, +@@ -5077,7 +5084,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write, int *valp = ctl->data; int val = *valp; loff_t pos = *ppos; @@ -112294,7 +119151,7 @@ index b603002..0de5c88 100644 int ret; /* -@@ -4909,7 +4916,7 @@ int addrconf_sysctl_mtu(struct ctl_table *ctl, int write, +@@ -5102,7 +5109,7 @@ int addrconf_sysctl_mtu(struct ctl_table *ctl, int write, { struct inet6_dev *idev = ctl->extra1; int min_mtu = IPV6_MIN_MTU; @@ -112303,7 +119160,7 @@ index b603002..0de5c88 100644 lctl = *ctl; lctl.extra1 = &min_mtu; -@@ -4984,7 +4991,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write, +@@ -5177,7 +5184,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write, int *valp = ctl->data; int val = *valp; loff_t pos = *ppos; @@ -112312,24 +119169,33 @@ index b603002..0de5c88 100644 int ret; /* +@@ -5242,7 +5249,7 @@ static int addrconf_sysctl_stable_secret(struct ctl_table *ctl, int write, + int err; + struct in6_addr addr; + char str[IPV6_MAX_STRLEN]; +- struct ctl_table lctl = *ctl; ++ ctl_table_no_const lctl = *ctl; + struct net *net = ctl->extra2; + struct ipv6_stable_secret *secret = ctl->data; + diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c -index e8c4400..a4cd5da 100644 +index eef63b3..d68f5da 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c -@@ -766,7 +766,7 @@ static int __net_init inet6_net_init(struct net *net) - net->ipv6.sysctl.icmpv6_time = 1*HZ; - net->ipv6.sysctl.flowlabel_consistency = 1; +@@ -768,7 +768,7 @@ static int __net_init inet6_net_init(struct net *net) net->ipv6.sysctl.auto_flowlabels = 0; + net->ipv6.sysctl.idgen_retries = 3; + net->ipv6.sysctl.idgen_delay = 1 * HZ; - atomic_set(&net->ipv6.fib6_sernum, 1); + atomic_set_unchecked(&net->ipv6.fib6_sernum, 1); err = ipv6_init_mibs(net); if (err) diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c -index ace8dac..bd6942d 100644 +index 62d908e..bac79a9 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c -@@ -957,5 +957,5 @@ void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp, +@@ -967,5 +967,5 @@ void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp, 0, sock_i_ino(sp), atomic_read(&sp->sk_refcnt), sp, @@ -112337,10 +119203,10 @@ index ace8dac..bd6942d 100644 + atomic_read_unchecked(&sp->sk_drops)); } diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c -index a5e9519..16b7412 100644 +index 2c2b5d5..cc01abd 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c -@@ -1005,7 +1005,7 @@ static struct ctl_table ipv6_icmp_table_template[] = { +@@ -1004,7 +1004,7 @@ static struct ctl_table ipv6_icmp_table_template[] = { struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net) { @@ -112350,7 +119216,7 @@ index a5e9519..16b7412 100644 table = kmemdup(ipv6_icmp_table_template, sizeof(ipv6_icmp_table_template), diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c -index 263ef41..88c7be8 100644 +index bde57b1..5b45dbb 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -99,9 +99,9 @@ static int fib6_new_sernum(struct net *net) @@ -112366,7 +119232,7 @@ index 263ef41..88c7be8 100644 return new; } diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c -index bc28b7d..a08feea 100644 +index a38d3ac..d02e37d 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -71,8 +71,8 @@ struct ip6gre_net { @@ -112380,7 +119246,7 @@ index bc28b7d..a08feea 100644 static int ip6gre_tunnel_init(struct net_device *dev); static void ip6gre_tunnel_setup(struct net_device *dev); static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t); -@@ -1289,7 +1289,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) +@@ -1280,7 +1280,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev) } @@ -112389,7 +119255,7 @@ index bc28b7d..a08feea 100644 .handler = ip6gre_rcv, .err_handler = ip6gre_err, .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, -@@ -1650,7 +1650,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { +@@ -1639,7 +1639,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = { [IFLA_GRE_FLAGS] = { .type = NLA_U32 }, }; @@ -112398,7 +119264,7 @@ index bc28b7d..a08feea 100644 .kind = "ip6gre", .maxtype = IFLA_GRE_MAX, .policy = ip6gre_policy, -@@ -1665,7 +1665,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { +@@ -1654,7 +1654,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = { .get_link_net = ip6_tnl_get_link_net, }; @@ -112408,10 +119274,10 @@ index bc28b7d..a08feea 100644 .maxtype = IFLA_GRE_MAX, .policy = ip6gre_policy, diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c -index ddd94ec..b7cfefb 100644 +index 5cafd92..d5aead4 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c -@@ -86,7 +86,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) +@@ -80,7 +80,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) static int ip6_tnl_dev_init(struct net_device *dev); static void ip6_tnl_dev_setup(struct net_device *dev); @@ -112420,7 +119286,7 @@ index ddd94ec..b7cfefb 100644 static int ip6_tnl_net_id __read_mostly; struct ip6_tnl_net { -@@ -1780,7 +1780,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { +@@ -1776,7 +1776,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = { [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, }; @@ -112430,7 +119296,7 @@ index ddd94ec..b7cfefb 100644 .maxtype = IFLA_IPTUN_MAX, .policy = ip6_tnl_policy, diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c -index 5fb9e21..92bf04b 100644 +index 0224c03..c5ec3d9 100644 --- a/net/ipv6/ip6_vti.c +++ b/net/ipv6/ip6_vti.c @@ -62,7 +62,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) @@ -112442,7 +119308,7 @@ index 5fb9e21..92bf04b 100644 static int vti6_net_id __read_mostly; struct vti6_net { -@@ -1004,7 +1004,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = { +@@ -1019,7 +1019,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = { [IFLA_VTI_OKEY] = { .type = NLA_U32 }, }; @@ -112452,10 +119318,10 @@ index 5fb9e21..92bf04b 100644 .maxtype = IFLA_VTI_MAX, .policy = vti6_policy, diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c -index 8d766d9..dcdfea7 100644 +index 63e6956..ebbbcf6 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c -@@ -989,7 +989,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, +@@ -1015,7 +1015,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, if (sk->sk_type != SOCK_STREAM) return -ENOPROTOOPT; @@ -112465,10 +119331,10 @@ index 8d766d9..dcdfea7 100644 msg.msg_flags = flags; diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c -index bb00c6f..16c90d7 100644 +index 62f5b0d..331fdb1 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c -@@ -1083,14 +1083,14 @@ static int compat_table_info(const struct xt_table_info *info, +@@ -1085,14 +1085,14 @@ static int compat_table_info(const struct xt_table_info *info, #endif static int get_info(struct net *net, void __user *user, @@ -112486,7 +119352,7 @@ index bb00c6f..16c90d7 100644 sizeof(struct ip6t_getinfo)); return -EINVAL; } -@@ -1127,7 +1127,7 @@ static int get_info(struct net *net, void __user *user, +@@ -1129,7 +1129,7 @@ static int get_info(struct net *net, void __user *user, info.size = private->size; strcpy(info.name, name); @@ -112495,7 +119361,7 @@ index bb00c6f..16c90d7 100644 ret = -EFAULT; else ret = 0; -@@ -1983,7 +1983,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) +@@ -1991,7 +1991,7 @@ compat_do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) switch (cmd) { case IP6T_SO_GET_INFO: @@ -112504,7 +119370,7 @@ index bb00c6f..16c90d7 100644 break; case IP6T_SO_GET_ENTRIES: ret = compat_get_entries(sock_net(sk), user, len); -@@ -2030,7 +2030,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) +@@ -2038,7 +2038,7 @@ do_ip6t_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) switch (cmd) { case IP6T_SO_GET_INFO: @@ -112556,10 +119422,10 @@ index 6f187c8..34b367f 100644 return -ENOMEM; } diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c -index a2dfff6..1e52e6d 100644 +index 263a516..692f738 100644 --- a/net/ipv6/ping.c +++ b/net/ipv6/ping.c -@@ -241,6 +241,24 @@ static struct pernet_operations ping_v6_net_ops = { +@@ -240,6 +240,24 @@ static struct pernet_operations ping_v6_net_ops = { }; #endif @@ -112584,7 +119450,7 @@ index a2dfff6..1e52e6d 100644 int __init pingv6_init(void) { #ifdef CONFIG_PROC_FS -@@ -248,13 +266,7 @@ int __init pingv6_init(void) +@@ -247,13 +265,7 @@ int __init pingv6_init(void) if (ret) return ret; #endif @@ -112599,7 +119465,7 @@ index a2dfff6..1e52e6d 100644 return inet6_register_protosw(&pingv6_protosw); } -@@ -263,14 +275,9 @@ int __init pingv6_init(void) +@@ -262,14 +274,9 @@ int __init pingv6_init(void) */ void pingv6_exit(void) { @@ -112629,7 +119495,7 @@ index 679253d0..70b653c 100644 goto proc_dev_snmp6_fail; return 0; diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c -index dae7f1a..783b20d 100644 +index 8072bd4..1629245 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -388,7 +388,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb) @@ -112659,7 +119525,7 @@ index dae7f1a..783b20d 100644 kfree_skb(skb); return NET_RX_DROP; } -@@ -609,7 +609,7 @@ out: +@@ -608,7 +608,7 @@ out: return err; } @@ -112668,7 +119534,7 @@ index dae7f1a..783b20d 100644 struct flowi6 *fl6, struct dst_entry **dstp, unsigned int flags) { -@@ -915,12 +915,15 @@ do_confirm: +@@ -913,12 +913,15 @@ do_confirm: static int rawv6_seticmpfilter(struct sock *sk, int level, int optname, char __user *optval, int optlen) { @@ -112685,7 +119551,7 @@ index dae7f1a..783b20d 100644 return 0; default: return -ENOPROTOOPT; -@@ -933,6 +936,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, +@@ -931,6 +934,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen) { int len; @@ -112693,7 +119559,7 @@ index dae7f1a..783b20d 100644 switch (optname) { case ICMPV6_FILTER: -@@ -944,7 +948,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, +@@ -942,7 +946,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname, len = sizeof(struct icmp6_filter); if (put_user(len, optlen)) return -EFAULT; @@ -112704,7 +119570,7 @@ index dae7f1a..783b20d 100644 return 0; default: diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c -index d7d70e6..bd5e9fc 100644 +index 8ffa2c8..5968612 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c @@ -626,12 +626,11 @@ static struct ctl_table ip6_frags_ctl_table[] = { @@ -112719,7 +119585,7 @@ index d7d70e6..bd5e9fc 100644 if (!net_eq(net, &init_net)) { - table = kmemdup(table, sizeof(ip6_frags_ns_ctl_table), GFP_KERNEL); + table = kmemdup(ip6_frags_ns_ctl_table, sizeof(ip6_frags_ns_ctl_table), GFP_KERNEL); - if (table == NULL) + if (!table) goto err_alloc; @@ -645,9 +644,10 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net) @@ -112732,7 +119598,7 @@ index d7d70e6..bd5e9fc 100644 + hdr = register_net_sysctl(net, "net/ipv6", ip6_frags_ns_ctl_table); - hdr = register_net_sysctl(net, "net/ipv6", table); - if (hdr == NULL) + if (!hdr) goto err_reg; @@ -655,8 +655,7 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net) @@ -112746,10 +119612,10 @@ index d7d70e6..bd5e9fc 100644 return -ENOMEM; } diff --git a/net/ipv6/route.c b/net/ipv6/route.c -index 4688bd4..584453d 100644 +index c73ae50..aa55e00 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c -@@ -3029,7 +3029,7 @@ struct ctl_table ipv6_route_table_template[] = { +@@ -3046,7 +3046,7 @@ struct ctl_table ipv6_route_table_template[] = { struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net) { @@ -112759,7 +119625,7 @@ index 4688bd4..584453d 100644 table = kmemdup(ipv6_route_table_template, sizeof(ipv6_route_table_template), diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c -index e4cbd57..02b1aaa 100644 +index ac35a28..070cc8c 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev); @@ -112771,7 +119637,7 @@ index e4cbd57..02b1aaa 100644 static int sit_net_id __read_mostly; struct sit_net { -@@ -1751,7 +1751,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head) +@@ -1749,7 +1749,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head) unregister_netdevice_queue(dev, head); } @@ -112781,10 +119647,10 @@ index e4cbd57..02b1aaa 100644 .maxtype = IFLA_IPTUN_MAX, .policy = ipip6_policy, diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c -index c5c10fa..2577d51 100644 +index abcc79f..3b2d2d5 100644 --- a/net/ipv6/sysctl_net_ipv6.c +++ b/net/ipv6/sysctl_net_ipv6.c -@@ -78,7 +78,7 @@ static struct ctl_table ipv6_rotable[] = { +@@ -92,7 +92,7 @@ static struct ctl_table ipv6_rotable[] = { static int __net_init ipv6_sysctl_net_init(struct net *net) { @@ -112794,7 +119660,7 @@ index c5c10fa..2577d51 100644 struct ctl_table *ipv6_icmp_table; int err; diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c -index 1f5e622..8387d90 100644 +index 3adffb3..a67e4d1 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -104,6 +104,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) @@ -112805,10 +119671,10 @@ index 1f5e622..8387d90 100644 +extern int grsec_enable_blackhole; +#endif + - static void tcp_v6_hash(struct sock *sk) + static __u32 tcp_v6_init_sequence(const struct sk_buff *skb) { - if (sk->sk_state != TCP_CLOSE) { -@@ -1345,6 +1349,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) + return secure_tcpv6_sequence_number(ipv6_hdr(skb)->daddr.s6_addr32, +@@ -1283,6 +1287,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -112818,7 +119684,7 @@ index 1f5e622..8387d90 100644 tcp_v6_send_reset(sk, skb); discard: if (opt_skb) -@@ -1454,12 +1461,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) +@@ -1392,12 +1399,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest, inet6_iif(skb)); @@ -112841,7 +119707,7 @@ index 1f5e622..8387d90 100644 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) { NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); -@@ -1510,6 +1525,10 @@ csum_error: +@@ -1448,6 +1463,10 @@ csum_error: bad_packet: TCP_INC_STATS_BH(net, TCP_MIB_INERRS); } else { @@ -112853,10 +119719,10 @@ index 1f5e622..8387d90 100644 } diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c -index d048d46..bf141c3 100644 +index e51fc3e..8f04229 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c -@@ -76,6 +76,10 @@ static unsigned int udp6_ehashfn(struct net *net, +@@ -76,6 +76,10 @@ static u32 udp6_ehashfn(const struct net *net, udp_ipv6_hash_secret + net_hash_mix(net)); } @@ -112867,7 +119733,7 @@ index d048d46..bf141c3 100644 int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2) { const struct in6_addr *sk2_rcv_saddr6 = inet6_rcv_saddr(sk2); -@@ -448,7 +452,7 @@ try_again: +@@ -445,7 +449,7 @@ try_again: if (unlikely(err)) { trace_kfree_skb(skb, udpv6_recvmsg); if (!peeked) { @@ -112876,7 +119742,7 @@ index d048d46..bf141c3 100644 if (is_udp4) UDP_INC_STATS_USER(sock_net(sk), UDP_MIB_INERRORS, -@@ -714,7 +718,7 @@ csum_error: +@@ -709,7 +713,7 @@ csum_error: UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); drop: UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); @@ -112885,8 +119751,8 @@ index d048d46..bf141c3 100644 kfree_skb(skb); return -1; } -@@ -753,7 +757,7 @@ static void flush_stack(struct sock **stack, unsigned int count, - if (likely(skb1 == NULL)) +@@ -750,7 +754,7 @@ static void flush_stack(struct sock **stack, unsigned int count, + if (likely(!skb1)) skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); if (!skb1) { - atomic_inc(&sk->sk_drops); @@ -112894,7 +119760,7 @@ index d048d46..bf141c3 100644 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk)); UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, -@@ -937,6 +941,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, +@@ -934,6 +938,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, goto csum_error; UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); @@ -112905,10 +119771,10 @@ index d048d46..bf141c3 100644 kfree_skb(skb); diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c -index 8d2d01b4..313511e 100644 +index f337a90..2a9a9db 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c -@@ -224,11 +224,11 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse) +@@ -222,11 +222,11 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse) } } @@ -112922,7 +119788,7 @@ index 8d2d01b4..313511e 100644 return dst_entries_get_fast(ops) > ops->gc_thresh * 2; } -@@ -341,19 +341,19 @@ static struct ctl_table xfrm6_policy_table[] = { +@@ -338,19 +338,19 @@ static struct ctl_table xfrm6_policy_table[] = { static int __net_init xfrm6_net_init(struct net *net) { @@ -112947,7 +119813,7 @@ index 8d2d01b4..313511e 100644 if (!hdr) goto err_reg; -@@ -361,8 +361,7 @@ static int __net_init xfrm6_net_init(struct net *net) +@@ -358,8 +358,7 @@ static int __net_init xfrm6_net_init(struct net *net) return 0; err_reg: @@ -113058,7 +119924,7 @@ index b9ac598..f88cc56 100644 return; diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c -index 53d9311..cbaf99f 100644 +index 6daa52a..786aa2b 100644 --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c @@ -686,10 +686,10 @@ static void __iucv_auto_name(struct iucv_sock *iucv) @@ -113088,7 +119954,7 @@ index 2a6a1fd..6c112b0 100644 }; diff --git a/net/key/af_key.c b/net/key/af_key.c -index f8ac939..1e189bf 100644 +index f0d52d7..9c9af38 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c @@ -3049,10 +3049,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc @@ -113105,7 +119971,7 @@ index f8ac939..1e189bf 100644 return res; } diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c -index 781b3a2..73a7434 100644 +index 4b55287..bd247f7 100644 --- a/net/l2tp/l2tp_eth.c +++ b/net/l2tp/l2tp_eth.c @@ -42,12 +42,12 @@ struct l2tp_eth { @@ -113181,7 +120047,7 @@ index 781b3a2..73a7434 100644 } diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c -index 05dfc8aa..df6cfd7 100644 +index 7964993..2c48a3a 100644 --- a/net/l2tp/l2tp_ip.c +++ b/net/l2tp/l2tp_ip.c @@ -608,7 +608,7 @@ static struct inet_protosw l2tp_ip_protosw = { @@ -113194,10 +120060,10 @@ index 05dfc8aa..df6cfd7 100644 .netns_ok = 1, }; diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c -index 8611f1b..bc60a2d 100644 +index d1ded37..c0d1e49 100644 --- a/net/l2tp/l2tp_ip6.c +++ b/net/l2tp/l2tp_ip6.c -@@ -757,7 +757,7 @@ static struct inet_protosw l2tp_ip6_protosw = { +@@ -755,7 +755,7 @@ static struct inet_protosw l2tp_ip6_protosw = { .ops = &l2tp_ip6_ops, }; @@ -113220,10 +120086,10 @@ index 1a3c7e0..80f8b0c 100644 goto out; diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c -index dd4ff36..3462997 100644 +index ff347a0..6ea4923 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -581,7 +581,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, +@@ -582,7 +582,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, ret = ieee80211_vif_use_channel(sdata, chandef, IEEE80211_CHANCTX_EXCLUSIVE); } @@ -113232,7 +120098,7 @@ index dd4ff36..3462997 100644 local->_oper_chandef = *chandef; ieee80211_hw_config(local, 0); } -@@ -3468,7 +3468,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, +@@ -3428,7 +3428,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, else local->probe_req_reg--; @@ -113241,7 +120107,7 @@ index dd4ff36..3462997 100644 break; ieee80211_queue_work(&local->hw, &local->reconfig_filter); -@@ -3603,8 +3603,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, +@@ -3563,8 +3563,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, if (chanctx_conf) { *chandef = sdata->vif.bss_conf.chandef; ret = 0; @@ -113253,10 +120119,10 @@ index dd4ff36..3462997 100644 if (local->use_chanctx) *chandef = local->monitor_chandef; diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h -index 8d53d65..a4ac794 100644 +index c0a9187..2a13300 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -29,6 +29,7 @@ +@@ -30,6 +30,7 @@ #include #include #include @@ -113264,7 +120130,7 @@ index 8d53d65..a4ac794 100644 #include "key.h" #include "sta_info.h" #include "debug.h" -@@ -1126,7 +1127,7 @@ struct ieee80211_local { +@@ -1118,7 +1119,7 @@ struct ieee80211_local { /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */ spinlock_t queue_stop_reason_lock; @@ -113274,10 +120140,10 @@ index 8d53d65..a4ac794 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 81a2751..c06a026 100644 +index 84cef60..53ec813 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c -@@ -544,7 +544,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) +@@ -550,7 +550,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) break; } @@ -113286,7 +120152,7 @@ index 81a2751..c06a026 100644 res = drv_start(local); if (res) goto err_del_bss; -@@ -591,7 +591,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) +@@ -597,7 +597,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) res = drv_add_interface(local, sdata); if (res) goto err_stop; @@ -113295,7 +120161,7 @@ index 81a2751..c06a026 100644 res = ieee80211_add_virtual_monitor(local); if (res) goto err_stop; -@@ -701,7 +701,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) +@@ -707,7 +707,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) atomic_inc(&local->iff_promiscs); if (coming_up) @@ -113304,7 +120170,7 @@ index 81a2751..c06a026 100644 if (hw_reconf_flags) ieee80211_hw_config(local, hw_reconf_flags); -@@ -739,7 +739,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) +@@ -745,7 +745,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) err_del_interface: drv_remove_interface(local, sdata); err_stop: @@ -113313,7 +120179,7 @@ index 81a2751..c06a026 100644 drv_stop(local); err_del_bss: sdata->bss = NULL; -@@ -907,7 +907,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, +@@ -915,7 +915,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, } if (going_down) @@ -113322,16 +120188,16 @@ index 81a2751..c06a026 100644 switch (sdata->vif.type) { case NL80211_IFTYPE_AP_VLAN: -@@ -969,7 +969,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, +@@ -984,7 +984,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, + atomic_set(&sdata->txqs_len[txqi->txq.ac], 0); } - spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); - if (local->open_count == 0) + if (local_read(&local->open_count) == 0) ieee80211_clear_tx_pending(local); /* -@@ -1012,7 +1012,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, +@@ -1027,7 +1027,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, if (cancel_scan) flush_delayed_work(&local->scan_work); @@ -113340,7 +120206,7 @@ index 81a2751..c06a026 100644 ieee80211_stop_device(local); /* no reconfiguring after stop! */ -@@ -1023,7 +1023,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, +@@ -1038,7 +1038,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, ieee80211_configure_filter(local); ieee80211_hw_config(local, hw_reconf_flags); @@ -113350,7 +120216,7 @@ index 81a2751..c06a026 100644 } diff --git a/net/mac80211/main.c b/net/mac80211/main.c -index 5e09d35..e2fdbe2 100644 +index df3051d..359d2f4 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -175,7 +175,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) @@ -113363,7 +120229,7 @@ index 5e09d35..e2fdbe2 100644 /* * Goal: diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c -index ca405b6..6cc8bee 100644 +index ac6ad62..77dbac5 100644 --- a/net/mac80211/pm.c +++ b/net/mac80211/pm.c @@ -12,7 +12,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) @@ -113375,16 +120241,7 @@ index ca405b6..6cc8bee 100644 goto suspend; ieee80211_scan_cancel(local); -@@ -59,7 +59,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) - cancel_work_sync(&local->dynamic_ps_enable_work); - del_timer_sync(&local->dynamic_ps_timer); - -- local->wowlan = wowlan && local->open_count; -+ local->wowlan = wowlan && local_read(&local->open_count); - if (local->wowlan) { - int err = drv_suspend(local, wowlan); - if (err < 0) { -@@ -126,7 +126,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) +@@ -150,7 +150,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) WARN_ON(!list_empty(&local->chanctx_list)); /* stop hardware - this must stop RX */ @@ -113406,11 +120263,24 @@ index d53355b..21f583a 100644 return -EBUSY; if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) { +diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c +index 2880f2a..3085cec 100644 +--- a/net/mac80211/sta_info.c ++++ b/net/mac80211/sta_info.c +@@ -339,7 +339,7 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata, + int size = sizeof(struct txq_info) + + ALIGN(hw->txq_data_size, sizeof(void *)); + +- txq_data = kcalloc(ARRAY_SIZE(sta->sta.txq), size, gfp); ++ txq_data = kcalloc(size, ARRAY_SIZE(sta->sta.txq), gfp); + if (!txq_data) + goto free; + diff --git a/net/mac80211/util.c b/net/mac80211/util.c -index 747bdcf..eb2b981 100644 +index b864ebc..17326ff 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c -@@ -1741,7 +1741,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) +@@ -1761,7 +1761,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) bool sched_scan_stopped = false; /* nothing to do if HW shouldn't run */ @@ -113419,7 +120289,7 @@ index 747bdcf..eb2b981 100644 goto wake_up; #ifdef CONFIG_PM -@@ -1993,7 +1993,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) +@@ -2033,7 +2033,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) local->in_reconfig = false; barrier(); @@ -113428,7 +120298,7 @@ index 747bdcf..eb2b981 100644 ieee80211_add_virtual_monitor(local); /* -@@ -2048,7 +2048,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) +@@ -2088,7 +2088,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) * If this is for hw restart things are still running. * We may want to change that later, however. */ @@ -113437,7 +120307,7 @@ index 747bdcf..eb2b981 100644 drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_RESTART); if (!local->suspended) -@@ -2072,7 +2072,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) +@@ -2112,7 +2112,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) flush_delayed_work(&local->scan_work); } @@ -113446,11 +120316,42 @@ index 747bdcf..eb2b981 100644 drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_SUSPEND); list_for_each_entry(sdata, &local->interfaces, list) { +diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c +index 1f93a59..96faa29 100644 +--- a/net/mpls/af_mpls.c ++++ b/net/mpls/af_mpls.c +@@ -456,7 +456,7 @@ static int mpls_dev_sysctl_register(struct net_device *dev, + struct mpls_dev *mdev) + { + char path[sizeof("net/mpls/conf/") + IFNAMSIZ]; +- struct ctl_table *table; ++ ctl_table_no_const *table; + int i; + + table = kmemdup(&mpls_dev_table, sizeof(mpls_dev_table), GFP_KERNEL); +@@ -1025,7 +1025,7 @@ static int mpls_platform_labels(struct ctl_table *table, int write, + struct net *net = table->data; + int platform_labels = net->mpls.platform_labels; + int ret; +- struct ctl_table tmp = { ++ ctl_table_no_const tmp = { + .procname = table->procname, + .data = &platform_labels, + .maxlen = sizeof(int), +@@ -1055,7 +1055,7 @@ static const struct ctl_table mpls_table[] = { + + static int mpls_net_init(struct net *net) + { +- struct ctl_table *table; ++ ctl_table_no_const *table; + + net->mpls.platform_labels = 0; + net->mpls.platform_label = NULL; diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig -index b02660f..c0f791c 100644 +index a0f3e6a3..b026fe2 100644 --- a/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig -@@ -1122,6 +1122,16 @@ config NETFILTER_XT_MATCH_ESP +@@ -1112,6 +1112,16 @@ config NETFILTER_XT_MATCH_ESP To compile it as a module, choose M here. If unsure, say N. @@ -113468,7 +120369,7 @@ index b02660f..c0f791c 100644 tristate '"hashlimit" match support' depends on (IP6_NF_IPTABLES || IP6_NF_IPTABLES=n) diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile -index 89f73a9..e4e5bd9 100644 +index a87d8b8..d43183c 100644 --- a/net/netfilter/Makefile +++ b/net/netfilter/Makefile @@ -139,6 +139,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_DEVGROUP) += xt_devgroup.o @@ -113524,10 +120425,10 @@ index b0f7b62..0541842 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 b87ca32..76c7799 100644 +index 5d2b806..9005b29 100644 --- a/net/netfilter/ipvs/ip_vs_core.c +++ b/net/netfilter/ipvs/ip_vs_core.c -@@ -568,7 +568,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb, +@@ -574,7 +574,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb, ret = cp->packet_xmit(skb, cp, pd->pp, iph); /* do not touch skb anymore */ @@ -113536,7 +120437,7 @@ index b87ca32..76c7799 100644 ip_vs_conn_put(cp); return ret; } -@@ -1723,7 +1723,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af) +@@ -1750,7 +1750,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 @@ -113546,10 +120447,10 @@ index b87ca32..76c7799 100644 if (ipvs->sync_state & IP_VS_STATE_MASTER) ip_vs_sync_conn(net, cp, pkts); diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c -index ed99448..3ba6cad 100644 +index 285eae3..226f4a7 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c -@@ -799,7 +799,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest, +@@ -814,7 +814,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest, */ ip_vs_rs_hash(ipvs, dest); } @@ -113558,7 +120459,7 @@ index ed99448..3ba6cad 100644 /* bind the service */ old_svc = rcu_dereference_protected(dest->svc, 1); -@@ -1664,7 +1664,7 @@ proc_do_sync_ports(struct ctl_table *table, int write, +@@ -1679,7 +1679,7 @@ proc_do_sync_ports(struct ctl_table *table, int write, * align with netns init in ip_vs_control_net_init() */ @@ -113567,7 +120468,7 @@ index ed99448..3ba6cad 100644 { .procname = "amemthresh", .maxlen = sizeof(int), -@@ -1999,7 +1999,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v) +@@ -2020,7 +2020,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), @@ -113576,7 +120477,7 @@ index ed99448..3ba6cad 100644 atomic_read(&dest->weight), atomic_read(&dest->activeconns), atomic_read(&dest->inactconns)); -@@ -2010,7 +2010,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v) +@@ -2031,7 +2031,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), @@ -113585,7 +120486,7 @@ index ed99448..3ba6cad 100644 atomic_read(&dest->weight), atomic_read(&dest->activeconns), atomic_read(&dest->inactconns)); -@@ -2499,7 +2499,7 @@ __ip_vs_get_dest_entries(struct net *net, const struct ip_vs_get_dests *get, +@@ -2528,7 +2528,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; @@ -113594,7 +120495,7 @@ index ed99448..3ba6cad 100644 entry.weight = atomic_read(&dest->weight); entry.u_threshold = dest->u_threshold; entry.l_threshold = dest->l_threshold; -@@ -3040,7 +3040,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest) +@@ -3101,7 +3101,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest) if (nla_put(skb, IPVS_DEST_ATTR_ADDR, sizeof(dest->addr), &dest->addr) || nla_put_be16(skb, IPVS_DEST_ATTR_PORT, dest->port) || nla_put_u32(skb, IPVS_DEST_ATTR_FWD_METHOD, @@ -113603,7 +120504,7 @@ index ed99448..3ba6cad 100644 IP_VS_CONN_F_FWD_MASK)) || nla_put_u32(skb, IPVS_DEST_ATTR_WEIGHT, atomic_read(&dest->weight)) || -@@ -3675,7 +3675,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct net *net) +@@ -3739,7 +3739,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct net *net) { int idx; struct netns_ipvs *ipvs = net_ipvs(net); @@ -113639,7 +120540,7 @@ index 2229d2d..b32b785 100644 .procname = "lblcr_expiration", .data = NULL, diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c -index d93ceeb..4556144 100644 +index 19b9cce..e4f3112 100644 --- a/net/netfilter/ipvs/ip_vs_sync.c +++ b/net/netfilter/ipvs/ip_vs_sync.c @@ -609,7 +609,7 @@ static void ip_vs_sync_conn_v0(struct net *net, struct ip_vs_conn *cp, @@ -113660,7 +120561,7 @@ index d93ceeb..4556144 100644 else pkts = sysctl_sync_threshold(ipvs); goto sloop; -@@ -902,7 +902,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param, +@@ -919,7 +919,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param, if (opt) memcpy(&cp->in_seq, opt, sizeof(*opt)); @@ -113670,10 +120571,10 @@ index d93ceeb..4556144 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 3aedbda..6a63567 100644 +index 19986ec..416dbc5 100644 --- a/net/netfilter/ipvs/ip_vs_xmit.c +++ b/net/netfilter/ipvs/ip_vs_xmit.c -@@ -1214,7 +1214,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, +@@ -1215,7 +1215,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, else rc = NF_ACCEPT; /* do not touch skb anymore */ @@ -113682,7 +120583,7 @@ index 3aedbda..6a63567 100644 goto out; } -@@ -1307,7 +1307,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp, +@@ -1308,7 +1308,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp, else rc = NF_ACCEPT; /* do not touch skb anymore */ @@ -113692,10 +120593,10 @@ index 3aedbda..6a63567 100644 } diff --git a/net/netfilter/nf_conntrack_acct.c b/net/netfilter/nf_conntrack_acct.c -index a4b5e2a..13b1de3 100644 +index 45da11a..ef3e5dc 100644 --- a/net/netfilter/nf_conntrack_acct.c +++ b/net/netfilter/nf_conntrack_acct.c -@@ -62,7 +62,7 @@ static struct nf_ct_ext_type acct_extend __read_mostly = { +@@ -64,7 +64,7 @@ static struct nf_ct_ext_type acct_extend __read_mostly = { #ifdef CONFIG_SYSCTL static int nf_conntrack_acct_init_sysctl(struct net *net) { @@ -113851,10 +120752,10 @@ index c68c1e5..8b5d670 100644 } EXPORT_SYMBOL(nf_unregister_sockopt); diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c -index 11d85b3..7fcc420 100644 +index 4ef1fae..f72f08b 100644 --- a/net/netfilter/nfnetlink_log.c +++ b/net/netfilter/nfnetlink_log.c -@@ -83,7 +83,7 @@ static int nfnl_log_net_id __read_mostly; +@@ -84,7 +84,7 @@ static int nfnl_log_net_id __read_mostly; struct nfnl_log_net { spinlock_t instances_lock; struct hlist_head instance_table[INSTANCE_BUCKETS]; @@ -113863,7 +120764,7 @@ index 11d85b3..7fcc420 100644 }; static struct nfnl_log_net *nfnl_log_pernet(struct net *net) -@@ -563,7 +563,7 @@ __build_packet_message(struct nfnl_log_net *log, +@@ -572,7 +572,7 @@ __build_packet_message(struct nfnl_log_net *log, /* global sequence number */ if ((inst->flags & NFULNL_CFG_F_SEQ_GLOBAL) && nla_put_be32(inst->skb, NFULA_SEQ_GLOBAL, @@ -113873,22 +120774,22 @@ index 11d85b3..7fcc420 100644 if (data_len) { diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c -index 65f3e2b..2e9d6a0 100644 +index 7f29cfc..917ef5f 100644 --- a/net/netfilter/nft_compat.c +++ b/net/netfilter/nft_compat.c -@@ -317,14 +317,7 @@ static void nft_match_eval(const struct nft_expr *expr, +@@ -321,14 +321,7 @@ static void nft_match_eval(const struct nft_expr *expr, return; } -- switch(ret) { -- case true: -- data[NFT_REG_VERDICT].verdict = NFT_CONTINUE; +- switch (ret ? 1 : 0) { +- case 1: +- regs->verdict.code = NFT_CONTINUE; - break; -- case false: -- data[NFT_REG_VERDICT].verdict = NFT_BREAK; +- case 0: +- regs->verdict.code = NFT_BREAK; - break; - } -+ data[NFT_REG_VERDICT].verdict = ret ? NFT_CONTINUE : NFT_BREAK; ++ regs->verdict.code = ret ? NFT_CONTINUE : NFT_BREAK; } static const struct nla_policy nft_match_policy[NFTA_MATCH_MAX + 1] = { @@ -114015,10 +120916,10 @@ index 11de55e..f25e448 100644 return 0; } diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c -index d1d7a81..b45b03d 100644 +index bf6e766..be67817 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c -@@ -260,7 +260,7 @@ static void netlink_overrun(struct sock *sk) +@@ -262,7 +262,7 @@ static void netlink_overrun(struct sock *sk) sk->sk_error_report(sk); } } @@ -114027,7 +120928,7 @@ index d1d7a81..b45b03d 100644 } static void netlink_rcv_wake(struct sock *sk) -@@ -3002,7 +3002,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) +@@ -3014,7 +3014,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) sk_wmem_alloc_get(s), nlk->cb_running, atomic_read(&s->sk_refcnt), @@ -114112,10 +121013,10 @@ index bc85331..0d3dce0 100644 /** * struct vport_portids - array of netlink portids of a vport. diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c -index f8db706..2b4631e 100644 +index fe1610d..ec1c87f 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c -@@ -269,7 +269,7 @@ static int packet_direct_xmit(struct sk_buff *skb) +@@ -275,7 +275,7 @@ static int packet_direct_xmit(struct sk_buff *skb) return ret; drop: @@ -114124,16 +121025,7 @@ index f8db706..2b4631e 100644 kfree_skb(skb); return NET_XMIT_DROP; } -@@ -1847,7 +1847,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, - - spin_lock(&sk->sk_receive_queue.lock); - po->stats.stats1.tp_packets++; -- skb->dropcount = atomic_read(&sk->sk_drops); -+ skb->dropcount = atomic_read_unchecked(&sk->sk_drops); - __skb_queue_tail(&sk->sk_receive_queue, skb); - spin_unlock(&sk->sk_receive_queue.lock); - sk->sk_data_ready(sk); -@@ -1856,7 +1856,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, +@@ -1848,7 +1848,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.stats1.tp_drops++; @@ -114142,7 +121034,7 @@ index f8db706..2b4631e 100644 spin_unlock(&sk->sk_receive_queue.lock); drop_n_restore: -@@ -3499,7 +3499,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, +@@ -3514,7 +3514,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, case PACKET_HDRLEN: if (len > sizeof(int)) len = sizeof(int); @@ -114151,7 +121043,7 @@ index f8db706..2b4631e 100644 return -EFAULT; switch (val) { case TPACKET_V1: -@@ -3545,7 +3545,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, +@@ -3560,7 +3560,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, len = lv; if (put_user(len, optlen)) return -EFAULT; @@ -114161,7 +121053,7 @@ index f8db706..2b4631e 100644 return 0; } diff --git a/net/phonet/pep.c b/net/phonet/pep.c -index 5d3f2b7..8a4dbb7 100644 +index 6de2aeb..1f8afe8 100644 --- a/net/phonet/pep.c +++ b/net/phonet/pep.c @@ -388,7 +388,7 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb) @@ -114192,7 +121084,7 @@ index 5d3f2b7..8a4dbb7 100644 break; } diff --git a/net/phonet/socket.c b/net/phonet/socket.c -index 008214a..bb68240 100644 +index d575ef4..1dedc31 100644 --- a/net/phonet/socket.c +++ b/net/phonet/socket.c @@ -611,7 +611,7 @@ static int pn_sock_seq_show(struct seq_file *seq, void *v) @@ -114248,18 +121140,6 @@ index e6144b8..4f9fda6 100644 if (likely(*recent == gen)) return 0; -diff --git a/net/rds/connection.c b/net/rds/connection.c -index 378c3a6..ba4382c 100644 ---- a/net/rds/connection.c -+++ b/net/rds/connection.c -@@ -193,6 +193,7 @@ static struct rds_connection *__rds_conn_create(__be32 laddr, __be32 faddr, - } - - atomic_set(&conn->c_state, RDS_CONN_DOWN); -+ conn->c_send_gen = 0; - conn->c_reconnect_jiffies = 0; - INIT_DELAYED_WORK(&conn->c_send_w, rds_send_worker); - INIT_DELAYED_WORK(&conn->c_recv_w, rds_recv_worker); diff --git a/net/rds/ib.h b/net/rds/ib.h index c36d713..af45bf2 100644 --- a/net/rds/ib.h @@ -114274,10 +121154,10 @@ index c36d713..af45bf2 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 31b74f5..dc1fbfa 100644 +index 8a09ee7..45e2b64 100644 --- a/net/rds/ib_cm.c +++ b/net/rds/ib_cm.c -@@ -717,7 +717,7 @@ void rds_ib_conn_shutdown(struct rds_connection *conn) +@@ -726,7 +726,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 @@ -114357,18 +121237,10 @@ index a66d179..cf1e258 100644 #endif diff --git a/net/rds/rds.h b/net/rds/rds.h -index c2a5eef..87a7460 100644 +index 0d41155..80cc278 100644 --- a/net/rds/rds.h +++ b/net/rds/rds.h -@@ -110,6 +110,7 @@ struct rds_connection { - void *c_transport_data; - - atomic_t c_state; -+ unsigned long c_send_gen; - unsigned long c_flags; - unsigned long c_reconnect_jiffies; - struct delayed_work c_send_w; -@@ -448,7 +449,7 @@ struct rds_transport { +@@ -449,7 +449,7 @@ struct rds_transport { void (*sync_mr)(void *trans_private, int direction); void (*free_mr)(void *trans_private, int invalidate); void (*flush_mrs)(void); @@ -114377,85 +121249,6 @@ index c2a5eef..87a7460 100644 struct rds_sock { struct sock rs_sk; -diff --git a/net/rds/send.c b/net/rds/send.c -index 42f65d4..49f77ef 100644 ---- a/net/rds/send.c -+++ b/net/rds/send.c -@@ -140,8 +140,11 @@ int rds_send_xmit(struct rds_connection *conn) - struct scatterlist *sg; - int ret = 0; - LIST_HEAD(to_be_dropped); -+ int batch_count; -+ unsigned long send_gen = 0; - - restart: -+ batch_count = 0; - - /* - * sendmsg calls here after having queued its message on the send -@@ -157,6 +160,17 @@ restart: - } - - /* -+ * we record the send generation after doing the xmit acquire. -+ * if someone else manages to jump in and do some work, we'll use -+ * this to avoid a goto restart farther down. -+ * -+ * The acquire_in_xmit() check above ensures that only one -+ * caller can increment c_send_gen at any time. -+ */ -+ conn->c_send_gen++; -+ send_gen = conn->c_send_gen; -+ -+ /* - * rds_conn_shutdown() sets the conn state and then tests RDS_IN_XMIT, - * we do the opposite to avoid races. - */ -@@ -202,6 +216,16 @@ restart: - if (!rm) { - unsigned int len; - -+ batch_count++; -+ -+ /* we want to process as big a batch as we can, but -+ * we also want to avoid softlockups. If we've been -+ * through a lot of messages, lets back off and see -+ * if anyone else jumps in -+ */ -+ if (batch_count >= 1024) -+ goto over_batch; -+ - spin_lock_irqsave(&conn->c_lock, flags); - - if (!list_empty(&conn->c_send_queue)) { -@@ -357,9 +381,9 @@ restart: - } - } - -+over_batch: - if (conn->c_trans->xmit_complete) - conn->c_trans->xmit_complete(conn); -- - release_in_xmit(conn); - - /* Nuke any messages we decided not to retransmit. */ -@@ -380,10 +404,15 @@ restart: - * If the transport cannot continue (i.e ret != 0), then it must - * call us when more room is available, such as from the tx - * completion handler. -+ * -+ * We have an extra generation check here so that if someone manages -+ * to jump in after our release_in_xmit, we'll see that they have done -+ * some work and we will skip our goto - */ - if (ret == 0) { - smp_mb(); -- if (!list_empty(&conn->c_send_queue)) { -+ if (!list_empty(&conn->c_send_queue) && -+ send_gen == conn->c_send_gen) { - rds_stats_inc(s_send_lock_queue_raced); - goto restart; - } diff --git a/net/rds/tcp.c b/net/rds/tcp.c index edac9ef..16bcb98 100644 --- a/net/rds/tcp.c @@ -114483,7 +121276,7 @@ index 53b17ca..45463e7 100644 set_fs(oldfs); } diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c -index 7b16704..9628ec6 100644 +index 0095b9a..e95c49b 100644 --- a/net/rxrpc/af_rxrpc.c +++ b/net/rxrpc/af_rxrpc.c @@ -40,7 +40,7 @@ static const struct proto_ops rxrpc_rpc_ops; @@ -114602,7 +121395,7 @@ index e7ed43a..6afa140 100644 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len); diff --git a/net/rxrpc/ar-input.c b/net/rxrpc/ar-input.c -index 481f89f..ceeaf8d 100644 +index 4505a69..fe73096 100644 --- a/net/rxrpc/ar-input.c +++ b/net/rxrpc/ar-input.c @@ -331,9 +331,9 @@ void rxrpc_fast_process_packet(struct rxrpc_call *call, struct sk_buff *skb) @@ -114618,10 +121411,10 @@ index 481f89f..ceeaf8d 100644 /* request ACK generation for any ACK or DATA packet that requests diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h -index ba9fd36..9bbfe01 100644 +index aef1bd2..97736c3 100644 --- a/net/rxrpc/ar-internal.h +++ b/net/rxrpc/ar-internal.h -@@ -272,8 +272,8 @@ struct rxrpc_connection { +@@ -274,8 +274,8 @@ struct rxrpc_connection { int error; /* error code for local abort */ int debug_id; /* debug ID for printks */ unsigned int call_counter; /* call ID counter */ @@ -114632,7 +121425,7 @@ index ba9fd36..9bbfe01 100644 u8 avail_calls; /* number of calls available */ u8 size_align; /* data size alignment (for security) */ u8 header_size; /* rxrpc + security header size */ -@@ -346,7 +346,7 @@ struct rxrpc_call { +@@ -348,7 +348,7 @@ struct rxrpc_call { spinlock_t lock; rwlock_t state_lock; /* lock for state transition */ atomic_t usage; @@ -114641,7 +121434,7 @@ index ba9fd36..9bbfe01 100644 u32 abort_code; /* local/remote abort code */ enum { /* current state of call */ RXRPC_CALL_CLIENT_SEND_REQUEST, /* - client sending request phase */ -@@ -431,7 +431,7 @@ static inline void rxrpc_abort_call(struct rxrpc_call *call, u32 abort_code) +@@ -433,7 +433,7 @@ static inline void rxrpc_abort_call(struct rxrpc_call *call, u32 abort_code) */ extern atomic_t rxrpc_n_skbs; extern __be32 rxrpc_epoch; @@ -114651,10 +121444,10 @@ index ba9fd36..9bbfe01 100644 /* diff --git a/net/rxrpc/ar-local.c b/net/rxrpc/ar-local.c -index 87f7135..74d3703 100644 +index ca904ed..16082d5 100644 --- a/net/rxrpc/ar-local.c +++ b/net/rxrpc/ar-local.c -@@ -45,7 +45,7 @@ struct rxrpc_local *rxrpc_alloc_local(struct sockaddr_rxrpc *srx) +@@ -53,7 +53,7 @@ struct rxrpc_local *rxrpc_alloc_local(struct sockaddr_rxrpc *srx) spin_lock_init(&local->lock); rwlock_init(&local->services_lock); atomic_set(&local->usage, 1); @@ -114664,10 +121457,10 @@ index 87f7135..74d3703 100644 } diff --git a/net/rxrpc/ar-output.c b/net/rxrpc/ar-output.c -index 8331c95..401bf22 100644 +index c004280..ab1ed5a 100644 --- a/net/rxrpc/ar-output.c +++ b/net/rxrpc/ar-output.c -@@ -655,14 +655,14 @@ static int rxrpc_send_data(struct kiocb *iocb, +@@ -648,14 +648,14 @@ static int rxrpc_send_data(struct rxrpc_sock *rx, memset(skb_put(skb, pad), 0, pad); } @@ -114747,6 +121540,101 @@ index f226709..0e735a8 100644 _proto("Tx RESPONSE %%%u", ntohl(hdr->serial)); ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len); +diff --git a/net/sched/act_bpf.c b/net/sched/act_bpf.c +index dc6a2d3..3b4fb96 100644 +--- a/net/sched/act_bpf.c ++++ b/net/sched/act_bpf.c +@@ -332,6 +332,9 @@ static void tcf_bpf_cleanup(struct tc_action *act, int bind) + bpf_prog_put(prog->filter); + else + bpf_prog_destroy(prog->filter); ++ ++ kfree(prog->bpf_ops); ++ kfree(prog->bpf_name); + } + + static struct tc_action_ops act_bpf_ops __read_mostly = { +diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c +index 91bd9c1..c0b86f2 100644 +--- a/net/sched/cls_bpf.c ++++ b/net/sched/cls_bpf.c +@@ -364,7 +364,7 @@ static int cls_bpf_change(struct net *net, struct sk_buff *in_skb, + goto errout; + + if (oldprog) { +- list_replace_rcu(&prog->link, &oldprog->link); ++ list_replace_rcu(&oldprog->link, &prog->link); + tcf_unbind_filter(tp, &oldprog->res); + call_rcu(&oldprog->rcu, __cls_bpf_delete_prog); + } else { +diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c +index a620c4e..75df923 100644 +--- a/net/sched/cls_flow.c ++++ b/net/sched/cls_flow.c +@@ -419,6 +419,8 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, + if (!fnew) + goto err2; + ++ tcf_exts_init(&fnew->exts, TCA_FLOW_ACT, TCA_FLOW_POLICE); ++ + fold = (struct flow_filter *)*arg; + if (fold) { + err = -EINVAL; +@@ -480,7 +482,6 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, + fnew->mask = ~0U; + fnew->tp = tp; + get_random_bytes(&fnew->hashrnd, 4); +- tcf_exts_init(&fnew->exts, TCA_FLOW_ACT, TCA_FLOW_POLICE); + } + + fnew->perturb_timer.function = flow_perturbation; +@@ -520,7 +521,7 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, + if (*arg == 0) + list_add_tail_rcu(&fnew->list, &head->filters); + else +- list_replace_rcu(&fnew->list, &fold->list); ++ list_replace_rcu(&fold->list, &fnew->list); + + *arg = (unsigned long)fnew; + +diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c +index c244c45b..4169e55 100644 +--- a/net/sched/sch_fq_codel.c ++++ b/net/sched/sch_fq_codel.c +@@ -162,14 +162,23 @@ static unsigned int fq_codel_drop(struct Qdisc *sch) + skb = dequeue_head(flow); + len = qdisc_pkt_len(skb); + q->backlogs[idx] -= len; +- kfree_skb(skb); + sch->q.qlen--; + qdisc_qstats_drop(sch); + qdisc_qstats_backlog_dec(sch, skb); ++ kfree_skb(skb); + flow->dropped++; + return idx; + } + ++static unsigned int fq_codel_qdisc_drop(struct Qdisc *sch) ++{ ++ unsigned int prev_backlog; ++ ++ prev_backlog = sch->qstats.backlog; ++ fq_codel_drop(sch); ++ return prev_backlog - sch->qstats.backlog; ++} ++ + static int fq_codel_enqueue(struct sk_buff *skb, struct Qdisc *sch) + { + struct fq_codel_sched_data *q = qdisc_priv(sch); +@@ -598,7 +607,7 @@ static struct Qdisc_ops fq_codel_qdisc_ops __read_mostly = { + .enqueue = fq_codel_enqueue, + .dequeue = fq_codel_dequeue, + .peek = qdisc_peek_dequeued, +- .drop = fq_codel_drop, ++ .drop = fq_codel_qdisc_drop, + .init = fq_codel_init, + .reset = fq_codel_reset, + .destroy = fq_codel_destroy, diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 6efca30..1259f82 100644 --- a/net/sched/sch_generic.c @@ -114769,6 +121657,22 @@ index 6efca30..1259f82 100644 linkwatch_fire_event(dev); } } +diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c +index b877140..0f65ba4 100644 +--- a/net/sched/sch_sfq.c ++++ b/net/sched/sch_sfq.c +@@ -329,10 +329,10 @@ drop: + len = qdisc_pkt_len(skb); + slot->backlog -= len; + sfq_dec(q, x); +- kfree_skb(skb); + sch->q.qlen--; + qdisc_qstats_drop(sch); + qdisc_qstats_backlog_dec(sch, skb); ++ kfree_skb(skb); + return len; + } + diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index 0e4198e..f94193e 100644 --- a/net/sctp/ipv6.c @@ -114801,7 +121705,7 @@ index 0e4198e..f94193e 100644 /* Initialize IPv6 support and register with socket layer. */ diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c -index 8f34b27..b105385 100644 +index 53b7acd..e7a0919 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c @@ -836,8 +836,10 @@ int sctp_register_af(struct sctp_af *af) @@ -114857,10 +121761,10 @@ index fef2acd..c705c4f 100644 sctp_generate_t1_cookie_event, sctp_generate_t1_init_event, diff --git a/net/sctp/socket.c b/net/sctp/socket.c -index aafe94b..40b016f 100644 +index 5f6c4e6..07880fe 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c -@@ -2205,11 +2205,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval, +@@ -2200,11 +2200,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval, { struct sctp_association *asoc; struct sctp_ulpevent *event; @@ -114875,7 +121779,7 @@ index aafe94b..40b016f 100644 if (sctp_sk(sk)->subscribe.sctp_data_io_event) pr_warn_ratelimited(DEPRECATED "%s (pid %d) " -@@ -4378,13 +4380,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len, +@@ -4385,13 +4387,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len, static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, int __user *optlen) { @@ -114893,7 +121797,7 @@ index aafe94b..40b016f 100644 return -EFAULT; return 0; } -@@ -4402,6 +4407,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, +@@ -4409,6 +4414,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, */ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optval, int __user *optlen) { @@ -114902,7 +121806,7 @@ index aafe94b..40b016f 100644 /* Applicable to UDP-style socket only */ if (sctp_style(sk, TCP)) return -EOPNOTSUPP; -@@ -4410,7 +4417,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv +@@ -4417,7 +4424,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv len = sizeof(int); if (put_user(len, optlen)) return -EFAULT; @@ -114912,7 +121816,7 @@ index aafe94b..40b016f 100644 return -EFAULT; return 0; } -@@ -4784,12 +4792,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len, +@@ -4791,12 +4799,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len, */ static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval, int __user *optlen) { @@ -114929,7 +121833,7 @@ index aafe94b..40b016f 100644 return -EFAULT; return 0; } -@@ -4830,6 +4841,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, +@@ -4837,6 +4848,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, ->addr_to_user(sp, &temp); if (space_left < addrlen) return -ENOMEM; @@ -114939,10 +121843,10 @@ index aafe94b..40b016f 100644 return -EFAULT; to += addrlen; diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c -index 2e9ada1..40f425d 100644 +index 26d50c5..dfae665 100644 --- a/net/sctp/sysctl.c +++ b/net/sctp/sysctl.c -@@ -321,7 +321,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write, +@@ -317,7 +317,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write, loff_t *ppos) { struct net *net = current->nsproxy->net_ns; @@ -114951,7 +121855,7 @@ index 2e9ada1..40f425d 100644 bool changed = false; char *none = "none"; char tmp[8]; -@@ -369,7 +369,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write, +@@ -365,7 +365,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write, struct net *net = current->nsproxy->net_ns; unsigned int min = *(unsigned int *) ctl->extra1; unsigned int max = *(unsigned int *) ctl->extra2; @@ -114960,7 +121864,7 @@ index 2e9ada1..40f425d 100644 int ret, new_value; memset(&tbl, 0, sizeof(struct ctl_table)); -@@ -398,7 +398,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, +@@ -394,7 +394,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, struct net *net = current->nsproxy->net_ns; unsigned int min = *(unsigned int *) ctl->extra1; unsigned int max = *(unsigned int *) ctl->extra2; @@ -114969,7 +121873,7 @@ index 2e9ada1..40f425d 100644 int ret, new_value; memset(&tbl, 0, sizeof(struct ctl_table)); -@@ -436,7 +436,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write, +@@ -432,7 +432,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write, loff_t *ppos) { struct net *net = current->nsproxy->net_ns; @@ -114978,7 +121882,7 @@ index 2e9ada1..40f425d 100644 int new_value, ret; memset(&tbl, 0, sizeof(struct ctl_table)); -@@ -463,7 +463,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write, +@@ -459,7 +459,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write, int sctp_sysctl_net_register(struct net *net) { @@ -114988,7 +121892,7 @@ index 2e9ada1..40f425d 100644 table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); diff --git a/net/socket.c b/net/socket.c -index 245330c..919e2a7 100644 +index 884e329..def6df6 100644 --- a/net/socket.c +++ b/net/socket.c @@ -89,6 +89,7 @@ @@ -115007,7 +121911,7 @@ index 245330c..919e2a7 100644 #ifdef CONFIG_NET_RX_BUSY_POLL unsigned int sysctl_net_busy_read __read_mostly; -@@ -162,7 +164,7 @@ static const struct file_operations socket_file_ops = { +@@ -160,7 +162,7 @@ static const struct file_operations socket_file_ops = { */ static DEFINE_SPINLOCK(net_family_lock); @@ -115016,7 +121920,7 @@ index 245330c..919e2a7 100644 /* * Statistics counters of the socket lists -@@ -328,7 +330,7 @@ static struct dentry *sockfs_mount(struct file_system_type *fs_type, +@@ -326,7 +328,7 @@ static struct dentry *sockfs_mount(struct file_system_type *fs_type, &sockfs_dentry_operations, SOCKFS_MAGIC); } @@ -115025,7 +121929,7 @@ index 245330c..919e2a7 100644 static struct file_system_type sock_fs_type = { .name = "sockfs", -@@ -1172,6 +1174,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, +@@ -1108,6 +1110,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, return -EAFNOSUPPORT; if (type < 0 || type >= SOCK_MAX) return -EINVAL; @@ -115034,7 +121938,7 @@ index 245330c..919e2a7 100644 /* Compatibility. -@@ -1192,6 +1196,20 @@ int __sock_create(struct net *net, int family, int type, int protocol, +@@ -1128,6 +1132,20 @@ int __sock_create(struct net *net, int family, int type, int protocol, if (err) return err; @@ -115055,7 +121959,7 @@ index 245330c..919e2a7 100644 /* * Allocate the socket and allow the family to set things up. if * the protocol is 0, the family is instructed to select an appropriate -@@ -1443,6 +1461,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) +@@ -1379,6 +1397,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) if (sock) { err = move_addr_to_kernel(umyaddr, addrlen, &address); if (err >= 0) { @@ -115070,7 +121974,7 @@ index 245330c..919e2a7 100644 err = security_socket_bind(sock, (struct sockaddr *)&address, addrlen); -@@ -1451,6 +1477,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) +@@ -1387,6 +1413,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) (struct sockaddr *) &address, addrlen); } @@ -115078,7 +121982,7 @@ index 245330c..919e2a7 100644 fput_light(sock->file, fput_needed); } return err; -@@ -1474,10 +1501,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog) +@@ -1410,10 +1437,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog) if ((unsigned int)backlog > somaxconn) backlog = somaxconn; @@ -115099,7 +122003,7 @@ index 245330c..919e2a7 100644 fput_light(sock->file, fput_needed); } return err; -@@ -1521,6 +1558,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, +@@ -1457,6 +1494,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, newsock->type = sock->type; newsock->ops = sock->ops; @@ -115118,7 +122022,7 @@ index 245330c..919e2a7 100644 /* * We don't need try_module_get here, as the listening socket (sock) * has the protocol module (sock->ops->owner) held. -@@ -1566,6 +1615,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, +@@ -1502,6 +1551,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, fd_install(newfd, newfile); err = newfd; @@ -115127,7 +122031,7 @@ index 245330c..919e2a7 100644 out_put: fput_light(sock->file, fput_needed); out: -@@ -1598,6 +1649,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, +@@ -1534,6 +1585,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, int, addrlen) { struct socket *sock; @@ -115135,7 +122039,7 @@ index 245330c..919e2a7 100644 struct sockaddr_storage address; int err, fput_needed; -@@ -1608,6 +1660,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, +@@ -1544,6 +1596,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, if (err < 0) goto out_put; @@ -115153,7 +122057,7 @@ index 245330c..919e2a7 100644 err = security_socket_connect(sock, (struct sockaddr *)&address, addrlen); if (err) -@@ -1689,6 +1752,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, +@@ -1625,6 +1688,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, * the protocol. */ @@ -115162,7 +122066,7 @@ index 245330c..919e2a7 100644 SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, unsigned int, flags, struct sockaddr __user *, addr, int, addr_len) -@@ -1756,7 +1821,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, +@@ -1688,7 +1753,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, struct socket *sock; struct iovec iov; struct msghdr msg; @@ -115171,7 +122075,7 @@ index 245330c..919e2a7 100644 int err, err2; int fput_needed; -@@ -2006,7 +2071,7 @@ static int ___sys_sendmsg(struct socket *sock, struct user_msghdr __user *msg, +@@ -1930,7 +1995,7 @@ static int ___sys_sendmsg(struct socket *sock, struct user_msghdr __user *msg, * checking falls down on this. */ if (copy_from_user(ctl_buf, @@ -115180,7 +122084,7 @@ index 245330c..919e2a7 100644 ctl_len)) goto out_freectl; msg_sys->msg_control = ctl_buf; -@@ -2157,7 +2222,7 @@ static int ___sys_recvmsg(struct socket *sock, struct user_msghdr __user *msg, +@@ -2080,7 +2145,7 @@ static int ___sys_recvmsg(struct socket *sock, struct user_msghdr __user *msg, ssize_t err; /* kernel mode address */ @@ -115189,7 +122093,7 @@ index 245330c..919e2a7 100644 /* user mode address pointers */ struct sockaddr __user *uaddr; -@@ -2803,7 +2868,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32) +@@ -2725,7 +2790,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32) ifr = compat_alloc_user_space(buf_size); rxnfc = (void __user *)ifr + ALIGN(sizeof(struct ifreq), 8); @@ -115198,7 +122102,7 @@ index 245330c..919e2a7 100644 return -EFAULT; if (put_user(convert_in ? rxnfc : compat_ptr(data), -@@ -2914,7 +2979,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd, +@@ -2836,7 +2901,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd, old_fs = get_fs(); set_fs(KERNEL_DS); err = dev_ioctl(net, cmd, @@ -115207,7 +122111,7 @@ index 245330c..919e2a7 100644 set_fs(old_fs); return err; -@@ -3007,7 +3072,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd, +@@ -2929,7 +2994,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd, old_fs = get_fs(); set_fs(KERNEL_DS); @@ -115216,7 +122120,7 @@ index 245330c..919e2a7 100644 set_fs(old_fs); if (cmd == SIOCGIFMAP && !err) { -@@ -3091,7 +3156,7 @@ static int routing_ioctl(struct net *net, struct socket *sock, +@@ -3013,7 +3078,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); @@ -115225,7 +122129,7 @@ index 245330c..919e2a7 100644 devname[15] = 0; } else r4.rt_dev = NULL; -@@ -3318,8 +3383,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname, +@@ -3240,8 +3305,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname, int __user *uoptlen; int err; @@ -115236,7 +122140,7 @@ index 245330c..919e2a7 100644 set_fs(KERNEL_DS); if (level == SOL_SOCKET) -@@ -3339,7 +3404,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname, +@@ -3261,7 +3326,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname, char __user *uoptval; int err; @@ -115268,10 +122172,10 @@ index 1095be9..815d777 100644 /* make a copy for the caller */ *handle = ctxh; diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c -index 5199bb1..567a54c 100644 +index 2928aff..6f9efeb 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c -@@ -1595,7 +1595,7 @@ static int create_cache_proc_entries(struct cache_detail *cd, struct net *net) +@@ -1597,7 +1597,7 @@ static int create_cache_proc_entries(struct cache_detail *cd, struct net *net) struct sunrpc_net *sn; sn = net_generic(net, sunrpc_net_id); @@ -115296,7 +122200,7 @@ index e6ce151..ba1cf85 100644 task->tk_action = call_reserve; } diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c -index b91fd9c..00fe5b1 100644 +index 337ca85..42feae8 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c @@ -261,9 +261,9 @@ static int rpc_wait_bit_killable(struct wait_bit_key *key) @@ -115628,8 +122532,20 @@ index ce9121e..fd1fcce 100644 err = __tipc_nl_compat_dumpit(&dump, msg, args); kfree_skb(args); +diff --git a/net/tipc/socket.c b/net/tipc/socket.c +index f485600..20cc6df 100644 +--- a/net/tipc/socket.c ++++ b/net/tipc/socket.c +@@ -2009,6 +2009,7 @@ static int tipc_accept(struct socket *sock, struct socket *new_sock, int flags) + res = tipc_sk_create(sock_net(sock->sk), new_sock, 0, 1); + if (res) + goto exit; ++ security_sk_clone(sock->sk, new_sock->sk); + + new_sk = new_sock->sk; + new_tsock = tipc_sk(new_sk); diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c -index 72c339e..a93593a 100644 +index 1c147c8..50d7957 100644 --- a/net/tipc/subscr.c +++ b/net/tipc/subscr.c @@ -70,7 +70,7 @@ static void subscr_send_event(struct tipc_subscription *sub, u32 found_lower, @@ -115642,10 +122558,10 @@ index 72c339e..a93593a 100644 sub->evt.event = htohl(event, sub->swap); sub->evt.found_lower = htohl(found_lower, sub->swap); diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c -index 526b6ed..ec20275 100644 +index 0643059..4628deb 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c -@@ -791,6 +791,12 @@ static struct sock *unix_find_other(struct net *net, +@@ -786,6 +786,12 @@ static struct sock *unix_find_other(struct net *net, err = -ECONNREFUSED; if (!S_ISSOCK(inode->i_mode)) goto put_fail; @@ -115658,7 +122574,7 @@ index 526b6ed..ec20275 100644 u = unix_find_socket_byinode(inode); if (!u) goto put_fail; -@@ -811,6 +817,13 @@ static struct sock *unix_find_other(struct net *net, +@@ -806,6 +812,13 @@ static struct sock *unix_find_other(struct net *net, if (u) { struct dentry *dentry; dentry = unix_sk(u)->path.dentry; @@ -115672,7 +122588,7 @@ index 526b6ed..ec20275 100644 if (dentry) touch_atime(&unix_sk(u)->path); } else -@@ -844,12 +857,18 @@ static int unix_mknod(const char *sun_path, umode_t mode, struct path *res) +@@ -839,12 +852,18 @@ static int unix_mknod(const char *sun_path, umode_t mode, struct path *res) */ err = security_path_mknod(&path, dentry, mode, 0); if (!err) { @@ -115680,7 +122596,7 @@ index 526b6ed..ec20275 100644 + err = -EACCES; + goto out; + } - err = vfs_mknod(path.dentry->d_inode, dentry, mode, 0); + err = vfs_mknod(d_inode(path.dentry), dentry, mode, 0); if (!err) { res->mnt = mntget(path.mnt); res->dentry = dget(dentry); @@ -115991,7 +122907,7 @@ index 638af06..7d9daad 100644 } diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c -index de971b6..b843409 100644 +index 96688cd..e68a2eb 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -166,12 +166,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family) @@ -116375,7 +123291,7 @@ index 86a4fe7..99e91f9 100755 kallsymso="" kallsyms_vmlinux="" diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c -index e614ef6..d9d2b01 100644 +index 78691d5..56972f2 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -142,7 +142,7 @@ static void device_id_check(const char *modname, const char *device_id, @@ -116442,31 +123358,31 @@ index e614ef6..d9d2b01 100644 sprintf(alias, "dmi*"); diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c -index d439856..10c1eac 100644 +index 91ee1b2..c9cf01a 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c -@@ -921,6 +921,7 @@ enum mismatch { - ANY_INIT_TO_ANY_EXIT, +@@ -942,6 +942,7 @@ enum mismatch { ANY_EXIT_TO_ANY_INIT, EXPORT_TO_INIT_EXIT, + EXTABLE_TO_NON_TEXT, + DATA_TO_TEXT }; - struct sectioncheck { -@@ -1007,6 +1008,12 @@ static const struct sectioncheck sectioncheck[] = { - .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL }, - .mismatch = EXPORT_TO_INIT_EXIT, - .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL }, + /** +@@ -1068,6 +1069,12 @@ static const struct sectioncheck sectioncheck[] = { + .good_tosec = {ALL_TEXT_SECTIONS , NULL}, + .mismatch = EXTABLE_TO_NON_TEXT, + .handler = extable_mismatch_handler, +}, +/* Do not reference code from writable data */ +{ + .fromsec = { DATA_SECTIONS, NULL }, -+ .tosec = { TEXT_SECTIONS, NULL }, ++ .bad_tosec = { ALL_TEXT_SECTIONS, NULL }, + .mismatch = DATA_TO_TEXT } }; -@@ -1127,10 +1134,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr, +@@ -1217,10 +1224,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr, continue; if (ELF_ST_TYPE(sym->st_info) == STT_SECTION) continue; @@ -116479,9 +123395,9 @@ index d439856..10c1eac 100644 if (d < 0) d = addr - sym->st_value; if (d < distance) { -@@ -1408,6 +1415,14 @@ static void report_sec_mismatch(const char *modname, - tosym, prl_to, prl_to, tosym); - free(prl_to); +@@ -1503,6 +1510,14 @@ static void report_sec_mismatch(const char *modname, + fatal("There's a special handler for this mismatch type, " + "we should never get here."); break; + case DATA_TO_TEXT: +#if 0 @@ -116494,7 +123410,7 @@ index d439856..10c1eac 100644 } fprintf(stderr, "\n"); } -@@ -1659,7 +1674,7 @@ static void section_rel(const char *modname, struct elf_info *elf, +@@ -1892,7 +1907,7 @@ static void section_rel(const char *modname, struct elf_info *elf, static void check_sec_ref(struct module *mod, const char *modname, struct elf_info *elf) { @@ -116503,7 +123419,7 @@ index d439856..10c1eac 100644 Elf_Shdr *sechdrs = elf->sechdrs; /* Walk through all sections */ -@@ -1790,7 +1805,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf, +@@ -2023,7 +2038,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf, va_end(ap); } @@ -116512,7 +123428,7 @@ index d439856..10c1eac 100644 { if (buf->size - buf->pos < len) { buf->size += len + SZ; -@@ -2009,7 +2024,7 @@ static void write_if_changed(struct buffer *b, const char *fname) +@@ -2242,7 +2257,7 @@ static void write_if_changed(struct buffer *b, const char *fname) if (fstat(fileno(file), &st) < 0) goto close_write; @@ -116727,10 +123643,10 @@ index cdb491d..8d32bfc 100755 # Find all available archs find_all_archs() diff --git a/security/Kconfig b/security/Kconfig -index beb86b5..135675f 100644 +index bf4ec46..1fa98bf 100644 --- a/security/Kconfig +++ b/security/Kconfig -@@ -4,6 +4,980 @@ +@@ -4,6 +4,981 @@ menu "Security options" @@ -116767,6 +123683,7 @@ index beb86b5..135675f 100644 + select TTY + select DEBUG_KERNEL + select DEBUG_LIST ++ select MULTIUSER + help + If you say Y here, you will be able to configure many features + that will enhance the security of your system. It is highly @@ -117711,7 +124628,7 @@ index beb86b5..135675f 100644 source security/keys/Kconfig config SECURITY_DMESG_RESTRICT -@@ -103,7 +1077,7 @@ config INTEL_TXT +@@ -104,7 +1079,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 @@ -117721,7 +124638,7 @@ index beb86b5..135675f 100644 help This is the portion of low virtual memory which should be protected diff --git a/security/apparmor/file.c b/security/apparmor/file.c -index fdaa50c..2761dcb 100644 +index 913f377..6e392d5 100644 --- a/security/apparmor/file.c +++ b/security/apparmor/file.c @@ -348,8 +348,8 @@ static inline bool xindex_is_subset(u32 link, u32 target) @@ -117733,10 +124650,10 @@ index fdaa50c..2761dcb 100644 + struct path link = { .mnt = new_dir->mnt, .dentry = new_dentry }; + struct path target = { .mnt = new_dir->mnt, .dentry = old_dentry }; struct path_cond cond = { - old_dentry->d_inode->i_uid, - old_dentry->d_inode->i_mode + d_backing_inode(old_dentry)->i_uid, + d_backing_inode(old_dentry)->i_mode diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c -index 107db88..185f3a0 100644 +index e5f1561..c351c05 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c @@ -186,7 +186,7 @@ static int common_perm_dir_dentry(int op, struct path *dir, @@ -117754,8 +124671,8 @@ index 107db88..185f3a0 100644 { - struct path path = { mnt, dentry }; + struct path path = { .mnt = mnt, .dentry = dentry }; - struct path_cond cond = { dentry->d_inode->i_uid, - dentry->d_inode->i_mode + struct path_cond cond = { d_backing_inode(dentry)->i_uid, + d_backing_inode(dentry)->i_mode }; @@ -325,8 +325,8 @@ static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry, @@ -117765,8 +124682,8 @@ index 107db88..185f3a0 100644 - struct path new_path = { new_dir->mnt, new_dentry }; + struct path old_path = { .mnt = old_dir->mnt, .dentry = old_dentry }; + struct path new_path = { .mnt = new_dir->mnt, .dentry = new_dentry }; - struct path_cond cond = { old_dentry->d_inode->i_uid, - old_dentry->d_inode->i_mode + struct path_cond cond = { d_backing_inode(old_dentry)->i_uid, + d_backing_inode(old_dentry)->i_mode }; @@ -615,7 +615,7 @@ static int apparmor_task_setrlimit(struct task_struct *task, return error; @@ -117778,7 +124695,7 @@ index 107db88..185f3a0 100644 .ptrace_access_check = apparmor_ptrace_access_check, diff --git a/security/commoncap.c b/security/commoncap.c -index f66713b..b69aa8e 100644 +index f2875cd..9fc1de0 100644 --- a/security/commoncap.c +++ b/security/commoncap.c @@ -427,6 +427,32 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data @@ -117884,32 +124801,6 @@ index 552705d..9920f4fb 100644 key = ima_hash_key(entry->digest); 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 3478965..ec7bb9e 100644 ---- a/security/keys/compat.c -+++ b/security/keys/compat.c -@@ -44,7 +44,7 @@ static long compat_keyctl_instantiate_key_iov( - if (ret == 0) - goto no_payload_free; - -- ret = keyctl_instantiate_key_common(id, iov, ioc, ret, ringid); -+ ret = keyctl_instantiate_key_common(id, (const struct iovec __force_user *)iov, ioc, ret, ringid); - err: - if (iov != iovstack) - kfree(iov); -diff --git a/security/keys/internal.h b/security/keys/internal.h -index 200e378..cdc74b5 100644 ---- a/security/keys/internal.h -+++ b/security/keys/internal.h -@@ -244,7 +244,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t, - extern long keyctl_invalidate_key(key_serial_t); - - extern long keyctl_instantiate_key_common(key_serial_t, -- const struct iovec *, -+ const struct iovec __user *, - unsigned, size_t, key_serial_t); - #ifdef CONFIG_PERSISTENT_KEYRINGS - extern long keyctl_get_persistent(uid_t, key_serial_t); diff --git a/security/keys/key.c b/security/keys/key.c index aee2ec5..c276071 100644 --- a/security/keys/key.c @@ -117967,46 +124858,6 @@ index aee2ec5..c276071 100644 /* record the root user tracking */ rb_link_node(&root_key_user.node, -diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c -index 4743d71..170a185 100644 ---- a/security/keys/keyctl.c -+++ b/security/keys/keyctl.c -@@ -1000,7 +1000,7 @@ static int keyctl_change_reqkey_auth(struct key *key) - /* - * Copy the iovec data from userspace - */ --static long copy_from_user_iovec(void *buffer, const struct iovec *iov, -+static long copy_from_user_iovec(void *buffer, const struct iovec __user *iov, - unsigned ioc) - { - for (; ioc > 0; ioc--) { -@@ -1022,7 +1022,7 @@ static long copy_from_user_iovec(void *buffer, const struct iovec *iov, - * If successful, 0 will be returned. - */ - long keyctl_instantiate_key_common(key_serial_t id, -- const struct iovec *payload_iov, -+ const struct iovec __user *payload_iov, - unsigned ioc, - size_t plen, - key_serial_t ringid) -@@ -1117,7 +1117,7 @@ long keyctl_instantiate_key(key_serial_t id, - [0].iov_len = plen - }; - -- return keyctl_instantiate_key_common(id, iov, 1, plen, ringid); -+ return keyctl_instantiate_key_common(id, (const struct iovec __force_user *)iov, 1, plen, ringid); - } - - return keyctl_instantiate_key_common(id, NULL, 0, 0, ringid); -@@ -1150,7 +1150,7 @@ long keyctl_instantiate_key_iov(key_serial_t id, - if (ret == 0) - goto no_payload_free; - -- ret = keyctl_instantiate_key_common(id, iov, ioc, ret, ringid); -+ ret = keyctl_instantiate_key_common(id, (const struct iovec __force_user *)iov, ioc, ret, ringid); - err: - if (iov != iovstack) - kfree(iov); diff --git a/security/min_addr.c b/security/min_addr.c index f728728..6457a0c 100644 --- a/security/min_addr.c @@ -118028,7 +124879,7 @@ index f728728..6457a0c 100644 /* diff --git a/security/security.c b/security/security.c -index e81d5bb..b9c5111 100644 +index 8e9b1f4..cda8e4c 100644 --- a/security/security.c +++ b/security/security.c @@ -33,8 +33,8 @@ @@ -118055,7 +124906,7 @@ index e81d5bb..b9c5111 100644 static int __init choose_lsm(char *str) { diff --git a/security/selinux/avc.c b/security/selinux/avc.c -index afcc0ae..71f0525 100644 +index 3c17dda..482b12c 100644 --- a/security/selinux/avc.c +++ b/security/selinux/avc.c @@ -59,7 +59,7 @@ struct avc_node { @@ -118086,10 +124937,20 @@ index afcc0ae..71f0525 100644 lock = &avc_cache.slots_lock[hvalue]; diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c -index 4d1a541..4d87c9b 100644 +index 212070e..87aa172 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c -@@ -5862,7 +5862,8 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer) +@@ -3288,7 +3288,8 @@ static int file_map_prot_check(struct file *file, unsigned long prot, int shared + int rc = 0; + + if (default_noexec && +- (prot & PROT_EXEC) && (!file || (!shared && (prot & PROT_WRITE)))) { ++ (prot & PROT_EXEC) && (!file || IS_PRIVATE(file_inode(file)) || ++ (!shared && (prot & PROT_WRITE)))) { + /* + * We are making executable an anonymous mapping or a + * private file mapping that will also be writable. +@@ -5841,7 +5842,8 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer) #endif @@ -118099,7 +124960,7 @@ index 4d1a541..4d87c9b 100644 .name = "selinux", .binder_set_context_mgr = selinux_binder_set_context_mgr, -@@ -6208,6 +6209,9 @@ static void selinux_nf_ip_exit(void) +@@ -6186,6 +6188,9 @@ static void selinux_nf_ip_exit(void) #ifdef CONFIG_SECURITY_SELINUX_DISABLE static int selinux_disabled; @@ -118109,7 +124970,7 @@ index 4d1a541..4d87c9b 100644 int selinux_disable(void) { if (ss_initialized) { -@@ -6225,7 +6229,9 @@ int selinux_disable(void) +@@ -6203,7 +6208,9 @@ int selinux_disable(void) selinux_disabled = 1; selinux_enabled = 0; @@ -118134,10 +124995,10 @@ index 1450f85..a91e0bc 100644 } rtnl_unlock(); diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c -index c934311..ac64d68 100644 +index b644757..3763b10 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c -@@ -4187,7 +4187,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) +@@ -4266,7 +4266,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) return 0; } @@ -118147,7 +125008,7 @@ index c934311..ac64d68 100644 .ptrace_access_check = smack_ptrace_access_check, diff --git a/security/tomoyo/file.c b/security/tomoyo/file.c -index c151a18..14ba19a 100644 +index 2367b10..a0c3c51 100644 --- a/security/tomoyo/file.c +++ b/security/tomoyo/file.c @@ -692,7 +692,7 @@ int tomoyo_path_number_perm(const u8 type, struct path *path, @@ -118168,7 +125029,7 @@ index c151a18..14ba19a 100644 }; int idx; -@@ -786,7 +786,7 @@ int tomoyo_path_perm(const u8 operation, struct path *path, const char *target) +@@ -786,7 +786,7 @@ int tomoyo_path_perm(const u8 operation, const struct path *path, const char *ta { struct tomoyo_request_info r; struct tomoyo_obj_info obj = { @@ -118213,19 +125074,10 @@ index 390c646..f2f8db3 100644 if (!fstype) { error = -ENODEV; diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c -index f0b756e..8aa497b 100644 +index 57c88d5..0c6fcf3 100644 --- a/security/tomoyo/tomoyo.c +++ b/security/tomoyo/tomoyo.c -@@ -146,7 +146,7 @@ static int tomoyo_bprm_check_security(struct linux_binprm *bprm) - */ - static int tomoyo_inode_getattr(struct vfsmount *mnt, struct dentry *dentry) - { -- struct path path = { mnt, dentry }; -+ struct path path = { .mnt = mnt, .dentry = dentry }; - return tomoyo_path_perm(TOMOYO_TYPE_GETATTR, &path, NULL); - } - -@@ -172,7 +172,7 @@ static int tomoyo_path_truncate(struct path *path) +@@ -171,7 +171,7 @@ static int tomoyo_path_truncate(struct path *path) */ static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry) { @@ -118234,7 +125086,7 @@ index f0b756e..8aa497b 100644 return tomoyo_path_perm(TOMOYO_TYPE_UNLINK, &path, NULL); } -@@ -188,7 +188,7 @@ static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry) +@@ -187,7 +187,7 @@ static int tomoyo_path_unlink(struct path *parent, struct dentry *dentry) static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry, umode_t mode) { @@ -118243,7 +125095,7 @@ index f0b756e..8aa497b 100644 return tomoyo_path_number_perm(TOMOYO_TYPE_MKDIR, &path, mode & S_IALLUGO); } -@@ -203,7 +203,7 @@ static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry, +@@ -202,7 +202,7 @@ static int tomoyo_path_mkdir(struct path *parent, struct dentry *dentry, */ static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry) { @@ -118252,7 +125104,7 @@ index f0b756e..8aa497b 100644 return tomoyo_path_perm(TOMOYO_TYPE_RMDIR, &path, NULL); } -@@ -219,7 +219,7 @@ static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry) +@@ -218,7 +218,7 @@ static int tomoyo_path_rmdir(struct path *parent, struct dentry *dentry) static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry, const char *old_name) { @@ -118261,7 +125113,7 @@ index f0b756e..8aa497b 100644 return tomoyo_path_perm(TOMOYO_TYPE_SYMLINK, &path, old_name); } -@@ -236,7 +236,7 @@ static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry, +@@ -235,7 +235,7 @@ static int tomoyo_path_symlink(struct path *parent, struct dentry *dentry, static int tomoyo_path_mknod(struct path *parent, struct dentry *dentry, umode_t mode, unsigned int dev) { @@ -118270,7 +125122,7 @@ index f0b756e..8aa497b 100644 int type = TOMOYO_TYPE_CREATE; const unsigned int perm = mode & S_IALLUGO; -@@ -275,8 +275,8 @@ static int tomoyo_path_mknod(struct path *parent, struct dentry *dentry, +@@ -274,8 +274,8 @@ static int tomoyo_path_mknod(struct path *parent, struct dentry *dentry, static int tomoyo_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) { @@ -118281,7 +125133,7 @@ index f0b756e..8aa497b 100644 return tomoyo_path2_perm(TOMOYO_TYPE_LINK, &path1, &path2); } -@@ -295,8 +295,8 @@ static int tomoyo_path_rename(struct path *old_parent, +@@ -294,8 +294,8 @@ static int tomoyo_path_rename(struct path *old_parent, struct path *new_parent, struct dentry *new_dentry) { @@ -118292,7 +125144,7 @@ index f0b756e..8aa497b 100644 return tomoyo_path2_perm(TOMOYO_TYPE_RENAME, &path1, &path2); } -@@ -424,7 +424,7 @@ static int tomoyo_sb_mount(const char *dev_name, struct path *path, +@@ -423,7 +423,7 @@ static int tomoyo_sb_mount(const char *dev_name, struct path *path, */ static int tomoyo_sb_umount(struct vfsmount *mnt, int flags) { @@ -118301,7 +125153,7 @@ index f0b756e..8aa497b 100644 return tomoyo_path_perm(TOMOYO_TYPE_UMOUNT, &path, NULL); } -@@ -503,7 +503,7 @@ static int tomoyo_socket_sendmsg(struct socket *sock, struct msghdr *msg, +@@ -502,7 +502,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. */ @@ -118311,7 +125163,7 @@ index f0b756e..8aa497b 100644 .cred_alloc_blank = tomoyo_cred_alloc_blank, .cred_prepare = tomoyo_cred_prepare, diff --git a/security/yama/Kconfig b/security/yama/Kconfig -index 20ef514..4182bed 100644 +index 3123e1d..951f48d 100644 --- a/security/yama/Kconfig +++ b/security/yama/Kconfig @@ -1,6 +1,6 @@ @@ -118319,11 +125171,11 @@ index 20ef514..4182bed 100644 bool "Yama support" - depends on SECURITY + depends on SECURITY && !GRKERNSEC - select SECURITYFS - select SECURITY_PATH default n + help + This selects Yama, which extends DAC support with additional diff --git a/security/yama/yama_lsm.c b/security/yama/yama_lsm.c -index 13c88fbc..f8c115e 100644 +index 24aae2a..81c4548 100644 --- a/security/yama/yama_lsm.c +++ b/security/yama/yama_lsm.c @@ -365,7 +365,7 @@ int yama_ptrace_traceme(struct task_struct *parent) @@ -118335,43 +125187,15 @@ index 13c88fbc..f8c115e 100644 .name = "yama", .ptrace_access_check = yama_ptrace_access_check, -@@ -376,28 +376,24 @@ static struct security_operations yama_ops = { - #endif - - #ifdef CONFIG_SYSCTL -+static int zero __read_only; -+static int max_scope __read_only = YAMA_SCOPE_NO_ATTACH; -+ +@@ -379,7 +379,7 @@ static struct security_operations yama_ops = { static int yama_dointvec_minmax(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { -- int rc; -+ ctl_table_no_const yama_table; +- struct ctl_table table_copy; ++ ctl_table_no_const table_copy; if (write && !capable(CAP_SYS_PTRACE)) return -EPERM; - -- rc = proc_dointvec_minmax(table, write, buffer, lenp, ppos); -- if (rc) -- return rc; -- -+ yama_table = *table; - /* Lock the max value if it ever gets set. */ -- if (write && *(int *)table->data == *(int *)table->extra2) -- table->extra1 = table->extra2; -- -- return rc; -+ if (ptrace_scope == max_scope) -+ yama_table.extra1 = &max_scope; -+ return proc_dointvec_minmax(&yama_table, write, buffer, lenp, ppos); - } - --static int zero; --static int max_scope = YAMA_SCOPE_NO_ATTACH; -- - struct ctl_path yama_sysctl_path[] = { - { .procname = "kernel", }, - { .procname = "yama", }, diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c index 23c371e..da7c25e 100644 --- a/sound/aoa/codecs/onyx.c @@ -118417,10 +125241,10 @@ index ffd2025..df062c9 100644 /* PCM3052 register definitions */ diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c -index 80423a4c..270c3d0 100644 +index 58550cc..4687a93 100644 --- a/sound/core/oss/pcm_oss.c +++ b/sound/core/oss/pcm_oss.c -@@ -1190,10 +1190,10 @@ snd_pcm_sframes_t snd_pcm_oss_write3(struct snd_pcm_substream *substream, const +@@ -1189,10 +1189,10 @@ snd_pcm_sframes_t snd_pcm_oss_write3(struct snd_pcm_substream *substream, const if (in_kernel) { mm_segment_t fs; fs = snd_enter_user(); @@ -118433,7 +125257,7 @@ index 80423a4c..270c3d0 100644 } if (ret != -EPIPE && ret != -ESTRPIPE) break; -@@ -1233,10 +1233,10 @@ snd_pcm_sframes_t snd_pcm_oss_read3(struct snd_pcm_substream *substream, char *p +@@ -1232,10 +1232,10 @@ snd_pcm_sframes_t snd_pcm_oss_read3(struct snd_pcm_substream *substream, char *p if (in_kernel) { mm_segment_t fs; fs = snd_enter_user(); @@ -118446,7 +125270,7 @@ index 80423a4c..270c3d0 100644 } if (ret == -EPIPE) { if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) { -@@ -1332,7 +1332,7 @@ static ssize_t snd_pcm_oss_write2(struct snd_pcm_substream *substream, const cha +@@ -1331,7 +1331,7 @@ static ssize_t snd_pcm_oss_write2(struct snd_pcm_substream *substream, const cha struct snd_pcm_plugin_channel *channels; size_t oss_frame_bytes = (runtime->oss.plugin_first->src_width * runtime->oss.plugin_first->src_format.channels) / 8; if (!in_kernel) { @@ -118455,7 +125279,7 @@ index 80423a4c..270c3d0 100644 return -EFAULT; buf = runtime->oss.buffer; } -@@ -1402,7 +1402,7 @@ static ssize_t snd_pcm_oss_write1(struct snd_pcm_substream *substream, const cha +@@ -1401,7 +1401,7 @@ static ssize_t snd_pcm_oss_write1(struct snd_pcm_substream *substream, const cha } } else { tmp = snd_pcm_oss_write2(substream, @@ -118464,7 +125288,7 @@ index 80423a4c..270c3d0 100644 runtime->oss.period_bytes, 0); if (tmp <= 0) goto err; -@@ -1428,7 +1428,7 @@ static ssize_t snd_pcm_oss_read2(struct snd_pcm_substream *substream, char *buf, +@@ -1427,7 +1427,7 @@ static ssize_t snd_pcm_oss_read2(struct snd_pcm_substream *substream, char *buf, struct snd_pcm_runtime *runtime = substream->runtime; snd_pcm_sframes_t frames, frames1; #ifdef CONFIG_SND_PCM_OSS_PLUGINS @@ -118473,7 +125297,7 @@ index 80423a4c..270c3d0 100644 if (runtime->oss.plugin_first) { struct snd_pcm_plugin_channel *channels; size_t oss_frame_bytes = (runtime->oss.plugin_last->dst_width * runtime->oss.plugin_last->dst_format.channels) / 8; -@@ -1490,7 +1490,7 @@ static ssize_t snd_pcm_oss_read1(struct snd_pcm_substream *substream, char __use +@@ -1489,7 +1489,7 @@ static ssize_t snd_pcm_oss_read1(struct snd_pcm_substream *substream, char __use xfer += tmp; runtime->oss.buffer_used -= tmp; } else { @@ -118482,7 +125306,7 @@ index 80423a4c..270c3d0 100644 runtime->oss.period_bytes, 0); if (tmp <= 0) goto err; -@@ -1659,7 +1659,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) +@@ -1658,7 +1658,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) size1); size1 /= runtime->channels; /* frames */ fs = snd_enter_user(); @@ -118492,7 +125316,7 @@ index 80423a4c..270c3d0 100644 } } else if (runtime->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) { diff --git a/sound/core/pcm_compat.c b/sound/core/pcm_compat.c -index 2d957ba..fda022c 100644 +index b48b434..e2ba787 100644 --- a/sound/core/pcm_compat.c +++ b/sound/core/pcm_compat.c @@ -31,7 +31,7 @@ static int snd_pcm_ioctl_delay_compat(struct snd_pcm_substream *substream, @@ -118505,10 +125329,10 @@ index 2d957ba..fda022c 100644 if (err < 0) return err; diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c -index 279e24f..24aafe5 100644 +index d126c03..5d84d1cf 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c -@@ -2969,11 +2969,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream, +@@ -3004,11 +3004,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, @@ -118522,78 +125346,8 @@ index 279e24f..24aafe5 100644 break; default: result = -EINVAL; -diff --git a/sound/core/seq/oss/seq_oss.c b/sound/core/seq/oss/seq_oss.c -index 16d4267..fe8b49b 100644 ---- a/sound/core/seq/oss/seq_oss.c -+++ b/sound/core/seq/oss/seq_oss.c -@@ -69,8 +69,8 @@ static int __init alsa_seq_oss_init(void) - { - int rc; - static struct snd_seq_dev_ops ops = { -- snd_seq_oss_synth_register, -- snd_seq_oss_synth_unregister, -+ .init_device = snd_seq_oss_synth_register, -+ .free_device = snd_seq_oss_synth_unregister, - }; - - snd_seq_autoload_lock(); -diff --git a/sound/core/seq/seq_device.c b/sound/core/seq/seq_device.c -index 0631bda..d0dcd49 100644 ---- a/sound/core/seq/seq_device.c -+++ b/sound/core/seq/seq_device.c -@@ -65,7 +65,7 @@ struct ops_list { - int argsize; /* argument size */ - - /* operators */ -- struct snd_seq_dev_ops ops; -+ struct snd_seq_dev_ops *ops; - - /* registered devices */ - struct list_head dev_list; /* list of devices */ -@@ -371,7 +371,7 @@ int snd_seq_device_register_driver(char *id, struct snd_seq_dev_ops *entry, - - mutex_lock(&ops->reg_mutex); - /* copy driver operators */ -- ops->ops = *entry; -+ ops->ops = entry; - ops->driver |= DRIVER_LOADED; - ops->argsize = argsize; - -@@ -500,7 +500,7 @@ static int init_device(struct snd_seq_device *dev, struct ops_list *ops) - dev->name, ops->id, ops->argsize, dev->argsize); - return -EINVAL; - } -- if (ops->ops.init_device(dev) >= 0) { -+ if (ops->ops->init_device(dev) >= 0) { - dev->status = SNDRV_SEQ_DEVICE_REGISTERED; - ops->num_init_devices++; - } else { -@@ -527,7 +527,7 @@ static int free_device(struct snd_seq_device *dev, struct ops_list *ops) - dev->name, ops->id, ops->argsize, dev->argsize); - return -EINVAL; - } -- if ((result = ops->ops.free_device(dev)) >= 0 || result == -ENXIO) { -+ if ((result = ops->ops->free_device(dev)) >= 0 || result == -ENXIO) { - dev->status = SNDRV_SEQ_DEVICE_FREE; - dev->driver_data = NULL; - ops->num_init_devices--; -diff --git a/sound/core/seq/seq_midi.c b/sound/core/seq/seq_midi.c -index 68fec77..97fb643 100644 ---- a/sound/core/seq/seq_midi.c -+++ b/sound/core/seq/seq_midi.c -@@ -461,8 +461,8 @@ snd_seq_midisynth_unregister_port(struct snd_seq_device *dev) - static int __init alsa_seq_midi_init(void) - { - static struct snd_seq_dev_ops ops = { -- snd_seq_midisynth_register_port, -- snd_seq_midisynth_unregister_port, -+ .init_device = snd_seq_midisynth_register_port, -+ .free_device = snd_seq_midisynth_unregister_port, - }; - memset(&synths, 0, sizeof(synths)); - snd_seq_autoload_lock(); diff --git a/sound/core/sound.c b/sound/core/sound.c -index 185cec0..a95a1a9 100644 +index 5fc93d0..67d8037 100644 --- a/sound/core/sound.c +++ b/sound/core/sound.c @@ -86,7 +86,7 @@ static void snd_request_other(int minor) @@ -118665,21 +125419,6 @@ index 2a008a9..a1efb3f 100644 return 0; } -diff --git a/sound/drivers/opl3/opl3_seq.c b/sound/drivers/opl3/opl3_seq.c -index a9f618e..c5a7208 100644 ---- a/sound/drivers/opl3/opl3_seq.c -+++ b/sound/drivers/opl3/opl3_seq.c -@@ -279,8 +279,8 @@ static int __init alsa_opl3_seq_init(void) - { - static struct snd_seq_dev_ops ops = - { -- snd_opl3_seq_new_device, -- snd_opl3_seq_delete_device -+ .init_device = snd_opl3_seq_new_device, -+ .free_device = snd_opl3_seq_delete_device - }; - - return snd_seq_device_register_driver(SNDRV_SEQ_DEV_ID_OPL3, &ops, diff --git a/sound/drivers/opl4/opl4_lib.c b/sound/drivers/opl4/opl4_lib.c index 3b0ee42..8423ad6 100644 --- a/sound/drivers/opl4/opl4_lib.c @@ -118693,21 +125432,6 @@ index 3b0ee42..8423ad6 100644 { int timeout = 10; while ((inb(opl4->fm_port) & OPL4_STATUS_BUSY) && --timeout > 0) -diff --git a/sound/drivers/opl4/opl4_seq.c b/sound/drivers/opl4/opl4_seq.c -index 9919769..d7de36c 100644 ---- a/sound/drivers/opl4/opl4_seq.c -+++ b/sound/drivers/opl4/opl4_seq.c -@@ -198,8 +198,8 @@ static int snd_opl4_seq_delete_device(struct snd_seq_device *dev) - static int __init alsa_opl4_synth_init(void) - { - static struct snd_seq_dev_ops ops = { -- snd_opl4_seq_new_device, -- snd_opl4_seq_delete_device -+ .init_device = snd_opl4_seq_new_device, -+ .free_device = snd_opl4_seq_delete_device - }; - - return snd_seq_device_register_driver(SNDRV_SEQ_DEV_ID_OPL4, &ops, diff --git a/sound/drivers/portman2x4.c b/sound/drivers/portman2x4.c index 464385a..46ab3f6 100644 --- a/sound/drivers/portman2x4.c @@ -118730,7 +125454,7 @@ index 464385a..46ab3f6 100644 struct snd_rawmidi_substream *midi_input[PORTMAN_NUM_INPUT_PORTS]; }; diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c -index 5cc356d..d65e68ff 100644 +index e061355..baed278 100644 --- a/sound/firewire/amdtp.c +++ b/sound/firewire/amdtp.c @@ -573,7 +573,7 @@ static void update_pcm_pointers(struct amdtp_stream *s, @@ -118850,21 +125574,6 @@ index 2dba848..c682aef 100644 wait_event(scs->idle_wait, scs->output_idle); -diff --git a/sound/isa/sb/emu8000_synth.c b/sound/isa/sb/emu8000_synth.c -index 72332df..82ec6a2 100644 ---- a/sound/isa/sb/emu8000_synth.c -+++ b/sound/isa/sb/emu8000_synth.c -@@ -118,8 +118,8 @@ static int __init alsa_emu8000_init(void) - { - - static struct snd_seq_dev_ops ops = { -- snd_emu8000_new_device, -- snd_emu8000_delete_device, -+ .init_device = snd_emu8000_new_device, -+ .free_device = snd_emu8000_delete_device, - }; - return snd_seq_device_register_driver(SNDRV_SEQ_DEV_ID_EMU8000, &ops, - sizeof(struct snd_emu8000*)); diff --git a/sound/oss/sb_audio.c b/sound/oss/sb_audio.c index 048439a..3be9f6f 100644 --- a/sound/oss/sb_audio.c @@ -118916,26 +125625,11 @@ index 213a416..aeab5c9 100644 list_add(&s->list, &cs4297a_devs); -diff --git a/sound/pci/emu10k1/emu10k1_synth.c b/sound/pci/emu10k1/emu10k1_synth.c -index 4c41c90..37f3631 100644 ---- a/sound/pci/emu10k1/emu10k1_synth.c -+++ b/sound/pci/emu10k1/emu10k1_synth.c -@@ -108,8 +108,8 @@ static int __init alsa_emu10k1_synth_init(void) - { - - static struct snd_seq_dev_ops ops = { -- snd_emu10k1_synth_new_device, -- snd_emu10k1_synth_delete_device, -+ .init_device = snd_emu10k1_synth_new_device, -+ .free_device = snd_emu10k1_synth_delete_device, - }; - return snd_seq_device_register_driver(SNDRV_SEQ_DEV_ID_EMU10K1_SYNTH, &ops, - sizeof(struct snd_emu10k1_synth_arg)); diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c -index a63a863..fcf3087 100644 +index 5645481..63e53a2 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c -@@ -2865,7 +2865,7 @@ static int get_kctl_0dB_offset(struct hda_codec *codec, +@@ -1946,7 +1946,7 @@ static int get_kctl_0dB_offset(struct hda_codec *codec, /* FIXME: set_fs() hack for obtaining user-space TLV data */ mm_segment_t fs = get_fs(); set_fs(get_ds()); @@ -119651,10 +126345,10 @@ index 0000000..0c96d8a +} diff --git a/tools/gcc/constify_plugin.c b/tools/gcc/constify_plugin.c new file mode 100644 -index 0000000..da184c5 +index 0000000..c5de280 --- /dev/null +++ b/tools/gcc/constify_plugin.c -@@ -0,0 +1,564 @@ +@@ -0,0 +1,568 @@ +/* + * Copyright 2011 by Emese Revfy + * Copyright 2011-2015 by PaX Team @@ -120096,7 +126790,7 @@ index 0000000..da184c5 + .optinfo_flags = OPTGROUP_NONE, +#endif +#if BUILDING_GCC_VERSION >= 5000 -+#elif BUILDING_GCC_VERSION >= 4009 ++#elif BUILDING_GCC_VERSION == 4009 + .has_gate = false, + .has_execute = true, +#else @@ -120121,7 +126815,11 @@ index 0000000..da184c5 +class check_local_variables_pass : public gimple_opt_pass { +public: + check_local_variables_pass() : gimple_opt_pass(check_local_variables_pass_data, g) {} ++#if BUILDING_GCC_VERSION >= 5000 ++ virtual unsigned int execute(function *) { return check_local_variables(); } ++#else + unsigned int execute() { return check_local_variables(); } ++#endif +}; +} + @@ -120221,10 +126919,10 @@ index 0000000..da184c5 +} diff --git a/tools/gcc/gcc-common.h b/tools/gcc/gcc-common.h new file mode 100644 -index 0000000..77f8462 +index 0000000..70924d4 --- /dev/null +++ b/tools/gcc/gcc-common.h -@@ -0,0 +1,689 @@ +@@ -0,0 +1,787 @@ +#ifndef GCC_COMMON_H_INCLUDED +#define GCC_COMMON_H_INCLUDED + @@ -120303,6 +127001,8 @@ index 0000000..77f8462 +#include "tree-flow.h" +#else +#include "tree-cfgcleanup.h" ++#include "tree-ssa-operands.h" ++#include "tree-into-ssa.h" +#endif + +#if BUILDING_GCC_VERSION >= 4008 @@ -120385,7 +127085,7 @@ index 0000000..77f8462 +#define C_TYPE_FIELDS_READONLY(TYPE) TREE_LANG_FLAG_1(TYPE) + +#if BUILDING_GCC_VERSION == 4005 -+#define FOR_EACH_LOCAL_DECL(FUN, I, D) for (tree vars = (FUN)->local_decls; vars && (D = TREE_VALUE(vars)); vars = TREE_CHAIN(vars), I) ++#define FOR_EACH_LOCAL_DECL(FUN, I, D) for (tree vars = (FUN)->local_decls, (I) = 0; vars && ((D) = TREE_VALUE(vars)); vars = TREE_CHAIN(vars), (I)++) +#define DECL_CHAIN(NODE) (TREE_CHAIN(DECL_MINIMAL_CHECK(NODE))) +#define FOR_EACH_VEC_ELT(T, V, I, P) for (I = 0; VEC_iterate(T, (V), (I), (P)); ++(I)) +#define TODO_rebuild_cgraph_edges 0 @@ -120625,6 +127325,7 @@ index 0000000..77f8462 +} + +#define ipa_remove_stmt_references(cnode, stmt) ++ +typedef union gimple_statement_d gasm; +typedef union gimple_statement_d gassign; +typedef union gimple_statement_d gcall; @@ -120632,6 +127333,76 @@ index 0000000..77f8462 +typedef union gimple_statement_d gdebug; +typedef union gimple_statement_d gphi; +typedef union gimple_statement_d greturn; ++ ++static inline gasm *as_a_gasm(gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline const gasm *as_a_const_gasm(const_gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline gassign *as_a_gassign(gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline const gassign *as_a_const_gassign(const_gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline gcall *as_a_gcall(gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline const gcall *as_a_const_gcall(const_gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline gcond *as_a_gcond(gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline const gcond *as_a_const_gcond(const_gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline gdebug *as_a_gdebug(gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline const gdebug *as_a_const_gdebug(const_gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline gphi *as_a_gphi(gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline const gphi *as_a_const_gphi(const_gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline greturn *as_a_greturn(gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline const greturn *as_a_const_greturn(const_gimple stmt) ++{ ++ return stmt; ++} +#endif + +#if BUILDING_GCC_VERSION == 4008 @@ -120646,40 +127417,40 @@ index 0000000..77f8462 +#define create_var_ann(var) +#define TODO_dump_func 0 +#define TODO_dump_cgraph 0 -+ +#endif + +#if BUILDING_GCC_VERSION <= 4009 +#define TODO_verify_il 0 +#define AVAIL_INTERPOSABLE AVAIL_OVERWRITABLE -+#endif + -+#if BUILDING_GCC_VERSION == 4009 -+typedef struct gimple_statement_base gasm; -+typedef struct gimple_statement_base gassign; -+typedef struct gimple_statement_base gcall; -+typedef struct gimple_statement_base gcond; -+typedef struct gimple_statement_base gdebug; -+typedef struct gimple_statement_base gphi; -+typedef struct gimple_statement_base greturn; -+#endif ++#define section_name_prefix LTO_SECTION_NAME_PREFIX ++#define fatal_error(loc, gmsgid, ...) fatal_error((gmsgid), __VA_ARGS__) + -+#if BUILDING_GCC_VERSION <= 4009 +typedef struct rtx_def rtx_insn; + +static inline void set_decl_section_name(tree node, const char *value) +{ + DECL_SECTION_NAME(node) = build_string(strlen(value) + 1, value); +} ++#endif ++ ++#if BUILDING_GCC_VERSION == 4009 ++typedef struct gimple_statement_asm gasm; ++typedef struct gimple_statement_base gassign; ++typedef struct gimple_statement_call gcall; ++typedef struct gimple_statement_base gcond; ++typedef struct gimple_statement_base gdebug; ++typedef struct gimple_statement_phi gphi; ++typedef struct gimple_statement_base greturn; + +static inline gasm *as_a_gasm(gimple stmt) +{ -+ return stmt; ++ return as_a(stmt); +} + +static inline const gasm *as_a_const_gasm(const_gimple stmt) +{ -+ return stmt; ++ return as_a(stmt); +} + +static inline gassign *as_a_gassign(gimple stmt) @@ -120694,24 +127465,44 @@ index 0000000..77f8462 + +static inline gcall *as_a_gcall(gimple stmt) +{ -+ return stmt; ++ return as_a(stmt); +} + +static inline const gcall *as_a_const_gcall(const_gimple stmt) +{ ++ return as_a(stmt); ++} ++ ++static inline gcond *as_a_gcond(gimple stmt) ++{ + return stmt; +} + -+static inline gphi *as_a_gphi(gimple stmt) ++static inline const gcond *as_a_const_gcond(const_gimple stmt) +{ + return stmt; +} + -+static inline const gphi *as_a_const_gphi(const_gimple stmt) ++static inline gdebug *as_a_gdebug(gimple stmt) ++{ ++ return stmt; ++} ++ ++static inline const gdebug *as_a_const_gdebug(const_gimple stmt) +{ + return stmt; +} + ++static inline gphi *as_a_gphi(gimple stmt) ++{ ++ return as_a(stmt); ++} ++ ++static inline const gphi *as_a_const_gphi(const_gimple stmt) ++{ ++ return as_a(stmt); ++} ++ +static inline greturn *as_a_greturn(gimple stmt) +{ + return stmt; @@ -120773,6 +127564,11 @@ index 0000000..77f8462 + varpool_node::add(decl); +} + ++static inline unsigned int rebuild_cgraph_edges(void) ++{ ++ return cgraph_edge::rebuild_edges(); ++} ++ +static inline cgraph_node_ptr cgraph_function_node(cgraph_node_ptr node, enum availability *availability) +{ + return node->function_symbol(availability); @@ -120930,10 +127726,10 @@ index 0000000..7514850 +fi diff --git a/tools/gcc/initify_plugin.c b/tools/gcc/initify_plugin.c new file mode 100644 -index 0000000..125442a +index 0000000..294ac43 --- /dev/null +++ b/tools/gcc/initify_plugin.c -@@ -0,0 +1,427 @@ +@@ -0,0 +1,450 @@ +/* + * Copyright 2011-2015 by Emese Revfy + * Licensed under the GPL v2, or (at your option) v3 @@ -120953,6 +127749,8 @@ index 0000000..125442a + +int plugin_is_GPL_compatible; + ++static bool verbose = false; ++ +static struct plugin_info initify_plugin_info = { + .version = "20150524a", + .help = "initify_plugin\n", @@ -121106,8 +127904,8 @@ index 0000000..125442a + str = get_string_cst(init_val); + gcc_assert(str); + -+ if (set_init_exit_section(var, initexit)) -+ ;//inform(DECL_SOURCE_LOCATION(var), "initified local var: %s: %s", DECL_NAME_POINTER(current_function_decl), TREE_STRING_POINTER(str)); ++ if (set_init_exit_section(var, initexit) && verbose) ++ inform(DECL_SOURCE_LOCATION(var), "initified local var: %s: %s", DECL_NAME_POINTER(current_function_decl), TREE_STRING_POINTER(str)); + } +} + @@ -121119,6 +127917,7 @@ index 0000000..125442a + decl = build_decl(DECL_SOURCE_LOCATION(current_function_decl), VAR_DECL, create_tmp_var_name("cicus"), TREE_TYPE(str)); + + type = TREE_TYPE(TREE_TYPE(decl)); ++ type = build_qualified_type(type, TYPE_QUALS(type) | TYPE_QUAL_CONST); + TYPE_READONLY(type) = 1; + TREE_PUBLIC(type) = 0; + @@ -121140,13 +127939,27 @@ index 0000000..125442a + DECL_CHAIN(decl) = BLOCK_VARS(DECL_INITIAL(current_function_decl)); + BLOCK_VARS(DECL_INITIAL (current_function_decl)) = decl; + -+ decl = build_unary_op(DECL_SOURCE_LOCATION(current_function_decl), ADDR_EXPR, decl, 0); ++ decl = build_fold_addr_expr_loc(DECL_SOURCE_LOCATION(current_function_decl), decl); + gimple_call_set_arg(stmt, num, decl); + update_stmt(stmt); + + return TREE_OPERAND(decl, 0); +} + ++static bool is_syscall(const_tree fn) ++{ ++ if (!strncmp(DECL_NAME_POINTER(fn), "sys_", 4)) ++ return true; ++ ++ if (!strncmp(DECL_NAME_POINTER(fn), "sys32_", 6)) ++ return true; ++ ++ if (!strncmp(DECL_NAME_POINTER(fn), "compat_sys_", 11)) ++ return true; ++ ++ return false; ++} ++ +static bool is_vararg(const_tree fn) +{ + tree arg_list; @@ -121170,7 +127983,7 @@ index 0000000..125442a + return true; +} + -+static bool is_in_nocapture_attr_value(const_gimple stmt, unsigned int num) ++static bool is_nocapture_param(const_gimple stmt, unsigned int num) +{ + unsigned int attr_arg_val = 0; + tree attr_val; @@ -121179,6 +127992,9 @@ index 0000000..125442a + + gcc_assert(DECL_ABSTRACT_ORIGIN(fndecl) == NULL_TREE); + ++ if (is_syscall(fndecl)) ++ return true; ++ + attr = lookup_attribute("nocapture", DECL_ATTRIBUTES(fndecl)); + for (attr_val = TREE_VALUE(attr); attr_val; attr_val = TREE_CHAIN(attr_val)) { + attr_arg_val = (unsigned int)tree_to_uhwi(TREE_VALUE(attr_val)); @@ -121205,22 +128021,25 @@ index 0000000..125442a + if (str == NULL_TREE) + continue; + -+ if (!is_in_nocapture_attr_value(stmt, num)) ++ if (!is_nocapture_param(stmt, num)) + continue; + + var = create_tmp_assign(stmt, num); -+ if (set_init_exit_section(var, initexit)) -+ ;//inform(gimple_location(stmt), "initified function arg: %s: [%s]", DECL_NAME_POINTER(current_function_decl), TREE_STRING_POINTER(str)); ++ if (set_init_exit_section(var, initexit) && verbose) ++ inform(gimple_location(stmt), "initified function arg: %s: [%s]", DECL_NAME_POINTER(current_function_decl), TREE_STRING_POINTER(str)); + } +} + -+static bool has_nocapture_attr(const gcall *stmt) ++static bool has_nocapture_param(const gcall *stmt) +{ + const_tree attr, fndecl = gimple_call_fndecl(stmt); + + if (fndecl == NULL_TREE) + return false; + ++ if (is_syscall(fndecl)) ++ return true; ++ + attr = lookup_attribute("nocapture", DECL_ATTRIBUTES(fndecl)); + return attr != NULL_TREE; +} @@ -121240,7 +128059,7 @@ index 0000000..125442a + continue; + + call_stmt = as_a_gcall(stmt); -+ if (has_nocapture_attr(call_stmt)) ++ if (has_nocapture_param(call_stmt)) + search_str_param(call_stmt, initexit); + } + } @@ -121557,10 +128376,10 @@ index 0000000..457d54e +} diff --git a/tools/gcc/kernexec_plugin.c b/tools/gcc/kernexec_plugin.c new file mode 100644 -index 0000000..b0d8255 +index 0000000..4838c8a --- /dev/null +++ b/tools/gcc/kernexec_plugin.c -@@ -0,0 +1,547 @@ +@@ -0,0 +1,551 @@ +/* + * Copyright 2011-2015 by the PaX Team + * Licensed under the GPL v2 @@ -121595,10 +128414,12 @@ index 0000000..b0d8255 + */ +static void kernexec_reload_fptr_mask(gimple_stmt_iterator *gsi) +{ ++ gimple stmt; + gasm *asm_movabs_stmt; + + // build asm volatile("movabs $0x8000000000000000, %%r12\n\t" : : : ); -+ asm_movabs_stmt = gimple_build_asm_vec("movabs $0x8000000000000000, %%r12\n\t", NULL, NULL, NULL, NULL); ++ stmt = gimple_build_asm_vec("movabs $0x8000000000000000, %%r12\n\t", NULL, NULL, NULL, NULL); ++ asm_movabs_stmt = as_a_gasm(stmt); + gimple_asm_set_volatile(asm_movabs_stmt, true); + gsi_insert_after(gsi, asm_movabs_stmt, GSI_CONTINUE_LINKING); + update_stmt(asm_movabs_stmt); @@ -121692,6 +128513,7 @@ index 0000000..b0d8255 + +static void kernexec_instrument_fptr_or(gimple_stmt_iterator *gsi) +{ ++ gimple stmt; + gasm *asm_or_stmt; + gcall *call_stmt; + tree old_fptr, new_fptr, input, output; @@ -121723,7 +128545,8 @@ index 0000000..b0d8255 + vec_safe_push(inputs, input); + vec_safe_push(outputs, output); +#endif -+ asm_or_stmt = gimple_build_asm_vec("orq %%r12, %0\n\t", inputs, outputs, NULL, NULL); ++ stmt = gimple_build_asm_vec("orq %%r12, %0\n\t", inputs, outputs, NULL, NULL); ++ asm_or_stmt = as_a_gasm(stmt); + SSA_NAME_DEF_STMT(new_fptr) = asm_or_stmt; + gimple_asm_set_volatile(asm_or_stmt, true); + gsi_insert_before(gsi, asm_or_stmt, GSI_SAME_STMT); @@ -122590,10 +129413,10 @@ index 0000000..ac6f9b4 +} diff --git a/tools/gcc/randomize_layout_plugin.c b/tools/gcc/randomize_layout_plugin.c new file mode 100644 -index 0000000..713be61 +index 0000000..40dcfa9 --- /dev/null +++ b/tools/gcc/randomize_layout_plugin.c -@@ -0,0 +1,918 @@ +@@ -0,0 +1,922 @@ +/* + * Copyright 2014,2015 by Open Source Security, Inc., Brad Spengler + * and PaX Team @@ -123439,7 +130262,11 @@ index 0000000..713be61 +class randomize_layout_bad_cast : public gimple_opt_pass { +public: + randomize_layout_bad_cast() : gimple_opt_pass(randomize_layout_bad_cast_data, g) {} ++#if BUILDING_GCC_VERSION >= 5000 ++ virtual unsigned int execute(function *) { return find_bad_casts(); } ++#else + unsigned int execute() { return find_bad_casts(); } ++#endif +}; +} +#endif @@ -123657,10 +130484,10 @@ index 0000000..12b1e3b +exit 0 diff --git a/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c b/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c new file mode 100644 -index 0000000..0b508b1 +index 0000000..7b7051a --- /dev/null +++ b/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c -@@ -0,0 +1,409 @@ +@@ -0,0 +1,411 @@ +/* + * Copyright 2011-2015 by Emese Revfy + * Licensed under the GPL v2, or (at your option) v3 @@ -123771,6 +130598,7 @@ index 0000000..0b508b1 +{ + char *asm_comment; + const char *mark_str; ++ gimple stmt; + gasm *asm_stmt; + gimple_stmt_iterator gsi; + tree str_input, str_output; @@ -123788,7 +130616,8 @@ index 0000000..0b508b1 + str_output = build_string(4, "=rm"); + output = create_asm_io_list(str_output, asm_data->output); + -+ asm_stmt = gimple_build_asm_vec(asm_comment, input, output, NULL, NULL); ++ stmt = gimple_build_asm_vec(asm_comment, input, output, NULL, NULL); ++ asm_stmt = as_a_gasm(stmt); + gimple_asm_set_volatile(asm_stmt, true); + + gsi = gsi_for_stmt(asm_data->def_stmt); @@ -124072,10 +130901,10 @@ index 0000000..0b508b1 +#endif diff --git a/tools/gcc/size_overflow_plugin/intentional_overflow.c b/tools/gcc/size_overflow_plugin/intentional_overflow.c new file mode 100644 -index 0000000..d96cef2 +index 0000000..2af88a3 --- /dev/null +++ b/tools/gcc/size_overflow_plugin/intentional_overflow.c -@@ -0,0 +1,955 @@ +@@ -0,0 +1,958 @@ +/* + * Copyright 2011-2015 by Emese Revfy + * Licensed under the GPL v2, or (at your option) v3 @@ -124945,6 +131774,9 @@ index 0000000..d96cef2 + my_stmt = as_a_gassign(gsi_stmt(gsi)); + + gcc_assert(pointer_set_contains(visited->my_stmts, my_stmt)); ++ if (gimple_assign_cast_p(stmt) && gimple_assign_cast_p(my_stmt)) ++ return my_stmt; ++ + if (gimple_assign_rhs_code(stmt) != gimple_assign_rhs_code(my_stmt)) { + fprintf(stderr, "%s != %s\n", get_tree_code_name(gimple_assign_rhs_code(stmt)), get_tree_code_name(gimple_assign_rhs_code(my_stmt))); + debug_gimple_stmt(stmt); @@ -126080,10 +132912,10 @@ index 0000000..b8e7188 +} diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data new file mode 100644 -index 0000000..19e2901 +index 0000000..2e9138d --- /dev/null +++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data -@@ -0,0 +1,27981 @@ +@@ -0,0 +1,28379 @@ +intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL nohasharray +iwl_set_tx_power_1 iwl_set_tx_power 0 1 &intel_fake_agp_alloc_by_type_1 +ocfs2_get_refcount_tree_3 ocfs2_get_refcount_tree 0 3 NULL @@ -126175,7 +133007,8 @@ index 0000000..19e2901 +rt73usb_enable_radio_258 rt73usb_enable_radio 0 258 NULL +sctp_assoc_set_bind_addr_from_ep_263 sctp_assoc_set_bind_addr_from_ep 0 263 NULL +setup_stream_272 setup_stream 0 272 NULL nohasharray -+mxl111sf_ctrl_msg_272 mxl111sf_ctrl_msg 0 272 &setup_stream_272 ++mxl111sf_ctrl_msg_272 mxl111sf_ctrl_msg 0 272 &setup_stream_272 nohasharray ++mpls_dev_sysctl_register_272 mpls_dev_sysctl_register 0 272 &mxl111sf_ctrl_msg_272 +xfs_dabuf_map_277 xfs_dabuf_map 0 277 NULL +lp855x_get_chip_id_278 lp855x_get_chip_id 0 278 NULL nohasharray +iscsi_tpg_attrib_show_demo_mode_write_protect_278 iscsi_tpg_attrib_show_demo_mode_write_protect 0 278 &lp855x_get_chip_id_278 @@ -126432,7 +133265,8 @@ index 0000000..19e2901 +tuner_i2c_xfer_send_recv_864 tuner_i2c_xfer_send_recv 0-5 864 NULL +btrfs_dirty_inode_868 btrfs_dirty_inode 0 868 NULL +ipr_read_trace_869 ipr_read_trace 6-0-5 869 NULL nohasharray -+ace_set_mac_addr_869 ace_set_mac_addr 0 869 &ipr_read_trace_869 ++ace_set_mac_addr_869 ace_set_mac_addr 0 869 &ipr_read_trace_869 nohasharray ++hfsplus_setxattr_869 hfsplus_setxattr 0 869 &ace_set_mac_addr_869 +epx_c3_notify_sys_871 epx_c3_notify_sys 0 871 NULL +i2c_wait_done_873 i2c_wait_done 0 873 NULL +link_mem_sections_878 link_mem_sections 0 878 NULL @@ -126488,6 +133322,7 @@ index 0000000..19e2901 +skge_rx_fill_991 skge_rx_fill 0 991 NULL +tts_notify_reboot_993 tts_notify_reboot 0 993 NULL nohasharray +memory_probe_store_993 memory_probe_store 0-4 993 &tts_notify_reboot_993 ++cma_free_mem_995 cma_free_mem 2 995 NULL +hdlcdev_rx_997 hdlcdev_rx 3 997 NULL +pch_udc_create_dma_chain_1001 pch_udc_create_dma_chain 0 1001 NULL +cdc_ncm_show_wNdpInDivisor_1003 cdc_ncm_show_wNdpInDivisor 0 1003 NULL nohasharray @@ -126541,7 +133376,8 @@ index 0000000..19e2901 +b43legacy_phy_versioning_1117 b43legacy_phy_versioning 0 1117 NULL +bql_show_limit_min_1118 bql_show_limit_min 0 1118 NULL +show_temp_crit_enable_1119 show_temp_crit_enable 0 1119 NULL -+edac_fake_inject_write_1120 edac_fake_inject_write 0-3 1120 NULL ++edac_fake_inject_write_1120 edac_fake_inject_write 0-3 1120 NULL nohasharray ++sha1_base_finish_1120 sha1_base_finish 0 1120 &edac_fake_inject_write_1120 +splice_read_1122 splice_read 0 1122 NULL +sdio_uart_write_room_1123 sdio_uart_write_room 0 1123 NULL nohasharray +drvctl_store_1123 drvctl_store 0-4 1123 &sdio_uart_write_room_1123 @@ -126597,6 +133433,7 @@ index 0000000..19e2901 +v9fs_write_inode_dotl_1241 v9fs_write_inode_dotl 0 1241 NULL +ehci_urb_enqueue_1242 ehci_urb_enqueue 0 1242 NULL +usnic_ib_show_cq_per_vf_1244 usnic_ib_show_cq_per_vf 0 1244 NULL ++snd_hdac_read_1245 snd_hdac_read 0 1245 NULL +qla2x00_total_isp_aborts_show_1247 qla2x00_total_isp_aborts_show 0 1247 NULL +class_osdblk_remove_1250 class_osdblk_remove 0-4 1250 NULL +ipath_read_umem64_1254 ipath_read_umem64 0 1254 NULL @@ -126809,6 +133646,7 @@ index 0000000..19e2901 +set_temp_emergency_1776 set_temp_emergency 0-4 1776 NULL +event_show_1780 event_show 0 1780 NULL +tpacpi_driver_wlsw_emulstate_store_1783 tpacpi_driver_wlsw_emulstate_store 0-3 1783 NULL ++usb_dmac_desc_alloc_1792 usb_dmac_desc_alloc 2 1792 NULL +fcoe_ctlr_device_add_1793 fcoe_ctlr_device_add 3 1793 NULL +ueth_change_mtu_1794 ueth_change_mtu 0 1794 NULL +show_auto_fan_1801 show_auto_fan 0 1801 NULL @@ -127108,6 +133946,7 @@ index 0000000..19e2901 +cifs_wp_retry_size_2491 cifs_wp_retry_size 0 2491 &xen_wdt_write_2491 +xenvif_alloc_skb_2492 xenvif_alloc_skb 1 2492 NULL +isicom_write_room_2493 isicom_write_room 0 2493 NULL ++widget_tree_create_2494 widget_tree_create 0 2494 NULL +show_tabletExecute_2495 show_tabletExecute 0 2495 NULL +_read_fact_prot_reg_2497 _read_fact_prot_reg 0 2497 NULL nohasharray +blk_rq_unmap_user_2497 blk_rq_unmap_user 0 2497 &_read_fact_prot_reg_2497 nohasharray @@ -127207,6 +134046,7 @@ index 0000000..19e2901 +nfc_llcp_send_ui_frame_2702 nfc_llcp_send_ui_frame 5-0 2702 NULL +lx_pipe_allocate_2703 lx_pipe_allocate 0 2703 NULL +udf_setsize_2705 udf_setsize 0 2705 NULL ++rawsock_sendmsg_2706 rawsock_sendmsg 3 2706 NULL +SyS_pwrite64_2708 SyS_pwrite64 3 2708 NULL nohasharray +lprocfs_stats_counter_size_2708 lprocfs_stats_counter_size 0 2708 &SyS_pwrite64_2708 +sock_error_2715 sock_error 0 2715 NULL nohasharray @@ -127214,6 +134054,7 @@ index 0000000..19e2901 +migration_call_2716 migration_call 0 2716 NULL +gpiod_direction_input_2718 gpiod_direction_input 0 2718 NULL +snd_hdspm_trigger_2720 snd_hdspm_trigger 0 2720 NULL ++llc_ui_recvmsg_2730 llc_ui_recvmsg 3 2730 NULL +o2hb_region_dev_read_2735 o2hb_region_dev_read 0 2735 NULL +ltm_capable_show_2738 ltm_capable_show 0 2738 NULL nohasharray +ad5398_enable_2738 ad5398_enable 0 2738 <m_capable_show_2738 @@ -127416,7 +134257,8 @@ index 0000000..19e2901 +map_smb_to_linux_error_3163 map_smb_to_linux_error 0 3163 NULL +gfs2_rindex_update_3165 gfs2_rindex_update 0 3165 NULL +nf_conntrack_broadcast_help_3166 nf_conntrack_broadcast_help 0 3166 NULL nohasharray -+islpci_reset_3166 islpci_reset 0 3166 &nf_conntrack_broadcast_help_3166 ++islpci_reset_3166 islpci_reset 0 3166 &nf_conntrack_broadcast_help_3166 nohasharray ++mgmt_index_event_3166 mgmt_index_event 4 3166 &islpci_reset_3166 +nfc_alloc_send_skb_3167 nfc_alloc_send_skb 4 3167 NULL +rxrpc_create_3175 rxrpc_create 0 3175 NULL nohasharray +rebind_store_3175 rebind_store 0-3 3175 &rxrpc_create_3175 @@ -127458,10 +134300,12 @@ index 0000000..19e2901 +ext3_xattr_find_entry_3237 ext3_xattr_find_entry 0 3237 NULL +macb_open_3240 macb_open 0 3240 NULL +key_key_read_3241 key_key_read 3-0 3241 NULL ++add_widget_node_3244 add_widget_node 0 3244 NULL +base_sock_bind_3245 base_sock_bind 0 3245 NULL +page_counter_memparse_3253 page_counter_memparse 0 3253 NULL +check_vendor_extension_3254 check_vendor_extension 1 3254 NULL nohasharray -+peak_usb_ndo_open_3254 peak_usb_ndo_open 0 3254 &check_vendor_extension_3254 ++peak_usb_ndo_open_3254 peak_usb_ndo_open 0 3254 &check_vendor_extension_3254 nohasharray ++__ip_local_out_sk_3254 __ip_local_out_sk 0 3254 &peak_usb_ndo_open_3254 +mei_amthif_write_3256 mei_amthif_write 0 3256 NULL +show_fc_host_firmware_version_3257 show_fc_host_firmware_version 0 3257 NULL +ipaq_open_3260 ipaq_open 0 3260 NULL @@ -127472,6 +134316,7 @@ index 0000000..19e2901 +wq_cpumask_store_3269 wq_cpumask_store 0-4 3269 &mma8452_show_samp_freq_avail_3269 +technisat_usb2_i2c_xfer_3273 technisat_usb2_i2c_xfer 0-3 3273 NULL nohasharray +pccard_show_resource_3273 pccard_show_resource 0 3273 &technisat_usb2_i2c_xfer_3273 ++gk20a_instobj_ctor_iommu_3274 gk20a_instobj_ctor_iommu 4 3274 NULL +cifs_enable_signing_3276 cifs_enable_signing 0 3276 NULL +ath6kl_wmi_get_roam_tbl_cmd_3282 ath6kl_wmi_get_roam_tbl_cmd 0 3282 NULL +__ilog2_u64_3284 __ilog2_u64 0 3284 NULL @@ -127506,6 +134351,7 @@ index 0000000..19e2901 +bt819_s_stream_3349 bt819_s_stream 0 3349 NULL +atm_init_aal34_3350 atm_init_aal34 0 3350 NULL +il_dbgfs_interrupt_read_3351 il_dbgfs_interrupt_read 3-0 3351 NULL ++rose_recvmsg_3352 rose_recvmsg 3 3352 NULL +gsm_control_rls_3353 gsm_control_rls 3 3353 NULL nohasharray +o2nm_cluster_attr_idle_timeout_ms_write_3353 o2nm_cluster_attr_idle_timeout_ms_write 3-0 3353 &gsm_control_rls_3353 +anx9805_aux_3358 anx9805_aux 0 3358 NULL @@ -127515,7 +134361,7 @@ index 0000000..19e2901 +iwl_trans_update_sf_3363 iwl_trans_update_sf 0 3363 NULL +sr_read_3366 sr_read 3 3366 NULL +nilfs_segctor_fill_in_checkpoint_3369 nilfs_segctor_fill_in_checkpoint 0 3369 NULL -+mv88e6xxx_phy_write_3375 mv88e6xxx_phy_write 0 3375 NULL nohasharray ++mv88e6xxx_phy_write_3375 mv88e6xxx_phy_write 0-2 3375 NULL nohasharray +hotkey_bios_enabled_show_3375 hotkey_bios_enabled_show 0 3375 &mv88e6xxx_phy_write_3375 +cifs_write_3376 cifs_write 0 3376 NULL nohasharray +register_xenbus_watch_3376 register_xenbus_watch 0 3376 &cifs_write_3376 @@ -127675,6 +134521,7 @@ index 0000000..19e2901 +__netdev_adjacent_dev_link_lists_3697 __netdev_adjacent_dev_link_lists 0 3697 NULL +target_core_show_dev_alias_3699 target_core_show_dev_alias 0 3699 NULL +videobuf_pages_to_sg_3708 videobuf_pages_to_sg 2 3708 NULL ++cfg80211_vendor_event_alloc_3709 cfg80211_vendor_event_alloc 3 3709 NULL +sys_getrandom_3710 sys_getrandom 2 3710 NULL +mlx4_en_config_rss_steer_3713 mlx4_en_config_rss_steer 0 3713 NULL +i2c_sendbytes_3714 i2c_sendbytes 0 3714 NULL @@ -127706,6 +134553,7 @@ index 0000000..19e2901 +sctp_copy_one_addr_3771 sctp_copy_one_addr 0 3771 &temp1_show_3771 +mvs_show_driver_version_3772 mvs_show_driver_version 0 3772 NULL nohasharray +koneplus_sysfs_read_profilex_settings_3772 koneplus_sysfs_read_profilex_settings 0-5-6 3772 &mvs_show_driver_version_3772 ++ping_recvmsg_3773 ping_recvmsg 3 3773 NULL +store_enable_clkb0_output_3776 store_enable_clkb0_output 0-4 3776 NULL +nouveau_sysfs_pstate_set_3777 nouveau_sysfs_pstate_set 0-4 3777 NULL +apds990x_prox_enable_show_3778 apds990x_prox_enable_show 0 3778 NULL @@ -127734,7 +134582,8 @@ index 0000000..19e2901 +ezusb_access_ltv_3838 ezusb_access_ltv 0 3838 &ceph_do_getattr_3838 +mtip_hw_show_status_3839 mtip_hw_show_status 0 3839 NULL +release_version_store_3841 release_version_store 0-4 3841 NULL -+fuse_try_move_page_3842 fuse_try_move_page 0 3842 NULL ++fuse_try_move_page_3842 fuse_try_move_page 0 3842 NULL nohasharray ++stringify_nodemap_3842 stringify_nodemap 2 3842 &fuse_try_move_page_3842 +max8925_disable_3844 max8925_disable 0 3844 NULL +vprbrd_i2c_read_3845 vprbrd_i2c_read 0 3845 NULL nohasharray +amd_xgbe_phy_switch_mode_3845 amd_xgbe_phy_switch_mode 0 3845 &vprbrd_i2c_read_3845 @@ -127746,11 +134595,13 @@ index 0000000..19e2901 +smk_read_onlycap_3855 smk_read_onlycap 3-0 3855 NULL +show_session_param_ISCSI_PARAM_TARGET_ALIAS_3856 show_session_param_ISCSI_PARAM_TARGET_ALIAS 0 3856 NULL +fuse_retrieve_3857 fuse_retrieve 0 3857 NULL ++udf_direct_IO_3860 udf_direct_IO 3 3860 NULL +c67x00_urb_enqueue_3862 c67x00_urb_enqueue 0 3862 NULL +hfsplus_create_attr_3864 hfsplus_create_attr 0 3864 NULL nohasharray +video_write_3864 video_write 0 3864 &hfsplus_create_attr_3864 +get_fd_set_3866 get_fd_set 1 3866 NULL +show_pci_3867 show_pci 0 3867 NULL ++sst_hsw_module_set_param_3868 sst_hsw_module_set_param 5 3868 NULL +br_fdb_insert_3869 br_fdb_insert 0 3869 NULL +i7core_inject_show_channel_3874 i7core_inject_show_channel 0 3874 NULL +show_ctlr_enabled_state_3877 show_ctlr_enabled_state 0 3877 NULL @@ -127779,6 +134630,7 @@ index 0000000..19e2901 +iwl_load_ucode_wait_alive_3936 iwl_load_ucode_wait_alive 0 3936 NULL +show_allow_ext_sg_3938 show_allow_ext_sg 0 3938 NULL +__vfs_read_3942 __vfs_read 0-3 3942 NULL ++rb_alloc_aux_3943 rb_alloc_aux 4 3943 NULL +hdlc_irq_one_3944 hdlc_irq_one 2 3944 NULL +cp_refill_rx_3947 cp_refill_rx 0 3947 NULL +apei_clear_mce_3948 apei_clear_mce 0 3948 NULL nohasharray @@ -127815,7 +134667,8 @@ index 0000000..19e2901 +show_xps_map_4009 show_xps_map 0 4009 NULL +snd_hdsp_capture_copy_4011 snd_hdsp_capture_copy 5 4011 NULL +bcm_rx_setup_4014 bcm_rx_setup 0 4014 NULL -+wakeup_active_count_show_4016 wakeup_active_count_show 0 4016 NULL ++wakeup_active_count_show_4016 wakeup_active_count_show 0 4016 NULL nohasharray ++hsu_dma_prep_slave_sg_4016 hsu_dma_prep_slave_sg 3 4016 &wakeup_active_count_show_4016 +amd_xgbe_phy_gmii_mode_4019 amd_xgbe_phy_gmii_mode 0 4019 NULL +_request_firmware_4021 _request_firmware 0 4021 NULL +blk_end_request_4024 blk_end_request 3 4024 NULL nohasharray @@ -127826,7 +134679,8 @@ index 0000000..19e2901 +ql3xxx_set_mac_address_4033 ql3xxx_set_mac_address 0 4033 NULL +b1_get_word_4035 b1_get_word 0 4035 NULL nohasharray +usbnet_write_cmd_async_4035 usbnet_write_cmd_async 7 4035 &b1_get_word_4035 -+xfs_free_ag_extent_4036 xfs_free_ag_extent 0 4036 NULL ++xfs_free_ag_extent_4036 xfs_free_ag_extent 0 4036 NULL nohasharray ++sha1_base_do_update_4036 sha1_base_do_update 0 4036 &xfs_free_ag_extent_4036 +mtip_hw_read_registers_4037 mtip_hw_read_registers 3-0 4037 NULL +store_tabletCoordinateMode_4043 store_tabletCoordinateMode 0-4 4043 NULL +oprofile_set_ulong_4046 oprofile_set_ulong 0 4046 NULL @@ -127915,7 +134769,8 @@ index 0000000..19e2901 +axp20x_show_ext_attr_4232 axp20x_show_ext_attr 0 4232 NULL +bch_hprint_4233 bch_hprint 0 4233 NULL nohasharray +gpio_trig_gpio_store_4233 gpio_trig_gpio_store 0-4 4233 &bch_hprint_4233 -+show_fnode_max_segment_size_4234 show_fnode_max_segment_size 0 4234 NULL ++show_fnode_max_segment_size_4234 show_fnode_max_segment_size 0 4234 NULL nohasharray ++ext4_direct_IO_4234 ext4_direct_IO 3 4234 &show_fnode_max_segment_size_4234 +snd_seq_ioctl_query_next_port_4238 snd_seq_ioctl_query_next_port 0 4238 NULL +input_dev_show_cap_abs_4239 input_dev_show_cap_abs 0 4239 NULL +team_port_enable_netpoll_4243 team_port_enable_netpoll 0 4243 NULL @@ -127968,6 +134823,7 @@ index 0000000..19e2901 +mlx4_qp_modify_4333 mlx4_qp_modify 0 4333 NULL +iscsi_disc_store_userid_4337 iscsi_disc_store_userid 0-3 4337 NULL +ima_eventdigest_init_common_4338 ima_eventdigest_init_common 2 4338 NULL ++unix_stream_sendmsg_4343 unix_stream_sendmsg 3 4343 NULL +rtl8169_get_sset_count_4349 rtl8169_get_sset_count 0 4349 NULL +show_tcrit1_4350 show_tcrit1 0 4350 NULL +netdev_vlan_rx_add_vid_4353 netdev_vlan_rx_add_vid 0 4353 NULL @@ -127988,6 +134844,7 @@ index 0000000..19e2901 +uevent_seqnum_show_4383 uevent_seqnum_show 0 4383 NULL +pci_eg20t_init_4385 pci_eg20t_init 0 4385 NULL +irda_sendmsg_4388 irda_sendmsg 4-0 4388 NULL ++sctp_sendmsg_4391 sctp_sendmsg 3 4391 NULL +lp3943_gpio_set_mode_4393 lp3943_gpio_set_mode 0 4393 NULL +ovl_listxattr_4399 ovl_listxattr 0-3 4399 NULL +get_pwm1_enable_4401 get_pwm1_enable 0 4401 NULL nohasharray @@ -128199,7 +135056,8 @@ index 0000000..19e2901 +isdn_divert_write_4891 isdn_divert_write 0-3 4891 NULL +s2io_ethtool_get_regs_len_4901 s2io_ethtool_get_regs_len 0 4901 NULL +shadow_fetch_4907 shadow_fetch 2 4907 NULL -+nilfs_segbuf_reset_4912 nilfs_segbuf_reset 0 4912 NULL ++nilfs_segbuf_reset_4912 nilfs_segbuf_reset 0 4912 NULL nohasharray ++mt6397_irq_handle_reg_4912 mt6397_irq_handle_reg 3 4912 &nilfs_segbuf_reset_4912 +qlcnic_82xx_alloc_mbx_args_4913 qlcnic_82xx_alloc_mbx_args 0 4913 NULL nohasharray +smsc911x_ethtool_getregslen_4913 smsc911x_ethtool_getregslen 0 4913 &qlcnic_82xx_alloc_mbx_args_4913 +sw_activity_store_4914 sw_activity_store 0 4914 NULL @@ -128361,6 +135219,7 @@ index 0000000..19e2901 +snd_seq_ioctl_get_queue_tempo_5296 snd_seq_ioctl_get_queue_tempo 0 5296 NULL +qla2x00_optrom_fcode_version_show_5297 qla2x00_optrom_fcode_version_show 0 5297 NULL +lpfc_max_luns_show_5301 lpfc_max_luns_show 0 5301 NULL ++sco_sock_sendmsg_5302 sco_sock_sendmsg 3 5302 NULL +metapage_readpage_5304 metapage_readpage 0 5304 NULL nohasharray +alloc_dec_temp_buffers_5304 alloc_dec_temp_buffers 0 5304 &metapage_readpage_5304 nohasharray +t4vf_write_rss_vi_config_5304 t4vf_write_rss_vi_config 0 5304 &alloc_dec_temp_buffers_5304 @@ -128368,6 +135227,7 @@ index 0000000..19e2901 +_efx_mcdi_rpc_finish_5310 _efx_mcdi_rpc_finish 0 5310 NULL +grow_inode_5311 grow_inode 0 5311 NULL +r592_write_fifo_pio_5315 r592_write_fifo_pio 3 5315 NULL ++pep_sendmsg_5316 pep_sendmsg 3 5316 NULL +sbc_get_write_same_sectors_5317 sbc_get_write_same_sectors 0 5317 NULL +selinux_ipv4_output_5320 selinux_ipv4_output 0 5320 NULL +pmcraid_show_log_level_5323 pmcraid_show_log_level 0 5323 NULL nohasharray @@ -128403,6 +135263,7 @@ index 0000000..19e2901 +fcr_get_rxtrig_bytes_5384 fcr_get_rxtrig_bytes 0 5384 &disksize_store_5384 +efx_mcdi_port_reconfigure_5389 efx_mcdi_port_reconfigure 0 5389 NULL +at86rf230_set_hw_addr_filt_5394 at86rf230_set_hw_addr_filt 0 5394 NULL ++bitmap_fold_5396 bitmap_fold 4 5396 NULL +brcmf_netdev_set_mac_address_5397 brcmf_netdev_set_mac_address 0 5397 NULL +xadc_write_adc_reg_5398 xadc_write_adc_reg 0 5398 NULL +regulator_uV_show_5404 regulator_uV_show 0 5404 NULL @@ -128493,6 +135354,7 @@ index 0000000..19e2901 +v4l2_s_ctrl_5571 v4l2_s_ctrl 0 5571 NULL +tda18271_set_standby_mode_5572 tda18271_set_standby_mode 0 5572 NULL +fir16_create_5574 fir16_create 3 5574 NULL ++ax25_sendmsg_5578 ax25_sendmsg 3 5578 NULL +bioset_create_5580 bioset_create 1 5580 NULL +fat_block_truncate_page_5581 fat_block_truncate_page 0 5581 NULL nohasharray +esas2r_write_vda_5581 esas2r_write_vda 0-3-4 5581 &fat_block_truncate_page_5581 @@ -128503,6 +135365,7 @@ index 0000000..19e2901 +bind_store_5596 bind_store 0-3 5596 &thermal_throttle_cpu_callback_5596 +amd_xgbe_an_init_5602 amd_xgbe_an_init 0 5602 NULL +xcan_set_bittiming_5605 xcan_set_bittiming 0 5605 NULL ++pn_recvmsg_5607 pn_recvmsg 3 5607 NULL +ldm_frag_add_5611 ldm_frag_add 2 5611 NULL +compat_copy_entries_5617 compat_copy_entries 0 5617 NULL +__remove_suid_5618 __remove_suid 0 5618 NULL @@ -128647,11 +135510,14 @@ index 0000000..19e2901 +sctp_bindx_rem_5938 sctp_bindx_rem 0 5938 &mlx4_en_create_tx_ring_5938 +edac_device_alloc_ctl_info_5941 edac_device_alloc_ctl_info 1 5941 NULL +ssb_devices_freeze_5945 ssb_devices_freeze 0 5945 NULL -+devkmsg_write_5947 devkmsg_write 0 5947 NULL -+affs_readpage_ofs_5951 affs_readpage_ofs 0 5951 NULL ++devkmsg_write_5947 devkmsg_write 0 5947 NULL nohasharray ++l2cap_sock_sendmsg_5947 l2cap_sock_sendmsg 3 5947 &devkmsg_write_5947 ++affs_readpage_ofs_5951 affs_readpage_ofs 0 5951 NULL nohasharray ++p9_get_mapped_pages_5951 p9_get_mapped_pages 4 5951 &affs_readpage_ofs_5951 +bnx2x_req_msix_irqs_5956 bnx2x_req_msix_irqs 0 5956 NULL +tipc_subseq_alloc_5957 tipc_subseq_alloc 1 5957 NULL nohasharray +erst_exec_add_value_5957 erst_exec_add_value 0 5957 &tipc_subseq_alloc_5957 ++tcp_recvmsg_5958 tcp_recvmsg 3 5958 NULL +attr_press_speed_show_tpkbd_5960 attr_press_speed_show_tpkbd 0 5960 NULL +free_hugepages_show_5961 free_hugepages_show 0 5961 NULL +ll_statahead_one_5962 ll_statahead_one 3 5962 NULL @@ -128686,11 +135552,13 @@ index 0000000..19e2901 +crypto_rng_reset_6032 crypto_rng_reset 0 6032 &show_pwm_auto_point_channel_6032 +radeon_process_i2c_ch_6034 radeon_process_i2c_ch 0 6034 NULL +ntfs_rl_append_6037 ntfs_rl_append 4-2 6037 NULL -+hvfb_set_par_6038 hvfb_set_par 0 6038 NULL ++hvfb_set_par_6038 hvfb_set_par 0 6038 NULL nohasharray ++mei_cl_read_start_6038 mei_cl_read_start 2-0 6038 &hvfb_set_par_6038 +crccheck_store_6040 crccheck_store 0-4 6040 NULL +ipath_set_mtu_6042 ipath_set_mtu 0 6042 NULL +led_shot_6046 led_shot 0-4 6046 NULL -+otg_handle_notification_6055 otg_handle_notification 0 6055 NULL ++otg_handle_notification_6055 otg_handle_notification 0 6055 NULL nohasharray ++periph_interrupt_6055 periph_interrupt 2 6055 &otg_handle_notification_6055 +show_session_param_ISCSI_PARAM_DISCOVERY_LOGOUT_EN_6056 show_session_param_ISCSI_PARAM_DISCOVERY_LOGOUT_EN 0 6056 NULL +da9052_request_irq_6058 da9052_request_irq 2 6058 NULL +pccard_show_cis_6062 pccard_show_cis 0-5-6 6062 NULL @@ -128800,7 +135668,8 @@ index 0000000..19e2901 +store_cluster_6316 store_cluster 0-4 6316 NULL +write_null_6319 write_null 0-3 6319 NULL +__netdev_adjacent_dev_link_neighbour_6321 __netdev_adjacent_dev_link_neighbour 0 6321 NULL -+extent_write_full_page_6322 extent_write_full_page 0 6322 NULL ++extent_write_full_page_6322 extent_write_full_page 0 6322 NULL nohasharray ++tipc_recvmsg_6322 tipc_recvmsg 3 6322 &extent_write_full_page_6322 +cyapa_gen3_bl_exit_6326 cyapa_gen3_bl_exit 0 6326 NULL +ibm_get_table_from_acpi_6329 ibm_get_table_from_acpi 0 6329 NULL nohasharray +SyS_mincore_6329 SyS_mincore 1-2 6329 &ibm_get_table_from_acpi_6329 @@ -128827,7 +135696,8 @@ index 0000000..19e2901 +osd_req_read_sg_kern_6378 osd_req_read_sg_kern 5 6378 NULL nohasharray +sync_fence_alloc_6378 sync_fence_alloc 1 6378 &osd_req_read_sg_kern_6378 +msb_write_block_6379 msb_write_block 3 6379 NULL -+xfs_bmap_extents_to_btree_6387 xfs_bmap_extents_to_btree 0 6387 NULL ++xfs_bmap_extents_to_btree_6387 xfs_bmap_extents_to_btree 0 6387 NULL nohasharray ++sha1_ssse3_finup_6387 sha1_ssse3_finup 0 6387 &xfs_bmap_extents_to_btree_6387 +cfq_init_queue_6399 cfq_init_queue 0 6399 NULL +bb_store_6401 bb_store 3-0 6401 NULL +hash_elasticity_show_6402 hash_elasticity_show 0 6402 NULL @@ -128903,6 +135773,7 @@ index 0000000..19e2901 +rng_recvmsg_6569 rng_recvmsg 4-0 6569 NULL +xfs_iozero_6573 xfs_iozero 0-3-2 6573 NULL +i2c_smbus_write_byte_6574 i2c_smbus_write_byte 0 6574 NULL ++do_blockdev_direct_IO_6575 do_blockdev_direct_IO 5-0 6575 NULL +max8997_rtc_set_alarm_6577 max8997_rtc_set_alarm 0 6577 NULL +bt_skb_send_alloc_6581 bt_skb_send_alloc 2 6581 NULL +SyS_fcntl64_6582 SyS_fcntl64 3 6582 NULL @@ -128983,8 +135854,10 @@ index 0000000..19e2901 +mv88e6xxx_reg_read_6748 mv88e6xxx_reg_read 0 6748 NULL +wil_reset_6752 wil_reset 0 6752 NULL +uvesafb_show_nocrtc_6754 uvesafb_show_nocrtc 0 6754 NULL ++_mv88e6xxx_phy_write_6755 _mv88e6xxx_phy_write 0 6755 NULL +beiscsi_phys_port_disp_6756 beiscsi_phys_port_disp 0 6756 NULL nohasharray -+cciss_engage_scsi_6756 cciss_engage_scsi 0 6756 &beiscsi_phys_port_disp_6756 ++cciss_engage_scsi_6756 cciss_engage_scsi 0 6756 &beiscsi_phys_port_disp_6756 nohasharray ++i915_parse_cmds_6756 i915_parse_cmds 4-5 6756 &cciss_engage_scsi_6756 +mwifiex_cmd_rf_antenna_6757 mwifiex_cmd_rf_antenna 0 6757 NULL +usbhsh_urb_enqueue_6759 usbhsh_urb_enqueue 0 6759 NULL +mwl8k_cmd_set_new_stn_add_6760 mwl8k_cmd_set_new_stn_add 0 6760 NULL @@ -129024,6 +135897,7 @@ index 0000000..19e2901 +codec_reg_show_6818 codec_reg_show 0 6818 NULL nohasharray +bcm_tx_setup_6818 bcm_tx_setup 0 6818 &codec_reg_show_6818 +rfcomm_send_frame_6819 rfcomm_send_frame 3 6819 NULL ++wil_get_bl_info_6823 wil_get_bl_info 0 6823 NULL +lbs_rdrf_write_6826 lbs_rdrf_write 3-0 6826 NULL nohasharray +host_reset_6826 host_reset 0 6826 &lbs_rdrf_write_6826 +xfs_bmap_first_unused_6827 xfs_bmap_first_unused 0 6827 NULL @@ -129062,7 +135936,8 @@ index 0000000..19e2901 +show_fcstat_fc_seq_not_found_6897 show_fcstat_fc_seq_not_found 0 6897 NULL nohasharray +iscsi_tpg_param_show_DefaultTime2Retain_6897 iscsi_tpg_param_show_DefaultTime2Retain 0 6897 &show_fcstat_fc_seq_not_found_6897 +max_write_same_blocks_show_6899 max_write_same_blocks_show 0 6899 NULL -+wq_nice_store_6901 wq_nice_store 0-4 6901 NULL ++wq_nice_store_6901 wq_nice_store 0-4 6901 NULL nohasharray ++crypto_sha256_finup_6901 crypto_sha256_finup 0 6901 &wq_nice_store_6901 +veth_change_mtu_6902 veth_change_mtu 0 6902 NULL nohasharray +ext4_inode_bitmap_6902 ext4_inode_bitmap 0 6902 &veth_change_mtu_6902 +acerhdf_get_trip_temp_6903 acerhdf_get_trip_temp 0 6903 NULL @@ -129106,6 +135981,7 @@ index 0000000..19e2901 +in_intr_mask_show_6971 in_intr_mask_show 0 6971 NULL +rsa_extract_mpi_6973 rsa_extract_mpi 5 6973 NULL nohasharray +i40e_dbg_dump_write_6973 i40e_dbg_dump_write 3-0 6973 &rsa_extract_mpi_6973 ++ubifs_decompress_6974 ubifs_decompress 0 6974 NULL +acpi_lpss_platform_notify_6980 acpi_lpss_platform_notify 0 6980 NULL +ismt_process_desc_6981 ismt_process_desc 0 6981 NULL +request_key_async_6990 request_key_async 4 6990 NULL @@ -129126,7 +136002,8 @@ index 0000000..19e2901 +snd_pcm_do_resume_7028 snd_pcm_do_resume 0 7028 NULL +ath9k_tx99_init_7029 ath9k_tx99_init 0 7029 NULL +wimax_msg_7030 wimax_msg 4 7030 NULL -+ceph_kvmalloc_7033 ceph_kvmalloc 1 7033 NULL ++ceph_kvmalloc_7033 ceph_kvmalloc 1 7033 NULL nohasharray ++rawv6_recvmsg_7033 rawv6_recvmsg 3 7033 &ceph_kvmalloc_7033 +nilfs_segments_attr_store_7037 nilfs_segments_attr_store 0-4 7037 NULL +stmmac_hw_setup_7038 stmmac_hw_setup 0 7038 NULL +metrics_bytes_identical_show_7039 metrics_bytes_identical_show 0 7039 NULL @@ -129181,6 +136058,7 @@ index 0000000..19e2901 +pscsi_show_configfs_dev_params_7152 pscsi_show_configfs_dev_params 0 7152 NULL +sky2_get_eeprom_len_7154 sky2_get_eeprom_len 0 7154 NULL +set_lcd_level_7155 set_lcd_level 0 7155 NULL ++nct7904_bank_lock_7159 nct7904_bank_lock 0 7159 NULL +max732x_gpio_to_irq_7160 max732x_gpio_to_irq 2 7160 NULL +fnic_reset_7163 fnic_reset 0 7163 NULL +r8a66597_enable_7164 r8a66597_enable 0 7164 NULL @@ -129190,7 +136068,8 @@ index 0000000..19e2901 +fsp_attr_set_flags_7182 fsp_attr_set_flags 0-4 7182 NULL nohasharray +set_rdac1_7182 set_rdac1 4-0 7182 &fsp_attr_set_flags_7182 nohasharray +ext4_attr_store_7182 ext4_attr_store 0-4 7182 &set_rdac1_7182 -+f_hid_opts_report_desc_store_7188 f_hid_opts_report_desc_store 3 7188 NULL ++f_hid_opts_report_desc_store_7188 f_hid_opts_report_desc_store 3 7188 NULL nohasharray ++iwl_trans_wait_tx_queue_empty_7188 iwl_trans_wait_tx_queue_empty 0 7188 &f_hid_opts_report_desc_store_7188 +snd_mask_refine_max_7191 snd_mask_refine_max 0 7191 NULL +wl1271_init_pta_7195 wl1271_init_pta 0 7195 NULL +ext3_xattr_ibody_list_7201 ext3_xattr_ibody_list 0 7201 NULL @@ -129200,6 +136079,7 @@ index 0000000..19e2901 +adjd_s311_update_scan_mode_7208 adjd_s311_update_scan_mode 0 7208 NULL +fsg_common_set_nluns_7209 fsg_common_set_nluns 2 7209 NULL +confirm_7211 confirm 0 7211 NULL ++trace_insert_enum_map_file_7213 trace_insert_enum_map_file 3 7213 NULL +tpm_rng_read_7214 tpm_rng_read 3 7214 NULL +of_dma_match_channel_7216 of_dma_match_channel 3 7216 NULL +acpi_device_uid_show_7226 acpi_device_uid_show 0 7226 NULL nohasharray @@ -129224,6 +136104,7 @@ index 0000000..19e2901 +ssb_bus_resume_7272 ssb_bus_resume 0 7272 &dma_ops_alloc_addresses_7272 +palmas_update_bits_7273 palmas_update_bits 0 7273 NULL +htu21_show_humidity_7275 htu21_show_humidity 0 7275 NULL ++__vfs_write_7278 __vfs_write 0-3 7278 NULL +radeon_hw_i2c_xfer_7280 radeon_hw_i2c_xfer 0-3 7280 NULL nohasharray +smack_task_setnice_7280 smack_task_setnice 0 7280 &radeon_hw_i2c_xfer_7280 +kvm_suspend_7281 kvm_suspend 0 7281 NULL @@ -129368,6 +136249,7 @@ index 0000000..19e2901 +xfs_bmap_btalloc_nullfb_7654 xfs_bmap_btalloc_nullfb 0 7654 NULL +show_fc_rport_supported_classes_7658 show_fc_rport_supported_classes 0 7658 NULL +fault_inject_write_7662 fault_inject_write 3-0 7662 NULL ++rng_recvmsg_7665 rng_recvmsg 3 7665 NULL +ds1305_set_alarm_7667 ds1305_set_alarm 0 7667 NULL +acpi_bus_init_power_7670 acpi_bus_init_power 0 7670 NULL +tcm_qla2xxx_tpg_attrib_store_generate_node_acls_7674 tcm_qla2xxx_tpg_attrib_store_generate_node_acls 0-3 7674 NULL @@ -129504,14 +136386,16 @@ index 0000000..19e2901 +write_room_8009 write_room 0 8009 NULL +nfs_commit_inode_8011 nfs_commit_inode 0 8011 NULL +tt3650_ci_msg_locked_8013 tt3650_ci_msg_locked 4 8013 NULL nohasharray -+ip6gre_tap_init_8013 ip6gre_tap_init 0 8013 &tt3650_ci_msg_locked_8013 ++ip6gre_tap_init_8013 ip6gre_tap_init 0 8013 &tt3650_ci_msg_locked_8013 nohasharray ++xfs_break_layouts_8013 xfs_break_layouts 0 8013 &ip6gre_tap_init_8013 +vcs_read_8017 vcs_read 3-0 8017 NULL +cx18_s_audio_mode_8020 cx18_s_audio_mode 0 8020 NULL +aux3_show_8025 aux3_show 0 8025 NULL +cifs_sync_write_8031 cifs_sync_write 0 8031 NULL nohasharray +snd_seq_oss_synth_load_patch_8031 snd_seq_oss_synth_load_patch 0 8031 &cifs_sync_write_8031 +ath10k_vdev_start_restart_8033 ath10k_vdev_start_restart 0 8033 NULL -+fuse_copy_fill_8034 fuse_copy_fill 0 8034 NULL ++fuse_copy_fill_8034 fuse_copy_fill 0 8034 NULL nohasharray ++snd_hdac_bus_exec_verb_8034 snd_hdac_bus_exec_verb 0 8034 &fuse_copy_fill_8034 +led_set_flash_brightness_8039 led_set_flash_brightness 0 8039 NULL +bma180_show_scale_avail_8040 bma180_show_scale_avail 0 8040 NULL nohasharray +copy_gr_arg_normal_8040 copy_gr_arg_normal 0 8040 &bma180_show_scale_avail_8040 @@ -129532,6 +136416,7 @@ index 0000000..19e2901 +qla4xxx_post_ping_evt_work_8074 qla4xxx_post_ping_evt_work 4 8074 &alloc_targets_8074 nohasharray +current_has_perm_8074 current_has_perm 0 8074 &qla4xxx_post_ping_evt_work_8074 nohasharray +reiserfs_setattr_8074 reiserfs_setattr 0 8074 ¤t_has_perm_8074 ++gfs2_quota_lock_check_8075 gfs2_quota_lock_check 0 8075 NULL +new_id_show_8076 new_id_show 0 8076 NULL nohasharray +command_setcompressiontarget_8076 command_setcompressiontarget 0 8076 &new_id_show_8076 +strict_show_8078 strict_show 0 8078 NULL @@ -129543,6 +136428,7 @@ index 0000000..19e2901 +ext2_commit_chunk_8097 ext2_commit_chunk 3 8097 NULL +ds2781_write_8099 ds2781_write 4-3-0 8099 NULL +input_dev_show_cap_msc_8102 input_dev_show_cap_msc 0 8102 NULL ++vmbus_sendpacket_pagebuffer_ctl_8103 vmbus_sendpacket_pagebuffer_ctl 0 8103 NULL +csrow_ue_count_show_8104 csrow_ue_count_show 0 8104 NULL +ax88179_read_cmd_8105 ax88179_read_cmd 5 8105 NULL +show_bpdu_guard_8110 show_bpdu_guard 0 8110 NULL @@ -129585,6 +136471,7 @@ index 0000000..19e2901 +ore_truncate_8181 ore_truncate 0 8181 NULL nohasharray +mlx4_en_activate_tx_ring_8181 mlx4_en_activate_tx_ring 0 8181 &ore_truncate_8181 +show_iface_max_burst_len_8182 show_iface_max_burst_len 0 8182 NULL ++hci_sock_recvmsg_8184 hci_sock_recvmsg 3 8184 NULL +lp3943_update_bits_8185 lp3943_update_bits 0 8185 NULL +ieee80211_if_fmt_dot11MeshHoldingTimeout_8187 ieee80211_if_fmt_dot11MeshHoldingTimeout 3 8187 NULL +write_classid_8189 write_classid 0 8189 NULL @@ -129645,6 +136532,7 @@ index 0000000..19e2901 +sel_make_policycap_8346 sel_make_policycap 0 8346 NULL +ieee80211_if_fmt_ht_opmode_8347 ieee80211_if_fmt_ht_opmode 3 8347 NULL +target_core_dev_pr_show_attr_res_type_8349 target_core_dev_pr_show_attr_res_type 0 8349 NULL ++sync_request_8350 sync_request 2 8350 NULL +nfs4_lookup_root_sec_8353 nfs4_lookup_root_sec 0 8353 NULL +prop_compression_apply_8354 prop_compression_apply 0 8354 NULL nohasharray +open_candev_8354 open_candev 0 8354 &prop_compression_apply_8354 @@ -129678,7 +136566,8 @@ index 0000000..19e2901 +roccat_common2_sysfs_read_8431 roccat_common2_sysfs_read 6-0 8431 NULL +capability_set_8433 capability_set 0-4 8433 NULL +snd_usb_ctl_msg_8436 snd_usb_ctl_msg 8-0 8436 NULL -+irq_create_mapping_8437 irq_create_mapping 0-2 8437 NULL ++irq_create_mapping_8437 irq_create_mapping 0-2 8437 NULL nohasharray ++nfs_sync_inode_8437 nfs_sync_inode 0 8437 &irq_create_mapping_8437 +sk_stream_wait_memory_8438 sk_stream_wait_memory 0 8438 NULL +generic_bin_search_8440 generic_bin_search 0 8440 NULL +get_b_bus_req_8443 get_b_bus_req 0 8443 NULL @@ -129708,6 +136597,7 @@ index 0000000..19e2901 +snd_timer_open_8492 snd_timer_open 0 8492 NULL +rpcauth_key_timeout_notify_8494 rpcauth_key_timeout_notify 0 8494 NULL +in0_input_show_8498 in0_input_show 0 8498 NULL ++i40e_init_msix_8499 i40e_init_msix 0 8499 NULL +fore200e_chunk_alloc_8501 fore200e_chunk_alloc 4-3 8501 NULL +ecryptfs_calculate_md5_8504 ecryptfs_calculate_md5 0 8504 NULL +dev_config_8506 dev_config 3 8506 NULL @@ -129760,6 +136650,7 @@ index 0000000..19e2901 +__dev_set_allmulti_8622 __dev_set_allmulti 0 8622 NULL +xfs_qm_dqattach_locked_8625 xfs_qm_dqattach_locked 0 8625 NULL +cifs_negotiate_8626 cifs_negotiate 0 8626 NULL ++iwl_pcie_load_cpu_sections_8000_8627 iwl_pcie_load_cpu_sections_8000 0 8627 NULL +it821x_firmware_command_8628 it821x_firmware_command 3 8628 NULL +scsi_dma_map_8632 scsi_dma_map 0 8632 NULL +sh_vou_buf_prepare_8633 sh_vou_buf_prepare 0 8633 NULL @@ -129838,6 +136729,7 @@ index 0000000..19e2901 +show_hardware_8789 show_hardware 0 8789 NULL +edd_show_sectors_8794 edd_show_sectors 0 8794 NULL +__bitmap_weight_8796 __bitmap_weight 0 8796 NULL ++nct7904_read_reg16_8798 nct7904_read_reg16 0 8798 NULL +ip_vs_remote_request6_8805 ip_vs_remote_request6 0 8805 NULL +gfs2_glock_nq_8808 gfs2_glock_nq 0 8808 NULL nohasharray +prod_id2_show_8808 prod_id2_show 0 8808 &gfs2_glock_nq_8808 nohasharray @@ -129849,7 +136741,8 @@ index 0000000..19e2901 +bd2802_store_reg0x06_8815 bd2802_store_reg0x06 0-4 8815 NULL +show_counter_rx_dwords_8819 show_counter_rx_dwords 0 8819 NULL +metronomefb_write_8823 metronomefb_write 3 8823 NULL -+SyS_llistxattr_8824 SyS_llistxattr 3 8824 NULL ++SyS_llistxattr_8824 SyS_llistxattr 3 8824 NULL nohasharray ++hfsplus_direct_IO_8824 hfsplus_direct_IO 3 8824 &SyS_llistxattr_8824 +nilfs_segctor_reset_segment_buffer_8825 nilfs_segctor_reset_segment_buffer 0 8825 NULL +extent_read_full_page_8826 extent_read_full_page 0 8826 NULL +ll_xattr_cache_get_8829 ll_xattr_cache_get 0 8829 NULL @@ -129858,7 +136751,8 @@ index 0000000..19e2901 +new_files_jdata_store_8832 new_files_jdata_store 0-3 8832 &mmc_wait_for_cmd_8832 +get_queue_depth_8833 get_queue_depth 0 8833 NULL nohasharray +icmpv6_manip_pkt_8833 icmpv6_manip_pkt 4 8833 &get_queue_depth_8833 -+dvb_ringbuffer_pkt_next_8834 dvb_ringbuffer_pkt_next 0-2 8834 NULL ++dvb_ringbuffer_pkt_next_8834 dvb_ringbuffer_pkt_next 0-2 8834 NULL nohasharray ++mgmt_generic_event_8834 mgmt_generic_event 4 8834 &dvb_ringbuffer_pkt_next_8834 +usb_ep_queue_8839 usb_ep_queue 0 8839 NULL nohasharray +nilfs_mdt_get_block_8839 nilfs_mdt_get_block 0 8839 &usb_ep_queue_8839 +policydb_bounds_sanity_check_8846 policydb_bounds_sanity_check 0 8846 NULL @@ -129968,7 +136862,8 @@ index 0000000..19e2901 +sta_tx_latency_stat_header_9050 sta_tx_latency_stat_header 0-3-4 9050 NULL +clk_ctl_store_9053 clk_ctl_store 0-4 9053 NULL +__uncore_xbr_mm_cfg_show_9057 __uncore_xbr_mm_cfg_show 0 9057 NULL -+ep_queue_9060 ep_queue 0 9060 NULL ++ep_queue_9060 ep_queue 0 9060 NULL nohasharray ++rhashtable_lookup_insert_key_9060 rhashtable_lookup_insert_key 0 9060 &ep_queue_9060 +snd_emu10k1_synth_copy_from_user_9061 snd_emu10k1_synth_copy_from_user 5-3 9061 NULL +snd_gus_dram_peek_9062 snd_gus_dram_peek 4 9062 NULL nohasharray +fnic_show_link_state_9062 fnic_show_link_state 0 9062 &snd_gus_dram_peek_9062 @@ -130011,7 +136906,8 @@ index 0000000..19e2901 +ext4_da_write_inline_data_end_9179 ext4_da_write_inline_data_end 4-0 9179 NULL nohasharray +w1_ds2780_eeprom_cmd_9179 w1_ds2780_eeprom_cmd 0 9179 &ext4_da_write_inline_data_end_9179 +isr_irqs_read_9181 isr_irqs_read 3-0 9181 NULL -+count_leading_zeros_9183 count_leading_zeros 0 9183 NULL ++count_leading_zeros_9183 count_leading_zeros 0 9183 NULL nohasharray ++bitmap_storage_alloc_9183 bitmap_storage_alloc 2-0 9183 &count_leading_zeros_9183 +show_counter_ib_link_downeds_9184 show_counter_ib_link_downeds 0 9184 NULL +ax25_bind_9185 ax25_bind 0 9185 NULL +xfs_btree_rshift_9187 xfs_btree_rshift 0 9187 NULL @@ -130044,6 +136940,7 @@ index 0000000..19e2901 +sctp_getsockopt_delayed_ack_9232 sctp_getsockopt_delayed_ack 2 9232 NULL nohasharray +core_alua_show_preferred_bit_9232 core_alua_show_preferred_bit 0 9232 &sctp_getsockopt_delayed_ack_9232 +edac_dev_ctl_info_store_9233 edac_dev_ctl_info_store 0-4 9233 NULL ++l2tp_ip_sendmsg_9235 l2tp_ip_sendmsg 3 9235 NULL +tps6507x_pmic_reg_read_9236 tps6507x_pmic_reg_read 0 9236 NULL +__bnx2fc_enable_9238 __bnx2fc_enable 0 9238 NULL +ext4_mark_iloc_dirty_9239 ext4_mark_iloc_dirty 0 9239 NULL @@ -130129,6 +137026,7 @@ index 0000000..19e2901 +i2c_sysfs_new_device_9417 i2c_sysfs_new_device 0-4 9417 NULL +nf_nat_sip_expect_9418 nf_nat_sip_expect 8 9418 NULL nohasharray +store_lmc_9418 store_lmc 0-4 9418 &nf_nat_sip_expect_9418 ++ocfs2_direct_IO_zero_extend_9424 ocfs2_direct_IO_zero_extend 0-4 9424 NULL +show_ipv6_iface_router_state_9425 show_ipv6_iface_router_state 0 9425 NULL nohasharray +prism2_aux_dump_proc_no_read_9425 prism2_aux_dump_proc_no_read 0-3 9425 &show_ipv6_iface_router_state_9425 +sync_inode_9429 sync_inode 0 9429 NULL @@ -130179,6 +137077,7 @@ index 0000000..19e2901 +match_format_9516 match_format 0 9516 &disk_events_show_9516 +do_strip_9517 do_strip 0 9517 NULL +target_core_alua_tg_pt_gp_show_attr_preferred_9519 target_core_alua_tg_pt_gp_show_attr_preferred 0 9519 NULL ++common_rfc4106_set_key_9520 common_rfc4106_set_key 3 9520 NULL +iwl_dbgfs_fw_dbg_conf_read_9522 iwl_dbgfs_fw_dbg_conf_read 3-0 9522 NULL +roccat_common2_sysfs_read_keys_macro_9524 roccat_common2_sysfs_read_keys_macro 0-5-6 9524 NULL +log_buf_len_show_9525 log_buf_len_show 0 9525 NULL @@ -130263,6 +137162,7 @@ index 0000000..19e2901 +calgary_map_sg_9680 calgary_map_sg 0-3 9680 NULL +urbnum_show_9682 urbnum_show 0 9682 NULL nohasharray +wl1271_init_templates_config_9682 wl1271_init_templates_config 0 9682 &urbnum_show_9682 ++f81232_set_register_9683 f81232_set_register 0 9683 NULL +nilfs_btree_lookup_9685 nilfs_btree_lookup 0 9685 NULL +show_in0_9686 show_in0 0 9686 NULL +__erst_read_from_storage_9690 __erst_read_from_storage 0 9690 NULL @@ -130281,6 +137181,7 @@ index 0000000..19e2901 +parse_uac2_sample_rate_range_9718 parse_uac2_sample_rate_range 0 9718 NULL +sstfb_set_par_9719 sstfb_set_par 0 9719 NULL +SYSC_ppoll_9721 SYSC_ppoll 2 9721 NULL ++sha512_base_finish_9729 sha512_base_finish 0 9729 NULL +t4_wr_mbox_9732 t4_wr_mbox 0 9732 NULL +cyapa_update_suspend_scanrate_9734 cyapa_update_suspend_scanrate 0-4 9734 NULL +show_cmd_per_lun_9735 show_cmd_per_lun 0 9735 NULL nohasharray @@ -130332,12 +137233,15 @@ index 0000000..19e2901 +rtl92ce_hw_init_9858 rtl92ce_hw_init 0 9858 NULL +garmin_write_room_9859 garmin_write_room 0 9859 NULL +iwl_poll_prph_bit_9861 iwl_poll_prph_bit 0 9861 NULL -+bfad_im_model_show_9862 bfad_im_model_show 0 9862 NULL ++bfad_im_model_show_9862 bfad_im_model_show 0 9862 NULL nohasharray ++sha256_ssse3_finup_9862 sha256_ssse3_finup 0 9862 &bfad_im_model_show_9862 +pmcraid_alloc_sglist_9864 pmcraid_alloc_sglist 1 9864 NULL ++pep_recvmsg_9866 pep_recvmsg 3 9866 NULL +task_can_attach_9867 task_can_attach 0 9867 NULL +f1x_translate_sysaddr_to_cs_9868 f1x_translate_sysaddr_to_cs 2 9868 NULL +wil_read_file_ioblob_9878 wil_read_file_ioblob 3-0 9878 NULL nohasharray +dir_commit_chunk_9878 dir_commit_chunk 3 9878 &wil_read_file_ioblob_9878 ++ping_v4_sendmsg_9883 ping_v4_sendmsg 3 9883 NULL +fuse_dev_read_9884 fuse_dev_read 0 9884 NULL +wl1271_cmd_radio_parms_9886 wl1271_cmd_radio_parms 0 9886 NULL +show_sensor_9889 show_sensor 0 9889 NULL @@ -130370,7 +137274,8 @@ index 0000000..19e2901 +store_9970 store 0 9970 &vivid_loop_out_s_ctrl_9970 +btrfs_add_link_9973 btrfs_add_link 5 9973 NULL nohasharray +show_fcstat_rx_frames_9973 show_fcstat_rx_frames 0 9973 &btrfs_add_link_9973 -+ath6kl_usb_submit_ctrl_out_9978 ath6kl_usb_submit_ctrl_out 6 9978 NULL ++ath6kl_usb_submit_ctrl_out_9978 ath6kl_usb_submit_ctrl_out 6 9978 NULL nohasharray ++compat_import_iovec_9978 compat_import_iovec 3-0 9978 &ath6kl_usb_submit_ctrl_out_9978 +il4965_dump_fh_9979 il4965_dump_fh 0 9979 NULL +twl6040_power_up_manual_9982 twl6040_power_up_manual 0 9982 NULL nohasharray +sscanf_9982 sscanf 0 9982 &twl6040_power_up_manual_9982 nohasharray @@ -130436,7 +137341,9 @@ index 0000000..19e2901 +ufs_bitmap_search_10105 ufs_bitmap_search 0-3 10105 NULL +get_elem_size_10110 get_elem_size 0-2 10110 NULL nohasharray +dynamic_ps_timeout_read_10110 dynamic_ps_timeout_read 3-0 10110 &get_elem_size_10110 -+gfs2_meta_read_10112 gfs2_meta_read 0 10112 NULL ++rocker_desc_err_10111 rocker_desc_err 0 10111 NULL ++gfs2_meta_read_10112 gfs2_meta_read 0 10112 NULL nohasharray ++link_schedule_user_10112 link_schedule_user 0 10112 &gfs2_meta_read_10112 +host_control_smi_type_store_10118 host_control_smi_type_store 0-4 10118 NULL +snd_vortex_pcm_trigger_10123 snd_vortex_pcm_trigger 0 10123 NULL +wl1271_acx_host_if_cfg_bitmap_10124 wl1271_acx_host_if_cfg_bitmap 0 10124 NULL @@ -130608,6 +137515,7 @@ index 0000000..19e2901 +get_key_10538 get_key 0 10538 NULL +sas_set_phy_speed_10540 sas_set_phy_speed 0 10540 NULL +SYSC_read_10545 SYSC_read 3 10545 NULL ++crypto_sha512_finup_10555 crypto_sha512_finup 0 10555 NULL +pm_qos_no_power_off_show_10556 pm_qos_no_power_off_show 0 10556 NULL +ivtv_start_10559 ivtv_start 0 10559 NULL +ipr_read_dump_10560 ipr_read_dump 0-5-6 10560 NULL @@ -130640,6 +137548,7 @@ index 0000000..19e2901 +cap_mask_show_10632 cap_mask_show 0 10632 &alloc_coherent_10632 nohasharray +il4965_send_tx_power_10632 il4965_send_tx_power 0 10632 &cap_mask_show_10632 +fq_alloc_node_10633 fq_alloc_node 1 10633 NULL ++sha256_base_do_update_10634 sha256_base_do_update 0 10634 NULL +ov9650_set_auto_gain_10638 ov9650_set_auto_gain 0 10638 NULL nohasharray +proc_sys_write_10638 proc_sys_write 0-3 10638 &ov9650_set_auto_gain_10638 +check_transition_10639 check_transition 0 10639 NULL @@ -130728,6 +137637,7 @@ index 0000000..19e2901 +fuse_conn_max_background_read_10855 fuse_conn_max_background_read 3-0 10855 NULL +snd_card_asihpi_playback_ioctl_10857 snd_card_asihpi_playback_ioctl 0 10857 NULL +usnic_ib_show_qp_per_vf_10858 usnic_ib_show_qp_per_vf 0 10858 NULL ++read_edid_block_10860 read_edid_block 4 10860 NULL +btrfs_permission_10861 btrfs_permission 0 10861 NULL +ol_chunk_blocks_10864 ol_chunk_blocks 0 10864 NULL +trivial_online_10866 trivial_online 0 10866 NULL @@ -130804,7 +137714,8 @@ index 0000000..19e2901 +ixgbe_disable_sriov_11037 ixgbe_disable_sriov 0 11037 &mb_find_next_bit_11037 +shmem_listxattr_11040 shmem_listxattr 0-3 11040 NULL +mask_and_set_register_11042 mask_and_set_register 0 11042 NULL -+sys_sendfile_11048 sys_sendfile 4 11048 NULL ++sys_sendfile_11048 sys_sendfile 4 11048 NULL nohasharray ++rawsock_recvmsg_11048 rawsock_recvmsg 3 11048 &sys_sendfile_11048 +tda10048_writeregbulk_11050 tda10048_writeregbulk 4 11050 NULL +char2uni_11054 char2uni 0 11054 NULL +srpt_tpg_attrib_store_srp_sq_size_11059 srpt_tpg_attrib_store_srp_sq_size 0-3 11059 NULL @@ -131173,7 +138084,8 @@ index 0000000..19e2901 +pc87413_notify_sys_11917 pc87413_notify_sys 0 11917 NULL +_rbd_dev_v2_snap_features_11922 _rbd_dev_v2_snap_features 0 11922 NULL +fs_devrw_entry_11924 fs_devrw_entry 3-0 11924 NULL -+SMBNTencrypt_11929 SMBNTencrypt 0 11929 NULL ++SMBNTencrypt_11929 SMBNTencrypt 0 11929 NULL nohasharray ++bitmap_remap_11929 bitmap_remap 5 11929 &SMBNTencrypt_11929 +show_limit_11932 show_limit 0 11932 NULL +nf_nat_ipv6_local_fn_11937 nf_nat_ipv6_local_fn 0 11937 NULL nohasharray +max1027_debugfs_reg_access_11937 max1027_debugfs_reg_access 0 11937 &nf_nat_ipv6_local_fn_11937 @@ -131222,6 +138134,7 @@ index 0000000..19e2901 +audit_sockaddr_12030 audit_sockaddr 0 12030 NULL +s2io_card_up_12032 s2io_card_up 0 12032 NULL +notifier_call_chain_12036 notifier_call_chain 0 12036 NULL ++vcc_sendmsg_12038 vcc_sendmsg 3 12038 NULL +device_offline_12042 device_offline 0 12042 NULL +ftdi_elan_total_command_size_12045 ftdi_elan_total_command_size 0 12045 NULL +bdx_tx_init_12046 bdx_tx_init 0 12046 NULL @@ -131412,6 +138325,7 @@ index 0000000..19e2901 +e1000e_get_sset_count_12456 e1000e_get_sset_count 0 12456 NULL +nvkm_engine_create__12458 nvkm_engine_create_ 7 12458 NULL +deadline_read_expire_store_12459 deadline_read_expire_store 0-3 12459 NULL ++llcp_sock_recvmsg_12460 llcp_sock_recvmsg 3 12460 NULL +rbd_dev_v2_header_info_12466 rbd_dev_v2_header_info 0 12466 NULL +defrag_show_12468 defrag_show 0 12468 NULL nohasharray +mei_write_message_12468 mei_write_message 0 12468 &defrag_show_12468 @@ -131503,7 +138417,8 @@ index 0000000..19e2901 +wl18xx_acx_ap_sleep_12628 wl18xx_acx_ap_sleep 0 12628 NULL +pwr_rcvd_awake_bcns_cnt_read_12632 pwr_rcvd_awake_bcns_cnt_read 3-0 12632 NULL +store_blank_12636 store_blank 0-4 12636 NULL -+pn_sendmsg_12640 pn_sendmsg 4-0 12640 NULL ++pn_sendmsg_12640 pn_sendmsg 4-0 12640 NULL nohasharray ++nr_sendmsg_12640 nr_sendmsg 3 12640 &pn_sendmsg_12640 +dwc3_link_state_write_12641 dwc3_link_state_write 3-0 12641 NULL +nr_recvmsg_12649 nr_recvmsg 4-0 12649 NULL +wb_create_12651 wb_create 1 12651 NULL @@ -131617,6 +138532,7 @@ index 0000000..19e2901 +wsm_cmd_send_12901 wsm_cmd_send 0 12901 NULL +_regmap_raw_read_12902 _regmap_raw_read 0 12902 NULL nohasharray +request_12902 request 0 12902 &_regmap_raw_read_12902 ++ocfs2_hamming_encode_block_12904 ocfs2_hamming_encode_block 2 12904 NULL +sha512_ssse3_export_12905 sha512_ssse3_export 0 12905 NULL +elan_write_fw_block_12906 elan_write_fw_block 0 12906 NULL +get_virtual_node_size_12908 get_virtual_node_size 0 12908 NULL @@ -131647,6 +138563,7 @@ index 0000000..19e2901 +lpfc_link_speed_show_12965 lpfc_link_speed_show 0 12965 NULL nohasharray +snd_seq_prioq_cell_in_12965 snd_seq_prioq_cell_in 0 12965 &lpfc_link_speed_show_12965 +start_khugepaged_12971 start_khugepaged 0 12971 NULL ++__rhashtable_insert_fast_12974 __rhashtable_insert_fast 0 12974 NULL +iwl_mvm_read_external_nvm_12975 iwl_mvm_read_external_nvm 0 12975 NULL +klp_enable_object_12977 klp_enable_object 0 12977 NULL +broadsheet_setup_plls_12983 broadsheet_setup_plls 0 12983 NULL @@ -131814,6 +138731,7 @@ index 0000000..19e2901 +iso_sched_alloc_13377 iso_sched_alloc 1 13377 &wep_key_not_found_read_13377 +iio_buffer_read_first_n_outer_13378 iio_buffer_read_first_n_outer 0-3 13378 NULL +sctp_wait_for_connect_13379 sctp_wait_for_connect 0 13379 NULL ++bt_sock_recvmsg_13380 bt_sock_recvmsg 3 13380 NULL +zl10036_set_params_13381 zl10036_set_params 0 13381 NULL +activity_write_13388 activity_write 0-6-5 13388 NULL nohasharray +lov_mds_md_size_13388 lov_mds_md_size 0-1 13388 &activity_write_13388 @@ -131832,7 +138750,8 @@ index 0000000..19e2901 +compat_SyS_sendfile64_13420 compat_SyS_sendfile64 4 13420 NULL +show_multicast_fast_leave_13427 show_multicast_fast_leave 0 13427 NULL +bq2415x_exec_command_13430 bq2415x_exec_command 0 13430 NULL -+smb_sendv_13437 smb_sendv 0 13437 NULL ++smb_sendv_13437 smb_sendv 0 13437 NULL nohasharray ++__tipc_send_stream_13437 __tipc_send_stream 3 13437 &smb_sendv_13437 +mwifiex_get_bss_info_13439 mwifiex_get_bss_info 0 13439 NULL nohasharray +request_firmware_nowait_13439 request_firmware_nowait 0 13439 &mwifiex_get_bss_info_13439 +sctp_setsockopt_peer_primary_addr_13440 sctp_setsockopt_peer_primary_addr 3-0 13440 NULL @@ -131923,7 +138842,8 @@ index 0000000..19e2901 +swap_cgroup_swapon_13614 swap_cgroup_swapon 2 13614 NULL +wm8994_bulk_write_13615 wm8994_bulk_write 2-3 13615 NULL nohasharray +ov7670_write_smbus_13615 ov7670_write_smbus 0 13615 &wm8994_bulk_write_13615 -+__ntfs_grab_cache_pages_13617 __ntfs_grab_cache_pages 0 13617 NULL ++__ntfs_grab_cache_pages_13617 __ntfs_grab_cache_pages 0 13617 NULL nohasharray ++nr_recvmsg_13617 nr_recvmsg 3 13617 &__ntfs_grab_cache_pages_13617 +pmcraid_get_minor_13619 pmcraid_get_minor 0 13619 NULL +atl1_get_regs_len_13624 atl1_get_regs_len 0 13624 NULL +iio_device_add_event_sysfs_13627 iio_device_add_event_sysfs 0 13627 NULL @@ -131950,6 +138870,7 @@ index 0000000..19e2901 +nes_store_idx_addr_13673 nes_store_idx_addr 0-3 13673 NULL +show_ipOutForwDatagrams_13674 show_ipOutForwDatagrams 0 13674 NULL +omap_hsmmc_show_slot_name_13675 omap_hsmmc_show_slot_name 0 13675 NULL ++i915_gem_obj_ggtt_offset_view_13680 i915_gem_obj_ggtt_offset_view 0 13680 NULL +dvb_usb_generic_rw_13681 dvb_usb_generic_rw 0 13681 NULL nohasharray +acpi_suspend_lowlevel_13681 acpi_suspend_lowlevel 0 13681 &dvb_usb_generic_rw_13681 +ext3_xattr_list_entries_13682 ext3_xattr_list_entries 0 13682 NULL nohasharray @@ -131964,6 +138885,7 @@ index 0000000..19e2901 +gadget_dev_desc_bcdUSB_store_13691 gadget_dev_desc_bcdUSB_store 0-3 13691 &check_intr_schedule_13691 nohasharray +uevent_helper_store_13691 uevent_helper_store 0-4 13691 &gadget_dev_desc_bcdUSB_store_13691 +usb_get_string_13693 usb_get_string 0 13693 NULL ++tipc_send_stream_13696 tipc_send_stream 3 13696 NULL +patch_vt2002P_13697 patch_vt2002P 0 13697 NULL +fw_iso_buffer_alloc_13704 fw_iso_buffer_alloc 2 13704 NULL nohasharray +ntc_show_name_13704 ntc_show_name 0 13704 &fw_iso_buffer_alloc_13704 nohasharray @@ -131983,6 +138905,7 @@ index 0000000..19e2901 +dsbr100_setfreq_13739 dsbr100_setfreq 0 13739 &cfg80211_testmode_alloc_event_skb_13739 +ql_wait_reg_rdy_13741 ql_wait_reg_rdy 0 13741 NULL +audit_unpack_string_13748 audit_unpack_string 3 13748 NULL ++snd_hdac_device_register_13749 snd_hdac_device_register 0 13749 NULL +ufs_dtog_13750 ufs_dtog 0-2 13750 NULL +lbmLogInit_13756 lbmLogInit 0 13756 NULL +netprio_set_prio_13758 netprio_set_prio 0 13758 NULL @@ -131993,6 +138916,7 @@ index 0000000..19e2901 +fb_sys_read_13778 fb_sys_read 3 13778 NULL +edac_device_ctl_panic_on_ue_show_13780 edac_device_ctl_panic_on_ue_show 0 13780 NULL +qib_setup_sdma_13784 qib_setup_sdma 0 13784 NULL ++l2tp_ip_recvmsg_13785 l2tp_ip_recvmsg 3 13785 NULL +roccat_common2_sysfs_read_sensor_13788 roccat_common2_sysfs_read_sensor 0-5-6 13788 NULL +sysfs_do_cmd_13790 sysfs_do_cmd 0-4 13790 NULL +ath6kl_mgmt_powersave_ap_13791 ath6kl_mgmt_powersave_ap 6 13791 NULL @@ -132000,6 +138924,7 @@ index 0000000..19e2901 +migrate_pages_13797 migrate_pages 0 13797 NULL +cpu_down_13801 cpu_down 0 13801 NULL +fbcon_unbind_13802 fbcon_unbind 0 13802 NULL ++mwifiex_sdio_card_to_host_mp_aggr_13806 mwifiex_sdio_card_to_host_mp_aggr 2 13806 NULL +cpu_callback_13812 cpu_callback 0 13812 NULL nohasharray +e100_rx_alloc_list_13812 e100_rx_alloc_list 0 13812 &cpu_callback_13812 +random_read_13815 random_read 3-0 13815 NULL nohasharray @@ -132017,7 +138942,8 @@ index 0000000..19e2901 +queue_bulk_on_old_endpoint_13828 queue_bulk_on_old_endpoint 0 13828 NULL nohasharray +__uncore_filter_opc2_show_13828 __uncore_filter_opc2_show 0 13828 &queue_bulk_on_old_endpoint_13828 +netxen_sysfs_read_mem_13830 netxen_sysfs_read_mem 0-6-5 13830 NULL -+qce_ahash_hmac_setkey_13837 qce_ahash_hmac_setkey 3 13837 NULL ++qce_ahash_hmac_setkey_13837 qce_ahash_hmac_setkey 3 13837 NULL nohasharray ++bucket_table_alloc_13837 bucket_table_alloc 2 13837 &qce_ahash_hmac_setkey_13837 +ds1685_rtc_sysfs_serial_show_13839 ds1685_rtc_sysfs_serial_show 0 13839 NULL +hwrng_attr_available_show_13843 hwrng_attr_available_show 0 13843 NULL +acknak_13844 acknak 0 13844 NULL nohasharray @@ -132029,6 +138955,7 @@ index 0000000..19e2901 +lm95234_read_temp_13850 lm95234_read_temp 0 13850 NULL +evdev_ioctl_compat_13851 evdev_ioctl_compat 2 13851 NULL +c2port_poll_out_ready_13852 c2port_poll_out_ready 0 13852 NULL ++visorchipset_file_init_13861 visorchipset_file_init 1 13861 NULL +vendor_name_store_13862 vendor_name_store 0-4 13862 NULL +ath10k_wmi_vdev_install_key_13866 ath10k_wmi_vdev_install_key 0 13866 NULL +lmc_open_13868 lmc_open 0 13868 NULL @@ -132130,7 +139057,8 @@ index 0000000..19e2901 +pci_conf1_read_14075 pci_conf1_read 0 14075 NULL +lov_stripeoffset_seq_write_14078 lov_stripeoffset_seq_write 3 14078 NULL +_cx88_stop_audio_dma_14079 _cx88_stop_audio_dma 0 14079 NULL -+w1_master_attribute_store_pullup_14080 w1_master_attribute_store_pullup 0-4 14080 NULL ++w1_master_attribute_store_pullup_14080 w1_master_attribute_store_pullup 0-4 14080 NULL nohasharray ++dgram_recvmsg_14080 dgram_recvmsg 3 14080 &w1_master_attribute_store_pullup_14080 +_nfs4_proc_readdir_14082 _nfs4_proc_readdir 0 14082 NULL +cond_read_av_list_14085 cond_read_av_list 0 14085 NULL +store_sched2_14094 store_sched2 4-0 14094 NULL @@ -132149,6 +139077,7 @@ index 0000000..19e2901 +wl12xx_set_power_on_14117 wl12xx_set_power_on 0 14117 NULL +rsc_parse_14119 rsc_parse 0 14119 NULL nohasharray +enic_set_mac_addr_14119 enic_set_mac_addr 0 14119 &rsc_parse_14119 ++caif_stream_recvmsg_14125 caif_stream_recvmsg 3 14125 NULL +readSuper_14128 readSuper 0 14128 NULL +show_deactivate_slack_14129 show_deactivate_slack 0 14129 NULL nohasharray +iscsi_conn_get_addr_param_14129 iscsi_conn_get_addr_param 0 14129 &show_deactivate_slack_14129 @@ -132175,6 +139104,7 @@ index 0000000..19e2901 +ov9650_set_exposure_14176 ov9650_set_exposure 0 14176 NULL nohasharray +ixgbevf_write_mbx_vf_14176 ixgbevf_write_mbx_vf 0 14176 &ov9650_set_exposure_14176 +uhid_dev_input_14180 uhid_dev_input 0 14180 NULL ++nfs_file_direct_write_14181 nfs_file_direct_write 0 14181 NULL +datafab_read_data_14186 datafab_read_data 4 14186 NULL +show_rf_kill_14187 show_rf_kill 0 14187 NULL +__platform_create_bundle_14191 __platform_create_bundle 6-4 14191 NULL @@ -132203,7 +139133,8 @@ index 0000000..19e2901 +store_engine2_load_14233 store_engine2_load 4-0 14233 &ieee80211_if_write_uapsd_max_sp_len_14233 +show_fc_host_maxframe_size_14237 show_fc_host_maxframe_size 0 14237 NULL +usbhsh_endpoint_attach_14238 usbhsh_endpoint_attach 0 14238 NULL -+de_get_regs_len_14241 de_get_regs_len 0 14241 NULL ++de_get_regs_len_14241 de_get_regs_len 0 14241 NULL nohasharray ++sctp_recvmsg_14241 sctp_recvmsg 3 14241 &de_get_regs_len_14241 +dma_declare_coherent_memory_14244 dma_declare_coherent_memory 2-4 14244 NULL nohasharray +__tipc_link_xmit_14244 __tipc_link_xmit 0 14244 &dma_declare_coherent_memory_14244 +iscsi_tpg_param_store_AuthMethod_14245 iscsi_tpg_param_store_AuthMethod 0-3 14245 NULL @@ -132427,6 +139358,7 @@ index 0000000..19e2901 +show_fcstat_fc_no_free_exch_xid_14727 show_fcstat_fc_no_free_exch_xid 0 14727 NULL +__blk_end_request_14729 __blk_end_request 3 14729 NULL +rh_urb_enqueue_14733 rh_urb_enqueue 0 14733 NULL ++codec_bind_generic_14739 codec_bind_generic 0 14739 NULL +raid1_resize_14740 raid1_resize 2-0 14740 NULL +show_conn_param_ISCSI_PARAM_IPV6_TC_14747 show_conn_param_ISCSI_PARAM_IPV6_TC 0 14747 NULL +sh_mobile_ceu_get_formats_14748 sh_mobile_ceu_get_formats 0 14748 NULL @@ -132471,6 +139403,7 @@ index 0000000..19e2901 +max_power_show_14836 max_power_show 0 14836 NULL +name_len_14843 name_len 0-2 14843 NULL +subsystem_vendor_show_14845 subsystem_vendor_show 0 14845 NULL ++dccp_sendmsg_14850 dccp_sendmsg 3 14850 NULL +mrp_attr_create_14853 mrp_attr_create 3 14853 NULL +__krealloc_14857 __krealloc 2 14857 NULL nohasharray +lcd_write_14857 lcd_write 3-0 14857 &__krealloc_14857 @@ -132611,6 +139544,7 @@ index 0000000..19e2901 +ocontext_read_15178 ocontext_read 0 15178 NULL +t4_sge_alloc_ofld_txq_15179 t4_sge_alloc_ofld_txq 0 15179 NULL +SYSC_setdomainname_15180 SYSC_setdomainname 2 15180 NULL ++st33zp24_i2c_send_15186 st33zp24_i2c_send 4 15186 NULL +pda_power_get_property_15191 pda_power_get_property 0 15191 NULL +iscsi_create_endpoint_15193 iscsi_create_endpoint 1 15193 NULL nohasharray +radeonfb_check_var_15193 radeonfb_check_var 0 15193 &iscsi_create_endpoint_15193 @@ -132701,6 +139635,7 @@ index 0000000..19e2901 +mlx4_cmd_wait_15399 mlx4_cmd_wait 0 15399 NULL +sm501fb_check_var_15402 sm501fb_check_var 0 15402 NULL +pipeline_csum_to_rx_xfer_swi_read_15403 pipeline_csum_to_rx_xfer_swi_read 3-0 15403 NULL ++mei_amthif_run_next_cmd_15405 mei_amthif_run_next_cmd 0 15405 NULL +get_modalias_15406 get_modalias 2-0 15406 NULL nohasharray +nfs_setattr_15406 nfs_setattr 0 15406 &get_modalias_15406 +qlcnic_83xx_get_cap_size_15413 qlcnic_83xx_get_cap_size 0 15413 NULL @@ -132731,7 +139666,8 @@ index 0000000..19e2901 +__mutex_lock_killable_slowpath_15472 __mutex_lock_killable_slowpath 0 15472 &mtd_flags_show_15472 +snd_m3_pcm_stop_15476 snd_m3_pcm_stop 0 15476 NULL nohasharray +snd_seq_ioctl_query_subs_15476 snd_seq_ioctl_query_subs 0 15476 &snd_m3_pcm_stop_15476 -+ath9k_get_stats_15482 ath9k_get_stats 0 15482 NULL ++ath9k_get_stats_15482 ath9k_get_stats 0 15482 NULL nohasharray ++rtl_download_firmware_15482 rtl_download_firmware 3 15482 &ath9k_get_stats_15482 +i2c_readbytes_15483 i2c_readbytes 0 15483 NULL +cp2112_read_15484 cp2112_read 0 15484 NULL nohasharray +target_stat_scsi_dev_attr_show_15484 target_stat_scsi_dev_attr_show 0 15484 &cp2112_read_15484 @@ -132743,8 +139679,10 @@ index 0000000..19e2901 +vringh_iov_pull_user_15499 vringh_iov_pull_user 3 15499 NULL +iolock_15500 iolock 0 15500 NULL +psmouse_attr_set_helper_15505 psmouse_attr_set_helper 0-4 15505 NULL -+bNumInterfaces_show_15506 bNumInterfaces_show 0 15506 NULL ++bNumInterfaces_show_15506 bNumInterfaces_show 0 15506 NULL nohasharray ++nct7904_read_reg_15506 nct7904_read_reg 0 15506 &bNumInterfaces_show_15506 +mwl8k_load_fw_image_15508 mwl8k_load_fw_image 0 15508 NULL ++pppol2tp_sendmsg_15516 pppol2tp_sendmsg 3 15516 NULL +map_sg_15523 map_sg 0-3 15523 NULL +da9052_rtc_read_time_15524 da9052_rtc_read_time 0 15524 NULL +store_15525 store 0 15525 NULL @@ -132769,6 +139707,7 @@ index 0000000..19e2901 +i801_block_transaction_15562 i801_block_transaction 0 15562 NULL nohasharray +create_capture_mixers_15562 create_capture_mixers 0 15562 &i801_block_transaction_15562 +get_checksum_15564 get_checksum 0 15564 NULL ++acpi_gpio_count_15567 acpi_gpio_count 0 15567 NULL +iwl_nvm_read_section_15568 iwl_nvm_read_section 0 15568 NULL +_read_user_prot_reg_15571 _read_user_prot_reg 0 15571 NULL +persistent_status_15574 persistent_status 4 15574 NULL @@ -132828,7 +139767,8 @@ index 0000000..19e2901 +pinctrl_utils_reserve_map_15730 pinctrl_utils_reserve_map 5 15730 NULL nohasharray +btrfs_writepage_15730 btrfs_writepage 0 15730 &pinctrl_utils_reserve_map_15730 +acpi_ex_setup_region_15734 acpi_ex_setup_region 0 15734 NULL -+ea_alloc_skeleton_15736 ea_alloc_skeleton 0 15736 NULL ++ea_alloc_skeleton_15736 ea_alloc_skeleton 0 15736 NULL nohasharray ++tipc_msg_make_bundle_15736 tipc_msg_make_bundle 2 15736 &ea_alloc_skeleton_15736 +__tree_mod_log_insert_15744 __tree_mod_log_insert 0 15744 NULL +efx_ptp_describe_stats_15746 efx_ptp_describe_stats 0 15746 NULL +HiSax_readstatus_15752 HiSax_readstatus 2 15752 NULL nohasharray @@ -132841,6 +139781,7 @@ index 0000000..19e2901 +fuse_direct_read_15768 fuse_direct_read 0-3 15768 NULL +isl1208_i2c_get_atr_15771 isl1208_i2c_get_atr 0 15771 NULL nohasharray +chunksize_store_15771 chunksize_store 0-3 15771 &isl1208_i2c_get_atr_15771 ++_mv88e6xxx_reg_read_15773 _mv88e6xxx_reg_read 0 15773 NULL +corb_send_verb_15777 corb_send_verb 0 15777 NULL +ipr_write_dump_15780 ipr_write_dump 0-6-5 15780 NULL +call_modprobe_15781 call_modprobe 0 15781 NULL @@ -132896,6 +139837,7 @@ index 0000000..19e2901 +send_tx_power_15914 send_tx_power 0 15914 NULL +can_get_xstats_size_15916 can_get_xstats_size 0 15916 NULL +alc_build_controls_15918 alc_build_controls 0 15918 NULL ++unix_dgram_recvmsg_15920 unix_dgram_recvmsg 3 15920 NULL +hid_hw_power_15921 hid_hw_power 0 15921 NULL +bio_copy_kern_15925 bio_copy_kern 3 15925 NULL +erst_exec_store_var1_15933 erst_exec_store_var1 0 15933 NULL @@ -132936,13 +139878,15 @@ index 0000000..19e2901 +si476x_core_cmd_agc_status_16027 si476x_core_cmd_agc_status 0 16027 NULL +got_frame_16028 got_frame 2 16028 NULL +wl1251_acx_rx_config_16034 wl1251_acx_rx_config 0 16034 NULL ++smk_write_unconfined_16041 smk_write_unconfined 3 16041 NULL +il3945_tx_reset_16042 il3945_tx_reset 0 16042 NULL +iscsi_stat_instance_show_attr_fail_rem_name_16045 iscsi_stat_instance_show_attr_fail_rem_name 0 16045 NULL +show_virtual_16047 show_virtual 0 16047 NULL +blk_init_tags_16052 blk_init_tags 1 16052 NULL nohasharray +hidp_send_message_16052 hidp_send_message 6-0 16052 &blk_init_tags_16052 +dccp_recvmsg_16056 dccp_recvmsg 4-0 16056 NULL -+read_file_spectral_period_16057 read_file_spectral_period 3-0 16057 NULL ++read_file_spectral_period_16057 read_file_spectral_period 3-0 16057 NULL nohasharray ++pppoe_recvmsg_16057 pppoe_recvmsg 3 16057 &read_file_spectral_period_16057 +nf_call_iptables_store_16058 nf_call_iptables_store 4-0 16058 NULL +si5351_msynth_params_address_16062 si5351_msynth_params_address 0-1 16062 NULL +cp2112_write_req_16068 cp2112_write_req 0-5 16068 NULL @@ -132957,6 +139901,7 @@ index 0000000..19e2901 +sctp_setsockopt_disable_fragments_16088 sctp_setsockopt_disable_fragments 0 16088 NULL +wl1271_acx_tx_power_16092 wl1271_acx_tx_power 0 16092 NULL +ps2pp_attr_set_smartscroll_16094 ps2pp_attr_set_smartscroll 0-4 16094 NULL ++cifs_mapchar_16097 cifs_mapchar 0 16097 NULL +pb0100_set_gain_16099 pb0100_set_gain 0 16099 NULL +_ctl_ioc_reset_count_show_16102 _ctl_ioc_reset_count_show 0 16102 NULL +isr_tx_exch_complete_read_16103 isr_tx_exch_complete_read 3-0 16103 NULL nohasharray @@ -133168,7 +140113,8 @@ index 0000000..19e2901 +fuse_listxattr_16550 fuse_listxattr 0-3 16550 NULL +nfc_llcp_send_snl_sdres_16557 nfc_llcp_send_snl_sdres 3 16557 NULL +dib0700_i2c_xfer_16559 dib0700_i2c_xfer 0-3 16559 NULL -+tcp_manip_pkt_16563 tcp_manip_pkt 4 16563 NULL ++tcp_manip_pkt_16563 tcp_manip_pkt 4 16563 NULL nohasharray ++mISDN_sock_sendmsg_16563 mISDN_sock_sendmsg 3 16563 &tcp_manip_pkt_16563 +wcn36xx_dxe_init_16565 wcn36xx_dxe_init 0 16565 NULL +lpfc_debugfs_read_16566 lpfc_debugfs_read 3-0 16566 NULL +transmit_skb_16573 transmit_skb 0 16573 NULL @@ -133183,9 +140129,11 @@ index 0000000..19e2901 +target_core_hba_attr_show_16601 target_core_hba_attr_show 0 16601 NULL nohasharray +iscsi_stat_sess_attr_store_16601 iscsi_stat_sess_attr_store 0 16601 &target_core_hba_attr_show_16601 +ixgbe_setup_all_tx_resources_16602 ixgbe_setup_all_tx_resources 0 16602 NULL ++iwl_pcie_load_given_ucode_8000_16610 iwl_pcie_load_given_ucode_8000 0 16610 NULL +set_analog_out_reg_16611 set_analog_out_reg 0-4 16611 NULL +palmas_irq_get_virq_16613 palmas_irq_get_virq 2 16613 NULL nohasharray +pptp_inbound_pkt_16613 pptp_inbound_pkt 0 16613 &palmas_irq_get_virq_16613 ++rds_sendmsg_16616 rds_sendmsg 3 16616 NULL +compat_SyS_migrate_pages_16618 compat_SyS_migrate_pages 2 16618 NULL +show_mem_start_phys_index_16622 show_mem_start_phys_index 0 16622 NULL +s5k83a_s_ctrl_16628 s5k83a_s_ctrl 0 16628 NULL nohasharray @@ -133211,6 +140159,7 @@ index 0000000..19e2901 +hash_elasticity_store_16673 hash_elasticity_store 4-0 16673 NULL +smsc_ircc_net_open_16680 smsc_ircc_net_open 0 16680 NULL +da9052_reg_write_16685 da9052_reg_write 0 16685 NULL ++iwl_mvm_fw_dbg_collect_16687 iwl_mvm_fw_dbg_collect 4 16687 NULL +t4_set_rxmode_16689 t4_set_rxmode 0 16689 NULL +drbd_drain_block_16697 drbd_drain_block 2 16697 NULL +__wa_populate_dto_urb_16699 __wa_populate_dto_urb 3-4-0 16699 NULL @@ -133369,7 +140318,8 @@ index 0000000..19e2901 +mxt_load_fw_17073 mxt_load_fw 0 17073 &dvb_dvr_read_17073 +simple_transaction_read_17076 simple_transaction_read 3-0 17076 NULL +tpm_transmit_17077 tpm_transmit 0-3 17077 NULL -+__kmalloc_reserve_17080 __kmalloc_reserve 1 17080 NULL ++__kmalloc_reserve_17080 __kmalloc_reserve 1 17080 NULL nohasharray ++power_supply_get_property_17080 power_supply_get_property 0 17080 &__kmalloc_reserve_17080 +kovaplus_select_profile_17084 kovaplus_select_profile 0 17084 NULL +entry_length_17093 entry_length 0 17093 NULL +write_reg_17098 write_reg 0 17098 NULL @@ -133407,7 +140357,8 @@ index 0000000..19e2901 +UniStrnlen_17169 UniStrnlen 0 17169 NULL nohasharray +nilfs_dat_mark_dirty_17169 nilfs_dat_mark_dirty 0 17169 &UniStrnlen_17169 +nilfs_write_begin_17172 nilfs_write_begin 0 17172 NULL nohasharray -+ipoib_dev_init_17172 ipoib_dev_init 0 17172 &nilfs_write_begin_17172 ++ipoib_dev_init_17172 ipoib_dev_init 0 17172 &nilfs_write_begin_17172 nohasharray ++cfg80211_sme_get_conn_ies_17172 cfg80211_sme_get_conn_ies 3 17172 &ipoib_dev_init_17172 +fan_set_state_17173 fan_set_state 0 17173 NULL +l1oip_socket_send_17174 l1oip_socket_send 7 17174 NULL +ipath_create_user_egr_17175 ipath_create_user_egr 0 17175 NULL @@ -133430,6 +140381,7 @@ index 0000000..19e2901 +dn_recvmsg_17213 dn_recvmsg 4-0 17213 NULL +st6422_s_ctrl_17215 st6422_s_ctrl 0 17215 NULL nohasharray +rtl8150_open_17215 rtl8150_open 0 17215 &st6422_s_ctrl_17215 ++ext4_fname_crypto_alloc_buffer_17220 ext4_fname_crypto_alloc_buffer 2 17220 NULL +ipath_user_sdma_push_pkts_17221 ipath_user_sdma_push_pkts 0 17221 NULL +elan_i2c_prepare_fw_update_17228 elan_i2c_prepare_fw_update 0 17228 NULL +metadata_show_17234 metadata_show 0 17234 NULL @@ -133437,6 +140389,7 @@ index 0000000..19e2901 +store_fatal_error_17242 store_fatal_error 0-4 17242 NULL +mlx4_enable_sriov_17247 mlx4_enable_sriov 3-4 17247 NULL +odev_attr_store_17252 odev_attr_store 0-4 17252 NULL ++remove_advertising_17253 remove_advertising 4 17253 NULL +r3964_read_17257 r3964_read 0 17257 NULL +__be16_to_cpup_17261 __be16_to_cpup 0 17261 NULL nohasharray +lprocfs_read_frac_helper_17261 lprocfs_read_frac_helper 0 17261 &__be16_to_cpup_17261 @@ -133454,7 +140407,8 @@ index 0000000..19e2901 +hmac_sha256_17278 hmac_sha256 2 17278 NULL +aty_var_to_pll_18818_17279 aty_var_to_pll_18818 0 17279 NULL +neigh_hash_grow_17283 neigh_hash_grow 2 17283 NULL nohasharray -+rpc_pipefs_event_17283 rpc_pipefs_event 0 17283 &neigh_hash_grow_17283 ++rpc_pipefs_event_17283 rpc_pipefs_event 0 17283 &neigh_hash_grow_17283 nohasharray ++ext4_fname_match_17283 ext4_fname_match 3 17283 &rpc_pipefs_event_17283 +mmc_serial_show_17285 mmc_serial_show 0 17285 NULL +minstrel_stats_read_17290 minstrel_stats_read 3-0 17290 NULL nohasharray +fmc_set_mute_mode_17290 fmc_set_mute_mode 0 17290 &minstrel_stats_read_17290 @@ -133541,6 +140495,7 @@ index 0000000..19e2901 +show_proc_name_17464 show_proc_name 0 17464 NULL +probe_bios_17467 probe_bios 1 17467 NULL +show_temp_min_17471 show_temp_min 0 17471 NULL ++xfs_mod_fdblocks_17472 xfs_mod_fdblocks 0 17472 NULL +probe_kernel_write_17481 probe_kernel_write 3 17481 NULL nohasharray +vv6410_set_exposure_17481 vv6410_set_exposure 0 17481 &probe_kernel_write_17481 +v9fs_xattr_trusted_set_17485 v9fs_xattr_trusted_set 0 17485 NULL @@ -133555,7 +140510,8 @@ index 0000000..19e2901 +fc_vport_terminate_17513 fc_vport_terminate 0 17513 &reiserfs_direct_IO_17513 +lbs_highrssi_write_17515 lbs_highrssi_write 3-0 17515 NULL +wl1271_acx_dco_itrim_params_17523 wl1271_acx_dco_itrim_params 0 17523 NULL -+fsp_attr_show_flags_17527 fsp_attr_show_flags 0 17527 NULL ++fsp_attr_show_flags_17527 fsp_attr_show_flags 0 17527 NULL nohasharray ++bcmgenet_init_rx_ring_17527 bcmgenet_init_rx_ring 0 17527 &fsp_attr_show_flags_17527 +acerhdf_get_cur_state_17531 acerhdf_get_cur_state 0 17531 NULL +show_ipInNoRoutes_17533 show_ipInNoRoutes 0 17533 NULL +ixgbe_set_vfta_generic_17534 ixgbe_set_vfta_generic 0 17534 NULL @@ -133588,7 +140544,8 @@ index 0000000..19e2901 +nvkm_gpio_create__17601 nvkm_gpio_create_ 4 17601 NULL +wm8994_gpio_to_irq_17604 wm8994_gpio_to_irq 2 17604 NULL +osst_execute_17607 osst_execute 6-7 17607 NULL nohasharray -+svc_export_parse_17607 svc_export_parse 0 17607 &osst_execute_17607 ++svc_export_parse_17607 svc_export_parse 0 17607 &osst_execute_17607 nohasharray ++irda_sendmsg_ultra_17607 irda_sendmsg_ultra 3 17607 &svc_export_parse_17607 +ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout_17618 ieee80211_if_read_dot11MeshHWMPactivePathToRootTimeout 3-0 17618 NULL +null_show_17619 null_show 0 17619 NULL +show_selfballoon_downhys_17620 show_selfballoon_downhys 0 17620 NULL @@ -133644,6 +140601,7 @@ index 0000000..19e2901 +exofs_read_lookup_dev_table_17733 exofs_read_lookup_dev_table 3 17733 NULL nohasharray +pcpu_alloc_area_17733 pcpu_alloc_area 0-3 17733 &exofs_read_lookup_dev_table_17733 nohasharray +layout_show_17733 layout_show 0 17733 &pcpu_alloc_area_17733 ++mv88e6xxx_port_to_phy_addr_17740 mv88e6xxx_port_to_phy_addr 0-2 17740 NULL +sctpprobe_read_17741 sctpprobe_read 3-0 17741 NULL +inode_setxattr_17744 inode_setxattr 0 17744 NULL +qlcnic_sysfs_read_crb_17747 qlcnic_sysfs_read_crb 0-6-5 17747 NULL @@ -133792,12 +140750,14 @@ index 0000000..19e2901 +qlcnic_get_cap_size_18042 qlcnic_get_cap_size 0 18042 NULL +nfs_check_inode_attributes_18043 nfs_check_inode_attributes 0 18043 NULL +cryptd_alloc_instance_18048 cryptd_alloc_instance 3-2 18048 NULL ++find_next_inuse_18051 find_next_inuse 2 18051 NULL +policydb_load_isids_18052 policydb_load_isids 0 18052 NULL nohasharray +core_tpg_set_initiator_node_queue_depth_18052 core_tpg_set_initiator_node_queue_depth 0 18052 &policydb_load_isids_18052 nohasharray +t3_config_sched_18052 t3_config_sched 0 18052 &core_tpg_set_initiator_node_queue_depth_18052 +ddebug_proc_write_18055 ddebug_proc_write 3-0 18055 NULL +zisofs_fill_pages_18057 zisofs_fill_pages 0 18057 NULL +max8925_enable_18058 max8925_enable 0 18058 NULL ++bcmgenet_init_rx_queues_18060 bcmgenet_init_rx_queues 0 18060 NULL +dlfb_set_video_mode_18061 dlfb_set_video_mode 0 18061 NULL +lua_sysfs_read_18062 lua_sysfs_read 6-0 18062 NULL nohasharray +dccp_error_18062 dccp_error 0 18062 &lua_sysfs_read_18062 @@ -133863,7 +140823,8 @@ index 0000000..19e2901 +gsm_control_message_18209 gsm_control_message 4 18209 NULL +bq2415x_sysfs_show_limit_18213 bq2415x_sysfs_show_limit 0 18213 NULL nohasharray +show_phy_type_18213 show_phy_type 0 18213 &bq2415x_sysfs_show_limit_18213 nohasharray -+read_rindex_entry_18213 read_rindex_entry 0 18213 &show_phy_type_18213 ++read_rindex_entry_18213 read_rindex_entry 0 18213 &show_phy_type_18213 nohasharray ++raw_recvmsg_18213 raw_recvmsg 3 18213 &read_rindex_entry_18213 +si4713_set_rds_ps_name_18214 si4713_set_rds_ps_name 0 18214 NULL +do_ipv6_setsockopt_18215 do_ipv6_setsockopt 5-0 18215 NULL +pcmcia_enable_device_18218 pcmcia_enable_device 0 18218 NULL @@ -133887,6 +140848,7 @@ index 0000000..19e2901 +tg3_bmcr_reset_18271 tg3_bmcr_reset 0 18271 NULL +gfs2_alloc_sort_buffer_18275 gfs2_alloc_sort_buffer 1 18275 NULL +ipip_get_size_18276 ipip_get_size 0 18276 NULL ++dn_recvmsg_18277 dn_recvmsg 3 18277 NULL +alloc_ring_18278 alloc_ring 4-2 18278 NULL +ext4_readpages_18283 ext4_readpages 4 18283 NULL +mmc_send_bus_test_18285 mmc_send_bus_test 4 18285 NULL @@ -133898,6 +140860,7 @@ index 0000000..19e2901 +show_fnode_username_in_18293 show_fnode_username_in 0 18293 &um_idi_write_18293 nohasharray +xfs_file_read_iter_18293 xfs_file_read_iter 0 18293 &show_fnode_username_in_18293 nohasharray +__follow_pte_18293 __follow_pte 0 18293 &xfs_file_read_iter_18293 ++ocfs2_direct_IO_18297 ocfs2_direct_IO 3 18297 NULL +part_timeout_show_18298 part_timeout_show 0 18298 NULL +mwl8k_sta_add_18299 mwl8k_sta_add 0 18299 NULL +iscsi_stat_sess_err_show_attr_cxn_errors_18301 iscsi_stat_sess_err_show_attr_cxn_errors 0 18301 NULL @@ -133934,6 +140897,7 @@ index 0000000..19e2901 +SyS_process_vm_readv_18366 SyS_process_vm_readv 3-5 18366 NULL +ep_io_18367 ep_io 0 18367 NULL nohasharray +irq_show_18367 irq_show 0 18367 &ep_io_18367 ++nf_hook_18370 nf_hook 0 18370 NULL +qib_user_sdma_num_pages_18371 qib_user_sdma_num_pages 0 18371 NULL +nilfs_checkpoints_README_show_18372 nilfs_checkpoints_README_show 0 18372 NULL +usbhsg_ep_queue_18376 usbhsg_ep_queue 0 18376 NULL @@ -133988,6 +140952,7 @@ index 0000000..19e2901 +_nfs4_do_open_reclaim_18483 _nfs4_do_open_reclaim 0 18483 NULL nohasharray +__c2port_write_flash_data_18483 __c2port_write_flash_data 0-3-4 18483 &_nfs4_do_open_reclaim_18483 +technisat_usb2_i2c_access_18484 technisat_usb2_i2c_access 0 18484 NULL ++__regulatory_set_wiphy_regd_18486 __regulatory_set_wiphy_regd 0 18486 NULL +udpv6_setsockopt_18487 udpv6_setsockopt 5-0 18487 NULL nohasharray +snd_pcm_plugin_build_mulaw_18487 snd_pcm_plugin_build_mulaw 0 18487 &udpv6_setsockopt_18487 +aoedisk_show_netif_18490 aoedisk_show_netif 0 18490 NULL @@ -134034,7 +140999,8 @@ index 0000000..19e2901 +mtd_size_show_18578 mtd_size_show 0 18578 NULL +vivid_radio_read_18579 vivid_radio_read 0-3 18579 NULL +metrics_bytes_rendered_show_18580 metrics_bytes_rendered_show 0 18580 NULL -+pn_socket_create_18581 pn_socket_create 0 18581 NULL ++pn_socket_create_18581 pn_socket_create 0 18581 NULL nohasharray ++__tipc_sendmsg_18581 __tipc_sendmsg 3 18581 &pn_socket_create_18581 +ipath_reset_device_18584 ipath_reset_device 0 18584 NULL +show_target_speed_18587 show_target_speed 0 18587 NULL +st_accel_buffer_predisable_18589 st_accel_buffer_predisable 0 18589 NULL @@ -134186,7 +141152,8 @@ index 0000000..19e2901 +max_user_freq_store_18922 max_user_freq_store 0-4 18922 &xfs_buf_read_uncached_18922 +show_baseline_18929 show_baseline 0 18929 NULL +snapshot_write_next_18937 snapshot_write_next 0 18937 NULL -+mxl5005s_SetRfFreqHz_18939 mxl5005s_SetRfFreqHz 0 18939 NULL ++mxl5005s_SetRfFreqHz_18939 mxl5005s_SetRfFreqHz 0 18939 NULL nohasharray ++ms_transfer_data_18939 ms_transfer_data 7 18939 &mxl5005s_SetRfFreqHz_18939 +fmc_device_register_n_18942 fmc_device_register_n 2 18942 NULL +mtrr_del_18943 mtrr_del 1 18943 NULL +ida_get_new_18948 ida_get_new 0 18948 NULL @@ -134306,6 +141273,7 @@ index 0000000..19e2901 +show_sys_image_guid_19207 show_sys_image_guid 0 19207 NULL +dev_counters_read_19216 dev_counters_read 3-0 19216 NULL +wbcir_tx_19219 wbcir_tx 3 19219 NULL ++udpv6_recvmsg_19221 udpv6_recvmsg 3 19221 NULL +nouveau_hwmon_max_temp_19222 nouveau_hwmon_max_temp 0 19222 NULL +snd_mask_max_19224 snd_mask_max 0 19224 NULL +_ctl_host_trace_buffer_enable_show_19227 _ctl_host_trace_buffer_enable_show 0 19227 NULL @@ -134375,6 +141343,7 @@ index 0000000..19e2901 +mmio32read__write_file_19364 mmio32read__write_file 0 19364 NULL +ipheth_open_19366 ipheth_open 0 19366 NULL +qlge_vlan_rx_add_vid_19385 qlge_vlan_rx_add_vid 0 19385 NULL ++p9_check_zc_errors_19389 p9_check_zc_errors 4 19389 NULL +interpret_user_input_19393 interpret_user_input 2-0 19393 NULL +v9fs_xattr_security_set_19396 v9fs_xattr_security_set 0 19396 NULL nohasharray +lxt973a2_read_status_19396 lxt973a2_read_status 0 19396 &v9fs_xattr_security_set_19396 @@ -134524,6 +141493,7 @@ index 0000000..19e2901 +sleep_functions_on_battery_store_19725 sleep_functions_on_battery_store 0-4 19725 NULL +wm8350_block_write_19727 wm8350_block_write 2-3-0 19727 NULL +target_stat_scsi_transport_show_attr_inst_19730 target_stat_scsi_transport_show_attr_inst 0 19730 NULL ++do_iter_readv_writev_19732 do_iter_readv_writev 0 19732 NULL +iwlagn_commit_rxon_19737 iwlagn_commit_rxon 0 19737 NULL +snd_usX2Y_usbpcm_prepare_19741 snd_usX2Y_usbpcm_prepare 0 19741 NULL +p9_client_read_19750 p9_client_read 5-0 19750 NULL @@ -134534,7 +141504,8 @@ index 0000000..19e2901 +jffs2_acl_from_medium_19762 jffs2_acl_from_medium 2 19762 NULL +osst_recover_wait_frame_19766 osst_recover_wait_frame 0 19766 NULL +readhscx_19769 readhscx 0 19769 NULL nohasharray -+i8k_get_fan_type_19769 i8k_get_fan_type 0 19769 &readhscx_19769 ++i8k_get_fan_type_19769 i8k_get_fan_type 0 19769 &readhscx_19769 nohasharray ++regulatory_set_wiphy_regd_sync_rtnl_19769 regulatory_set_wiphy_regd_sync_rtnl 0 19769 &i8k_get_fan_type_19769 +flush_write_buffer_19770 flush_write_buffer 0 19770 NULL +pch_phub_gbe_serial_rom_conf_mp_19773 pch_phub_gbe_serial_rom_conf_mp 0 19773 NULL +ipath_f_get_base_info_19778 ipath_f_get_base_info 0 19778 NULL @@ -134629,7 +141600,7 @@ index 0000000..19e2901 +apparmor_getprocattr_19982 apparmor_getprocattr 0 19982 NULL +snd_usbtv_card_trigger_19983 snd_usbtv_card_trigger 0 19983 NULL +attach_hdlc_protocol_19986 attach_hdlc_protocol 3 19986 NULL -+i40e_reserve_msix_vectors_19989 i40e_reserve_msix_vectors 2 19989 NULL nohasharray ++i40e_reserve_msix_vectors_19989 i40e_reserve_msix_vectors 2-0 19989 NULL nohasharray +rtw_set_wps_probe_resp_19989 rtw_set_wps_probe_resp 3 19989 &i40e_reserve_msix_vectors_19989 +_osd_req_finalize_set_attr_list_19990 _osd_req_finalize_set_attr_list 0 19990 NULL nohasharray +islpci_upload_fw_19990 islpci_upload_fw 0 19990 &_osd_req_finalize_set_attr_list_19990 @@ -134659,7 +141630,8 @@ index 0000000..19e2901 +mt_show_quirks_20045 mt_show_quirks 0 20045 NULL +show_compression_20048 show_compression 0 20048 NULL +usX2Y_urbs_allocate_20052 usX2Y_urbs_allocate 0 20052 NULL -+lpfc_txcmplq_hw_show_20055 lpfc_txcmplq_hw_show 0 20055 NULL ++lpfc_txcmplq_hw_show_20055 lpfc_txcmplq_hw_show 0 20055 NULL nohasharray ++nf_iterate_20055 nf_iterate 0 20055 &lpfc_txcmplq_hw_show_20055 +__be32_to_cpup_20056 __be32_to_cpup 0 20056 NULL +roccat_common2_sysfs_write_stored_lights_20059 roccat_common2_sysfs_write_stored_lights 0-6-5 20059 NULL +upcall_20060 upcall 0-4 20060 NULL @@ -134673,7 +141645,8 @@ index 0000000..19e2901 +init_chip_reset_20080 init_chip_reset 0 20080 &ieee802154_check_concurrent_iface_20080 +fuse_conn_limit_read_20084 fuse_conn_limit_read 3-0 20084 NULL +aat2870_reg_write_file_20086 aat2870_reg_write_file 3-0 20086 NULL -+reiserfs_dir_fsync_20088 reiserfs_dir_fsync 0 20088 NULL ++reiserfs_dir_fsync_20088 reiserfs_dir_fsync 0 20088 NULL nohasharray ++cma_alloc_write_20088 cma_alloc_write 2 20088 &reiserfs_dir_fsync_20088 +team_options_register_20091 team_options_register 3-0 20091 NULL nohasharray +lpfc_poll_show_20091 lpfc_poll_show 0 20091 &team_options_register_20091 nohasharray +rt2800pci_set_state_20091 rt2800pci_set_state 0 20091 &lpfc_poll_show_20091 nohasharray @@ -134685,7 +141658,8 @@ index 0000000..19e2901 +dn_auto_bind_20098 dn_auto_bind 0 20098 &read_int_20098 +attr_press_speed_store_tpkbd_20100 attr_press_speed_store_tpkbd 0-4 20100 NULL +snd_es1938_playback1_trigger_20102 snd_es1938_playback1_trigger 0 20102 NULL -+xfs_qm_dqget_20103 xfs_qm_dqget 0 20103 NULL ++xfs_qm_dqget_20103 xfs_qm_dqget 0 20103 NULL nohasharray ++mgmt_limited_event_20103 mgmt_limited_event 4 20103 &xfs_qm_dqget_20103 +fd_do_unmap_20109 fd_do_unmap 4 20109 NULL +nilfs_segments_clean_segments_show_20115 nilfs_segments_clean_segments_show 0 20115 NULL +iscsi_tpg_param_store_TargetAlias_20119 iscsi_tpg_param_store_TargetAlias 0-3 20119 NULL @@ -134726,7 +141700,8 @@ index 0000000..19e2901 +video_end_20205 video_end 0 20205 NULL +bitmap_find_next_zero_area_off_20211 bitmap_find_next_zero_area_off 2-3-0-4-5-6 20211 NULL +ds1343_read_time_20213 ds1343_read_time 0 20213 NULL -+udf_do_extend_file_20214 udf_do_extend_file 0 20214 NULL ++udf_do_extend_file_20214 udf_do_extend_file 0 20214 NULL nohasharray ++udf_bitmap_new_block_20214 udf_bitmap_new_block 4 20214 &udf_do_extend_file_20214 +parport_uss720_epp_write_addr_20216 parport_uss720_epp_write_addr 0 20216 NULL +dpm_suspend_noirq_20217 dpm_suspend_noirq 0 20217 NULL +target_fabric_port_attr_show_20218 target_fabric_port_attr_show 0 20218 NULL @@ -134750,7 +141725,8 @@ index 0000000..19e2901 +async_20251 async 0 20251 NULL +store_filter_20252 store_filter 0-4 20252 NULL +resource_size_20256 resource_size 0 20256 NULL -+ssd1307fb_write_array_20258 ssd1307fb_write_array 3 20258 NULL ++ssd1307fb_write_array_20258 ssd1307fb_write_array 3 20258 NULL nohasharray ++create_pnp_modalias_20258 create_pnp_modalias 0 20258 &ssd1307fb_write_array_20258 +sru_s_stream_20259 sru_s_stream 0 20259 NULL +wl1271_boot_soft_reset_20262 wl1271_boot_soft_reset 0 20262 NULL nohasharray +target_core_hba_attr_store_20262 target_core_hba_attr_store 0-4 20262 &wl1271_boot_soft_reset_20262 @@ -134776,6 +141752,7 @@ index 0000000..19e2901 +blk_mq_hw_sysfs_queued_show_20294 blk_mq_hw_sysfs_queued_show 0 20294 NULL +btrfs_header_nritems_20296 btrfs_header_nritems 0 20296 NULL +do_take_over_console_20297 do_take_over_console 0 20297 NULL ++iwl_parse_nvm_mcc_info_20301 iwl_parse_nvm_mcc_info 3 20301 NULL +r10_sync_page_io_20307 r10_sync_page_io 3 20307 NULL +curr_bitstream_show_20308 curr_bitstream_show 0 20308 NULL +lpfc_cr_count_show_20309 lpfc_cr_count_show 0 20309 NULL @@ -134794,6 +141771,7 @@ index 0000000..19e2901 +wacom_buttons_luminance_store_20325 wacom_buttons_luminance_store 0-4 20325 NULL +cyapa_i2c_reg_read_block_20326 cyapa_i2c_reg_read_block 0 20326 NULL +sys_dmi_modalias_show_20334 sys_dmi_modalias_show 0 20334 NULL ++dax_do_io_20335 dax_do_io 4 20335 NULL +lpt_gc_20337 lpt_gc 0 20337 NULL +patch_nvhdmi_2ch_20339 patch_nvhdmi_2ch 0 20339 NULL +gfs2_glock_nq_m_20347 gfs2_glock_nq_m 1-0 20347 NULL @@ -134859,7 +141837,8 @@ index 0000000..19e2901 +i7core_inject_enable_store_20501 i7core_inject_enable_store 0-4 20501 NULL +elan_sysfs_read_iap_ver_20502 elan_sysfs_read_iap_ver 0 20502 NULL +hidraw_report_event_20503 hidraw_report_event 3 20503 NULL nohasharray -+mcs_net_open_20503 mcs_net_open 0 20503 &hidraw_report_event_20503 ++mcs_net_open_20503 mcs_net_open 0 20503 &hidraw_report_event_20503 nohasharray ++ocfs2_db_frozen_trigger_20503 ocfs2_db_frozen_trigger 4 20503 &mcs_net_open_20503 +w1_master_attribute_show_pullup_20506 w1_master_attribute_show_pullup 0 20506 NULL +ipr_store_adapter_state_20513 ipr_store_adapter_state 0-4 20513 NULL +i2c_atmel_recv_20516 i2c_atmel_recv 0-3 20516 NULL nohasharray @@ -134889,7 +141868,8 @@ index 0000000..19e2901 +cachefiles_daemon_frun_20577 cachefiles_daemon_frun 0 20577 NULL +bluetooth_enable_show_20578 bluetooth_enable_show 0 20578 NULL nohasharray +command_setcolourbalance_20578 command_setcolourbalance 0 20578 &bluetooth_enable_show_20578 nohasharray -+wl1271_acx_sta_rate_policies_20578 wl1271_acx_sta_rate_policies 0 20578 &command_setcolourbalance_20578 ++wl1271_acx_sta_rate_policies_20578 wl1271_acx_sta_rate_policies 0 20578 &command_setcolourbalance_20578 nohasharray ++nf_hook_slow_20578 nf_hook_slow 0 20578 &wl1271_acx_sta_rate_policies_20578 +xen_pci_notifier_20579 xen_pci_notifier 0 20579 NULL +set_performance_level_20580 set_performance_level 0-4 20580 NULL +saa711x_s_stream_20581 saa711x_s_stream 0 20581 NULL @@ -134941,6 +141921,7 @@ index 0000000..19e2901 +btrfs_qgroup_reserve_20676 btrfs_qgroup_reserve 0 20676 &snd_hdsp_playback_copy_20676 +session_write_kbytes_show_20678 session_write_kbytes_show 0 20678 NULL +dvb_dmxdev_buffer_read_20682 dvb_dmxdev_buffer_read 0-4 20682 NULL ++cpumask_size_20683 cpumask_size 0 20683 NULL +btrfs_node_blockptr_20685 btrfs_node_blockptr 0 20685 NULL +store_20687 store 0 20687 NULL +ipath_user_sdma_coalesce_20688 ipath_user_sdma_coalesce 0 20688 NULL @@ -135038,6 +142019,7 @@ index 0000000..19e2901 +nc_register_read_20875 nc_register_read 0 20875 NULL +command_setexposure_20876 command_setexposure 0 20876 NULL +pci_xircom_init_20881 pci_xircom_init 0 20881 NULL ++import_iovec_20882 import_iovec 0-3 20882 NULL +ace_open_20884 ace_open 0 20884 NULL nohasharray +cfs_cpt_table_create_20884 cfs_cpt_table_create 1 20884 &ace_open_20884 +rb_simple_write_20890 rb_simple_write 3 20890 NULL @@ -135129,6 +142111,7 @@ index 0000000..19e2901 +write_posted_21108 write_posted 0 21108 NULL +ath6kl_send_go_probe_resp_21113 ath6kl_send_go_probe_resp 3 21113 NULL nohasharray +cyapa_gen5_check_fw_21113 cyapa_gen5_check_fw 0 21113 &ath6kl_send_go_probe_resp_21113 ++unix_dgram_sendmsg_21115 unix_dgram_sendmsg 3 21115 NULL +target_core_show_dev_info_21116 target_core_show_dev_info 0 21116 NULL +snd_ice1712_playback_ds_trigger_21118 snd_ice1712_playback_ds_trigger 0 21118 NULL nohasharray +ddebug_exec_queries_21118 ddebug_exec_queries 0 21118 &snd_ice1712_playback_ds_trigger_21118 nohasharray @@ -135142,13 +142125,16 @@ index 0000000..19e2901 +i2400m_rx_trace_21127 i2400m_rx_trace 3 21127 NULL +st_gyro_buffer_postenable_21128 st_gyro_buffer_postenable 0 21128 NULL +iwl_dbgfs_uapsd_misbehaving_read_21129 iwl_dbgfs_uapsd_misbehaving_read 3-0 21129 NULL ++rfcomm_sock_recvmsg_21131 rfcomm_sock_recvmsg 3 21131 NULL +snd_nm256_capture_trigger_21135 snd_nm256_capture_trigger 0 21135 NULL +ubifs_write_iter_21137 ubifs_write_iter 0 21137 NULL +target_core_dev_pr_show_attr_res_pr_generation_21138 target_core_dev_pr_show_attr_res_pr_generation 0 21138 NULL -+omfs_writepage_21143 omfs_writepage 0 21143 NULL ++omfs_writepage_21143 omfs_writepage 0 21143 NULL nohasharray ++dgram_sendmsg_21143 dgram_sendmsg 3 21143 &omfs_writepage_21143 +tps6586x_irq_init_21144 tps6586x_irq_init 3 21144 NULL +aoedisk_show_payload_21147 aoedisk_show_payload 0 21147 NULL +new_skb_21148 new_skb 1 21148 NULL ++ocfs2_block_check_validate_21149 ocfs2_block_check_validate 2 21149 NULL +dgram_disconnect_21152 dgram_disconnect 0 21152 NULL +rtl2830_regmap_gather_write_21153 rtl2830_regmap_gather_write 0 21153 NULL +sisfb_set_mode_21155 sisfb_set_mode 0 21155 NULL @@ -135296,6 +142282,7 @@ index 0000000..19e2901 +firmware_data_read_21488 firmware_data_read 0-5-6 21488 NULL +set_postcode_21490 set_postcode 0-4 21490 NULL +security_list_21491 security_list 0-5 21491 NULL ++dccp_recvmsg_21496 dccp_recvmsg 3 21496 NULL +ads7846_read12_ser_21501 ads7846_read12_ser 0 21501 NULL +force_bredr_smp_write_21502 force_bredr_smp_write 3-0 21502 NULL +mmc_alloc_sg_21504 mmc_alloc_sg 1 21504 NULL @@ -135397,7 +142384,8 @@ index 0000000..19e2901 +ipv6_confirm_21743 ipv6_confirm 0 21743 NULL +__nf_nat_mangle_tcp_packet_21744 __nf_nat_mangle_tcp_packet 6-8 21744 NULL nohasharray +at91_open_21744 at91_open 0 21744 &__nf_nat_mangle_tcp_packet_21744 -+__scsi_format_command_21749 __scsi_format_command 2 21749 NULL ++__scsi_format_command_21749 __scsi_format_command 2 21749 NULL nohasharray ++ocfs2_direct_IO_extend_no_holes_21749 ocfs2_direct_IO_extend_no_holes 0-3 21749 &__scsi_format_command_21749 +set_sticky_21752 set_sticky 0-4 21752 NULL +mthca_alloc_init_21754 mthca_alloc_init 2 21754 NULL +l2down_create_21755 l2down_create 4 21755 NULL @@ -135418,7 +142406,8 @@ index 0000000..19e2901 +libipw_get_hdrlen_21792 libipw_get_hdrlen 0 21792 NULL nohasharray +_cx88_start_audio_dma_21792 _cx88_start_audio_dma 0 21792 &libipw_get_hdrlen_21792 +d3cold_allowed_show_21797 d3cold_allowed_show 0 21797 NULL -+aa_may_ptrace_21798 aa_may_ptrace 0 21798 NULL ++aa_may_ptrace_21798 aa_may_ptrace 0 21798 NULL nohasharray ++crypto_sha1_finup_21798 crypto_sha1_finup 0 21798 &aa_may_ptrace_21798 +show_pwm_auto_point_temp_hyst_21800 show_pwm_auto_point_temp_hyst 0 21800 NULL +min_odd_21802 min_odd 0-1-2 21802 NULL +show_rotate_21803 show_rotate 0 21803 NULL @@ -135432,6 +142421,7 @@ index 0000000..19e2901 +qib_portattr_store_21817 qib_portattr_store 0-4 21817 NULL nohasharray +__kernel_write_21817 __kernel_write 3-0 21817 &qib_portattr_store_21817 +ov9740_g_crop_21818 ov9740_g_crop 0 21818 NULL ++mei_io_cb_alloc_buf_21819 mei_io_cb_alloc_buf 2 21819 NULL +wm8994_request_irq_21822 wm8994_request_irq 2 21822 NULL +lm95234_fill_cache_21823 lm95234_fill_cache 0 21823 NULL +mtd_ecc_stats_errors_show_21825 mtd_ecc_stats_errors_show 0 21825 NULL nohasharray @@ -135565,6 +142555,7 @@ index 0000000..19e2901 +nf_ct_seq_adjust_22086 nf_ct_seq_adjust 4 22086 NULL +acerhdf_get_mode_22088 acerhdf_get_mode 0 22088 NULL +niu_init_one_rx_channel_22095 niu_init_one_rx_channel 0 22095 NULL ++ocfs2_extend_allocation_22096 ocfs2_extend_allocation 0 22096 NULL +ext3_setattr_22100 ext3_setattr 0 22100 NULL +portio_name_show_22101 portio_name_show 0 22101 NULL +rndis_error_status_22103 rndis_error_status 0 22103 NULL nohasharray @@ -135593,6 +142584,7 @@ index 0000000..19e2901 +__vlan_device_event_22159 __vlan_device_event 0 22159 NULL +show_otp2en_22160 show_otp2en 0 22160 NULL +set_pwm_enable_22161 set_pwm_enable 0-4 22161 NULL ++devm_ioremap_wc_22162 devm_ioremap_wc 2-3 22162 NULL +pm8001_phy_control_22163 pm8001_phy_control 0 22163 NULL nohasharray +store_pwm_interpolate_22163 store_pwm_interpolate 0-4 22163 &pm8001_phy_control_22163 +lx_hardware_open_22166 lx_hardware_open 0 22166 NULL @@ -135603,7 +142595,8 @@ index 0000000..19e2901 +dccp_disconnect_22174 dccp_disconnect 0 22174 NULL +beiscsi_adap_family_disp_22179 beiscsi_adap_family_disp 0 22179 NULL nohasharray +nf_nat_ipv6_in_22179 nf_nat_ipv6_in 0 22179 &beiscsi_adap_family_disp_22179 -+iscsi_disc_show_userid_mutual_22181 iscsi_disc_show_userid_mutual 0 22181 NULL ++iscsi_disc_show_userid_mutual_22181 iscsi_disc_show_userid_mutual 0 22181 NULL nohasharray ++hid_sensor_custom_read_22181 hid_sensor_custom_read 3 22181 &iscsi_disc_show_userid_mutual_22181 +channel_dimm_label_store_22189 channel_dimm_label_store 0-4 22189 NULL +xen_acpi_processor_resume_22190 xen_acpi_processor_resume 0 22190 NULL +tps80031_rtc_alarm_irq_enable_22198 tps80031_rtc_alarm_irq_enable 0 22198 NULL @@ -135729,6 +142722,7 @@ index 0000000..19e2901 +mutex_lock_interruptible_22505 mutex_lock_interruptible 0 22505 NULL nohasharray +asd_version_show_22505 asd_version_show 0 22505 &mutex_lock_interruptible_22505 +fan_pwm1_store_22510 fan_pwm1_store 0-4 22510 NULL ++sha512_ssse3_finup_22514 sha512_ssse3_finup 0 22514 NULL +trim_no_bitmap_22524 trim_no_bitmap 4-3 22524 NULL +attr_press_to_select_store_tpkbd_22525 attr_press_to_select_store_tpkbd 0-4 22525 NULL +snd_cx23885_prepare_22528 snd_cx23885_prepare 0 22528 NULL @@ -135761,6 +142755,7 @@ index 0000000..19e2901 +btrfs_delalloc_reserve_space_22617 btrfs_delalloc_reserve_space 0 22617 NULL +bootflag_get_22618 bootflag_get 0 22618 NULL +qlcnic_pci_sriov_disable_22622 qlcnic_pci_sriov_disable 0 22622 NULL ++iwl_dbgfs_rx_phyinfo_read_22625 iwl_dbgfs_rx_phyinfo_read 3 22625 NULL +_maybe_not_all_in_one_io_22626 _maybe_not_all_in_one_io 0 22626 NULL +sctp_setsockopt_connectx_old_22631 sctp_setsockopt_connectx_old 3-0 22631 NULL +v9fs_vfs_getattr_dotl_22632 v9fs_vfs_getattr_dotl 0 22632 NULL @@ -135809,12 +142804,14 @@ index 0000000..19e2901 +ecryptfs_write_metadata_to_contents_22721 ecryptfs_write_metadata_to_contents 3 22721 &qlcnic_83xx_lockless_flash_read32_22721 +mxuport_send_ctrl_urb_22723 mxuport_send_ctrl_urb 0 22723 NULL +channel_dimm_label_show_22728 channel_dimm_label_show 0 22728 NULL nohasharray -+acpi_ex_get_name_string_22728 acpi_ex_get_name_string 0 22728 &channel_dimm_label_show_22728 ++acpi_ex_get_name_string_22728 acpi_ex_get_name_string 0 22728 &channel_dimm_label_show_22728 nohasharray ++ext4_mpage_readpages_22728 ext4_mpage_readpages 0-4 22728 &acpi_ex_get_name_string_22728 +filename_trans_read_22730 filename_trans_read 0 22730 NULL +cx18_copy_buf_to_user_22735 cx18_copy_buf_to_user 4-0 22735 NULL nohasharray +show_filter_22735 show_filter 0 22735 &cx18_copy_buf_to_user_22735 nohasharray +__mlx4_cq_alloc_icm_22735 __mlx4_cq_alloc_icm 0 22735 &show_filter_22735 +ax25_output_22736 ax25_output 2 22736 NULL ++xenbus_map_ring_valloc_pv_22737 xenbus_map_ring_valloc_pv 3 22737 NULL +ceph_decode_32_22738 ceph_decode_32 0 22738 NULL nohasharray +__mei_cl_send_22738 __mei_cl_send 3 22738 &ceph_decode_32_22738 +__writeback_single_inode_22739 __writeback_single_inode 0 22739 NULL @@ -135877,7 +142874,8 @@ index 0000000..19e2901 +smb_set_file_info_22880 smb_set_file_info 0 22880 NULL +pxa_ep_enable_22883 pxa_ep_enable 0 22883 NULL +vmw_execbuf_process_22885 vmw_execbuf_process 5 22885 NULL nohasharray -+show_counter_tx_flow_stalls_22885 show_counter_tx_flow_stalls 0 22885 &vmw_execbuf_process_22885 ++show_counter_tx_flow_stalls_22885 show_counter_tx_flow_stalls 0 22885 &vmw_execbuf_process_22885 nohasharray ++_mv88e6xxx_phy_read_indirect_22885 _mv88e6xxx_phy_read_indirect 0 22885 &show_counter_tx_flow_stalls_22885 +set_phy_speed_22886 set_phy_speed 0 22886 NULL +show_green_22889 show_green 0 22889 NULL +v9fs_direct_write_22891 v9fs_direct_write 0-3 22891 NULL @@ -135937,6 +142935,7 @@ index 0000000..19e2901 +iwl_mvm_rm_sta_common_22994 iwl_mvm_rm_sta_common 0 22994 &show_pwm_temp_sel_common_22994 +nouveau_hwmon_show_temp1_auto_point1_pwm_22996 nouveau_hwmon_show_temp1_auto_point1_pwm 0 22996 NULL +pcan_usb_pro_set_silent_23000 pcan_usb_pro_set_silent 0 23000 NULL ++pfkey_sendmsg_23002 pfkey_sendmsg 3 23002 NULL +ubifs_find_free_leb_for_idx_23003 ubifs_find_free_leb_for_idx 0 23003 NULL +tw68_start_streaming_23004 tw68_start_streaming 0 23004 NULL +dig_playback_pcm_prepare_23006 dig_playback_pcm_prepare 0 23006 NULL @@ -136074,6 +143073,7 @@ index 0000000..19e2901 +sctp_recvmsg_23265 sctp_recvmsg 4-0 23265 NULL nohasharray +intel_map_sg_23265 intel_map_sg 0-3 23265 &sctp_recvmsg_23265 +alg_bind_23268 alg_bind 0 23268 NULL ++sha512_base_do_update_23270 sha512_base_do_update 0 23270 NULL +lan87xx_read_status_23278 lan87xx_read_status 0 23278 NULL +remove_ftrace_ops_23280 remove_ftrace_ops 0 23280 NULL +uwb_dev_addr_print_23282 uwb_dev_addr_print 2 23282 NULL @@ -136118,8 +143118,10 @@ index 0000000..19e2901 +fscache_fsdef_netfs_get_key_23368 fscache_fsdef_netfs_get_key 0 23368 NULL +fd_setup_write_same_buf_23369 fd_setup_write_same_buf 3 23369 NULL +rawv6_send_hdrinc_23370 rawv6_send_hdrinc 3 23370 NULL ++iwl_pcie_rsa_race_bug_wa_23375 iwl_pcie_rsa_race_bug_wa 0 23375 NULL +bonding_sysfs_store_option_23382 bonding_sysfs_store_option 0-4 23382 NULL +fc0011_writereg_23383 fc0011_writereg 0 23383 NULL ++pppoe_sendmsg_23391 pppoe_sendmsg 3 23391 NULL +kobil_write_23392 kobil_write 0-4 23392 NULL +jffs2_listxattr_23402 jffs2_listxattr 0-3 23402 NULL nohasharray +s_ctrl_23402 s_ctrl 0 23402 &jffs2_listxattr_23402 @@ -136461,7 +143463,8 @@ index 0000000..19e2901 +lis3lv02d_selftest_show_24139 lis3lv02d_selftest_show 0 24139 &irnet_ctrl_write_24139 nohasharray +xfs_btree_increment_24139 xfs_btree_increment 0 24139 &lis3lv02d_selftest_show_24139 +ov9650_s_ctrl_24141 ov9650_s_ctrl 0 24141 NULL -+mem_cgroup_can_attach_24142 mem_cgroup_can_attach 0 24142 NULL ++mem_cgroup_can_attach_24142 mem_cgroup_can_attach 0 24142 NULL nohasharray ++unix_seqpacket_recvmsg_24142 unix_seqpacket_recvmsg 3 24142 &mem_cgroup_can_attach_24142 +cx24123_tuner_i2c_tuner_xfer_24143 cx24123_tuner_i2c_tuner_xfer 0-3 24143 NULL nohasharray +attr_dragging_show_tpkbd_24143 attr_dragging_show_tpkbd 0 24143 &cx24123_tuner_i2c_tuner_xfer_24143 +__niu_wait_bits_clear_24147 __niu_wait_bits_clear 0 24147 NULL @@ -136481,6 +143484,7 @@ index 0000000..19e2901 +toshiba_usb_three_set_24183 toshiba_usb_three_set 0 24183 &adv7343_write_24183 +ql_configure_rings_24184 ql_configure_rings 0 24184 NULL +safe_prepare_write_buffer_24187 safe_prepare_write_buffer 3 24187 NULL ++ext4_match_24188 ext4_match 3 24188 NULL +resource_show_24189 resource_show 0 24189 NULL +po1030_set_blue_balance_24191 po1030_set_blue_balance 0 24191 NULL +irq_remapping_setup_msi_irqs_24194 irq_remapping_setup_msi_irqs 2 24194 NULL @@ -136527,6 +143531,7 @@ index 0000000..19e2901 +azx_pcm_prepare_24285 azx_pcm_prepare 0 24285 NULL nohasharray +power_limit_1_max_uw_show_24285 power_limit_1_max_uw_show 0 24285 &azx_pcm_prepare_24285 +msg_size_24288 msg_size 0 24288 NULL ++__dm_get_module_param_24291 __dm_get_module_param 0-3-2 24291 NULL +ext2_free_blocks_24292 ext2_free_blocks 3-2 24292 NULL +i2c_smbus_check_pec_24297 i2c_smbus_check_pec 0 24297 NULL +map_page_24298 map_page 3-4 24298 NULL @@ -136551,6 +143556,7 @@ index 0000000..19e2901 +C_SYSC_pwritev_24345 C_SYSC_pwritev 3 24345 NULL +nf_iterate_24348 nf_iterate 0 24348 NULL +prepare_pages_24349 prepare_pages 0 24349 NULL ++rhashtable_insert_slow_24350 rhashtable_insert_slow 0 24350 NULL +kzalloc_node_24352 kzalloc_node 1 24352 NULL +roccat_common2_sysfs_read_macro_24355 roccat_common2_sysfs_read_macro 0-5-6 24355 NULL +lp3972_i2c_read_24364 lp3972_i2c_read 0 24364 NULL @@ -136709,6 +143715,7 @@ index 0000000..19e2901 +pps_show_24748 pps_show 0 24748 NULL +get_dma_residue_24749 get_dma_residue 0 24749 NULL nohasharray +commit_rxon_24749 commit_rxon 0 24749 &get_dma_residue_24749 ++ntfs_copy_from_user_iter_24753 ntfs_copy_from_user_iter 5-3 24753 NULL +kgdb_hex2mem_24755 kgdb_hex2mem 3 24755 NULL +ddp_device_event_24756 ddp_device_event 0 24756 NULL +get_temp_max_hyst_24757 get_temp_max_hyst 0 24757 NULL @@ -136729,6 +143736,7 @@ index 0000000..19e2901 +mlx4_SET_PORT_general_24788 mlx4_SET_PORT_general 0 24788 &pb0100_s_ctrl_24788 +cache_read_24790 cache_read 3-0 24790 NULL +i915_gem_check_wedge_24793 i915_gem_check_wedge 0 24793 NULL ++st33zp24_spi_recv_24795 st33zp24_spi_recv 4 24795 NULL +user_regset_copyout_24796 user_regset_copyout 7 24796 NULL nohasharray +show_unchecked_isa_dma_24796 show_unchecked_isa_dma 0 24796 &user_regset_copyout_24796 +register_bcache_24797 register_bcache 0-4 24797 NULL @@ -136744,6 +143752,7 @@ index 0000000..19e2901 +comedi_buf_alloc_24822 comedi_buf_alloc 3 24822 NULL +ndo_get_phys_port_id_24825 ndo_get_phys_port_id 0 24825 NULL +brport_show_24827 brport_show 0 24827 NULL ++lfib_nlmsg_size_24828 lfib_nlmsg_size 0 24828 NULL +cuse_class_abort_store_24829 cuse_class_abort_store 0-4 24829 NULL +rpf_s_stream_24830 rpf_s_stream 0 24830 NULL +__logfs_truncate_24831 __logfs_truncate 0 24831 NULL @@ -136866,6 +143875,7 @@ index 0000000..19e2901 +hci_req_add_ev_25115 hci_req_add_ev 3 25115 NULL nohasharray +acpi_ex_create_method_25115 acpi_ex_create_method 0 25115 &hci_req_add_ev_25115 nohasharray +smb2_reconnect_25115 smb2_reconnect 0 25115 &acpi_ex_create_method_25115 ++rxrpc_recvmsg_25121 rxrpc_recvmsg 3 25121 NULL +wl18xx_acx_set_checksum_state_25124 wl18xx_acx_set_checksum_state 0 25124 NULL +lpfc_ack0_show_25126 lpfc_ack0_show 0 25126 NULL +caif_connect_client_25127 caif_connect_client 0 25127 NULL nohasharray @@ -136907,6 +143917,7 @@ index 0000000..19e2901 +show_thresh_either_en_25218 show_thresh_either_en 0 25218 NULL +open_rx_first_25220 open_rx_first 0 25220 NULL +security_socket_post_create_25221 security_socket_post_create 0 25221 NULL ++ocfs2_block_check_compute_25223 ocfs2_block_check_compute 2 25223 NULL +b43legacy_op_get_stats_25225 b43legacy_op_get_stats 0 25225 NULL +ieee80211_start_tx_ba_session_25229 ieee80211_start_tx_ba_session 0 25229 NULL +sonypi_misc_read_25230 sonypi_misc_read 0-3 25230 NULL @@ -137007,6 +144018,7 @@ index 0000000..19e2901 +panel_power_on_store_25422 panel_power_on_store 0-4 25422 NULL +pinctrl_gpio_direction_25423 pinctrl_gpio_direction 0 25423 NULL +v4l2_m2m_dqbuf_25427 v4l2_m2m_dqbuf 0 25427 NULL ++netlink_sendmsg_25428 netlink_sendmsg 3 25428 NULL +snd_pcm_lib_ioctl_reset_25437 snd_pcm_lib_ioctl_reset 0 25437 NULL +target_core_dev_wwn_show_attr_vpd_assoc_target_port_25438 target_core_dev_wwn_show_attr_vpd_assoc_target_port 0 25438 NULL +pcmcia_store_new_id_25439 pcmcia_store_new_id 0-3 25439 NULL @@ -137034,7 +144046,8 @@ index 0000000..19e2901 +do_tcp_setsockopt_25495 do_tcp_setsockopt 0 25495 &dev_show_unique_id_25495 +generic_hdmi_build_jack_25496 generic_hdmi_build_jack 0 25496 NULL +beiscsi_get_host_param_25497 beiscsi_get_host_param 0 25497 NULL -+llc_ui_setsockopt_25501 llc_ui_setsockopt 0 25501 NULL ++llc_ui_setsockopt_25501 llc_ui_setsockopt 0 25501 NULL nohasharray ++ocfs2_hamming_encode_25501 ocfs2_hamming_encode 3 25501 &llc_ui_setsockopt_25501 +ivtv_buf_copy_from_user_25502 ivtv_buf_copy_from_user 4-0 25502 NULL +snd_pcm_plugin_build_25505 snd_pcm_plugin_build 5-0 25505 NULL nohasharray +__orinoco_hw_set_wap_25505 __orinoco_hw_set_wap 0 25505 &snd_pcm_plugin_build_25505 @@ -137256,7 +144269,8 @@ index 0000000..19e2901 +blk_mq_sysfs_rq_list_show_26028 blk_mq_sysfs_rq_list_show 0 26028 NULL +do_sas_phy_reset_26034 do_sas_phy_reset 0-2 26034 NULL nohasharray +bdc_gadget_ep_queue_26034 bdc_gadget_ep_queue 0 26034 &do_sas_phy_reset_26034 -+bad_inode_setxattr_26035 bad_inode_setxattr 0 26035 NULL ++bad_inode_setxattr_26035 bad_inode_setxattr 0 26035 NULL nohasharray ++ntfs_perform_write_26035 ntfs_perform_write 3 26035 &bad_inode_setxattr_26035 +selinux_inode_post_setxattr_26037 selinux_inode_post_setxattr 4 26037 NULL nohasharray +rt2x00debug_read_dev_flags_26037 rt2x00debug_read_dev_flags 0-3 26037 &selinux_inode_post_setxattr_26037 +show_fnode_data_seq_in_order_26041 show_fnode_data_seq_in_order 0 26041 NULL @@ -137298,7 +144312,8 @@ index 0000000..19e2901 +skb_cow_26138 skb_cow 2 26138 NULL +video_get_cur_state_26142 video_get_cur_state 0 26142 NULL +func_id_show_26143 func_id_show 0 26143 NULL -+core_alua_store_tg_pt_gp_info_26144 core_alua_store_tg_pt_gp_info 0-3 26144 NULL ++core_alua_store_tg_pt_gp_info_26144 core_alua_store_tg_pt_gp_info 0-3 26144 NULL nohasharray ++chaoskey_read_26144 chaoskey_read 3 26144 &core_alua_store_tg_pt_gp_info_26144 +ath9k_hw_name_26146 ath9k_hw_name 3 26146 NULL +ivtv_sendbyte_26147 ivtv_sendbyte 0 26147 NULL nohasharray +ufshcd_devfreq_target_26147 ufshcd_devfreq_target 0 26147 &ivtv_sendbyte_26147 @@ -137428,7 +144443,8 @@ index 0000000..19e2901 +cx23885_start_streaming_26406 cx23885_start_streaming 0 26406 NULL +firmware_store_26408 firmware_store 4-0 26408 NULL +lx_pcm_trigger_dispatch_26419 lx_pcm_trigger_dispatch 0 26419 NULL nohasharray -+bl_prepare_layoutcommit_26419 bl_prepare_layoutcommit 0 26419 &lx_pcm_trigger_dispatch_26419 ++bl_prepare_layoutcommit_26419 bl_prepare_layoutcommit 0 26419 &lx_pcm_trigger_dispatch_26419 nohasharray ++serial2002_tty_write_26419 serial2002_tty_write 3 26419 &bl_prepare_layoutcommit_26419 +br_nf_post_routing_26421 br_nf_post_routing 0 26421 NULL +virtual_start_show_26424 virtual_start_show 0 26424 NULL +erst_exec_add_26425 erst_exec_add 0 26425 NULL nohasharray @@ -137476,7 +144492,8 @@ index 0000000..19e2901 +iwl_dbgfs_rf_reset_read_26512 iwl_dbgfs_rf_reset_read 3-0 26512 NULL +l2cap_build_conf_req_26513 l2cap_build_conf_req 0 26513 NULL +retu_regmap_write_26516 retu_regmap_write 0 26516 NULL nohasharray -+ths7303_s_dv_timings_26516 ths7303_s_dv_timings 0 26516 &retu_regmap_write_26516 ++ths7303_s_dv_timings_26516 ths7303_s_dv_timings 0 26516 &retu_regmap_write_26516 nohasharray ++mv88e6xxx_phy_wait_26516 mv88e6xxx_phy_wait 0 26516 &ths7303_s_dv_timings_26516 +cxacru_sysfs_show_line_status_26518 cxacru_sysfs_show_line_status 0 26518 NULL +alloc_ep_req_26521 alloc_ep_req 3-2 26521 NULL +portio_size_show_26525 portio_size_show 0 26525 NULL @@ -137519,6 +144536,7 @@ index 0000000..19e2901 +mem_cgroup_oom_control_write_26619 mem_cgroup_oom_control_write 0 26619 NULL +iommu_alloc_26621 iommu_alloc 4 26621 NULL +aa_change_profile_26624 aa_change_profile 0 26624 NULL ++iwl_mvm_init_mcc_26625 iwl_mvm_init_mcc 0 26625 NULL +pwr_fix_tsf_ps_read_26627 pwr_fix_tsf_ps_read 3-0 26627 NULL +nouveau_hwmon_set_max_temp_26628 nouveau_hwmon_set_max_temp 0-4 26628 NULL +si4713_set_rds_radio_text_26629 si4713_set_rds_radio_text 0 26629 NULL @@ -137554,6 +144572,7 @@ index 0000000..19e2901 +show_in_input0_26705 show_in_input0 0 26705 NULL nohasharray +amd_xgbe_phy_soft_reset_26705 amd_xgbe_phy_soft_reset 0 26705 &show_in_input0_26705 nohasharray +uwb_dev_RSSI_store_26705 uwb_dev_RSSI_store 0-4 26705 &amd_xgbe_phy_soft_reset_26705 ++xenbus_map_ring_valloc_hvm_26709 xenbus_map_ring_valloc_hvm 3 26709 NULL +cx18_av_s_stream_26713 cx18_av_s_stream 0 26713 NULL nohasharray +rtllib_authentication_req_26713 rtllib_authentication_req 3 26713 &cx18_av_s_stream_26713 +yellowfin_init_ring_26714 yellowfin_init_ring 0 26714 NULL @@ -137572,6 +144591,7 @@ index 0000000..19e2901 +b43legacy_attr_preamble_show_26740 b43legacy_attr_preamble_show 0 26740 NULL nohasharray +osst_probe_26740 osst_probe 0 26740 &b43legacy_attr_preamble_show_26740 +pipeline_tcp_rx_stat_fifo_int_read_26745 pipeline_tcp_rx_stat_fifo_int_read 3-0 26745 NULL ++mpls_rt_alloc_26748 mpls_rt_alloc 1 26748 NULL +bcm87xx_read_status_26749 bcm87xx_read_status 0 26749 NULL +virtscsi_change_queue_depth_26751 virtscsi_change_queue_depth 2-0 26751 NULL +msg_from_mpoad_26753 msg_from_mpoad 0 26753 NULL nohasharray @@ -137593,6 +144613,7 @@ index 0000000..19e2901 +bond_slave_netdev_event_26777 bond_slave_netdev_event 0 26777 NULL +inotify_read_26778 inotify_read 0-3 26778 NULL +dma_map_single_attrs_26779 dma_map_single_attrs 0 26779 NULL ++resize_platform_label_table_26780 resize_platform_label_table 2 26780 NULL +read_port_26787 read_port 0-3 26787 NULL +store_bank1_mask_26793 store_bank1_mask 0-4 26793 NULL +compat_sys_recv_26794 compat_sys_recv 3 26794 NULL @@ -137622,6 +144643,7 @@ index 0000000..19e2901 +ecryptfs_miscdev_write_26847 ecryptfs_miscdev_write 3-0 26847 NULL +ss_alloc_ep_req_26848 ss_alloc_ep_req 2 26848 NULL +gx_frame_buffer_size_26851 gx_frame_buffer_size 0 26851 NULL ++nfs_post_op_update_inode_locked_26852 nfs_post_op_update_inode_locked 0 26852 NULL +core_tpg_set_initiator_node_tag_26853 core_tpg_set_initiator_node_tag 0 26853 NULL nohasharray +ipath_f_set_ib_cfg_26853 ipath_f_set_ib_cfg 0 26853 &core_tpg_set_initiator_node_tag_26853 +sisusb_read_26856 sisusb_read 0-3 26856 NULL @@ -137672,7 +144694,8 @@ index 0000000..19e2901 +lx_dsp_set_granularity_26954 lx_dsp_set_granularity 0 26954 NULL +mesh_id_set_26957 mesh_id_set 0-4 26957 NULL +adp8870_bl_ambient_light_zone_store_26959 adp8870_bl_ambient_light_zone_store 0-4 26959 NULL -+ext4_xattr_user_get_26961 ext4_xattr_user_get 0 26961 NULL ++ext4_xattr_user_get_26961 ext4_xattr_user_get 0 26961 NULL nohasharray ++add_fake_paths_26961 add_fake_paths 0 26961 &ext4_xattr_user_get_26961 +trackpoint_set_bit_attr_26969 trackpoint_set_bit_attr 0-4 26969 NULL +tb_path_alloc_26976 tb_path_alloc 2 26976 NULL nohasharray +lpfc_enable_hba_reset_show_26976 lpfc_enable_hba_reset_show 0 26976 &tb_path_alloc_26976 @@ -137708,7 +144731,8 @@ index 0000000..19e2901 +hotkey_mask_show_27048 hotkey_mask_show 0 27048 NULL +sc16is7xx_port_read_27051 sc16is7xx_port_read 0 27051 NULL +show_fnode_discovery_parent_idx_27053 show_fnode_discovery_parent_idx 0 27053 NULL -+ufs_alloc_fragments_27059 ufs_alloc_fragments 3-0-2 27059 NULL ++ufs_alloc_fragments_27059 ufs_alloc_fragments 3-0-2 27059 NULL nohasharray ++snd_ctl_new_27059 snd_ctl_new 2 27059 &ufs_alloc_fragments_27059 +group_store_27061 group_store 4-0 27061 NULL +__videobuf_alloc_vb_27062 __videobuf_alloc_vb 1 27062 NULL +proc_fd_permission_27063 proc_fd_permission 0 27063 NULL @@ -137770,6 +144794,7 @@ index 0000000..19e2901 +mt9t031_g_crop_27191 mt9t031_g_crop 0 27191 NULL +freeze_fs_27192 freeze_fs 0 27192 NULL +r852_media_type_show_27193 r852_media_type_show 0 27193 NULL ++hfs_direct_IO_27195 hfs_direct_IO 3 27195 NULL +vmci_transport_notify_pkt_recv_init_27208 vmci_transport_notify_pkt_recv_init 0 27208 NULL +toggle_hdmi_source_27212 toggle_hdmi_source 0-4 27212 NULL +target_stat_scsi_lu_show_attr_dev_type_27222 target_stat_scsi_lu_show_attr_dev_type 0 27222 NULL @@ -137848,6 +144873,7 @@ index 0000000..19e2901 +wl1251_hw_init_rx_config_27393 wl1251_hw_init_rx_config 0 27393 NULL +init_memory_mapping_27395 init_memory_mapping 0 27395 NULL +padata_sysfs_store_27398 padata_sysfs_store 0-4 27398 NULL ++parser_init_byte_stream_27399 parser_init_byte_stream 2 27399 NULL +if_nlmsg_size_27404 if_nlmsg_size 0 27404 NULL +tcm_qla2xxx_tpg_attrib_store_demo_mode_login_only_27405 tcm_qla2xxx_tpg_attrib_store_demo_mode_login_only 0-3 27405 NULL +seq_read_27411 seq_read 3-0 27411 NULL nohasharray @@ -138079,6 +145105,7 @@ index 0000000..19e2901 +bio_next_split_27961 bio_next_split 2 27961 NULL nohasharray +tracing_clock_write_27961 tracing_clock_write 3 27961 &bio_next_split_27961 +ec168_ctrl_msg_27963 ec168_ctrl_msg 0 27963 NULL ++snd_hdac_bus_exec_verb_unlocked_27964 snd_hdac_bus_exec_verb_unlocked 0 27964 NULL +tipc_media_addr_printf_27971 tipc_media_addr_printf 2 27971 NULL nohasharray +nfs4_read_cached_acl_27971 nfs4_read_cached_acl 0 27971 &tipc_media_addr_printf_27971 +mic_rx_pkts_read_27972 mic_rx_pkts_read 3-0 27972 NULL nohasharray @@ -138228,7 +145255,8 @@ index 0000000..19e2901 +acpi_register_gsi_xen_28305 acpi_register_gsi_xen 2 28305 &nouveau_compat_ioctl_28305 +print_fw_version_28310 print_fw_version 0 28310 NULL +phys_switch_id_show_28314 phys_switch_id_show 0 28314 NULL -+adp5520_bl_office_max_store_28316 adp5520_bl_office_max_store 4-0 28316 NULL ++adp5520_bl_office_max_store_28316 adp5520_bl_office_max_store 4-0 28316 NULL nohasharray ++do_loop_readv_writev_28316 do_loop_readv_writev 0 28316 &adp5520_bl_office_max_store_28316 +snd_pcm_oss_read_28317 snd_pcm_oss_read 3-0 28317 NULL nohasharray +il4965_show_temperature_28317 il4965_show_temperature 0 28317 &snd_pcm_oss_read_28317 +generic_access_phys_28318 generic_access_phys 2-4 28318 NULL @@ -138311,7 +145339,8 @@ index 0000000..19e2901 +ocfs2_backup_super_blkno_28484 ocfs2_backup_super_blkno 0-2 28484 NULL nohasharray +tty_read_28484 tty_read 0-3 28484 &ocfs2_backup_super_blkno_28484 +__filemap_fdatawrite_28485 __filemap_fdatawrite 0 28485 NULL -+coda_revalidate_inode_28489 coda_revalidate_inode 0 28489 NULL ++coda_revalidate_inode_28489 coda_revalidate_inode 0 28489 NULL nohasharray ++udp_uncompress_28489 udp_uncompress 2 28489 &coda_revalidate_inode_28489 +max_response_pages_28492 max_response_pages 0 28492 NULL +pxa168_eth_set_mac_address_28494 pxa168_eth_set_mac_address 0 28494 NULL +snd_interval_refine_max_28498 snd_interval_refine_max 0 28498 NULL @@ -138388,7 +145417,8 @@ index 0000000..19e2901 +au6610_i2c_xfer_28645 au6610_i2c_xfer 0-3 28645 NULL +jfs_statfs_28649 jfs_statfs 0 28649 NULL +byte_read_data_28650 byte_read_data 0 28650 NULL -+p9_fcall_alloc_28652 p9_fcall_alloc 1 28652 NULL ++p9_fcall_alloc_28652 p9_fcall_alloc 1 28652 NULL nohasharray ++sco_sock_recvmsg_28652 sco_sock_recvmsg 3 28652 &p9_fcall_alloc_28652 +nilfs_construct_dsync_segment_28656 nilfs_construct_dsync_segment 0 28656 NULL +dpm_suspend_28657 dpm_suspend 0 28657 NULL +fsnotify_add_event_28660 fsnotify_add_event 0 28660 NULL @@ -138421,9 +145451,11 @@ index 0000000..19e2901 +tcp_cgroup_write_28723 tcp_cgroup_write 0-3 28723 NULL +ip6_pkt_discard_out_28724 ip6_pkt_discard_out 0 28724 NULL +spi_sync_locked_28726 spi_sync_locked 0 28726 NULL ++cxgb4_write_rss_28727 cxgb4_write_rss 0 28727 NULL +drm_plane_init_28731 drm_plane_init 6 28731 NULL nohasharray +nfs_revalidate_file_size_28731 nfs_revalidate_file_size 0 28731 &drm_plane_init_28731 +spi_execute_28736 spi_execute 5 28736 NULL ++add_advertising_28737 add_advertising 4 28737 NULL +snd_pcm_aio_write_28738 snd_pcm_aio_write 3-0 28738 NULL nohasharray +mwifiex_cmd_tx_rate_cfg_28738 mwifiex_cmd_tx_rate_cfg 0 28738 &snd_pcm_aio_write_28738 +switch_channel_28739 switch_channel 0 28739 NULL @@ -138475,6 +145507,7 @@ index 0000000..19e2901 +input_dev_show_phys_28859 input_dev_show_phys 0 28859 NULL +smack_ipv4_output_28860 smack_ipv4_output 0 28860 NULL +e100_self_test_28862 e100_self_test 0 28862 NULL ++create_of_modalias_28866 create_of_modalias 0 28866 NULL +ipv6_renew_options_28867 ipv6_renew_options 5 28867 NULL +profile_init_28870 profile_init 0 28870 NULL +b43_gphy_op_interf_mitigation_28872 b43_gphy_op_interf_mitigation 0 28872 NULL @@ -138499,6 +145532,7 @@ index 0000000..19e2901 +walk_tg_tree_from_28923 walk_tg_tree_from 0 28923 NULL +ps_upsd_timeouts_read_28924 ps_upsd_timeouts_read 3-0 28924 NULL +iwl_dbgfs_sleep_level_override_write_28925 iwl_dbgfs_sleep_level_override_write 3-0 28925 NULL ++ocfs2_frozen_trigger_28929 ocfs2_frozen_trigger 4 28929 NULL +__ext2_write_inode_28931 __ext2_write_inode 0 28931 NULL +btrfs_set_prop_28935 btrfs_set_prop 0 28935 NULL +patch_cs4213_28937 patch_cs4213 0 28937 NULL @@ -138669,6 +145703,7 @@ index 0000000..19e2901 +atyfb_set_par_29275 atyfb_set_par 0 29275 NULL +prism2_set_genericelement_29277 prism2_set_genericelement 3 29277 NULL +set_force_pwm_max_29278 set_force_pwm_max 0-4 29278 NULL ++bitmap_ord_to_pos_29279 bitmap_ord_to_pos 3 29279 NULL +_abb5zes3_rtc_update_alarm_29283 _abb5zes3_rtc_update_alarm 0 29283 NULL +_abb5zes3_rtc_set_timer_29286 _abb5zes3_rtc_set_timer 0 29286 NULL +iwl_mvm_send_cmd_pdu_status_29288 iwl_mvm_send_cmd_pdu_status 0 29288 NULL @@ -138678,7 +145713,8 @@ index 0000000..19e2901 +writeset_alloc_29304 writeset_alloc 2 29304 NULL nohasharray +tpacpi_rfk_update_swstate_29304 tpacpi_rfk_update_swstate 0 29304 &writeset_alloc_29304 +abb5zes3_rtc_set_alarm_29308 abb5zes3_rtc_set_alarm 0 29308 NULL -+regmap_spmi_ext_read_29311 regmap_spmi_ext_read 0 29311 NULL ++regmap_spmi_ext_read_29311 regmap_spmi_ext_read 0 29311 NULL nohasharray ++mempool_resize_29311 mempool_resize 2 29311 ®map_spmi_ext_read_29311 +brcmf_sdio_tx_ctrlframe_29314 brcmf_sdio_tx_ctrlframe 3 29314 NULL +__fuse_get_req_29315 __fuse_get_req 2 29315 NULL +dac33_hw_write_29317 dac33_hw_write 3 29317 NULL nohasharray @@ -138706,6 +145742,7 @@ index 0000000..19e2901 +write_block_data_29390 write_block_data 0 29390 NULL nohasharray +sleep_millisecs_store_29390 sleep_millisecs_store 0-4 29390 &write_block_data_29390 +store_29393 store 0 29393 NULL ++hci_sock_sendmsg_29396 hci_sock_sendmsg 3 29396 NULL +lpfc_use_adisc_show_29400 lpfc_use_adisc_show 0 29400 NULL +_ctl_diag_trigger_master_show_29403 _ctl_diag_trigger_master_show 0 29403 NULL nohasharray +shm16read__write_file_29403 shm16read__write_file 0 29403 &_ctl_diag_trigger_master_show_29403 @@ -138835,7 +145872,9 @@ index 0000000..19e2901 +chv_gpio_direction_input_29662 chv_gpio_direction_input 0 29662 NULL nohasharray +e100_phy_init_29662 e100_phy_init 0 29662 &chv_gpio_direction_input_29662 +user_get_29663 user_get 0 29663 NULL -+br_send_bpdu_29669 br_send_bpdu 3 29669 NULL ++br_send_bpdu_29669 br_send_bpdu 3 29669 NULL nohasharray ++rfcomm_sock_sendmsg_29669 rfcomm_sock_sendmsg 3 29669 &br_send_bpdu_29669 ++br_nlmsg_size_29671 br_nlmsg_size 0 29671 NULL +sisusb_write_mem_bulk_29678 sisusb_write_mem_bulk 4-0 29678 NULL +pmbus_regulator_enable_29679 pmbus_regulator_enable 0 29679 NULL +netxen_store_bridged_mode_29684 netxen_store_bridged_mode 0-4 29684 NULL @@ -138855,7 +145894,8 @@ index 0000000..19e2901 +sht15_show_temp_29714 sht15_show_temp 0 29714 NULL +compat_write_data_29715 compat_write_data 0 29715 NULL +target_core_alua_tg_pt_gp_show_attr_alua_write_metadata_29716 target_core_alua_tg_pt_gp_show_attr_alua_write_metadata 0 29716 NULL nohasharray -+wl1251_acx_station_id_29716 wl1251_acx_station_id 0 29716 &target_core_alua_tg_pt_gp_show_attr_alua_write_metadata_29716 ++wl1251_acx_station_id_29716 wl1251_acx_station_id 0 29716 &target_core_alua_tg_pt_gp_show_attr_alua_write_metadata_29716 nohasharray ++ext4_ext_direct_IO_29716 ext4_ext_direct_IO 3 29716 &wl1251_acx_station_id_29716 +sdev_show_evt_soft_threshold_reached_29724 sdev_show_evt_soft_threshold_reached 0 29724 NULL +dbs_cpufreq_notifier_29729 dbs_cpufreq_notifier 0 29729 NULL +wake_show_29730 wake_show 0 29730 NULL @@ -138919,7 +145959,8 @@ index 0000000..19e2901 +itd_submit_29871 itd_submit 0 29871 &ipv6_setsockopt_29871 nohasharray +ath10k_mac_vif_recalc_ps_poll_count_29871 ath10k_mac_vif_recalc_ps_poll_count 0 29871 &itd_submit_29871 +dma_map_xdr_29874 dma_map_xdr 0 29874 NULL -+show_engine3_mode_29876 show_engine3_mode 0 29876 NULL ++show_engine3_mode_29876 show_engine3_mode 0 29876 NULL nohasharray ++br_get_link_af_size_filtered_29876 br_get_link_af_size_filtered 0 29876 &show_engine3_mode_29876 +setup_29880 setup 0 29880 NULL +store_pan_29882 store_pan 0-4 29882 NULL +nfc_targets_found_29886 nfc_targets_found 3 29886 NULL nohasharray @@ -138952,6 +145993,7 @@ index 0000000..19e2901 +crb_do_acpi_start_29961 crb_do_acpi_start 0 29961 NULL +init_29962 init 0 29962 NULL +ubifs_readpage_29965 ubifs_readpage 0 29965 NULL ++dn_sendmsg_29966 dn_sendmsg 3 29966 NULL +vfb_set_par_29967 vfb_set_par 0 29967 NULL +register_one_node_29973 register_one_node 0 29973 NULL +acpi_ut_copy_iobject_to_eobject_29974 acpi_ut_copy_iobject_to_eobject 0 29974 NULL @@ -138996,7 +146038,8 @@ index 0000000..19e2901 +tipc_sk_rcv_30090 tipc_sk_rcv 0 30090 NULL +cxgbi_ddp_reserve_30091 cxgbi_ddp_reserve 4 30091 NULL +snd_midi_channel_init_set_30092 snd_midi_channel_init_set 1 30092 NULL -+tg3_run_loopback_30093 tg3_run_loopback 2 30093 NULL ++tg3_run_loopback_30093 tg3_run_loopback 2 30093 NULL nohasharray ++generic_write_checks_30093 generic_write_checks 0 30093 &tg3_run_loopback_30093 +wake_lock_store_30096 wake_lock_store 0-4 30096 NULL +rx_filter_data_filter_read_30098 rx_filter_data_filter_read 3-0 30098 NULL +mlx5_cmd_exec_30102 mlx5_cmd_exec 0 30102 NULL @@ -139021,7 +146064,8 @@ index 0000000..19e2901 +ext4_write_inline_data_end_30151 ext4_write_inline_data_end 0-4 30151 NULL +hvfb_check_var_30153 hvfb_check_var 0 30153 NULL +elfcorehdr_read_30159 elfcorehdr_read 2 30159 NULL -+netlink_realloc_groups_30162 netlink_realloc_groups 0 30162 NULL ++netlink_realloc_groups_30162 netlink_realloc_groups 0 30162 NULL nohasharray ++start_stop_khugepaged_30162 start_stop_khugepaged 0 30162 &netlink_realloc_groups_30162 +alloc_switch_ctx_30165 alloc_switch_ctx 2 30165 NULL +sundance_set_mac_addr_30166 sundance_set_mac_addr 0 30166 NULL +cs_init_30168 cs_init 0 30168 NULL @@ -139083,7 +146127,8 @@ index 0000000..19e2901 +dn_dev_get_first_30296 dn_dev_get_first 0 30296 &tcp_sendmsg_30296 +snd_card_asihpi_playback_prepare_30297 snd_card_asihpi_playback_prepare 0 30297 NULL nohasharray +lbs_get_reg_30297 lbs_get_reg 0 30297 &snd_card_asihpi_playback_prepare_30297 -+qlcnic_netdev_event_30299 qlcnic_netdev_event 0 30299 NULL ++qlcnic_netdev_event_30299 qlcnic_netdev_event 0 30299 NULL nohasharray ++irda_sendmsg_dgram_30299 irda_sendmsg_dgram 3 30299 &qlcnic_netdev_event_30299 +__av7110_send_fw_cmd_30300 __av7110_send_fw_cmd 0 30300 NULL +fm_rx_set_mute_mode_30305 fm_rx_set_mute_mode 0 30305 NULL nohasharray +osc_contention_seconds_seq_write_30305 osc_contention_seconds_seq_write 3 30305 &fm_rx_set_mute_mode_30305 @@ -139107,7 +146152,8 @@ index 0000000..19e2901 +s5k83a_set_hvflip_30350 s5k83a_set_hvflip 0 30350 &cyapa_gen3_show_baseline_30350 +__vmalloc_node_flags_30352 __vmalloc_node_flags 1 30352 NULL nohasharray +mmio32read__read_file_30352 mmio32read__read_file 0 30352 &__vmalloc_node_flags_30352 -+show_ipOutNoRoutes_30355 show_ipOutNoRoutes 0 30355 NULL ++show_ipOutNoRoutes_30355 show_ipOutNoRoutes 0 30355 NULL nohasharray ++wil_reset_30355 wil_reset 0 30355 &show_ipOutNoRoutes_30355 +wake_up_key_show_30358 wake_up_key_show 0 30358 NULL +gfs2_trans_begin_30359 gfs2_trans_begin 0 30359 NULL +ipx_getname_30363 ipx_getname 0 30363 NULL @@ -139136,7 +146182,8 @@ index 0000000..19e2901 +lp3971_set_bits_30418 lp3971_set_bits 0 30418 NULL +ext3_xattr_list_30419 ext3_xattr_list 0 30419 NULL +vb2_fop_write_30420 vb2_fop_write 3-0 30420 NULL -+lpfc_npiv_info_show_30421 lpfc_npiv_info_show 0 30421 NULL ++lpfc_npiv_info_show_30421 lpfc_npiv_info_show 0 30421 NULL nohasharray ++trace_insert_enum_map_30421 trace_insert_enum_map 3 30421 &lpfc_npiv_info_show_30421 +iscsi_stat_login_attr_show_30423 iscsi_stat_login_attr_show 0 30423 NULL +tx_tx_template_prepared_read_30424 tx_tx_template_prepared_read 3-0 30424 NULL nohasharray +sequencer_write_30424 sequencer_write 0-4 30424 &tx_tx_template_prepared_read_30424 nohasharray @@ -139208,6 +146255,7 @@ index 0000000..19e2901 +xfs_setattr_nonsize_30550 xfs_setattr_nonsize 0 30550 &lp3972_i2c_write_30550 nohasharray +logfs_setattr_30550 logfs_setattr 0 30550 &xfs_setattr_nonsize_30550 +usb_serial_generic_open_30553 usb_serial_generic_open 0 30553 NULL ++_mv88e6xxx_reg_write_30554 _mv88e6xxx_reg_write 0 30554 NULL +ixgbevf_acquire_msix_vectors_30559 ixgbevf_acquire_msix_vectors 2 30559 NULL +qlcnic_sriov_pf_create_flr_queue_30560 qlcnic_sriov_pf_create_flr_queue 0 30560 NULL +disk_expand_part_tbl_30561 disk_expand_part_tbl 2 30561 NULL nohasharray @@ -139380,6 +146428,7 @@ index 0000000..19e2901 +sctp_setsockopt_rtoinfo_30941 sctp_setsockopt_rtoinfo 3-0 30941 NULL nohasharray +parport_uss720_ecp_read_data_30941 parport_uss720_ecp_read_data 0 30941 &sctp_setsockopt_rtoinfo_30941 +sctp_do_bind_30943 sctp_do_bind 0 30943 NULL ++affs_direct_IO_30947 affs_direct_IO 3 30947 NULL +reserve_space_30953 reserve_space 0 30953 NULL nohasharray +store_30953 store 0-4 30953 &reserve_space_30953 +st_accel_buffer_preenable_30954 st_accel_buffer_preenable 0 30954 NULL @@ -139462,6 +146511,7 @@ index 0000000..19e2901 +ssb_read16_31139 ssb_read16 0 31139 NULL +store_speed_scan_31141 store_speed_scan 0-4 31141 NULL +b43_sdio_request_irq_31144 b43_sdio_request_irq 0 31144 NULL ++caif_seqpkt_recvmsg_31145 caif_seqpkt_recvmsg 3 31145 NULL +patch_nvhdmi_31148 patch_nvhdmi 0 31148 NULL +acpi_cpu_soft_notify_31149 acpi_cpu_soft_notify 0 31149 NULL +uvc_start_streaming_31157 uvc_start_streaming 0 31157 NULL @@ -139542,6 +146592,7 @@ index 0000000..19e2901 +platform_device_add_31340 platform_device_add 0 31340 NULL +jffs2_trusted_listxattr_31348 jffs2_trusted_listxattr 0-5 31348 NULL nohasharray +snd_seq_enqueue_event_31348 snd_seq_enqueue_event 0 31348 &jffs2_trusted_listxattr_31348 ++sha256_base_finish_31352 sha256_base_finish 0 31352 NULL +queue_setup_31353 queue_setup 0 31353 NULL +vpx3220_s_ctrl_31356 vpx3220_s_ctrl 0 31356 NULL +outlen_write_31358 outlen_write 3-0 31358 NULL @@ -139575,6 +146626,7 @@ index 0000000..19e2901 +cxacru_sysfs_show_downstream_attenuation_31423 cxacru_sysfs_show_downstream_attenuation 0 31423 NULL +TSS_checkhmac1_31429 TSS_checkhmac1 0 31429 NULL +iuu_open_31432 iuu_open 0 31432 NULL ++ext4_find_dest_de_31440 ext4_find_dest_de 7 31440 NULL +acpi_sci_ioapic_setup_31445 acpi_sci_ioapic_setup 4 31445 NULL nohasharray +snd_ice1712_capture_prepare_31445 snd_ice1712_capture_prepare 0 31445 &acpi_sci_ioapic_setup_31445 +security_set_bools_31447 security_set_bools 0 31447 NULL @@ -139616,7 +146668,8 @@ index 0000000..19e2901 +fs_send_31530 fs_send 0 31530 NULL +cyapa_poll_state_31531 cyapa_poll_state 0 31531 NULL +__mv88e6xxx_reg_read_31534 __mv88e6xxx_reg_read 0 31534 NULL -+tvp5150_s_ctrl_31535 tvp5150_s_ctrl 0 31535 NULL ++tvp5150_s_ctrl_31535 tvp5150_s_ctrl 0 31535 NULL nohasharray ++irda_recvmsg_dgram_31535 irda_recvmsg_dgram 3 31535 &tvp5150_s_ctrl_31535 +hidraw_write_31536 hidraw_write 3-0 31536 NULL +mtd_div_by_eb_31543 mtd_div_by_eb 0-1 31543 NULL nohasharray +powerclamp_cpu_callback_31543 powerclamp_cpu_callback 0 31543 &mtd_div_by_eb_31543 @@ -139751,7 +146804,9 @@ index 0000000..19e2901 +ad7793_read_frequency_31825 ad7793_read_frequency 0 31825 NULL +ocfs2_readpage_inline_31829 ocfs2_readpage_inline 0 31829 NULL +any_show_31831 any_show 0 31831 NULL -+notify_send_pre_enqueue_31834 notify_send_pre_enqueue 0 31834 NULL ++i915_get_ggtt_vma_pages_31833 i915_get_ggtt_vma_pages 0 31833 NULL ++notify_send_pre_enqueue_31834 notify_send_pre_enqueue 0 31834 NULL nohasharray ++_mv88e6xxx_phy_read_31834 _mv88e6xxx_phy_read 0 31834 ¬ify_send_pre_enqueue_31834 +cachefiles_daemon_fcull_31835 cachefiles_daemon_fcull 0 31835 NULL +__bond_release_one_31836 __bond_release_one 0 31836 NULL +isp1362_urb_enqueue_31839 isp1362_urb_enqueue 0 31839 NULL @@ -139952,6 +147007,8 @@ index 0000000..19e2901 +show_control_32286 show_control 0 32286 NULL +uart401_open_32288 uart401_open 0 32288 NULL +l3_alloc_skb_32289 l3_alloc_skb 1 32289 NULL ++netvsc_send_pkt_32291 netvsc_send_pkt 0 32291 NULL ++alloc_ofld_rxqs_32293 alloc_ofld_rxqs 0 32293 NULL +proc_sys_getattr_32297 proc_sys_getattr 0 32297 NULL +sisusb_read_memio_long_32299 sisusb_read_memio_long 0 32299 NULL +find_ci_32301 find_ci 0 32301 NULL @@ -140026,7 +147083,8 @@ index 0000000..19e2901 +bcm7xxx_28nm_b0_afe_config_init_32439 bcm7xxx_28nm_b0_afe_config_init 0 32439 NULL nohasharray +break_ksm_32439 break_ksm 0 32439 &bcm7xxx_28nm_b0_afe_config_init_32439 +fore200e_pca_proc_read_32440 fore200e_pca_proc_read 0 32440 NULL nohasharray -+cfq_set_leaf_weight_32440 cfq_set_leaf_weight 0 32440 &fore200e_pca_proc_read_32440 ++cfq_set_leaf_weight_32440 cfq_set_leaf_weight 0 32440 &fore200e_pca_proc_read_32440 nohasharray ++reiserfs_direct_IO_32440 reiserfs_direct_IO 3 32440 &cfq_set_leaf_weight_32440 +show_in16_32441 show_in16 0 32441 NULL +axnet_resume_32442 axnet_resume 0 32442 NULL +cx25840_s_ctrl_32444 cx25840_s_ctrl 0 32444 NULL @@ -140086,7 +147144,8 @@ index 0000000..19e2901 +device_change_notifier_32558 device_change_notifier 0 32558 NULL +bitmap_store_32559 bitmap_store 0-3 32559 NULL +ipgre_header_32561 ipgre_header 0 32561 NULL nohasharray -+alloc_dma_desc_resources_32561 alloc_dma_desc_resources 0 32561 &ipgre_header_32561 ++alloc_dma_desc_resources_32561 alloc_dma_desc_resources 0 32561 &ipgre_header_32561 nohasharray ++__blockdev_direct_IO_32561 __blockdev_direct_IO 5-0 32561 &alloc_dma_desc_resources_32561 +aes_encrypt_fail_read_32562 aes_encrypt_fail_read 3-0 32562 NULL +loop_attr_backing_file_show_32564 loop_attr_backing_file_show 0 32564 NULL +osc_iocontrol_32565 osc_iocontrol 3 32565 NULL @@ -140237,6 +147296,7 @@ index 0000000..19e2901 +write_policy_show_32908 write_policy_show 0 32908 NULL +show_fan16_32912 show_fan16 0 32912 NULL +il_dbgfs_tx_stats_read_32913 il_dbgfs_tx_stats_read 3-0 32913 NULL ++add_bound_rdev_32915 add_bound_rdev 0 32915 NULL +show_32916 show 0 32916 NULL +mcp3422_show_samp_freqs_32924 mcp3422_show_samp_freqs 0 32924 NULL nohasharray +hibernate_32924 hibernate 0 32924 &mcp3422_show_samp_freqs_32924 @@ -140323,6 +147383,7 @@ index 0000000..19e2901 +nf_nat_ipv4_local_fn_33119 nf_nat_ipv4_local_fn 0 33119 NULL nohasharray +set_beep_33119 set_beep 0-4 33119 &nf_nat_ipv4_local_fn_33119 +write_node_33121 write_node 4-0 33121 NULL ++llc_ui_sendmsg_33123 llc_ui_sendmsg 3 33123 NULL +virtual_gb_store_33126 virtual_gb_store 0-3 33126 NULL +fb_sys_write_33130 fb_sys_write 3 33130 NULL nohasharray +cxgb4_inet6addr_handler_33130 cxgb4_inet6addr_handler 0 33130 &fb_sys_write_33130 @@ -140336,6 +147397,7 @@ index 0000000..19e2901 +bond_option_arp_ip_target_add_33152 bond_option_arp_ip_target_add 0 33152 NULL nohasharray +SyS_poll_33152 SyS_poll 2 33152 &bond_option_arp_ip_target_add_33152 +_pci_add_cap_save_buffer_33153 _pci_add_cap_save_buffer 4 33153 NULL ++packet_sendmsg_33154 packet_sendmsg 3 33154 NULL +ubifs_gc_start_commit_33160 ubifs_gc_start_commit 0 33160 NULL +regmap_spmi_ext_write_33161 regmap_spmi_ext_write 0 33161 NULL +wl1271_sta_hw_init_33163 wl1271_sta_hw_init 0 33163 NULL nohasharray @@ -140426,7 +147488,8 @@ index 0000000..19e2901 +aic26_keyclick_set_33378 aic26_keyclick_set 0-4 33378 NULL +mem_cgroup_resize_memsw_limit_33379 mem_cgroup_resize_memsw_limit 0 33379 NULL +setsockopt_33380 setsockopt 0 33380 NULL -+hackrf_alloc_stream_bufs_33381 hackrf_alloc_stream_bufs 0 33381 NULL ++hackrf_alloc_stream_bufs_33381 hackrf_alloc_stream_bufs 0 33381 NULL nohasharray ++_find_next_bit_33381 _find_next_bit 0-2 33381 &hackrf_alloc_stream_bufs_33381 +ieee80211_if_read_dropped_frames_no_route_33383 ieee80211_if_read_dropped_frames_no_route 3-0 33383 NULL +airo_suspend_33386 airo_suspend 0 33386 NULL +bmc150_accel_setup_new_data_interrupt_33387 bmc150_accel_setup_new_data_interrupt 0 33387 NULL @@ -140510,6 +147573,7 @@ index 0000000..19e2901 +tomoyo_read_self_33539 tomoyo_read_self 3-0 33539 NULL nohasharray +osc_max_rpcs_in_flight_seq_write_33539 osc_max_rpcs_in_flight_seq_write 3 33539 &tomoyo_read_self_33539 +bnx2_request_firmware_33540 bnx2_request_firmware 0 33540 NULL ++__acpi_device_modalias_33545 __acpi_device_modalias 0 33545 NULL +get_fan_div_33546 get_fan_div 0 33546 NULL +cx8802_buf_prepare_33547 cx8802_buf_prepare 0 33547 NULL +compat_SyS_recv_33548 compat_SyS_recv 3 33548 NULL @@ -140616,6 +147680,7 @@ index 0000000..19e2901 +var_to_pll_33759 var_to_pll 0 33759 NULL +pccard_show_voltage_33761 pccard_show_voltage 0 33761 NULL +vifs_state_read_33762 vifs_state_read 3-0 33762 NULL ++bitmap_full_33763 bitmap_full 2 33763 NULL +ext2_xattr_user_list_33764 ext2_xattr_user_list 0-5 33764 NULL nohasharray +ext3_mark_inode_dirty_33764 ext3_mark_inode_dirty 0 33764 &ext2_xattr_user_list_33764 +hashtab_create_33769 hashtab_create 3 33769 NULL @@ -140663,6 +147728,7 @@ index 0000000..19e2901 +bin_string_33884 bin_string 5-3 33884 NULL +get_fan1_div_33886 get_fan1_div 0 33886 NULL nohasharray +mwifiex_cmd_802_11_snmp_mib_33886 mwifiex_cmd_802_11_snmp_mib 0 33886 &get_fan1_div_33886 ++vmci_transport_dgram_dequeue_33887 vmci_transport_dgram_dequeue 3 33887 NULL +twl_request_33892 twl_request 0 33892 NULL +sis190_init_ring_33895 sis190_init_ring 0 33895 NULL nohasharray +isl29003_set_resolution_33895 isl29003_set_resolution 0 33895 &sis190_init_ring_33895 @@ -140784,7 +147850,8 @@ index 0000000..19e2901 +skb_to_sgvec_34171 skb_to_sgvec 0 34171 NULL +xfs_attr_get_34174 xfs_attr_get 0 34174 NULL +hdcs_s_ctrl_34177 hdcs_s_ctrl 0 34177 NULL -+qla2x00_fw_dump_size_show_34180 qla2x00_fw_dump_size_show 0 34180 NULL ++qla2x00_fw_dump_size_show_34180 qla2x00_fw_dump_size_show 0 34180 NULL nohasharray ++nilfs_direct_IO_34180 nilfs_direct_IO 3 34180 &qla2x00_fw_dump_size_show_34180 +show_pci_clock_34182 show_pci_clock 0 34182 NULL +mgsl_claim_resources_34183 mgsl_claim_resources 0 34183 NULL +hidp_set_raw_report_34192 hidp_set_raw_report 4-0 34192 NULL @@ -140905,7 +147972,8 @@ index 0000000..19e2901 +monitor_id_show_34469 monitor_id_show 0 34469 NULL nohasharray +lbs_cmd_802_11_sleep_params_34469 lbs_cmd_802_11_sleep_params 0 34469 &monitor_id_show_34469 nohasharray +dev_start_34469 dev_start 0 34469 &lbs_cmd_802_11_sleep_params_34469 -+show_34470 show 0 34470 NULL ++show_34470 show 0 34470 NULL nohasharray ++dt_gpio_count_34470 dt_gpio_count 0 34470 &show_34470 +mwifiex_regrdwr_read_34472 mwifiex_regrdwr_read 3-0 34472 NULL +sha224_ssse3_init_34474 sha224_ssse3_init 0 34474 NULL +fw_csr_string_34475 fw_csr_string 0 34475 NULL @@ -141320,6 +148388,7 @@ index 0000000..19e2901 +link_mode_show_35372 link_mode_show 0 35372 &read_kmem_35372 +reserved_clusters_store_35375 reserved_clusters_store 0-4 35375 NULL +queue_rq_affinity_store_35376 queue_rq_affinity_store 3-0 35376 NULL ++p9_virtio_zc_request_35377 p9_virtio_zc_request 6-5 35377 NULL +snd_pcm_do_start_35380 snd_pcm_do_start 0 35380 NULL nohasharray +memcpy_from_msg_35380 memcpy_from_msg 3-0 35380 &snd_pcm_do_start_35380 +show_pwmenable_35381 show_pwmenable 0 35381 NULL @@ -141343,6 +148412,7 @@ index 0000000..19e2901 +firm_purge_35431 firm_purge 0 35431 NULL +C_SYSC_sendfile_35432 C_SYSC_sendfile 4 35432 NULL nohasharray +pep_init_35432 pep_init 0 35432 &C_SYSC_sendfile_35432 ++__set_test_and_free_35436 __set_test_and_free 2 35436 NULL +dwc3_gadget_set_xfer_resource_35437 dwc3_gadget_set_xfer_resource 0 35437 NULL nohasharray +set_num_temp_sensors_35437 set_num_temp_sensors 0-4 35437 &dwc3_gadget_set_xfer_resource_35437 +buffer_to_user_35439 buffer_to_user 3 35439 NULL @@ -141429,7 +148499,9 @@ index 0000000..19e2901 +cfq_fifo_expire_async_store_35650 cfq_fifo_expire_async_store 3-0 35650 NULL nohasharray +mlx4_en_get_sset_count_35650 mlx4_en_get_sset_count 0 35650 &cfq_fifo_expire_async_store_35650 +spi_register_board_info_35651 spi_register_board_info 2 35651 NULL ++usb_dmac_desc_get_35654 usb_dmac_desc_get 2 35654 NULL +show_sched5_35655 show_sched5 0 35655 NULL ++blkdev_direct_IO_35665 blkdev_direct_IO 3 35665 NULL +regmap_update_bits_35668 regmap_update_bits 0 35668 NULL +request_lock_35670 request_lock 0 35670 NULL +bh1770_lux_calib_show_35671 bh1770_lux_calib_show 0 35671 NULL @@ -141449,7 +148521,8 @@ index 0000000..19e2901 +sctp_listen_start_35709 sctp_listen_start 0 35709 NULL +toshiba_panel_power_on_get_35719 toshiba_panel_power_on_get 0 35719 NULL +bnx2_change_mac_addr_35722 bnx2_change_mac_addr 0 35722 NULL -+i2c_smbus_write_block_data_35723 i2c_smbus_write_block_data 0 35723 NULL ++i2c_smbus_write_block_data_35723 i2c_smbus_write_block_data 0 35723 NULL nohasharray ++mv88e6xxx_phy_page_write_35723 mv88e6xxx_phy_page_write 0 35723 &i2c_smbus_write_block_data_35723 +mlx4_internal_err_ret_value_35725 mlx4_internal_err_ret_value 0 35725 NULL +vfio_fops_read_35733 vfio_fops_read 0-3 35733 NULL +ipr_copy_ucode_buffer_35736 ipr_copy_ucode_buffer 0 35736 NULL @@ -141491,6 +148564,7 @@ index 0000000..19e2901 +cgroup_file_write_35828 cgroup_file_write 0-3 35828 NULL +log_debug_write_35845 log_debug_write 3-0 35845 NULL +mp_set_gsi_attr_35852 mp_set_gsi_attr 1 35852 NULL ++unix_seqpacket_sendmsg_35853 unix_seqpacket_sendmsg 3 35853 NULL +tx_tx_cmplt_read_35854 tx_tx_cmplt_read 3-0 35854 NULL +wl3501_open_35855 wl3501_open 0 35855 NULL +mthca_buf_alloc_35861 mthca_buf_alloc 2 35861 NULL @@ -141578,6 +148652,7 @@ index 0000000..19e2901 +page_action_36038 page_action 0 36038 &iscsi_nacl_attrib_show_random_datain_pdu_offsets_36038 +num_arg_36039 num_arg 0 36039 NULL +wm8739_s_ctrl_36040 wm8739_s_ctrl 0 36040 NULL ++i915_gem_object_do_pin_36045 i915_gem_object_do_pin 0 36045 NULL +init_36051 init 0 36051 NULL +at86rf230_set_promiscuous_mode_36052 at86rf230_set_promiscuous_mode 0 36052 NULL +snd_usb_caiaq_set_audio_params_36057 snd_usb_caiaq_set_audio_params 0 36057 NULL nohasharray @@ -141670,6 +148745,7 @@ index 0000000..19e2901 +atomic_stats_read_36228 atomic_stats_read 3-0 36228 NULL +wil_agg_size_36229 wil_agg_size 0-2 36229 NULL nohasharray +wl1273_fm_start_36229 wl1273_fm_start 0 36229 &wil_agg_size_36229 ++irda_recvmsg_stream_36232 irda_recvmsg_stream 3 36232 NULL +__padata_remove_cpu_36235 __padata_remove_cpu 0 36235 NULL +ping_bind_36236 ping_bind 0 36236 NULL +viafb_iga1_odev_proc_write_36241 viafb_iga1_odev_proc_write 3-0 36241 NULL @@ -141697,11 +148773,13 @@ index 0000000..19e2901 +bind_mode_show_36286 bind_mode_show 0 36286 NULL +aac_show_reset_adapter_36289 aac_show_reset_adapter 0 36289 NULL +nf_nat_ipv6_out_36291 nf_nat_ipv6_out 0 36291 NULL ++arch_mmap_rnd_36293 arch_mmap_rnd 0 36293 NULL +asix_write_rx_ctl_36295 asix_write_rx_ctl 0 36295 NULL +do_set_fan_div_36299 do_set_fan_div 0 36299 NULL +lpfc_debugfs_dif_err_read_36303 lpfc_debugfs_dif_err_read 3-0 36303 NULL +show_in_min3_36304 show_in_min3 0 36304 NULL -+l2cap_validate_le_psm_36306 l2cap_validate_le_psm 0 36306 NULL ++l2cap_validate_le_psm_36306 l2cap_validate_le_psm 0 36306 NULL nohasharray ++unix_stream_recvmsg_36306 unix_stream_recvmsg 3 36306 &l2cap_validate_le_psm_36306 +target_core_alua_tg_pt_gp_store_attr_alua_access_type_36308 target_core_alua_tg_pt_gp_store_attr_alua_access_type 0-3 36308 NULL +ad7879_spi_xfer_36311 ad7879_spi_xfer 3 36311 NULL +qla2x00_vlan_id_show_36314 qla2x00_vlan_id_show 0 36314 NULL @@ -141786,6 +148864,7 @@ index 0000000..19e2901 +__hwahc_op_set_ptk_36510 __hwahc_op_set_ptk 5 36510 NULL +mcam_v4l_read_36513 mcam_v4l_read 3-0 36513 NULL +_iwl_dbgfs_fw_nmi_write_36515 _iwl_dbgfs_fw_nmi_write 3-0 36515 NULL ++pnfs_sync_inode_36519 pnfs_sync_inode 0 36519 NULL +ieee80211_if_read_fwded_frames_36520 ieee80211_if_read_fwded_frames 3-0 36520 NULL +it8761e_gpio_direction_out_36528 it8761e_gpio_direction_out 0 36528 NULL +lguest_setup_irq_36531 lguest_setup_irq 1 36531 NULL @@ -141842,14 +148921,16 @@ index 0000000..19e2901 +cyapa_gen5_bl_exit_36644 cyapa_gen5_bl_exit 0 36644 &ov2640_write_array_36644 +m66592_udc_start_36646 m66592_udc_start 0 36646 NULL +mem_cgroup_do_precharge_36647 mem_cgroup_do_precharge 0 36647 NULL -+lpfc_idiag_extacc_alloc_get_36648 lpfc_idiag_extacc_alloc_get 0-3 36648 NULL ++lpfc_idiag_extacc_alloc_get_36648 lpfc_idiag_extacc_alloc_get 0-3 36648 NULL nohasharray ++tty_copy_to_user_36648 tty_copy_to_user 4 36648 &lpfc_idiag_extacc_alloc_get_36648 +add_dev_support_show_36650 add_dev_support_show 0 36650 NULL +hfsplus_osx_listxattr_36654 hfsplus_osx_listxattr 0-5 36654 NULL nohasharray +interface_show_36654 interface_show 0 36654 &hfsplus_osx_listxattr_36654 +ktti_read_regr_36658 ktti_read_regr 0 36658 NULL +pss_coproc_open_36662 pss_coproc_open 0 36662 NULL +osd_req_list_collection_objects_36664 osd_req_list_collection_objects 5 36664 NULL nohasharray -+ip6_pkt_prohibit_out_36664 ip6_pkt_prohibit_out 0 36664 &osd_req_list_collection_objects_36664 ++ip6_pkt_prohibit_out_36664 ip6_pkt_prohibit_out 0 36664 &osd_req_list_collection_objects_36664 nohasharray ++mgmt_send_event_36664 mgmt_send_event 5 36664 &ip6_pkt_prohibit_out_36664 +snd_pcsp_trigger_36665 snd_pcsp_trigger 0 36665 NULL +iscsi_host_alloc_36671 iscsi_host_alloc 2 36671 NULL nohasharray +get_temp_input_36671 get_temp_input 0 36671 &iscsi_host_alloc_36671 @@ -141958,13 +149039,15 @@ index 0000000..19e2901 +set_green_36904 set_green 0-4 36904 &wm831x_auxadc_read_36904 +lm3533_als_get_target_36905 lm3533_als_get_target 0 36905 NULL +show_fnode_chap_auth_36909 show_fnode_chap_auth 0 36909 NULL nohasharray -+send_next_seg_36909 send_next_seg 0 36909 &show_fnode_chap_auth_36909 ++send_next_seg_36909 send_next_seg 0 36909 &show_fnode_chap_auth_36909 nohasharray ++packet_sendmsg_spkt_36909 packet_sendmsg_spkt 3 36909 &send_next_seg_36909 +zl10036_read_status_reg_36910 zl10036_read_status_reg 0 36910 NULL nohasharray +set_mandatory_rates_36910 set_mandatory_rates 0 36910 &zl10036_read_status_reg_36910 +cuse_read_36920 cuse_read 0-3 36920 NULL +show_counter_rx_p2_hdr_egr_ovfls_36924 show_counter_rx_p2_hdr_egr_ovfls 0 36924 NULL nohasharray +data_sock_getname_36924 data_sock_getname 0 36924 &show_counter_rx_p2_hdr_egr_ovfls_36924 +store_lid_36925 store_lid 0-4 36925 NULL ++copy_batch_36927 copy_batch 3-4 36927 NULL +netxen_sysfs_read_dimm_36930 netxen_sysfs_read_dimm 0-5-6 36930 NULL +queue_rq_affinity_show_36934 queue_rq_affinity_show 0 36934 NULL +clock_name_show_36935 clock_name_show 0 36935 NULL nohasharray @@ -142035,12 +149118,14 @@ index 0000000..19e2901 +_iwl_dbgfs_bcast_filters_macs_write_37069 _iwl_dbgfs_bcast_filters_macs_write 3-0 37069 NULL +ql_get_sset_count_37070 ql_get_sset_count 0 37070 NULL +vmci_transport_send_wrote_37072 vmci_transport_send_wrote 0 37072 NULL nohasharray -+logfs_write_rec_37072 logfs_write_rec 0 37072 &vmci_transport_send_wrote_37072 ++logfs_write_rec_37072 logfs_write_rec 0 37072 &vmci_transport_send_wrote_37072 nohasharray ++vmap_batch_37072 vmap_batch 2-3 37072 &logfs_write_rec_37072 +uhci_submit_bulk_37073 uhci_submit_bulk 0 37073 NULL +ath10k_spectral_scan_config_37075 ath10k_spectral_scan_config 0 37075 NULL +SYSC_setxattr_37078 SYSC_setxattr 4 37078 NULL +parse_command_37079 parse_command 2-0 37079 NULL +drm_mode_create_rotation_property_37082 drm_mode_create_rotation_property 2 37082 NULL ++ll_direct_IO_26_37083 ll_direct_IO_26 3 37083 NULL +resize_37084 resize 0 37084 NULL +pipeline_cs_rx_packet_in_read_37089 pipeline_cs_rx_packet_in_read 3-0 37089 NULL nohasharray +show_fcstat_loss_of_sync_count_37089 show_fcstat_loss_of_sync_count 0 37089 &pipeline_cs_rx_packet_in_read_37089 @@ -142166,7 +149251,8 @@ index 0000000..19e2901 +compat_SyS_fcntl_37376 compat_SyS_fcntl 3 37376 NULL +xcan_open_37377 xcan_open 0 37377 NULL +sched_domains_numa_masks_update_37380 sched_domains_numa_masks_update 0 37380 NULL -+queue_discard_zeroes_data_show_37381 queue_discard_zeroes_data_show 0 37381 NULL ++queue_discard_zeroes_data_show_37381 queue_discard_zeroes_data_show 0 37381 NULL nohasharray ++gfs2_direct_IO_37381 gfs2_direct_IO 3 37381 &queue_discard_zeroes_data_show_37381 +mmc_raw_rpmb_size_mult_show_37385 mmc_raw_rpmb_size_mult_show 0 37385 NULL nohasharray +setup_bd_list_xfr_37385 setup_bd_list_xfr 0 37385 &mmc_raw_rpmb_size_mult_show_37385 +iommu_num_pages_37391 iommu_num_pages 0-2-3-1 37391 NULL @@ -142180,7 +149266,7 @@ index 0000000..19e2901 +max14577_set_fast_charge_timer_37418 max14577_set_fast_charge_timer 0 37418 &sys_getxattr_37418 +hci_sock_sendmsg_37420 hci_sock_sendmsg 4-0 37420 NULL +acpi_os_allocate_zeroed_37422 acpi_os_allocate_zeroed 1 37422 NULL nohasharray -+find_next_bit_37422 find_next_bit 0 37422 &acpi_os_allocate_zeroed_37422 ++find_next_bit_37422 find_next_bit 0-2 37422 &acpi_os_allocate_zeroed_37422 +tty_insert_flip_string_fixed_flag_37428 tty_insert_flip_string_fixed_flag 4-0 37428 NULL nohasharray +it8712f_wdt_notify_37428 it8712f_wdt_notify 0 37428 &tty_insert_flip_string_fixed_flag_37428 +iwl_print_last_event_logs_37433 iwl_print_last_event_logs 7-9-0 37433 NULL @@ -142256,7 +149342,8 @@ index 0000000..19e2901 +bonding_show_updelay_37620 bonding_show_updelay 0 37620 NULL nohasharray +node_read_meminfo_37620 node_read_meminfo 0 37620 &bonding_show_updelay_37620 +SYSC_mbind_37622 SYSC_mbind 5 37622 NULL -+cdc_ncm_show_dwNtbOutMaxSize_37627 cdc_ncm_show_dwNtbOutMaxSize 0 37627 NULL ++cdc_ncm_show_dwNtbOutMaxSize_37627 cdc_ncm_show_dwNtbOutMaxSize 0 37627 NULL nohasharray ++aio_run_iocb_37627 aio_run_iocb 4 37627 &cdc_ncm_show_dwNtbOutMaxSize_37627 +rd_byte_37632 rd_byte 0 37632 NULL +os_desc_b_vendor_code_store_37633 os_desc_b_vendor_code_store 0-3 37633 NULL +__hw_addr_add_37635 __hw_addr_add 0 37635 NULL @@ -142376,6 +149463,7 @@ index 0000000..19e2901 +pkt_alloc_packet_data_37928 pkt_alloc_packet_data 1 37928 NULL nohasharray +_rtw_malloc_37928 _rtw_malloc 1 37928 &pkt_alloc_packet_data_37928 +set_pwmchan_37930 set_pwmchan 0-4 37930 NULL ++security_inode_getattr_37932 security_inode_getattr 0 37932 NULL +toshiba_accelerometer_get_37934 toshiba_accelerometer_get 0 37934 NULL +ath5k_attr_store_spur_level_37935 ath5k_attr_store_spur_level 0-4 37935 NULL +read_rbu_packet_size_37939 read_rbu_packet_size 6-0-5 37939 NULL nohasharray @@ -142405,6 +149493,7 @@ index 0000000..19e2901 +isl1208_sysfs_show_usr_37987 isl1208_sysfs_show_usr 0 37987 NULL +rds_rdma_extra_size_37990 rds_rdma_extra_size 0 37990 NULL nohasharray +netxen_nic_change_mtu_37990 netxen_nic_change_mtu 0 37990 &rds_rdma_extra_size_37990 ++aio_setup_vectored_rw_37994 aio_setup_vectored_rw 3 37994 NULL +of_regulator_match_37995 of_regulator_match 0 37995 NULL +persistent_ram_old_size_37997 persistent_ram_old_size 0 37997 NULL nohasharray +fm10k_update_vid_37997 fm10k_update_vid 0 37997 &persistent_ram_old_size_37997 @@ -142483,6 +149572,7 @@ index 0000000..19e2901 +bonding_show_active_slave_38152 bonding_show_active_slave 0 38152 NULL +__ntfs_copy_from_user_iovec_inatomic_38153 __ntfs_copy_from_user_iovec_inatomic 0-4-3 38153 NULL +gss_import_sec_context_38154 gss_import_sec_context 0 38154 NULL ++vcc_recvmsg_38166 vcc_recvmsg 3 38166 NULL +fbcon_fb_unregistered_38168 fbcon_fb_unregistered 0 38168 NULL +snd_ca0106_pcm_trigger_capture_38169 snd_ca0106_pcm_trigger_capture 0 38169 NULL nohasharray +amb_open_38169 amb_open 0 38169 &snd_ca0106_pcm_trigger_capture_38169 @@ -142568,7 +149658,8 @@ index 0000000..19e2901 +ql_set_mac_addr_reg_38341 ql_set_mac_addr_reg 0 38341 NULL +pm8001_ctl_mpi_interface_rev_show_38342 pm8001_ctl_mpi_interface_rev_show 0 38342 NULL +sisusb_write_memio_byte_38343 sisusb_write_memio_byte 0 38343 NULL -+iscsi_stat_sess_show_attr_conn_timeout_errors_38346 iscsi_stat_sess_show_attr_conn_timeout_errors 0 38346 NULL ++iscsi_stat_sess_show_attr_conn_timeout_errors_38346 iscsi_stat_sess_show_attr_conn_timeout_errors 0 38346 NULL nohasharray ++nf_hook_thresh_38346 nf_hook_thresh 0 38346 &iscsi_stat_sess_show_attr_conn_timeout_errors_38346 +af9005_write_tuner_registers_38347 af9005_write_tuner_registers 0 38347 NULL +snd_hda_add_pincfg_38354 snd_hda_add_pincfg 0 38354 NULL +security_getxattr_38355 security_getxattr 0 38355 NULL @@ -142651,12 +149742,14 @@ index 0000000..19e2901 +prepare_header95_38540 prepare_header95 0 38540 NULL +jffs2_user_getxattr_38541 jffs2_user_getxattr 0 38541 NULL +btrfs_discard_extent_38547 btrfs_discard_extent 2 38547 NULL -+xs_error_38560 xs_error 0 38560 NULL ++xs_error_38560 xs_error 0 38560 NULL nohasharray ++tcp_sendmsg_38560 tcp_sendmsg 3 38560 &xs_error_38560 +irda_sendmsg_dgram_38563 irda_sendmsg_dgram 4-0 38563 NULL +il4965_rs_sta_dbgfs_scale_table_read_38564 il4965_rs_sta_dbgfs_scale_table_read 3-0 38564 NULL nohasharray +iscsi_stat_login_show_attr_authorize_fails_38564 iscsi_stat_login_show_attr_authorize_fails 0 38564 &il4965_rs_sta_dbgfs_scale_table_read_38564 +snd_nm256_playback_copy_38567 snd_nm256_playback_copy 5 38567 NULL nohasharray +sr9700_get_eeprom_len_38567 sr9700_get_eeprom_len 0 38567 &snd_nm256_playback_copy_38567 ++skcipher_sendmsg_38570 skcipher_sendmsg 3 38570 NULL +zd_reg2alpha2_38572 zd_reg2alpha2 0 38572 NULL +srp_create_target_38575 srp_create_target 0-4 38575 NULL +copy_ctl_value_to_user_38587 copy_ctl_value_to_user 4 38587 NULL @@ -142737,6 +149830,7 @@ index 0000000..19e2901 +p9_mount_tag_show_38744 p9_mount_tag_show 0 38744 NULL nohasharray +extlog_print_38744 extlog_print 0 38744 &p9_mount_tag_show_38744 +clear_intrusion_38745 clear_intrusion 0-4 38745 NULL ++btusb_qca_send_vendor_req_38746 btusb_qca_send_vendor_req 4 38746 NULL +microcode_write_38754 microcode_write 0-3 38754 NULL +netxen_nic_get_eeprom_len_38756 netxen_nic_get_eeprom_len 0 38756 NULL +get_fan_rpm_38760 get_fan_rpm 0 38760 NULL nohasharray @@ -142832,7 +149926,8 @@ index 0000000..19e2901 +wp512_init_38975 wp512_init 0 38975 NULL +usb_maxpacket_38977 usb_maxpacket 0 38977 NULL nohasharray +adfs_fplus_read_38977 adfs_fplus_read 0 38977 &usb_maxpacket_38977 -+addr_assign_type_show_38978 addr_assign_type_show 0 38978 NULL ++addr_assign_type_show_38978 addr_assign_type_show 0 38978 NULL nohasharray ++iwl_mvm_init_fw_regd_38978 iwl_mvm_init_fw_regd 0 38978 &addr_assign_type_show_38978 +_iommu_cpumask_show_38985 _iommu_cpumask_show 0 38985 NULL +OSDSetBlock_38986 OSDSetBlock 2-4 38986 NULL nohasharray +pti_tty_write_room_38986 pti_tty_write_room 0 38986 &OSDSetBlock_38986 @@ -142840,6 +149935,7 @@ index 0000000..19e2901 +intel_nontranslate_map_sg_38992 intel_nontranslate_map_sg 0-3 38992 NULL +bio_clone_range_38997 bio_clone_range 2 38997 NULL +lpfc_idiag_extacc_write_38998 lpfc_idiag_extacc_write 3-0 38998 NULL ++udf_new_block_38999 udf_new_block 4 38999 NULL +bh1770_set_lux_thresh_39000 bh1770_set_lux_thresh 0 39000 NULL +mmio16write__write_file_39001 mmio16write__write_file 0 39001 NULL +systemid_show_39002 systemid_show 0 39002 NULL @@ -142864,7 +149960,8 @@ index 0000000..19e2901 +write_battery_life_extender_39045 write_battery_life_extender 0 39045 NULL +wl18xx_trigger_cmd_39046 wl18xx_trigger_cmd 0 39046 NULL +power_limit_1_tmax_us_show_39050 power_limit_1_tmax_us_show 0 39050 NULL -+do_write_kmem_39051 do_write_kmem 0-1-3 39051 NULL ++do_write_kmem_39051 do_write_kmem 0-1-3 39051 NULL nohasharray ++log_writes_status_39051 log_writes_status 5 39051 &do_write_kmem_39051 +__wil_up_39052 __wil_up 0 39052 NULL +get_component_status_39053 get_component_status 0 39053 NULL +gen10g_read_status_39059 gen10g_read_status 0 39059 NULL @@ -142889,6 +149986,7 @@ index 0000000..19e2901 +avoid_reset_quirk_show_39119 avoid_reset_quirk_show 0 39119 NULL +__kfifo_to_user_r_39123 __kfifo_to_user_r 3-5 39123 NULL +saa711x_set_size_39124 saa711x_set_size 0 39124 NULL ++l2tp_ip6_recvmsg_39130 l2tp_ip6_recvmsg 3 39130 NULL +snd_vt1724_pcm_trigger_39131 snd_vt1724_pcm_trigger 0 39131 NULL +ea_foreach_39133 ea_foreach 0 39133 NULL +snd_pcm_plug_format_plugins_39136 snd_pcm_plug_format_plugins 0 39136 NULL @@ -142909,6 +150007,7 @@ index 0000000..19e2901 +msr_device_create_39175 msr_device_create 0 39175 NULL +vpe_buf_prepare_39183 vpe_buf_prepare 0 39183 NULL +wl1271_cmd_data_path_39185 wl1271_cmd_data_path 0 39185 NULL ++snd_hda_codec_parse_pcms_39188 snd_hda_codec_parse_pcms 0 39188 NULL +ubi_more_update_data_39189 ubi_more_update_data 4-0 39189 NULL +soc_camera_platform_s_stream_39190 soc_camera_platform_s_stream 0 39190 NULL nohasharray +quota_scale_store_39190 quota_scale_store 0-3 39190 &soc_camera_platform_s_stream_39190 @@ -142976,6 +150075,7 @@ index 0000000..19e2901 +adp8860_store_39328 adp8860_store 0-3 39328 NULL +target_core_dev_attrib_attr_show_39329 target_core_dev_attrib_attr_show 0 39329 NULL +flex_array_prealloc_39330 flex_array_prealloc 0 39330 NULL ++drm_dp_i2c_drain_msg_39331 drm_dp_i2c_drain_msg 0 39331 NULL +gmbus_xfer_39341 gmbus_xfer 0-3 39341 NULL +xen_hvm_setup_msi_irqs_39342 xen_hvm_setup_msi_irqs 2 39342 NULL +wimax_msg_alloc_39343 wimax_msg_alloc 4 39343 NULL @@ -143047,7 +150147,8 @@ index 0000000..19e2901 +rtnl_port_size_39551 rtnl_port_size 0 39551 NULL +pp_write_39554 pp_write 3-0 39554 NULL nohasharray +sr_write_cmd_39554 sr_write_cmd 5-0 39554 &pp_write_39554 -+sis630_block_data_39556 sis630_block_data 0 39556 NULL ++sis630_block_data_39556 sis630_block_data 0 39556 NULL nohasharray ++set_pcm_default_values_39556 set_pcm_default_values 0 39556 &sis630_block_data_39556 +ol_dqblk_block_39558 ol_dqblk_block 2 39558 NULL +cpulistaffinity_show_39560 cpulistaffinity_show 0 39560 NULL nohasharray +uhid_dev_input2_39560 uhid_dev_input2 0 39560 &cpulistaffinity_show_39560 nohasharray @@ -143211,6 +150312,7 @@ index 0000000..19e2901 +bh1770_set_lux_rate_39960 bh1770_set_lux_rate 0-4 39960 NULL +bh1770_get_prox_rate_avail_39962 bh1770_get_prox_rate_avail 0 39962 NULL +prepare_39963 prepare 0 39963 NULL ++mv88e6xxx_phy_write_indirect_39966 mv88e6xxx_phy_write_indirect 2 39966 NULL +bio_chain_clone_range_39967 bio_chain_clone_range 3 39967 NULL +selinux_audit_rule_init_39969 selinux_audit_rule_init 0 39969 NULL +fmvj18x_resume_39970 fmvj18x_resume 0 39970 NULL @@ -143269,6 +150371,7 @@ index 0000000..19e2901 +netlink_broadcast_filtered_40105 netlink_broadcast_filtered 0 40105 NULL +xfs_rtbuf_get_40107 xfs_rtbuf_get 0 40107 NULL +gen_pool_first_fit_40110 gen_pool_first_fit 2-3-4 40110 NULL ++snd_soc_dapm_new_pcm_40119 snd_soc_dapm_new_pcm 3 40119 NULL +sctp_setsockopt_delayed_ack_40129 sctp_setsockopt_delayed_ack 3-0 40129 NULL nohasharray +lp3971_i2c_read_40129 lp3971_i2c_read 0 40129 &sctp_setsockopt_delayed_ack_40129 nohasharray +cachefiles_daemon_tag_40129 cachefiles_daemon_tag 0 40129 &lp3971_i2c_read_40129 @@ -143304,6 +150407,7 @@ index 0000000..19e2901 +allocate_probes_40204 allocate_probes 1 40204 NULL +selinux_socket_recvmsg_40208 selinux_socket_recvmsg 0 40208 NULL +ecryptfs_inode_newsize_ok_40210 ecryptfs_inode_newsize_ok 0 40210 NULL ++generic_exec_single_40212 generic_exec_single 0 40212 NULL +_nfs4_do_fsinfo_40215 _nfs4_do_fsinfo 0 40215 NULL +sync_cached_firmware_buf_40217 sync_cached_firmware_buf 0 40217 NULL +i40e_get_sset_count_40218 i40e_get_sset_count 0 40218 NULL @@ -143332,6 +150436,7 @@ index 0000000..19e2901 +pcnet_suspend_40283 pcnet_suspend 0 40283 &rx_xfr_hint_trig_read_40283 +ad7877_dac_store_40285 ad7877_dac_store 0-4 40285 NULL +il_dbgfs_ucode_rx_stats_read_40286 il_dbgfs_ucode_rx_stats_read 0-3 40286 NULL ++ashmem_read_40287 ashmem_read 3 40287 NULL +tracing_thresh_read_40295 tracing_thresh_read 3 40295 NULL +dn_confirm_accept_40296 dn_confirm_accept 0 40296 NULL nohasharray +aat2870_ldo_is_enabled_40296 aat2870_ldo_is_enabled 0 40296 &dn_confirm_accept_40296 @@ -143340,6 +150445,7 @@ index 0000000..19e2901 +SyS_bind_40303 SyS_bind 3 40303 NULL +ubi_io_write_data_40305 ubi_io_write_data 4-5-0 40305 NULL nohasharray +device_online_40305 device_online 0 40305 &ubi_io_write_data_40305 ++mv88e6xxx_phy_page_read_40309 mv88e6xxx_phy_page_read 0 40309 NULL +wm8350_rtc_readtime_40313 wm8350_rtc_readtime 0 40313 NULL +vlan_device_event_40315 vlan_device_event 0 40315 NULL +prepare_40316 prepare 0 40316 NULL @@ -143580,6 +150686,7 @@ index 0000000..19e2901 +kmx61_set_mode_40839 kmx61_set_mode 0 40839 NULL +show_in_status_40844 show_in_status 0 40844 NULL nohasharray +can_rx_register_40844 can_rx_register 0 40844 &show_in_status_40844 ++test_smp_read_40845 test_smp_read 3 40845 NULL +nilfs_mdt_init_40849 nilfs_mdt_init 3 40849 NULL +isku_sysfs_write_keys_thumbster_40851 isku_sysfs_write_keys_thumbster 6-0-5 40851 NULL nohasharray +udp_lib_setsockopt_40851 udp_lib_setsockopt 0 40851 &isku_sysfs_write_keys_thumbster_40851 nohasharray @@ -143598,6 +150705,7 @@ index 0000000..19e2901 +i7core_inject_eccmask_show_40872 i7core_inject_eccmask_show 0 40872 NULL +atomic_add_unless_40873 atomic_add_unless 0 40873 NULL +snd_cx88_card_trigger_40885 snd_cx88_card_trigger 0 40885 NULL ++iwl_mvm_start_fw_dbg_conf_40886 iwl_mvm_start_fw_dbg_conf 0 40886 NULL +wl12xx_cmd_build_probe_req_40888 wl12xx_cmd_build_probe_req 6-10-8 40888 NULL +init_vbus_channel_40889 init_vbus_channel 1-2 40889 NULL +store_global_beep_40893 store_global_beep 0-4 40893 NULL @@ -143685,6 +150793,7 @@ index 0000000..19e2901 +ks8995_write_41066 ks8995_write 0-4 41066 NULL +recovery_start_show_41070 recovery_start_show 0 41070 NULL nohasharray +ims_pcu_ofn_bit_show_41070 ims_pcu_ofn_bit_show 0 41070 &recovery_start_show_41070 ++raw_recvmsg_41073 raw_recvmsg 3 41073 NULL +sc_only_mode_read_41076 sc_only_mode_read 3-0 41076 NULL nohasharray +usbvision_write_reg_41076 usbvision_write_reg 0 41076 &sc_only_mode_read_41076 +cfg80211_inform_bss_frame_41078 cfg80211_inform_bss_frame 4 41078 NULL @@ -143790,6 +150899,7 @@ index 0000000..19e2901 +cnic_init_id_tbl_41354 cnic_init_id_tbl 2 41354 NULL nohasharray +show_temp_low_41354 show_temp_low 0 41354 &cnic_init_id_tbl_41354 nohasharray +hsit_s_stream_41354 hsit_s_stream 0 41354 &show_temp_low_41354 ++__cfg80211_alloc_vendor_skb_41356 __cfg80211_alloc_vendor_skb 3 41356 NULL +jbd2_alloc_41359 jbd2_alloc 1 41359 NULL +kovaplus_sysfs_show_actual_cpi_41367 kovaplus_sysfs_show_actual_cpi 0 41367 NULL +max16065_show_alarm_41372 max16065_show_alarm 0 41372 NULL nohasharray @@ -143850,6 +150960,7 @@ index 0000000..19e2901 +dev_rescan_store_41481 dev_rescan_store 0-4 41481 NULL +rndis_proc_write_41483 rndis_proc_write 0-3 41483 NULL nohasharray +udc_bind_to_driver_41483 udc_bind_to_driver 0 41483 &rndis_proc_write_41483 ++rocker_port_fwd_enable_41484 rocker_port_fwd_enable 0 41484 NULL +ip1001_config_init_41490 ip1001_config_init 0 41490 NULL +wep_interrupt_read_41492 wep_interrupt_read 3-0 41492 NULL +btrfs_setsize_41495 btrfs_setsize 0 41495 NULL @@ -143902,7 +151013,8 @@ index 0000000..19e2901 +rng_dev_read_41581 rng_dev_read 3-0 41581 NULL nohasharray +wl12xx_sdio_raw_write_41581 wl12xx_sdio_raw_write 0 41581 &rng_dev_read_41581 +bnx2x_vfpf_init_41583 bnx2x_vfpf_init 0 41583 NULL -+security_task_setnice_41584 security_task_setnice 0 41584 NULL ++security_task_setnice_41584 security_task_setnice 0 41584 NULL nohasharray ++mv88e6xxx_wait_41584 mv88e6xxx_wait 0 41584 &security_task_setnice_41584 +nfsd_readv_41585 nfsd_readv 4 41585 NULL +drbd_send_command_41586 drbd_send_command 4-6 41586 NULL +batadv_tvlv_container_ogm_append_41588 batadv_tvlv_container_ogm_append 4 41588 NULL @@ -143995,6 +151107,7 @@ index 0000000..19e2901 +SyS_bpf_41770 SyS_bpf 3 41770 &blk_mq_hw_sysfs_run_show_41770 +mmc_sdio_power_restore_41772 mmc_sdio_power_restore 0 41772 NULL +brcmf_cfg80211_vndr_cmds_dcmd_handler_41776 brcmf_cfg80211_vndr_cmds_dcmd_handler 4 41776 NULL ++x25_recvmsg_41793 x25_recvmsg 3 41793 NULL +iwl_dbgfs_bt_notif_read_41794 iwl_dbgfs_bt_notif_read 3-0 41794 NULL +flash_dev_run_41795 flash_dev_run 0 41795 NULL +nilfs_sufile_alloc_41798 nilfs_sufile_alloc 0 41798 NULL @@ -144195,7 +151308,7 @@ index 0000000..19e2901 +resources_store_42255 resources_store 0-4 42255 NULL +netxen_nic_map_indirect_address_128M_42257 netxen_nic_map_indirect_address_128M 2 42257 NULL nohasharray +amd5536_udc_start_42257 amd5536_udc_start 0 42257 &netxen_nic_map_indirect_address_128M_42257 -+find_last_bit_42260 find_last_bit 0 42260 NULL ++find_last_bit_42260 find_last_bit 0-2 42260 NULL +show_fc_host_port_name_42264 show_fc_host_port_name 0 42264 NULL +ctnetlink_proto_size_42270 ctnetlink_proto_size 0 42270 NULL +__pcpu_size_to_slot_42271 __pcpu_size_to_slot 0 42271 NULL @@ -144304,7 +151417,8 @@ index 0000000..19e2901 +sys_vmsplice_42533 sys_vmsplice 3 42533 &snd_emux_create_port_42533 +sdev_store_evt_capacity_change_reported_42538 sdev_store_evt_capacity_change_reported 0-4 42538 NULL +mtip_hw_submit_io_42539 mtip_hw_submit_io 4 42539 NULL -+mt9m111_set_hvflip_42542 mt9m111_set_hvflip 0 42542 NULL ++mt9m111_set_hvflip_42542 mt9m111_set_hvflip 0 42542 NULL nohasharray ++smk_read_unconfined_42542 smk_read_unconfined 3 42542 &mt9m111_set_hvflip_42542 +__wa_xfer_setup_42543 __wa_xfer_setup 0 42543 NULL nohasharray +__register_ftrace_function_42543 __register_ftrace_function 0 42543 &__wa_xfer_setup_42543 +dbAllocNear_42546 dbAllocNear 0 42546 NULL @@ -144340,13 +151454,14 @@ index 0000000..19e2901 +rt2500pci_set_device_state_42620 rt2500pci_set_device_state 0 42620 NULL nohasharray +vlan_dev_open_42620 vlan_dev_open 0 42620 &rt2500pci_set_device_state_42620 +secinfo_parse_42624 secinfo_parse 0 42624 NULL -+mv88e6xxx_phy_read_42625 mv88e6xxx_phy_read 0 42625 NULL ++mv88e6xxx_phy_read_42625 mv88e6xxx_phy_read 0-2 42625 NULL +sys_move_pages_42626 sys_move_pages 2 42626 NULL nohasharray +map_show_42626 map_show 0 42626 &sys_move_pages_42626 +xfs_attr_leaf_removename_42629 xfs_attr_leaf_removename 0 42629 NULL +crypto_ahash_walk_first_42630 crypto_ahash_walk_first 0 42630 NULL +snd_hwdep_dev_register_42632 snd_hwdep_dev_register 0 42632 NULL +ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout_42635 ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout 3 42635 NULL ++iommu_tbl_range_alloc_42638 iommu_tbl_range_alloc 5-3-6 42638 NULL +b43legacy_wireless_core_init_42640 b43legacy_wireless_core_init 0 42640 NULL +br_mdb_rehash_42643 br_mdb_rehash 2 42643 NULL +num_controllers_42644 num_controllers 0 42644 NULL @@ -144665,7 +151780,8 @@ index 0000000..19e2901 +set_peripheral_43353 set_peripheral 0 43353 NULL +gart_free_coherent_43362 gart_free_coherent 2-4 43362 NULL +may_create_key_43363 may_create_key 0 43363 NULL -+pm_print_times_show_43364 pm_print_times_show 0 43364 NULL ++pm_print_times_show_43364 pm_print_times_show 0 43364 NULL nohasharray ++btrfs_check_data_free_space_43364 btrfs_check_data_free_space 0 43364 &pm_print_times_show_43364 +pn_init_43370 pn_init 0 43370 NULL +proc_sys_permission_43371 proc_sys_permission 0 43371 NULL nohasharray +bnad_tx_msix_register_43371 bnad_tx_msix_register 0 43371 &proc_sys_permission_43371 @@ -144745,7 +151861,8 @@ index 0000000..19e2901 +ll_direct_IO_26_43530 ll_direct_IO_26 4 43530 &alloc_instance_buffer_43530 +dvb_ca_en50221_io_write_43533 dvb_ca_en50221_io_write 3-0 43533 NULL nohasharray +core_scsi3_alloc_aptpl_registration_43533 core_scsi3_alloc_aptpl_registration 0 43533 &dvb_ca_en50221_io_write_43533 -+read_events_43534 read_events 3 43534 NULL ++read_events_43534 read_events 3 43534 NULL nohasharray ++pdu_write_u_43534 pdu_write_u 3 43534 &read_events_43534 +cachefiles_daemon_write_43535 cachefiles_daemon_write 3-0 43535 NULL +xfs_qm_vop_chown_reserve_43536 xfs_qm_vop_chown_reserve 0 43536 NULL +store_43537 store 0-3 43537 NULL @@ -145032,10 +152149,12 @@ index 0000000..19e2901 +mptscsih_change_queue_depth_44196 mptscsih_change_queue_depth 2-0 44196 NULL nohasharray +queue_int_on_old_endpoint_44196 queue_int_on_old_endpoint 0 44196 &mptscsih_change_queue_depth_44196 +pvclock_gtod_notify_44200 pvclock_gtod_notify 0 44200 NULL -+iwl_init_alive_start_44203 iwl_init_alive_start 0 44203 NULL ++iwl_init_alive_start_44203 iwl_init_alive_start 0 44203 NULL nohasharray ++virtinput_cfg_select_44203 virtinput_cfg_select 0 44203 &iwl_init_alive_start_44203 +core_alua_show_access_type_44204 core_alua_show_access_type 0 44204 NULL +roccat_common2_sysfs_read_info_44206 roccat_common2_sysfs_read_info 0-5-6 44206 NULL +wl1271_acx_mem_map_44208 wl1271_acx_mem_map 0 44208 NULL ++__set_free_44211 __set_free 2 44211 NULL +claim_ptd_buffers_44213 claim_ptd_buffers 3 44213 NULL nohasharray +write_44213 write 0 44213 &claim_ptd_buffers_44213 +qib_assign_ctxt_44217 qib_assign_ctxt 0 44217 NULL @@ -145062,6 +152181,7 @@ index 0000000..19e2901 +enlarge_skb_44248 enlarge_skb 2 44248 NULL +ecryptfs_init_lower_file_44249 ecryptfs_init_lower_file 0 44249 NULL +rbd_parent_show_44252 rbd_parent_show 0 44252 NULL ++st33zp24_i2c_recv_44256 st33zp24_i2c_recv 4 44256 NULL +tm6000_i2c_xfer_44260 tm6000_i2c_xfer 0-3 44260 NULL +mgt_commit_44264 mgt_commit 0 44264 NULL nohasharray +ec_bhf_open_44264 ec_bhf_open 0 44264 &mgt_commit_44264 @@ -145144,7 +152264,8 @@ index 0000000..19e2901 +iwl_dbgfs_bf_params_write_44450 iwl_dbgfs_bf_params_write 0-3 44450 NULL nohasharray +eth_change_mtu_44450 eth_change_mtu 0 44450 &iwl_dbgfs_bf_params_write_44450 +koneplus_sysfs_read_profilex_buttons_44454 koneplus_sysfs_read_profilex_buttons 0-5-6 44454 NULL -+dma_mask_bits_show_44456 dma_mask_bits_show 0 44456 NULL ++dma_mask_bits_show_44456 dma_mask_bits_show 0 44456 NULL nohasharray ++sensor_hub_get_feature_44456 sensor_hub_get_feature 0-4 44456 &dma_mask_bits_show_44456 +af_alg_make_sg_44459 af_alg_make_sg 0-3 44459 NULL +snd_pcm_do_suspend_44460 snd_pcm_do_suspend 0 44460 NULL +___alloc_bootmem_node_nopanic_44461 ___alloc_bootmem_node_nopanic 2 44461 NULL @@ -145238,6 +152359,7 @@ index 0000000..19e2901 +sock_write_iter_44676 sock_write_iter 0 44676 NULL +ipheth_rx_submit_44679 ipheth_rx_submit 0 44679 NULL nohasharray +velocity_open_44679 velocity_open 0 44679 &ipheth_rx_submit_44679 ++rawv6_sendmsg_44680 rawv6_sendmsg 3 44680 NULL +fm10k_iov_alloc_data_44682 fm10k_iov_alloc_data 0-2 44682 NULL +st_try_direct_io_show_44683 st_try_direct_io_show 0 44683 NULL +cifs_setattr_nounix_44685 cifs_setattr_nounix 0 44685 NULL nohasharray @@ -145353,6 +152475,7 @@ index 0000000..19e2901 +inode_setsecurity_44924 inode_setsecurity 0 44924 NULL nohasharray +ath5k_hw_write_ofdm_timings_44924 ath5k_hw_write_ofdm_timings 0 44924 &inode_setsecurity_44924 +lp855x_get_bl_ctl_mode_44927 lp855x_get_bl_ctl_mode 0 44927 NULL ++bcm_recvmsg_44928 bcm_recvmsg 3 44928 NULL +get_cpu_vid_44938 get_cpu_vid 0 44938 NULL nohasharray +store_rxbuf_44938 store_rxbuf 0-4 44938 &get_cpu_vid_44938 +loop_attr_do_show_backing_file_44940 loop_attr_do_show_backing_file 0 44940 NULL @@ -145386,10 +152509,12 @@ index 0000000..19e2901 +ptrace_writedata_45021 ptrace_writedata 4 45021 NULL nohasharray +read_block_bitmap_45021 read_block_bitmap 2 45021 &ptrace_writedata_45021 nohasharray +iscsi_tpg_param_store_FirstBurstLength_45021 iscsi_tpg_param_store_FirstBurstLength 0-3 45021 &read_block_bitmap_45021 -+ath10k_htt_connect_45022 ath10k_htt_connect 0 45022 NULL ++ath10k_htt_connect_45022 ath10k_htt_connect 0 45022 NULL nohasharray ++hfsplus_getxattr_45022 hfsplus_getxattr 0 45022 &ath10k_htt_connect_45022 +show_state_power_usage_45023 show_state_power_usage 0 45023 NULL nohasharray +zd1211b_hw_init_hmac_45023 zd1211b_hw_init_hmac 0 45023 &show_state_power_usage_45023 -+dm_kvzalloc_45025 dm_kvzalloc 1 45025 NULL ++dm_kvzalloc_45025 dm_kvzalloc 1 45025 NULL nohasharray ++rose_sendmsg_45025 rose_sendmsg 3 45025 &dm_kvzalloc_45025 +hotplug_cfd_45029 hotplug_cfd 0 45029 NULL +snd_seq_kernel_client_ctl_45032 snd_seq_kernel_client_ctl 0 45032 NULL +vfio_ecap_init_45033 vfio_ecap_init 0 45033 NULL @@ -145427,7 +152552,8 @@ index 0000000..19e2901 +set_auto_temp_min_45111 set_auto_temp_min 0-4 45111 NULL +pwr_missing_bcns_cnt_read_45113 pwr_missing_bcns_cnt_read 3-0 45113 NULL +usbdev_read_45114 usbdev_read 3-0 45114 NULL -+v9fs_xattr_user_set_45117 v9fs_xattr_user_set 0 45117 NULL ++v9fs_xattr_user_set_45117 v9fs_xattr_user_set 0 45117 NULL nohasharray ++sock_sendmsg_45117 sock_sendmsg 0 45117 &v9fs_xattr_user_set_45117 +edd_show_legacy_max_cylinder_45119 edd_show_legacy_max_cylinder 0 45119 NULL +isku_sysfs_write_reset_45133 isku_sysfs_write_reset 6-0-5 45133 NULL nohasharray +in_write_bytes_avail_show_45133 in_write_bytes_avail_show 0 45133 &isku_sysfs_write_reset_45133 @@ -145442,7 +152568,8 @@ index 0000000..19e2901 +tcp_setsockopt_45152 tcp_setsockopt 0 45152 NULL nohasharray +st_probe_45152 st_probe 0 45152 &tcp_setsockopt_45152 +device_write_45156 device_write 3-0 45156 NULL -+usX2Y_urbs_start_45159 usX2Y_urbs_start 0 45159 NULL ++usX2Y_urbs_start_45159 usX2Y_urbs_start 0 45159 NULL nohasharray ++ocfs2_dq_frozen_trigger_45159 ocfs2_dq_frozen_trigger 4 45159 &usX2Y_urbs_start_45159 +SYSC_write_45160 SYSC_write 3-0 45160 NULL +tomoyo_write_self_45161 tomoyo_write_self 3-0 45161 NULL +xennet_create_queues_45162 xennet_create_queues 2 45162 NULL @@ -145503,6 +152630,7 @@ index 0000000..19e2901 +get_raw_temp_45318 get_raw_temp 0 45318 NULL +__i2c_hid_command_45321 __i2c_hid_command 0 45321 NULL +compass_command_45324 compass_command 0 45324 NULL ++quirk_strict_duplicate_filter_write_45325 quirk_strict_duplicate_filter_write 3 45325 NULL +label_cpu_DTS_45336 label_cpu_DTS 0 45336 NULL nohasharray +bnx2x_vfpf_config_mac_45336 bnx2x_vfpf_config_mac 0 45336 &label_cpu_DTS_45336 +copy_vm86_regs_from_user_45340 copy_vm86_regs_from_user 3 45340 NULL @@ -145513,6 +152641,7 @@ index 0000000..19e2901 +posix_lock_file_45352 posix_lock_file 0 45352 NULL +isl1208_rtc_read_time_45356 isl1208_rtc_read_time 0 45356 NULL +wl12xx_acx_set_rate_mgmt_params_45357 wl12xx_acx_set_rate_mgmt_params 0 45357 NULL ++xfs_file_aio_write_checks_45371 xfs_file_aio_write_checks 0 45371 NULL +hotkey_poll_freq_store_45373 hotkey_poll_freq_store 0-4 45373 NULL +null_alloc_repbuf_45375 null_alloc_repbuf 3 45375 NULL +wmi_set_channel_45380 wmi_set_channel 0 45380 NULL @@ -145714,7 +152843,8 @@ index 0000000..19e2901 +b43_pcmcia_resume_45799 b43_pcmcia_resume 0 45799 &cbaf_cc_upload_45799 +raw_setsockopt_45800 raw_setsockopt 5-0 45800 NULL +adp5520_bl_dark_dim_show_45802 adp5520_bl_dark_dim_show 0 45802 NULL nohasharray -+michael_update_45802 michael_update 0 45802 &adp5520_bl_dark_dim_show_45802 ++michael_update_45802 michael_update 0 45802 &adp5520_bl_dark_dim_show_45802 nohasharray ++quirk_simultaneous_discovery_read_45802 quirk_simultaneous_discovery_read 3 45802 &michael_update_45802 +kvmclock_cpufreq_notifier_45803 kvmclock_cpufreq_notifier 0 45803 NULL +nct7802_read_fan_min_45804 nct7802_read_fan_min 0 45804 NULL +lbs_rdbbp_read_45805 lbs_rdbbp_read 3-0 45805 NULL @@ -145777,7 +152907,8 @@ index 0000000..19e2901 +host_store_raid_offload_debug_45928 host_store_raid_offload_debug 0-4 45928 NULL +ext2_xattr_security_get_45930 ext2_xattr_security_get 0 45930 NULL nohasharray +_dln2_transfer_45930 _dln2_transfer 0 45930 &ext2_xattr_security_get_45930 -+request_ihex_firmware_45931 request_ihex_firmware 0 45931 NULL ++request_ihex_firmware_45931 request_ihex_firmware 0 45931 NULL nohasharray ++recomp_data_node_45931 recomp_data_node 0 45931 &request_ihex_firmware_45931 +bttv_s_ctrl_45933 bttv_s_ctrl 0 45933 NULL +alloc_mr_45935 alloc_mr 1 45935 NULL nohasharray +dlm_id_show_45935 dlm_id_show 0 45935 &alloc_mr_45935 @@ -145811,7 +152942,8 @@ index 0000000..19e2901 +dn_device_event_46004 dn_device_event 0 46004 NULL +ci_ll_read_46006 ci_ll_read 0 46006 NULL +rtl2832_regmap_gather_write_46011 rtl2832_regmap_gather_write 0 46011 NULL -+rt2800pci_set_device_state_46015 rt2800pci_set_device_state 0 46015 NULL ++rt2800pci_set_device_state_46015 rt2800pci_set_device_state 0 46015 NULL nohasharray ++snd_hdac_exec_verb_46015 snd_hdac_exec_verb 0 46015 &rt2800pci_set_device_state_46015 +rt2800mmio_enable_radio_46016 rt2800mmio_enable_radio 0 46016 NULL +snd_cx231xx_capture_trigger_46017 snd_cx231xx_capture_trigger 0 46017 NULL +acpi_ds_method_data_set_value_46018 acpi_ds_method_data_set_value 0 46018 NULL @@ -145863,7 +152995,8 @@ index 0000000..19e2901 +gpio_keys_store_disabled_switches_46139 gpio_keys_store_disabled_switches 0-4 46139 &twl6030_pwm_enable_46139 +nilfs_btree_assign_p_46142 nilfs_btree_assign_p 0 46142 NULL +__walk_page_range_46146 __walk_page_range 0 46146 NULL -+elan_i2c_get_checksum_46148 elan_i2c_get_checksum 0 46148 NULL ++elan_i2c_get_checksum_46148 elan_i2c_get_checksum 0 46148 NULL nohasharray ++pcibios_sriov_enable_46148 pcibios_sriov_enable 0 46148 &elan_i2c_get_checksum_46148 +set_temp_auto_temp_min_46149 set_temp_auto_temp_min 0-4 46149 NULL +ddp_clear_map_46152 ddp_clear_map 4 46152 NULL +dgram_bind_46155 dgram_bind 0 46155 NULL @@ -145871,6 +153004,7 @@ index 0000000..19e2901 +si470x_set_register_46160 si470x_set_register 0 46160 NULL +ov9740_reg_write_array_46162 ov9740_reg_write_array 0 46162 NULL nohasharray +top_off_timer_store_46162 top_off_timer_store 4-0 46162 &ov9740_reg_write_array_46162 ++atalk_sendmsg_46165 atalk_sendmsg 3 46165 NULL +qla2x00_sysfs_write_nvram_46166 qla2x00_sysfs_write_nvram 0-6-5 46166 NULL +pcf8583_rtc_read_time_46169 pcf8583_rtc_read_time 0 46169 NULL +write_index_46171 write_index 0 46171 NULL @@ -145881,7 +153015,8 @@ index 0000000..19e2901 +twl_direction_out_46182 twl_direction_out 2-0 46182 NULL nohasharray +sync_inode_metadata_46182 sync_inode_metadata 0 46182 &twl_direction_out_46182 +vxge_os_dma_malloc_46184 vxge_os_dma_malloc 2 46184 NULL -+kszphy_config_init_46188 kszphy_config_init 0 46188 NULL ++kszphy_config_init_46188 kszphy_config_init 0 46188 NULL nohasharray ++write8_reg_46188 write8_reg 4 46188 &kszphy_config_init_46188 +ax25_device_event_46189 ax25_device_event 0 46189 NULL +atmel_set_mac_address_46192 atmel_set_mac_address 0 46192 NULL +fq_resize_46195 fq_resize 2 46195 NULL @@ -145986,6 +153121,7 @@ index 0000000..19e2901 +c2port_show_dev_id_46410 c2port_show_dev_id 0 46410 NULL +i2c_hid_output_raw_report_46413 i2c_hid_output_raw_report 0-3 46413 NULL nohasharray +w1_master_attribute_show_slave_count_46413 w1_master_attribute_show_slave_count 0 46413 &i2c_hid_output_raw_report_46413 ++platform_gpio_count_46416 platform_gpio_count 0 46416 NULL +addr_to_user_46418 addr_to_user 0 46418 NULL +vmbus_sendpacket_pagebuffer_46420 vmbus_sendpacket_pagebuffer 0 46420 NULL +iscsi_tpg_param_show_ErrorRecoveryLevel_46422 iscsi_tpg_param_show_ErrorRecoveryLevel 0 46422 NULL @@ -146062,6 +153198,7 @@ index 0000000..19e2901 +set_min_uA_46584 set_min_uA 0-4 46584 NULL +__iwl_up_46589 __iwl_up 0 46589 NULL +snd_compr_write_data_46592 snd_compr_write_data 3-0 46592 NULL ++ec_device_read_46594 ec_device_read 3 46594 NULL +copy_gr_arg_46595 copy_gr_arg 0 46595 NULL +show_mute_46600 show_mute 0 46600 NULL nohasharray +mode_store_46600 mode_store 0-4 46600 &show_mute_46600 @@ -146258,6 +153395,7 @@ index 0000000..19e2901 +acerhdf_get_fanstate_47052 acerhdf_get_fanstate 0 47052 &wm8994_set_bits_47052 +final_47055 final 0 47055 NULL +open_rx_47057 open_rx 0 47057 NULL ++udpv6_sendmsg_47060 udpv6_sendmsg 3 47060 NULL +dg_dispatch_as_guest_47063 dg_dispatch_as_guest 0 47063 NULL +ltc2945_show_value_47064 ltc2945_show_value 0 47064 NULL nohasharray +read_pod_47064 read_pod 0 47064 <c2945_show_value_47064 @@ -146293,7 +153431,8 @@ index 0000000..19e2901 +ses_recv_diag_47143 ses_recv_diag 4 47143 &acpi_ut_initialize_buffer_47143 +store_target_kb_47150 store_target_kb 0-4 47150 NULL +sctp_get_port_47151 sctp_get_port 0 47151 NULL -+get_attr_rdpmc_47155 get_attr_rdpmc 0 47155 NULL ++get_attr_rdpmc_47155 get_attr_rdpmc 0 47155 NULL nohasharray ++mwifiex_alloc_dma_align_buf_47155 mwifiex_alloc_dma_align_buf 1 47155 &get_attr_rdpmc_47155 +il4965_mac_start_47159 il4965_mac_start 0 47159 NULL +gva_to_gpa_47160 gva_to_gpa 0 47160 NULL nohasharray +show_streaming_47160 show_streaming 0 47160 &gva_to_gpa_47160 @@ -146348,6 +153487,7 @@ index 0000000..19e2901 +SYSC_semop_47292 SYSC_semop 3 47292 NULL +show_47293 show 0 47293 NULL +uvc_video_enable_47296 uvc_video_enable 0 47296 NULL ++rhashtable_rehash_attach_47298 rhashtable_rehash_attach 0 47298 NULL +tx_internal_desc_overflow_read_47300 tx_internal_desc_overflow_read 3-0 47300 NULL +virtqueue_add_47306 virtqueue_add 3 47306 NULL +il4965_fill_txpower_tbl_47307 il4965_fill_txpower_tbl 0 47307 NULL @@ -146358,6 +153498,7 @@ index 0000000..19e2901 +get_l4proto_47318 get_l4proto 0 47318 NULL +usX2Y_usbpcm_urbs_start_47323 usX2Y_usbpcm_urbs_start 0 47323 NULL +snd_sb16_playback_trigger_47332 snd_sb16_playback_trigger 0 47332 NULL ++sock_sendmsg_nosec_47333 sock_sendmsg_nosec 0 47333 NULL +sctp_auth_set_active_key_47334 sctp_auth_set_active_key 0 47334 NULL nohasharray +fd_configure_device_47334 fd_configure_device 0 47334 &sctp_auth_set_active_key_47334 +next_bitstream_store_47342 next_bitstream_store 0-4 47342 NULL @@ -146378,6 +153519,7 @@ index 0000000..19e2901 +show_ipv4_iface_bootproto_47376 show_ipv4_iface_bootproto 0 47376 NULL +stmmac_enable_47377 stmmac_enable 0 47377 NULL +shmem_getpage_47382 shmem_getpage 0 47382 NULL ++tun_recvmsg_47383 tun_recvmsg 3 47383 NULL +nv_rd32_47390 nv_rd32 0 47390 NULL nohasharray +trace_options_core_read_47390 trace_options_core_read 3 47390 &nv_rd32_47390 +pfkey_sendmsg_47394 pfkey_sendmsg 4-0 47394 NULL @@ -146401,7 +153543,8 @@ index 0000000..19e2901 +array_size_store_47421 array_size_store 0-3 47421 &vzalloc_47421 +mvs_task_prep_ata_47424 mvs_task_prep_ata 0 47424 NULL +bLength_show_47432 bLength_show 0 47432 NULL -+fop_write_47433 fop_write 0-3 47433 NULL ++fop_write_47433 fop_write 0-3 47433 NULL nohasharray ++caif_seqpkt_sendmsg_47433 caif_seqpkt_sendmsg 3 47433 &fop_write_47433 +dibx000_i2c_gated_tuner_xfer_47436 dibx000_i2c_gated_tuner_xfer 0-3 47436 NULL +wl128x_configure_mcs_pll_47437 wl128x_configure_mcs_pll 0 47437 NULL +niu_reset_tx_bmac_47440 niu_reset_tx_bmac 0 47440 NULL @@ -146453,6 +153596,7 @@ index 0000000..19e2901 +leb_read_sanity_check_47551 leb_read_sanity_check 0 47551 &drbg_statelen_47551 +pci_endrun_init_47554 pci_endrun_init 0 47554 NULL +_ctl_diag_trigger_scsi_show_47558 _ctl_diag_trigger_scsi_show 0 47558 NULL ++acpi_gpio_package_count_47562 acpi_gpio_package_count 0 47562 NULL +send_cmd_47563 send_cmd 0 47563 NULL +xfs_inobt_alloc_block_47565 xfs_inobt_alloc_block 0 47565 NULL +send_command_47567 send_command 0 47567 NULL nohasharray @@ -146504,6 +153648,7 @@ index 0000000..19e2901 +queue_attr_store_47683 queue_attr_store 0-4 47683 NULL +mbus_show_47685 mbus_show 0 47685 NULL nohasharray +gprs_set_mtu_47685 gprs_set_mtu 0 47685 &mbus_show_47685 ++rtl8723b_parse_firmware_47686 rtl8723b_parse_firmware 0 47686 NULL +ce6230_ctrl_msg_47692 ce6230_ctrl_msg 0 47692 NULL +target_stat_scsi_lu_show_attr_num_cmds_47693 target_stat_scsi_lu_show_attr_num_cmds 0 47693 NULL nohasharray +niu_reset_rx_bmac_47693 niu_reset_rx_bmac 0 47693 &target_stat_scsi_lu_show_attr_num_cmds_47693 @@ -146567,6 +153712,7 @@ index 0000000..19e2901 +rtl_store_debug_level_47834 rtl_store_debug_level 0-4 47834 NULL +pinconf_dbg_config_write_47835 pinconf_dbg_config_write 3-0 47835 NULL nohasharray +lanai_send_47835 lanai_send 0 47835 &pinconf_dbg_config_write_47835 ++raw_sendmsg_47838 raw_sendmsg 3 47838 NULL +cmos_nvram_write_47839 cmos_nvram_write 0-6-5 47839 NULL +did_show_47843 did_show 0 47843 NULL nohasharray +alloc_ringdesc_47843 alloc_ringdesc 0 47843 &did_show_47843 @@ -146591,6 +153737,7 @@ index 0000000..19e2901 +keyctl_instantiate_key_common_47889 keyctl_instantiate_key_common 4 47889 NULL +read_prph_47892 read_prph 0 47892 NULL +erst_exec_skip_next_instruction_if_true_47893 erst_exec_skip_next_instruction_if_true 0 47893 NULL ++add_fake_beep_paths_47898 add_fake_beep_paths 0 47898 NULL +read_regr_47902 read_regr 0 47902 NULL nohasharray +read_dsmargin_47902 read_dsmargin 0 47902 &read_regr_47902 +osd_req_read_sg_47905 osd_req_read_sg 5 47905 NULL @@ -146697,7 +153844,8 @@ index 0000000..19e2901 +dn_fib_count_nhs_48145 dn_fib_count_nhs 0 48145 NULL +__tcp_push_pending_frames_48148 __tcp_push_pending_frames 2 48148 NULL +SyS_vmsplice_48150 SyS_vmsplice 3 48150 NULL -+_add_to_r4w_48152 _add_to_r4w 4 48152 NULL ++_add_to_r4w_48152 _add_to_r4w 4 48152 NULL nohasharray ++bitmap_onto_48152 bitmap_onto 4 48152 &_add_to_r4w_48152 +bnx2i_host_get_param_48156 bnx2i_host_get_param 0 48156 NULL +isr_dma1_done_read_48159 isr_dma1_done_read 3-0 48159 NULL nohasharray +rx4581_get_datetime_48159 rx4581_get_datetime 0 48159 &isr_dma1_done_read_48159 @@ -146825,7 +153973,8 @@ index 0000000..19e2901 +b43legacy_chip_init_48439 b43legacy_chip_init 0 48439 NULL +print_filtered_48442 print_filtered 0-2 48442 NULL +snd_find_free_minor_48446 snd_find_free_minor 0 48446 NULL -+vlv_pipe_crc_ctl_reg_48447 vlv_pipe_crc_ctl_reg 0 48447 NULL ++vlv_pipe_crc_ctl_reg_48447 vlv_pipe_crc_ctl_reg 0 48447 NULL nohasharray ++ext3_direct_IO_48447 ext3_direct_IO 3 48447 &vlv_pipe_crc_ctl_reg_48447 +shmem_add_to_page_cache_48451 shmem_add_to_page_cache 0 48451 NULL +stac_beep_switch_ctl_48456 stac_beep_switch_ctl 0 48456 NULL nohasharray +dlfb_ops_set_par_48456 dlfb_ops_set_par 0 48456 &stac_beep_switch_ctl_48456 @@ -146871,6 +154020,7 @@ index 0000000..19e2901 +udp_lib_get_port_48545 udp_lib_get_port 0 48545 NULL nohasharray +l2tp_ip6_open_48545 l2tp_ip6_open 0 48545 &udp_lib_get_port_48545 +nvbios_extend_48550 nvbios_extend 2 48550 NULL ++f2fs_direct_IO_48556 f2fs_direct_IO 3 48556 NULL +b43_upload_initvals_48559 b43_upload_initvals 0 48559 NULL +m88e1116r_config_init_48560 m88e1116r_config_init 0 48560 NULL +ath10k_fw_stats_read_48561 ath10k_fw_stats_read 3-0 48561 NULL @@ -146891,6 +154041,7 @@ index 0000000..19e2901 +update_fw_48597 update_fw 0 48597 NULL +get_register_interruptible_48598 get_register_interruptible 0 48598 NULL +label_SKIN_48603 label_SKIN 0 48603 NULL ++ext4_ind_direct_IO_48607 ext4_ind_direct_IO 3 48607 NULL +il3945_show_channels_48609 il3945_show_channels 0 48609 NULL +ctrl_48612 ctrl 0 48612 NULL +ufs_dtogd_48616 ufs_dtogd 0-2 48616 NULL @@ -146905,7 +154056,8 @@ index 0000000..19e2901 +uwb_radio_force_channel_48645 uwb_radio_force_channel 0 48645 NULL +isl29003_set_mode_48650 isl29003_set_mode 0 48650 NULL +ll_rw_extents_stats_pp_seq_write_48651 ll_rw_extents_stats_pp_seq_write 3 48651 NULL -+__efx_reconfigure_port_48652 __efx_reconfigure_port 0 48652 NULL ++__efx_reconfigure_port_48652 __efx_reconfigure_port 0 48652 NULL nohasharray ++packet_recvmsg_48652 packet_recvmsg 3 48652 &__efx_reconfigure_port_48652 +mtd_read_48655 mtd_read 0 48655 NULL +show_vrm_reg_48661 show_vrm_reg 0 48661 NULL nohasharray +tg3_phy_toggle_auxctl_smdsp_48661 tg3_phy_toggle_auxctl_smdsp 0 48661 &show_vrm_reg_48661 @@ -146958,7 +154110,8 @@ index 0000000..19e2901 +apds990x_lux_thresh_below_show_48763 apds990x_lux_thresh_below_show 0 48763 NULL +l2cap_segment_sdu_48772 l2cap_segment_sdu 4 48772 NULL nohasharray +event_buffer_read_48772 event_buffer_read 0-3 48772 &l2cap_segment_sdu_48772 -+rds_set_bool_option_48773 rds_set_bool_option 0 48773 NULL ++rds_set_bool_option_48773 rds_set_bool_option 0 48773 NULL nohasharray ++gpiod_count_48773 gpiod_count 0 48773 &rds_set_bool_option_48773 +boottime_set_48781 boottime_set 0-4 48781 NULL +lm3533_ctrlbank_set_pwm_48784 lm3533_ctrlbank_set_pwm 0 48784 NULL +transfer_48788 transfer 0 48788 NULL @@ -147047,7 +154200,8 @@ index 0000000..19e2901 +ntb_transport_rx_enqueue_48986 ntb_transport_rx_enqueue 0 48986 NULL +show_48988 show 0 48988 NULL +_alloc_set_attr_list_48991 _alloc_set_attr_list 4 48991 NULL -+nes_store_nonidx_data_48992 nes_store_nonidx_data 0-3 48992 NULL ++nes_store_nonidx_data_48992 nes_store_nonidx_data 0-3 48992 NULL nohasharray ++mei_cl_alloc_cb_48992 mei_cl_alloc_cb 2 48992 &nes_store_nonidx_data_48992 +xen_memory_notifier_48993 xen_memory_notifier 0 48993 NULL +rds_rm_size_48996 rds_rm_size 0-2 48996 NULL nohasharray +rionet_open_48996 rionet_open 0 48996 &rds_rm_size_48996 @@ -147112,7 +154266,8 @@ index 0000000..19e2901 +target_core_dev_pr_show_attr_res_pr_all_tgt_pts_49150 target_core_dev_pr_show_attr_res_pr_all_tgt_pts 0 49150 NULL +atyfb_setup_generic_49151 atyfb_setup_generic 3 49151 NULL nohasharray +divas_read_49151 divas_read 0-3 49151 &atyfb_setup_generic_49151 nohasharray -+patch_vt1812_49151 patch_vt1812 0 49151 &divas_read_49151 ++patch_vt1812_49151 patch_vt1812 0 49151 &divas_read_49151 nohasharray ++p9_client_zc_rpc_49151 p9_client_zc_rpc 7 49151 &patch_vt1812_49151 +bq24190_write_mask_49153 bq24190_write_mask 0 49153 NULL +ipwireless_tty_received_49154 ipwireless_tty_received 3 49154 NULL +f2fs_acl_count_49155 f2fs_acl_count 0-1 49155 NULL @@ -147219,7 +154374,8 @@ index 0000000..19e2901 +quirk_pcie_aspm_write_49416 quirk_pcie_aspm_write 0 49416 NULL +kbd_backlight_mode_store_49419 kbd_backlight_mode_store 0-4 49419 NULL +iscsi_nacl_attrib_show_random_r2t_offsets_49422 iscsi_nacl_attrib_show_random_r2t_offsets 0 49422 NULL -+hdmiphy_s_stream_49426 hdmiphy_s_stream 0 49426 NULL ++hdmiphy_s_stream_49426 hdmiphy_s_stream 0 49426 NULL nohasharray ++gfs2_quota_check_49426 gfs2_quota_check 0 49426 &hdmiphy_s_stream_49426 +et131x_get_regs_len_49430 et131x_get_regs_len 0 49430 NULL +ds1685_rtc_read_time_49432 ds1685_rtc_read_time 0 49432 NULL +probe_kernel_read_49437 probe_kernel_read 0 49437 NULL @@ -147336,6 +154492,7 @@ index 0000000..19e2901 +write_pool_49718 write_pool 3-0 49718 NULL +create_modalias_49720 create_modalias 0 49720 NULL +alloc_kmem_cache_node_49725 alloc_kmem_cache_node 0 49725 NULL ++__netlink_insert_49728 __netlink_insert 0 49728 NULL +pcnet_open_49729 pcnet_open 0 49729 NULL +dev_pm_qos_constraints_allocate_49731 dev_pm_qos_constraints_allocate 0 49731 NULL +sys_fsetxattr_49736 sys_fsetxattr 4 49736 NULL @@ -147348,7 +154505,8 @@ index 0000000..19e2901 +show_usblim_49746 show_usblim 0 49746 NULL nohasharray +uvc_init_video_49746 uvc_init_video 0 49746 &show_usblim_49746 +firmware_loading_show_49748 firmware_loading_show 0 49748 NULL -+__niu_wait_bits_clear_ipp_49750 __niu_wait_bits_clear_ipp 0 49750 NULL ++__niu_wait_bits_clear_ipp_49750 __niu_wait_bits_clear_ipp 0 49750 NULL nohasharray ++snd_hdac_get_connections_49750 snd_hdac_get_connections 0 49750 &__niu_wait_bits_clear_ipp_49750 +btrfs_chunk_num_stripes_49751 btrfs_chunk_num_stripes 0 49751 NULL +fuse_wr_pages_49753 fuse_wr_pages 0-2-1 49753 NULL +lifetime_write_kbytes_show_49754 lifetime_write_kbytes_show 0 49754 NULL @@ -147393,6 +154551,7 @@ index 0000000..19e2901 +ath6kl_fwlog_block_read_49836 ath6kl_fwlog_block_read 3-0 49836 NULL +snd_azf3328_pcm_prepare_49838 snd_azf3328_pcm_prepare 0 49838 NULL nohasharray +pci_add_dynid_49838 pci_add_dynid 0 49838 &snd_azf3328_pcm_prepare_49838 ++hash_recvmsg_49844 hash_recvmsg 3 49844 NULL +twl4030_write_49846 twl4030_write 2 49846 NULL +show_lut_temp_49847 show_lut_temp 0 49847 NULL +scsi_dispatch_cmd_entry_49848 scsi_dispatch_cmd_entry 3-0 49848 NULL @@ -147411,6 +154570,7 @@ index 0000000..19e2901 +kovaplus_sysfs_read_profile_settings_49882 kovaplus_sysfs_read_profile_settings 0-5-6 49882 NULL +il_send_cmd_pdu_async_49891 il_send_cmd_pdu_async 0 49891 NULL +tgr192_init_49892 tgr192_init 0 49892 NULL ++lb_throttle_49897 lb_throttle 0 49897 NULL +ovs_key_attr_size_49898 ovs_key_attr_size 0 49898 NULL +bnx2x_open_49905 bnx2x_open 0 49905 NULL +ea_put_49907 ea_put 0 49907 NULL @@ -147423,13 +154583,16 @@ index 0000000..19e2901 +megasas_fw_crash_state_store_49923 megasas_fw_crash_state_store 0-4 49923 &show_voltage_label_49923 +_cpu_up_49927 _cpu_up 0 49927 NULL +beacon_timeout_ms_store_49935 beacon_timeout_ms_store 0-4 49935 NULL -+mxl301rf_set_params_49936 mxl301rf_set_params 0 49936 NULL ++mxl301rf_set_params_49936 mxl301rf_set_params 0 49936 NULL nohasharray ++md_setup_cluster_49936 md_setup_cluster 0 49936 &mxl301rf_set_params_49936 +gnttab_setup_auto_xlat_frames_49940 gnttab_setup_auto_xlat_frames 1 49940 NULL +tpm_get_random_49950 tpm_get_random 0-3 49950 NULL +iscsi_nacl_attrib_show_default_erl_49955 iscsi_nacl_attrib_show_default_erl 0 49955 NULL +saa7706h_i2c_transfer_49957 saa7706h_i2c_transfer 3 49957 NULL ++__cfg80211_alloc_event_skb_49963 __cfg80211_alloc_event_skb 6 49963 NULL +snd_soundfont_load_49964 snd_soundfont_load 0-3 49964 NULL +store_temp_auto_boost_49966 store_temp_auto_boost 0-4 49966 NULL ++hda_widget_sysfs_init_49968 hda_widget_sysfs_init 0 49968 NULL +bDeviceSubClass_show_49970 bDeviceSubClass_show 0 49970 NULL +volume_write_49971 volume_write 0 49971 NULL +set_a_bus_drop_49973 set_a_bus_drop 0-4 49973 NULL @@ -147460,6 +154623,7 @@ index 0000000..19e2901 +rose_device_event_50026 rose_device_event 0 50026 NULL +xlog_recovery_process_trans_50028 xlog_recovery_process_trans 4 50028 NULL nohasharray +qp_alloc_queue_50028 qp_alloc_queue 1 50028 &xlog_recovery_process_trans_50028 ++caif_stream_sendmsg_50030 caif_stream_sendmsg 3 50030 NULL +set_mtu_50032 set_mtu 0 50032 NULL +ath10k_wmi_pdev_pktlog_enable_50033 ath10k_wmi_pdev_pktlog_enable 0 50033 NULL +sky2_open_50034 sky2_open 0 50034 NULL @@ -147535,6 +154699,7 @@ index 0000000..19e2901 +mxl111sf_tuner_program_regs_50179 mxl111sf_tuner_program_regs 0 50179 NULL +udc_create_dma_chain_50185 udc_create_dma_chain 0 50185 NULL +ib_send_cm_drep_50186 ib_send_cm_drep 3 50186 NULL ++_mv88e6xxx_phy_write_indirect_50195 _mv88e6xxx_phy_write_indirect 0 50195 NULL +store_beep_50196 store_beep 0-4 50196 NULL +max_medium_access_timeouts_show_50197 max_medium_access_timeouts_show 0 50197 NULL +cfg80211_roamed_bss_50198 cfg80211_roamed_bss 6-4 50198 NULL @@ -147597,6 +154762,7 @@ index 0000000..19e2901 +set_auto_brightness_50345 set_auto_brightness 0 50345 NULL +__orinoco_up_50349 __orinoco_up 0 50349 NULL +nr_overcommit_hugepages_show_50351 nr_overcommit_hugepages_show 0 50351 NULL ++efx_nic_update_stats_50352 efx_nic_update_stats 2 50352 NULL +selinux_file_permission_50354 selinux_file_permission 0 50354 NULL +isdn_ppp_read_50356 isdn_ppp_read 4-0 50356 NULL +unpack_u16_chunk_50357 unpack_u16_chunk 0 50357 NULL @@ -147617,7 +154783,8 @@ index 0000000..19e2901 +ad7877_gpio3_show_50397 ad7877_gpio3_show 0 50397 NULL +base_sock_create_50400 base_sock_create 0 50400 NULL +snd_mask_refine_last_50406 snd_mask_refine_last 0 50406 NULL -+inode_getsecctx_50410 inode_getsecctx 0 50410 NULL ++inode_getsecctx_50410 inode_getsecctx 0 50410 NULL nohasharray ++read8_reg_50410 read8_reg 4 50410 &inode_getsecctx_50410 +l2tp_ip_sendmsg_50411 l2tp_ip_sendmsg 4-0 50411 NULL +recomp_data_node_50412 recomp_data_node 0 50412 NULL +tg_set_rt_bandwidth_50413 tg_set_rt_bandwidth 0 50413 NULL @@ -147734,6 +154901,7 @@ index 0000000..19e2901 +mt2063_setreg_50645 mt2063_setreg 0 50645 NULL +show_50648 show 0 50648 NULL +ext3_readpage_50653 ext3_readpage 0 50653 NULL ++fat_direct_IO_50654 fat_direct_IO 3 50654 NULL +show_fc_rport_node_name_50655 show_fc_rport_node_name 0 50655 NULL +snd_seq_ioctl_set_queue_info_50657 snd_seq_ioctl_set_queue_info 0 50657 NULL +raid56_parity_alloc_scrub_rbio_50658 raid56_parity_alloc_scrub_rbio 4 50658 NULL @@ -147894,10 +155062,13 @@ index 0000000..19e2901 +brcm_phy_setbits_51027 brcm_phy_setbits 0 51027 NULL +fuse_conn_congestion_threshold_read_51028 fuse_conn_congestion_threshold_read 3-0 51028 NULL +xfs_dir2_grow_inode_51030 xfs_dir2_grow_inode 0 51030 NULL -+dump_midi_51040 dump_midi 3 51040 NULL ++mv88e6xxx_phy_read_indirect_51035 mv88e6xxx_phy_read_indirect 2 51035 NULL ++dump_midi_51040 dump_midi 3 51040 NULL nohasharray ++cma_free_write_51040 cma_free_write 2 51040 &dump_midi_51040 +usb_get_descriptor_51041 usb_get_descriptor 0 51041 NULL +srpt_alloc_ioctx_51042 srpt_alloc_ioctx 2-3 51042 NULL nohasharray -+i915_gem_object_get_pages_phys_51042 i915_gem_object_get_pages_phys 0 51042 &srpt_alloc_ioctx_51042 ++i915_gem_object_get_pages_phys_51042 i915_gem_object_get_pages_phys 0 51042 &srpt_alloc_ioctx_51042 nohasharray ++req_run_51042 req_run 0 51042 &i915_gem_object_get_pages_phys_51042 +store_detach_51045 store_detach 0-4 51045 NULL +show_51050 show 0 51050 NULL nohasharray +carl9170_mac_reset_51050 carl9170_mac_reset 0 51050 &show_51050 @@ -147922,6 +155093,7 @@ index 0000000..19e2901 +nilfs_checkpoints_next_checkpoint_show_51093 nilfs_checkpoints_next_checkpoint_show 0 51093 NULL +solo_enc_v4l2_init_51094 solo_enc_v4l2_init 2 51094 NULL +__ocfs2_find_path_51096 __ocfs2_find_path 0 51096 NULL ++hci_req_run_skb_51098 hci_req_run_skb 0 51098 NULL +ath10k_vdev_start_51101 ath10k_vdev_start 0 51101 NULL +target_stat_scsi_auth_intr_show_attr_att_count_51106 target_stat_scsi_auth_intr_show_attr_att_count 0 51106 NULL +ti_recv_51110 ti_recv 3 51110 NULL nohasharray @@ -148137,6 +155309,7 @@ index 0000000..19e2901 +tx_sg_51567 tx_sg 0 51567 NULL +batadv_tt_prepare_tvlv_local_data_51568 batadv_tt_prepare_tvlv_local_data 0 51568 NULL +netlink_broadcast_51573 netlink_broadcast 0 51573 NULL ++bt_sock_stream_recvmsg_51582 bt_sock_stream_recvmsg 3 51582 NULL +mlx4_en_vlan_rx_add_vid_51584 mlx4_en_vlan_rx_add_vid 0 51584 NULL +eeprom_93xx46_store_erase_51585 eeprom_93xx46_store_erase 0-4 51585 NULL +ixgb_get_eeprom_len_51586 ixgb_get_eeprom_len 0 51586 NULL @@ -148341,6 +155514,7 @@ index 0000000..19e2901 +iscsi_stat_logout_attr_show_52087 iscsi_stat_logout_attr_show 0 52087 &amd_ec_read_52087 +nsm_get_handle_52089 nsm_get_handle 4 52089 NULL nohasharray +rt2x00debug_read_rf_52089 rt2x00debug_read_rf 0-3 52089 &nsm_get_handle_52089 ++udp_recvmsg_52094 udp_recvmsg 3 52094 NULL +affs_do_readpage_ofs_52095 affs_do_readpage_ofs 0 52095 NULL +ulist_add_merge_52096 ulist_add_merge 0 52096 NULL +mtrr_save_52097 mtrr_save 0 52097 NULL @@ -148494,7 +155668,8 @@ index 0000000..19e2901 +snd_rme96_capture_prepare_52380 snd_rme96_capture_prepare 0 52380 NULL +iwl_nvm_init_52382 iwl_nvm_init 0 52382 NULL +isdn_writebuf_stub_52383 isdn_writebuf_stub 4-0 52383 NULL -+task_has_security_52386 task_has_security 0 52386 NULL ++task_has_security_52386 task_has_security 0 52386 NULL nohasharray ++nct7904_write_reg_52386 nct7904_write_reg 0 52386 &task_has_security_52386 +jfs_setxattr_52389 jfs_setxattr 4-0 52389 NULL +input_print_modalias_bits_52395 input_print_modalias_bits 0 52395 NULL +svc_partial_recvfrom_52396 svc_partial_recvfrom 4 52396 NULL @@ -148534,6 +155709,7 @@ index 0000000..19e2901 +show_id_ext_52472 show_id_ext 0 52472 NULL +cifs_readpage_worker_52477 cifs_readpage_worker 0 52477 NULL nohasharray +ieee80211_alloc_txb_52477 ieee80211_alloc_txb 2-1 52477 &cifs_readpage_worker_52477 ++tipc_sendmsg_52481 tipc_sendmsg 3 52481 NULL +ocfs2_extend_no_holes_52483 ocfs2_extend_no_holes 0 52483 NULL +pch_i2c_wait_for_check_xfer_52485 pch_i2c_wait_for_check_xfer 0 52485 NULL nohasharray +snd_hda_gen_build_controls_52485 snd_hda_gen_build_controls 0 52485 &pch_i2c_wait_for_check_xfer_52485 @@ -148719,6 +155895,7 @@ index 0000000..19e2901 +set_reset_mode_52952 set_reset_mode 0 52952 &twl4030_madc_set_irq_52952 +dev_bus_rescan_store_52953 dev_bus_rescan_store 0-4 52953 NULL +adv7170_write_52956 adv7170_write 0 52956 NULL ++cma_alloc_mem_52959 cma_alloc_mem 2 52959 NULL +tpacpi_driver_wwan_emulstate_store_52960 tpacpi_driver_wwan_emulstate_store 0-3 52960 NULL +ieee80211_if_fmt_fwded_mcast_52961 ieee80211_if_fmt_fwded_mcast 3 52961 NULL +hx8357_spi_write_then_read_52964 hx8357_spi_write_then_read 3 52964 NULL @@ -148819,6 +155996,7 @@ index 0000000..19e2901 +C_SYSC_io_getevents_53191 C_SYSC_io_getevents 3 53191 NULL +ti_write_room_53194 ti_write_room 0 53194 NULL +xfs_btree_updkey_53195 xfs_btree_updkey 0 53195 NULL ++dax_io_53196 dax_io 4-3 53196 NULL +hackrf_alloc_urbs_53198 hackrf_alloc_urbs 0 53198 NULL +SyS_init_module_53202 SyS_init_module 2 53202 NULL +toss_secs_write_53205 toss_secs_write 3-0 53205 NULL @@ -148844,6 +156022,7 @@ index 0000000..19e2901 +smack_sb_statfs_53255 smack_sb_statfs 0 53255 NULL +xfs_trans_read_buf_map_53258 xfs_trans_read_buf_map 5-0 53258 NULL nohasharray +target_core_dev_wwn_store_attr_vpd_protocol_identifier_53258 target_core_dev_wwn_store_attr_vpd_protocol_identifier 0-3 53258 &xfs_trans_read_buf_map_53258 ++bcmgenet_alloc_rx_buffers_53259 bcmgenet_alloc_rx_buffers 0 53259 NULL +ipr_change_queue_depth_53263 ipr_change_queue_depth 2-0 53263 NULL nohasharray +ip6_tnl_dev_init_gen_53263 ip6_tnl_dev_init_gen 0 53263 &ipr_change_queue_depth_53263 +picolcd_operation_mode_store_53264 picolcd_operation_mode_store 0-4 53264 NULL @@ -148865,6 +156044,7 @@ index 0000000..19e2901 +dev_debug_store_53301 dev_debug_store 0-4 53301 NULL +isku_sysfs_write_key_mask_53305 isku_sysfs_write_key_mask 6-0-5 53305 NULL nohasharray +wishbone_serial_open_53305 wishbone_serial_open 0 53305 &isku_sysfs_write_key_mask_53305 ++x25_sendmsg_53311 x25_sendmsg 3 53311 NULL +dib7090p_rw_on_apb_53315 dib7090p_rw_on_apb 0-3 53315 NULL +batadv_interface_rx_53325 batadv_interface_rx 4 53325 NULL +usb_rapid_charge_show_53327 usb_rapid_charge_show 0 53327 NULL nohasharray @@ -149016,7 +156196,8 @@ index 0000000..19e2901 +powr1220_show_voltage_53637 powr1220_show_voltage 0 53637 NULL nohasharray +iwl_set_mode_53637 iwl_set_mode 0 53637 &powr1220_show_voltage_53637 +si_fan_ctrl_set_fan_speed_percent_53640 si_fan_ctrl_set_fan_speed_percent 0 53640 NULL -+nr_sendmsg_53656 nr_sendmsg 4-0 53656 NULL ++nr_sendmsg_53656 nr_sendmsg 4-0 53656 NULL nohasharray ++pn_sendmsg_53656 pn_sendmsg 3 53656 &nr_sendmsg_53656 +allocate_page_53658 allocate_page 0 53658 NULL nohasharray +__bitmap_parse_53658 __bitmap_parse 0 53658 &allocate_page_53658 +__nfs4_proc_set_acl_53665 __nfs4_proc_set_acl 0 53665 NULL @@ -149072,6 +156253,7 @@ index 0000000..19e2901 +nes_show_ee_cmd_53765 nes_show_ee_cmd 0 53765 NULL nohasharray +smo8800_misc_read_53765 smo8800_misc_read 0-3 53765 &nes_show_ee_cmd_53765 +store_53768 store 0-3 53768 NULL ++i915_gem_execbuffer_parse_53770 i915_gem_execbuffer_parse 5-6 53770 NULL +ext4_walk_page_buffers_53771 ext4_walk_page_buffers 0 53771 NULL +ext2_acl_count_53773 ext2_acl_count 0-1 53773 NULL +radeon_show_edid1_53782 radeon_show_edid1 6-0-5 53782 NULL @@ -149203,6 +156385,7 @@ index 0000000..19e2901 +show_in_beep_54074 show_in_beep 0 54074 NULL +ext3_xattr_security_get_54081 ext3_xattr_security_get 0 54081 NULL +cachefiles_daemon_range_error_54092 cachefiles_daemon_range_error 0 54092 NULL ++bitmap_bitremap_54096 bitmap_bitremap 4 54096 NULL +remove_id_store_54097 remove_id_store 0-3 54097 NULL +snd_cs5535audio_trigger_54101 snd_cs5535audio_trigger 0 54101 NULL +altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 NULL nohasharray @@ -149294,6 +156477,7 @@ index 0000000..19e2901 +get_temp_alarm_54267 get_temp_alarm 0 54267 NULL +mwifiex_getlog_read_54269 mwifiex_getlog_read 3-0 54269 NULL +kstrtou16_from_user_54274 kstrtou16_from_user 2 54274 NULL ++snd_hda_query_supported_pcm_54275 snd_hda_query_supported_pcm 0 54275 NULL +sizeof_long_54276 sizeof_long 0 54276 NULL +ubi_calc_data_len_54279 ubi_calc_data_len 0-3 54279 NULL nohasharray +bond_option_tlb_dynamic_lb_set_54279 bond_option_tlb_dynamic_lb_set 0 54279 &ubi_calc_data_len_54279 @@ -149351,7 +156535,8 @@ index 0000000..19e2901 +o2nm_cluster_attr_idle_timeout_ms_read_54400 o2nm_cluster_attr_idle_timeout_ms_read 0 54400 NULL nohasharray +set_gss_proxy_54400 set_gss_proxy 0 54400 &o2nm_cluster_attr_idle_timeout_ms_read_54400 +snd_pcm_add_chmap_ctls_54404 snd_pcm_add_chmap_ctls 0 54404 NULL -+efx_nic_describe_stats_54407 efx_nic_describe_stats 0 54407 NULL ++efx_nic_describe_stats_54407 efx_nic_describe_stats 0-2 54407 NULL ++vmbus_sendpacket_ctl_54410 vmbus_sendpacket_ctl 0 54410 NULL +__iscsi_disc_show_authenticate_target_54411 __iscsi_disc_show_authenticate_target 0 54411 NULL +iio_trigger_register_54412 iio_trigger_register 0 54412 NULL +ath10k_install_peer_wep_keys_54414 ath10k_install_peer_wep_keys 0 54414 NULL @@ -149425,6 +156610,7 @@ index 0000000..19e2901 +s5k83a_set_brightness_54578 s5k83a_set_brightness 0 54578 NULL +rds_getname_54579 rds_getname 0 54579 NULL +fw_iso_buffer_init_54582 fw_iso_buffer_init 3 54582 NULL ++pfkey_recvmsg_54588 pfkey_recvmsg 3 54588 NULL +xfrm_polexpire_msgsize_54589 xfrm_polexpire_msgsize 0 54589 NULL +sync_callback_54596 sync_callback 0 54596 NULL +authorized_default_show_54600 authorized_default_show 0 54600 NULL nohasharray @@ -149486,6 +156672,7 @@ index 0000000..19e2901 +platform_get_irq_byname_54700 platform_get_irq_byname 0 54700 NULL +smack_task_setscheduler_54707 smack_task_setscheduler 0 54707 NULL +rfkill_fop_read_54711 rfkill_fop_read 3-0 54711 NULL ++wmi_echo_54712 wmi_echo 0 54712 NULL +hpet_read_54717 hpet_read 0-3 54717 NULL nohasharray +iio_trigger_write_current_54717 iio_trigger_write_current 0-4 54717 &hpet_read_54717 +_add_sg_continuation_descriptor_54721 _add_sg_continuation_descriptor 3 54721 NULL nohasharray @@ -149556,6 +156743,7 @@ index 0000000..19e2901 +nvkm_bar_create__54867 nvkm_bar_create_ 4 54867 NULL nohasharray +cpuset_track_online_nodes_54867 cpuset_track_online_nodes 0 54867 &nvkm_bar_create__54867 +show_learning_54874 show_learning 0 54874 NULL ++xfs_vm_direct_IO_54876 xfs_vm_direct_IO 3 54876 NULL +time_show_54879 time_show 0 54879 NULL nohasharray +xfs_alloc_read_agfl_54879 xfs_alloc_read_agfl 0 54879 &time_show_54879 +mlx4_en_tunnel_steer_add_54880 mlx4_en_tunnel_steer_add 0 54880 NULL @@ -149613,7 +156801,8 @@ index 0000000..19e2901 +dev_exception_add_54979 dev_exception_add 0 54979 &ubi_change_vtbl_record_54979 +virtual_gb_show_54981 virtual_gb_show 0 54981 NULL +_queue_data_54983 _queue_data 4 54983 NULL -+cachefiles_daemon_inuse_54984 cachefiles_daemon_inuse 0 54984 NULL ++cachefiles_daemon_inuse_54984 cachefiles_daemon_inuse 0 54984 NULL nohasharray ++dev_queue_xmit_sk_54984 dev_queue_xmit_sk 0 54984 &cachefiles_daemon_inuse_54984 +net2280_start_54985 net2280_start 0 54985 NULL +ext3_xattr_get_54989 ext3_xattr_get 0 54989 NULL nohasharray +padlock_sha256_init_nano_54989 padlock_sha256_init_nano 0 54989 &ext3_xattr_get_54989 @@ -149626,6 +156815,7 @@ index 0000000..19e2901 +cx231xx_v4l2_read_55014 cx231xx_v4l2_read 3-0 55014 NULL +ipvlan_vlan_rx_add_vid_55020 ipvlan_vlan_rx_add_vid 0 55020 NULL +driver_pin_configs_show_55022 driver_pin_configs_show 0 55022 NULL ++nfs_post_op_update_inode_55023 nfs_post_op_update_inode 0 55023 NULL +error_error_null_Frame_tx_start_read_55024 error_error_null_Frame_tx_start_read 3-0 55024 NULL +firmware_loading_store_55029 firmware_loading_store 0-4 55029 NULL +ubifs_read_node_wbuf_55034 ubifs_read_node_wbuf 0 55034 NULL @@ -149642,7 +156832,8 @@ index 0000000..19e2901 +lanai_setup_tx_vci_55074 lanai_setup_tx_vci 0 55074 &iscsi_stat_tgt_attr_show_attr_inst_55074 +apei_exec_run_55075 apei_exec_run 0 55075 NULL +bitmap_storage_alloc_55077 bitmap_storage_alloc 2-0 55077 NULL -+fuse_read_interrupt_55081 fuse_read_interrupt 0 55081 NULL ++fuse_read_interrupt_55081 fuse_read_interrupt 0 55081 NULL nohasharray ++ath9k_hw_read_array_55081 ath9k_hw_read_array 3 55081 &fuse_read_interrupt_55081 +acq_write_55082 acq_write 0-3 55082 NULL nohasharray +cdc_mbim_rx_add_vid_55082 cdc_mbim_rx_add_vid 0 55082 &acq_write_55082 +lnc_add_55085 lnc_add 0 55085 NULL @@ -149739,6 +156930,7 @@ index 0000000..19e2901 +gpio_trig_gpio_show_55336 gpio_trig_gpio_show 0 55336 NULL +reg_read_55337 reg_read 0 55337 NULL +vme_user_read_55338 vme_user_read 3 55338 NULL ++__set_pwm_55339 __set_pwm 0 55339 NULL +read_byte_55340 read_byte 0 55340 NULL +__wa_xfer_setup_sizes_55342 __wa_xfer_setup_sizes 0 55342 NULL +SYSC_recvfrom_55346 SYSC_recvfrom 3 55346 NULL @@ -149833,6 +157025,7 @@ index 0000000..19e2901 +unmerge_and_remove_all_rmap_items_55557 unmerge_and_remove_all_rmap_items 0 55557 NULL +show_55563 show 0 55563 NULL +rpc_pipe_read_55564 rpc_pipe_read 0-3 55564 NULL ++snd_find_free_minor_55567 snd_find_free_minor 0 55567 NULL +show_ipv6_iface_link_local_addr_55568 show_ipv6_iface_link_local_addr 0 55568 NULL +sidtab_context_to_sid_55570 sidtab_context_to_sid 0 55570 NULL nohasharray +patch_vt1708_55570 patch_vt1708 0 55570 &sidtab_context_to_sid_55570 @@ -149841,6 +157034,7 @@ index 0000000..19e2901 +edt_ft5x06_register_read_55576 edt_ft5x06_register_read 0 55576 NULL +compat_SyS_setsockopt_55581 compat_SyS_setsockopt 5 55581 NULL +add_partition_55588 add_partition 2 55588 NULL ++mgmt_cmd_complete_55590 mgmt_cmd_complete 6 55590 NULL +write_inode_55592 write_inode 0 55592 NULL +ufx_reg_write_55594 ufx_reg_write 0 55594 NULL +ip_vs_reply6_55598 ip_vs_reply6 0 55598 NULL @@ -150054,6 +157248,7 @@ index 0000000..19e2901 +wdt_restart_handle_56057 wdt_restart_handle 0 56057 &mwifiex_wait_queue_complete_56057 +dccp_sendmsg_56058 dccp_sendmsg 4-0 56058 NULL +pm80x_rtc_read_time_56065 pm80x_rtc_read_time 0 56065 NULL ++quirk_strict_duplicate_filter_read_56073 quirk_strict_duplicate_filter_read 3 56073 NULL +show_fc_rport_scsi_target_id_56077 show_fc_rport_scsi_target_id 0 56077 NULL nohasharray +qp_dequeue_locked_56077 qp_dequeue_locked 0-5-3 56077 &show_fc_rport_scsi_target_id_56077 +nilfs_segctor_create_checkpoint_56078 nilfs_segctor_create_checkpoint 0 56078 NULL @@ -150155,6 +157350,7 @@ index 0000000..19e2901 +journal_init_revoke_table_56331 journal_init_revoke_table 1 56331 NULL +axnet_suspend_56334 axnet_suspend 0 56334 NULL +snd_rawmidi_read_56337 snd_rawmidi_read 3-0 56337 NULL ++f81232_port_enable_56338 f81232_port_enable 0 56338 NULL +show_fcoe_ctlr_device_fcf_dev_loss_tmo_56343 show_fcoe_ctlr_device_fcf_dev_loss_tmo 0 56343 NULL +show_line2_56346 show_line2 0 56346 NULL +read_human_status_56349 read_human_status 0 56349 NULL @@ -150263,6 +157459,7 @@ index 0000000..19e2901 +tcp_cwnd_test_56547 tcp_cwnd_test 0 56547 NULL nohasharray +megasas_sysfs_show_version_56547 megasas_sysfs_show_version 0 56547 &tcp_cwnd_test_56547 +ip_vs_prepare_tunneled_skb_56550 ip_vs_prepare_tunneled_skb 3 56550 NULL ++br_get_num_vlan_infos_56557 br_get_num_vlan_infos 0 56557 NULL +vim2m_start_streaming_56558 vim2m_start_streaming 0 56558 NULL nohasharray +xs_watch_56558 xs_watch 0 56558 &vim2m_start_streaming_56558 nohasharray +mmc_blk_probe_56558 mmc_blk_probe 0 56558 &xs_watch_56558 @@ -150397,8 +157594,10 @@ index 0000000..19e2901 +max197_show_range_56863 max197_show_range 0 56863 &gk20a_ram_get_56863 nohasharray +target_stat_scsi_auth_intr_show_attr_inst_56863 target_stat_scsi_auth_intr_show_attr_inst 0 56863 &max197_show_range_56863 nohasharray +dlfb_setup_modes_56863 dlfb_setup_modes 0 56863 &target_stat_scsi_auth_intr_show_attr_inst_56863 -+check_export_56865 check_export 0 56865 NULL -+store_sched7_56868 store_sched7 0-4 56868 NULL ++check_export_56865 check_export 0 56865 NULL nohasharray ++btrfs_direct_IO_56865 btrfs_direct_IO 3 56865 &check_export_56865 ++store_sched7_56868 store_sched7 0-4 56868 NULL nohasharray ++hci_mgmt_cmd_56868 hci_mgmt_cmd 4 56868 &store_sched7_56868 +mwl8k_cmd_get_stat_56876 mwl8k_cmd_get_stat 0 56876 NULL +ims_pcu_ofn_bit_store_56878 ims_pcu_ofn_bit_store 0-4 56878 NULL +ext3_xattr_ibody_get_56880 ext3_xattr_ibody_get 0 56880 NULL @@ -150572,7 +157771,8 @@ index 0000000..19e2901 +load_data_57279 load_data 0-3 57279 &crc32c_intel_final_57279 +mc44s803_set_params_57281 mc44s803_set_params 0 57281 NULL +lbs_sleepparams_write_57283 lbs_sleepparams_write 3-0 57283 NULL nohasharray -+read_iter_57283 read_iter 0 57283 &lbs_sleepparams_write_57283 ++read_iter_57283 read_iter 0 57283 &lbs_sleepparams_write_57283 nohasharray ++hid_sensor_capture_sample_57283 hid_sensor_capture_sample 3 57283 &read_iter_57283 +infos_show_57284 infos_show 0 57284 NULL +store_tolerance_57285 store_tolerance 0-4 57285 NULL +ath6kl_wmi_cmd_send_57286 ath6kl_wmi_cmd_send 0 57286 NULL @@ -150640,6 +157840,7 @@ index 0000000..19e2901 +fscaps_show_57434 fscaps_show 0 57434 NULL nohasharray +fuse_notify_inval_inode_57434 fuse_notify_inval_inode 0 57434 &fscaps_show_57434 +gadget_dev_desc_bDeviceSubClass_store_57437 gadget_dev_desc_bDeviceSubClass_store 0-3 57437 NULL ++ping_v6_sendmsg_57440 ping_v6_sendmsg 3 57440 NULL +rss_key_write_57441 rss_key_write 3-0 57441 NULL +vmxnet3_rq_init_all_57442 vmxnet3_rq_init_all 0 57442 NULL +ov7670_s_gain_57445 ov7670_s_gain 0 57445 NULL @@ -150746,6 +157947,7 @@ index 0000000..19e2901 +qlcnic_get_pci_func_type_57685 qlcnic_get_pci_func_type 0 57685 NULL +show_pwm_auto_vrdhot_ramp_57686 show_pwm_auto_vrdhot_ramp 0 57686 NULL +rt2x00debug_read_eeprom_57690 rt2x00debug_read_eeprom 0-3 57690 NULL ++skcipher_all_sg_nents_57692 skcipher_all_sg_nents 0 57692 NULL +f1x_match_to_this_node_57695 f1x_match_to_this_node 3 57695 NULL nohasharray +i40evf_open_57695 i40evf_open 0 57695 &f1x_match_to_this_node_57695 +ks8842_set_mac_57697 ks8842_set_mac 0 57697 NULL @@ -150870,6 +158072,7 @@ index 0000000..19e2901 +rt2500usb_get_tx_data_len_57994 rt2500usb_get_tx_data_len 0 57994 NULL +lmLogShutdown_57995 lmLogShutdown 0 57995 NULL +lua_sysfs_write_control_57996 lua_sysfs_write_control 0-6-5 57996 NULL ++usb_dmac_prep_slave_sg_58000 usb_dmac_prep_slave_sg 3 58000 NULL +rx_reset_counter_read_58001 rx_reset_counter_read 3-0 58001 NULL nohasharray +btree_csum_one_bio_58001 btree_csum_one_bio 0 58001 &rx_reset_counter_read_58001 +pfkey_create_58010 pfkey_create 0 58010 NULL @@ -151127,6 +158330,7 @@ index 0000000..19e2901 +rndis_add_response_58544 rndis_add_response 2 58544 NULL nohasharray +xfs_attr3_leaf_to_node_58544 xfs_attr3_leaf_to_node 0 58544 &rndis_add_response_58544 +mac80211_hwsim_get_et_sset_count_58547 mac80211_hwsim_get_et_sset_count 0 58547 NULL ++llcp_sock_sendmsg_58556 llcp_sock_sendmsg 3 58556 NULL +twl4030_madc_read_channels_58559 twl4030_madc_read_channels 0 58559 NULL +ath10k_debug_htt_stats_req_58561 ath10k_debug_htt_stats_req 0 58561 NULL +wep_decrypt_fail_read_58567 wep_decrypt_fail_read 3-0 58567 NULL @@ -151181,7 +158385,8 @@ index 0000000..19e2901 +uwb_bce_print_IEs_58686 uwb_bce_print_IEs 4-0 58686 NULL +tps6586x_writes_58689 tps6586x_writes 2-3-0 58689 NULL +nfs_scan_commit_58690 nfs_scan_commit 0 58690 NULL -+nilfs_segbuf_submit_bh_58691 nilfs_segbuf_submit_bh 0 58691 NULL ++nilfs_segbuf_submit_bh_58691 nilfs_segbuf_submit_bh 0 58691 NULL nohasharray ++snd_hda_gen_fix_pin_power_58691 snd_hda_gen_fix_pin_power 0 58691 &nilfs_segbuf_submit_bh_58691 +tpm_show_ppi_version_58692 tpm_show_ppi_version 0 58692 NULL +tcm_loop_tpg_store_transport_status_58695 tcm_loop_tpg_store_transport_status 0-3 58695 NULL +regulator_min_uA_show_58696 regulator_min_uA_show 0 58696 NULL @@ -151223,6 +158428,7 @@ index 0000000..19e2901 +ecryptfs_derive_iv_58784 ecryptfs_derive_iv 0 58784 NULL +cyapa_gen5_calibrate_pwcs_58789 cyapa_gen5_calibrate_pwcs 0 58789 NULL +show_58791 show 0 58791 NULL ++ipx_sendmsg_58794 ipx_sendmsg 3 58794 NULL +regmap_calc_reg_len_58795 regmap_calc_reg_len 0 58795 NULL +smack_inode_setxattr_58801 smack_inode_setxattr 0 58801 NULL +dlm_lock_58802 dlm_lock 0 58802 NULL nohasharray @@ -151236,7 +158442,8 @@ index 0000000..19e2901 +usbhsg_ep_enable_58825 usbhsg_ep_enable 0 58825 NULL +tnc_read_node_nm_58830 tnc_read_node_nm 0 58830 NULL +pm8001_chip_ssp_io_req_58831 pm8001_chip_ssp_io_req 0 58831 NULL -+ssp_disable_sensor_58838 ssp_disable_sensor 0 58838 NULL ++ssp_disable_sensor_58838 ssp_disable_sensor 0 58838 NULL nohasharray ++pppol2tp_recvmsg_58838 pppol2tp_recvmsg 3 58838 &ssp_disable_sensor_58838 +command_write_58841 command_write 3-0 58841 NULL nohasharray +diolan_i2c_start_58841 diolan_i2c_start 0 58841 &command_write_58841 +vendor_show_58845 vendor_show 0 58845 NULL nohasharray @@ -151926,6 +159133,7 @@ index 0000000..19e2901 +parse_output_paths_60438 parse_output_paths 0 60438 NULL +show_carrier_60439 show_carrier 0 60439 NULL nohasharray +elan_i2c_iap_get_mode_60439 elan_i2c_iap_get_mode 0 60439 &show_carrier_60439 ++tipc_recv_stream_60440 tipc_recv_stream 3 60440 NULL +rx_data_60442 rx_data 4 60442 NULL nohasharray +sysv_write_begin_60442 sysv_write_begin 0 60442 &rx_data_60442 +t4_wait_op_done_60444 t4_wait_op_done 0 60444 NULL nohasharray @@ -152114,9 +159322,11 @@ index 0000000..19e2901 +nvif_object_init_60848 nvif_object_init 6 60848 NULL +pwr_tx_with_ps_read_60851 pwr_tx_with_ps_read 3-0 60851 NULL +show_hardware_version_60852 show_hardware_version 0 60852 NULL -+show_shost_supported_mode_60854 show_shost_supported_mode 0 60854 NULL ++show_shost_supported_mode_60854 show_shost_supported_mode 0 60854 NULL nohasharray ++l2cap_sock_recvmsg_60854 l2cap_sock_recvmsg 3 60854 &show_shost_supported_mode_60854 +htc_issue_send_60856 htc_issue_send 0 60856 NULL +usb_bulk_msg_60861 usb_bulk_msg 0 60861 NULL ++hsu_dma_alloc_desc_60863 hsu_dma_alloc_desc 1 60863 NULL +alloc_buf_60864 alloc_buf 3-2 60864 NULL +generic_writepages_60871 generic_writepages 0 60871 NULL +show_fc_vport_vport_last_state_60872 show_fc_vport_vport_last_state 0 60872 NULL @@ -152132,7 +159342,8 @@ index 0000000..19e2901 +ch341_configure_60897 ch341_configure 0 60897 NULL +w1_master_attribute_show_timeout_60898 w1_master_attribute_show_timeout 0 60898 NULL +pnp_assign_irq_60906 pnp_assign_irq 0 60906 NULL -+ceph_sync_direct_write_60907 ceph_sync_direct_write 0 60907 NULL ++ceph_sync_direct_write_60907 ceph_sync_direct_write 0 60907 NULL nohasharray ++hugetlbfs_read_actor_60907 hugetlbfs_read_actor 0-4-2 60907 &ceph_sync_direct_write_60907 +iio_debugfs_read_reg_60908 iio_debugfs_read_reg 3-0 60908 NULL nohasharray +hfs_writepage_60908 hfs_writepage 0 60908 &iio_debugfs_read_reg_60908 +dg_dispatch_as_host_60909 dg_dispatch_as_host 0 60909 NULL @@ -152282,7 +159493,8 @@ index 0000000..19e2901 +squashfs_read_metadata_61251 squashfs_read_metadata 0-5 61251 NULL +efi_status_to_err_61254 efi_status_to_err 0 61254 NULL +snd_ca0106_pcm_prepare_capture_61260 snd_ca0106_pcm_prepare_capture 0 61260 NULL -+v9fs_mmap_file_read_61262 v9fs_mmap_file_read 3-0 61262 NULL ++v9fs_mmap_file_read_61262 v9fs_mmap_file_read 3-0 61262 NULL nohasharray ++jfs_direct_IO_61262 jfs_direct_IO 3 61262 &v9fs_mmap_file_read_61262 +submit_bh_61263 submit_bh 0 61263 NULL +attr_sensitivity_show_tpkbd_61269 attr_sensitivity_show_tpkbd 0 61269 NULL nohasharray +t3_sge_init_ecntxt_61269 t3_sge_init_ecntxt 0 61269 &attr_sensitivity_show_tpkbd_61269 @@ -152514,7 +159726,8 @@ index 0000000..19e2901 +kone_sysfs_show_actual_dpi_61804 kone_sysfs_show_actual_dpi 0 61804 NULL +show_blank_61805 show_blank 0 61805 NULL +mls_compute_context_len_61812 mls_compute_context_len 0 61812 NULL nohasharray -+pch_gbe_setup_rx_resources_61812 pch_gbe_setup_rx_resources 0 61812 &mls_compute_context_len_61812 ++pch_gbe_setup_rx_resources_61812 pch_gbe_setup_rx_resources 0 61812 &mls_compute_context_len_61812 nohasharray ++udp_sendmsg_61812 udp_sendmsg 3 61812 &pch_gbe_setup_rx_resources_61812 +cifs_server_get_key_61813 cifs_server_get_key 0 61813 NULL +show_pwm_ast_61818 show_pwm_ast 0 61818 NULL +get_cap_size_61822 get_cap_size 0 61822 NULL @@ -152554,6 +159767,7 @@ index 0000000..19e2901 +br_get_size_61907 br_get_size 0 61907 NULL +rx_filter_arp_filter_read_61914 rx_filter_arp_filter_read 3-0 61914 NULL nohasharray +squashfs_security_get_61914 squashfs_security_get 0 61914 &rx_filter_arp_filter_read_61914 ++irda_sendmsg_61916 irda_sendmsg 3 61916 NULL +au0828_init_isoc_61917 au0828_init_isoc 3-2-4-0 61917 NULL +sctp_sendmsg_61919 sctp_sendmsg 4-0 61919 NULL +csrow_ce_count_show_61921 csrow_ce_count_show 0 61921 NULL nohasharray @@ -152701,6 +159915,7 @@ index 0000000..19e2901 +pptp_outbound_pkt_62269 pptp_outbound_pkt 0 62269 NULL +chunk_size_store_62271 chunk_size_store 0-3 62271 NULL +security_file_permission_62278 security_file_permission 0 62278 NULL ++get_random_int_62279 get_random_int 0 62279 NULL +pcxhr_prepare_62280 pcxhr_prepare 0 62280 NULL nohasharray +tcm_qla2xxx_tpg_attrib_show_generate_node_acls_62280 tcm_qla2xxx_tpg_attrib_show_generate_node_acls 0 62280 &pcxhr_prepare_62280 +dccp_init_sock_62281 dccp_init_sock 0 62281 NULL @@ -152884,6 +160099,7 @@ index 0000000..19e2901 +flush_62706 flush 0 62706 NULL +bioset_integrity_create_62708 bioset_integrity_create 2 62708 NULL nohasharray +target_stat_scsi_tgt_dev_attr_show_62708 target_stat_scsi_tgt_dev_attr_show 0 62708 &bioset_integrity_create_62708 ++netlink_recvmsg_62712 netlink_recvmsg 3 62712 NULL +target_configure_device_62714 target_configure_device 0 62714 NULL +gfs2_log_write_62717 gfs2_log_write 3 62717 NULL nohasharray +ubifs_getxattr_62717 ubifs_getxattr 0 62717 &gfs2_log_write_62717 @@ -152931,6 +160147,7 @@ index 0000000..19e2901 +fsa9480_get_switch_62799 fsa9480_get_switch 0 62799 NULL +show_cam_size_62800 show_cam_size 0 62800 NULL +ad9523_store_62804 ad9523_store 0-4 62804 NULL ++quirk_simultaneous_discovery_write_62807 quirk_simultaneous_discovery_write 3 62807 NULL +da9052_read_chg_current_62811 da9052_read_chg_current 0 62811 NULL nohasharray +pcap_regulator_is_enabled_62811 pcap_regulator_is_enabled 0 62811 &da9052_read_chg_current_62811 nohasharray +set_port0_62811 set_port0 0-4 62811 &pcap_regulator_is_enabled_62811 @@ -153031,7 +160248,8 @@ index 0000000..19e2901 +show_pwmfreq_63024 show_pwmfreq 0 63024 NULL +kstrtoull_from_user_63026 kstrtoull_from_user 2 63026 NULL nohasharray +xfs_trans_reserve_63026 xfs_trans_reserve 0 63026 &kstrtoull_from_user_63026 -+nfs_revalidate_inode_63032 nfs_revalidate_inode 0 63032 NULL ++nfs_revalidate_inode_63032 nfs_revalidate_inode 0 63032 NULL nohasharray ++_save_mc_63032 _save_mc 0-3 63032 &nfs_revalidate_inode_63032 +__vb2_perform_fileio_63033 __vb2_perform_fileio 3-0 63033 NULL +solo_i2c_master_xfer_63036 solo_i2c_master_xfer 0-3 63036 NULL +pipeline_defrag_to_csum_swi_read_63037 pipeline_defrag_to_csum_swi_read 3-0 63037 NULL @@ -153123,6 +160341,7 @@ index 0000000..19e2901 +SyS_gethostname_63227 SyS_gethostname 2 63227 &nvkm_device_create__63227 +ttm_bo_global_show_63228 ttm_bo_global_show 0 63228 NULL +stk17ta8_rtc_set_alarm_63230 stk17ta8_rtc_set_alarm 0 63230 NULL ++ext2_direct_IO_63231 ext2_direct_IO 3 63231 NULL +ctxsize_63232 ctxsize 0 63232 NULL +module_alloc_update_bounds_rw_63233 module_alloc_update_bounds_rw 1 63233 NULL +mwl8k_cmd_get_hw_spec_ap_63234 mwl8k_cmd_get_hw_spec_ap 0 63234 NULL @@ -153134,6 +160353,7 @@ index 0000000..19e2901 +do_convert_63247 do_convert 0 63247 NULL +setxattr_63249 setxattr 0 63249 NULL +ptp_read_63251 ptp_read 4-0 63251 NULL ++_iwl_dbgfs_rx_phyinfo_write_63254 _iwl_dbgfs_rx_phyinfo_write 3 63254 NULL +bond_option_arp_ip_targets_set_63257 bond_option_arp_ip_targets_set 0 63257 NULL +kmx61_set_power_state_63260 kmx61_set_power_state 0 63260 NULL +xfs_dir2_leaf_getdents_63262 xfs_dir2_leaf_getdents 3 63262 NULL @@ -153221,6 +160441,7 @@ index 0000000..19e2901 +iwl_dbgfs_bcast_filters_read_63489 iwl_dbgfs_bcast_filters_read 3-0 63489 NULL +i2c_request_63490 i2c_request 0 63490 NULL +pm8001_ctl_max_out_io_show_63492 pm8001_ctl_max_out_io_show 0 63492 NULL ++dwapb_gpio_to_irq_63493 dwapb_gpio_to_irq 2 63493 NULL +show_crit_hyst_63497 show_crit_hyst 0 63497 NULL +module_attr_show_63501 module_attr_show 0 63501 NULL +snd_pcm_plug_write_transfer_63503 snd_pcm_plug_write_transfer 0-3 63503 NULL @@ -153415,7 +160636,8 @@ index 0000000..19e2901 +set_bredr_63975 set_bredr 4 63975 &diva_xdi_write_63975 +msi001_set_tuner_63978 msi001_set_tuner 0 63978 NULL +genlmsg_new_unicast_63982 genlmsg_new_unicast 1 63982 NULL nohasharray -+set_mode_63982 set_mode 0-4 63982 &genlmsg_new_unicast_63982 ++set_mode_63982 set_mode 0-4 63982 &genlmsg_new_unicast_63982 nohasharray ++wil_rx_snaplen_63982 wil_rx_snaplen 0 63982 &set_mode_63982 +construct_key_and_link_63985 construct_key_and_link 3 63985 NULL +core_alua_store_offline_bit_63989 core_alua_store_offline_bit 0-3 63989 NULL +get_host_param_63991 get_host_param 0 63991 NULL nohasharray @@ -153510,7 +160732,8 @@ index 0000000..19e2901 +ea_len_64229 ea_len 0 64229 NULL +header_len_64232 header_len 0 64232 NULL nohasharray +zd1201_set_mac_address_64232 zd1201_set_mac_address 0 64232 &header_len_64232 -+em28xx_i2c_xfer_64233 em28xx_i2c_xfer 0-3 64233 NULL ++em28xx_i2c_xfer_64233 em28xx_i2c_xfer 0-3 64233 NULL nohasharray ++rhashtable_insert_rehash_64233 rhashtable_insert_rehash 0 64233 &em28xx_i2c_xfer_64233 +vprbrd_i2c_status_64236 vprbrd_i2c_status 0 64236 NULL +xfrm_acquire_msgsize_64239 xfrm_acquire_msgsize 0 64239 NULL +brcmf_sdiod_send_buf_64245 brcmf_sdiod_send_buf 3 64245 NULL nohasharray @@ -153560,7 +160783,8 @@ index 0000000..19e2901 +map_region_64328 map_region 1 64328 NULL +sisusbcon_clear_64329 sisusbcon_clear 5-3-4 64329 NULL +set_pwm_temp_map_64330 set_pwm_temp_map 0-4 64330 NULL -+ov9650_set_red_balance_64331 ov9650_set_red_balance 0 64331 NULL ++ov9650_set_red_balance_64331 ov9650_set_red_balance 0 64331 NULL nohasharray ++tipc_send_packet_64331 tipc_send_packet 3 64331 &ov9650_set_red_balance_64331 +ts_write_64336 ts_write 3-0 64336 NULL +qla8044_write_optrom_data_64338 qla8044_write_optrom_data 4 64338 NULL +usbtmc_write_64340 usbtmc_write 3-0 64340 NULL @@ -153682,6 +160906,7 @@ index 0000000..19e2901 +kstrtoul_from_user_64569 kstrtoul_from_user 2-0 64569 NULL +osst_version_show_64570 osst_version_show 0 64570 NULL nohasharray +l2tp_ip6_disconnect_64570 l2tp_ip6_disconnect 0 64570 &osst_version_show_64570 ++blockdev_direct_IO_64571 blockdev_direct_IO 4 64571 NULL +do_erase_64574 do_erase 4 64574 NULL +__c2port_show_rev_id_64583 __c2port_show_rev_id 0 64583 NULL +snd_usb_init_sample_rate_64586 snd_usb_init_sample_rate 0 64586 NULL @@ -153735,6 +160960,7 @@ index 0000000..19e2901 +regcache_flat_write_64702 regcache_flat_write 0 64702 NULL +show_temp_hyst_64705 show_temp_hyst 0 64705 NULL +_cx25821_start_audio_dma_64707 _cx25821_start_audio_dma 0 64707 NULL ++virtio_cread8_64708 virtio_cread8 0 64708 NULL +__feat_register_sp_64712 __feat_register_sp 6-0 64712 NULL +snd_pcm_oss_capture_position_fixup_64713 snd_pcm_oss_capture_position_fixup 0 64713 NULL nohasharray +show_in_input2_64713 show_in_input2 0 64713 &snd_pcm_oss_capture_position_fixup_64713 @@ -153852,6 +161078,7 @@ index 0000000..19e2901 +core_alua_show_secondary_write_metadata_64979 core_alua_show_secondary_write_metadata 0 64979 NULL nohasharray +proc_sys_call_handler_64979 proc_sys_call_handler 0 64979 &core_alua_show_secondary_write_metadata_64979 +show_tcpRtoAlgorithm_64982 show_tcpRtoAlgorithm 0 64982 NULL ++l2tp_ip6_sendmsg_64989 l2tp_ip6_sendmsg 3 64989 NULL +i7core_inject_store_col_64991 i7core_inject_store_col 0-4 64991 NULL +sq905_command_64994 sq905_command 0 64994 NULL +pskb_pull_65005 pskb_pull 2 65005 NULL nohasharray @@ -153860,6 +161087,7 @@ index 0000000..19e2901 +sh_mobile_ceu_videobuf_prepare_65016 sh_mobile_ceu_videobuf_prepare 0 65016 NULL +llc_ui_listen_65018 llc_ui_listen 0 65018 NULL +mag3110_show_samp_freq_avail_65028 mag3110_show_samp_freq_avail 0 65028 NULL ++test_ecdh_read_65032 test_ecdh_read 3 65032 NULL +insert_dent_65034 insert_dent 7 65034 NULL +root_id_show_65050 root_id_show 0 65050 NULL +keene_cmd_set_65052 keene_cmd_set 0 65052 NULL @@ -153873,7 +161101,7 @@ index 0000000..19e2901 +pcibios_enable_device_65059 pcibios_enable_device 0 65059 &__erst_record_id_cache_add_one_65059 nohasharray +be_cmd_get_active_mac_65059 be_cmd_get_active_mac 0 65059 &pcibios_enable_device_65059 +fw_write_65069 fw_write 3 65069 NULL -+count_run_65072 count_run 0-4-5 65072 NULL nohasharray ++count_run_65072 count_run 0-4-5-2 65072 NULL nohasharray +bnx2fc_process_l2_frame_compl_65072 bnx2fc_process_l2_frame_compl 3 65072 &count_run_65072 +koneplus_sysfs_write_info_65073 koneplus_sysfs_write_info 0-6-5 65073 NULL +__alloc_bootmem_node_high_65076 __alloc_bootmem_node_high 2 65076 NULL nohasharray @@ -153972,6 +161200,7 @@ index 0000000..19e2901 +ttm_mem_zone_show_65319 ttm_mem_zone_show 0 65319 NULL +write_acpi_int_65322 write_acpi_int 0 65322 NULL nohasharray +ivtv_start_decoding_65322 ivtv_start_decoding 0 65322 &write_acpi_int_65322 ++ocfs2_prepare_inode_for_write_65323 ocfs2_prepare_inode_for_write 0 65323 NULL +pci_vpd_find_tag_65325 pci_vpd_find_tag 0-2 65325 NULL +ds1685_rtc_sysfs_time_regs_show_65330 ds1685_rtc_sysfs_time_regs_show 0 65330 NULL +dccp_setsockopt_service_65336 dccp_setsockopt_service 4-0 65336 NULL @@ -154043,7 +161272,7 @@ index 0000000..19e2901 +regmap_write_65478 regmap_write 0 65478 NULL +ath_rx_edma_init_65483 ath_rx_edma_init 2 65483 NULL nohasharray +activate_65483 activate 0 65483 &ath_rx_edma_init_65483 -+sock_recvmsg_nosec_65484 sock_recvmsg_nosec 3 65484 NULL ++sock_recvmsg_nosec_65484 sock_recvmsg_nosec 3-0 65484 NULL +ixgbevf_get_regs_len_65486 ixgbevf_get_regs_len 0 65486 NULL +show_temp3_beep_65487 show_temp3_beep 0 65487 NULL +dpcm_state_read_file_65489 dpcm_state_read_file 3-0 65489 NULL nohasharray @@ -154052,6 +161281,7 @@ index 0000000..19e2901 +selnl_msglen_65499 selnl_msglen 0 65499 NULL +wm8350_rtc_setalarm_65501 wm8350_rtc_setalarm 0 65501 NULL +__xudc_ep_enable_65502 __xudc_ep_enable 0 65502 NULL ++ax25_recvmsg_65505 ax25_recvmsg 3 65505 NULL +dcdbas_smi_request_65515 dcdbas_smi_request 0 65515 NULL +tdfxfb_check_var_65516 tdfxfb_check_var 0 65516 NULL +cyapa_gen3_write_blocks_65517 cyapa_gen3_write_blocks 0 65517 NULL @@ -155084,7 +162314,7 @@ index 0000000..9846ab0 +#endif diff --git a/tools/gcc/size_overflow_plugin/size_overflow_plugin.c b/tools/gcc/size_overflow_plugin/size_overflow_plugin.c new file mode 100644 -index 0000000..6d103b8 +index 0000000..d7f4062 --- /dev/null +++ b/tools/gcc/size_overflow_plugin/size_overflow_plugin.c @@ -0,0 +1,256 @@ @@ -155119,7 +162349,7 @@ index 0000000..6d103b8 +tree size_overflow_type_TI; + +static struct plugin_info size_overflow_plugin_info = { -+ .version = "20150512", ++ .version = "20150614", + .help = "no-size-overflow\tturn off size overflow checking\n", +}; + @@ -156136,10 +163366,10 @@ index 0000000..549decf +} diff --git a/tools/gcc/size_overflow_plugin/size_overflow_transform_core.c b/tools/gcc/size_overflow_plugin/size_overflow_transform_core.c new file mode 100644 -index 0000000..c38a410 +index 0000000..c9d7068 --- /dev/null +++ b/tools/gcc/size_overflow_plugin/size_overflow_transform_core.c -@@ -0,0 +1,962 @@ +@@ -0,0 +1,966 @@ +/* + * Copyright 2011-2015 by Emese Revfy + * Licensed under the GPL v2, or (at your option) v3 @@ -156433,6 +163663,7 @@ index 0000000..c38a410 +static gphi *overflow_create_phi_node(struct visited *visited, gphi *oldstmt, tree result) +{ + basic_block bb; ++ gimple stmt; + gphi *phi; + gimple_seq seq; + gimple_stmt_iterator gsi = gsi_for_stmt(oldstmt); @@ -156446,7 +163677,8 @@ index 0000000..c38a410 + result = create_new_var(size_overflow_type); + } + -+ phi = create_phi_node(result, bb); ++ stmt = create_phi_node(result, bb); ++ phi = as_a_gphi(stmt); + gimple_phi_set_result(phi, make_ssa_name(result, phi)); + seq = phi_nodes(bb); + gsi = gsi_last(seq); @@ -156596,6 +163828,7 @@ index 0000000..c38a410 + +static void insert_cond_result(basic_block bb_true, const_gimple stmt, const_tree arg, bool min) +{ ++ gimple call_stmt; + gcall *func_stmt; + const_gimple def_stmt; + const_tree loc_line; @@ -156634,7 +163867,8 @@ index 0000000..c38a410 + ssa_name = create_string_param(ssa_name); + + // void report_size_overflow(const char *file, unsigned int line, const char *func, const char *ssa_name) -+ func_stmt = gimple_build_call(report_size_overflow_decl, 4, loc_file, loc_line, current_func, ssa_name); ++ call_stmt = gimple_build_call(report_size_overflow_decl, 4, loc_file, loc_line, current_func, ssa_name); ++ func_stmt = as_a_gcall(call_stmt); + gsi_insert_after(&gsi, func_stmt, GSI_CONTINUE_LINKING); + + report_node = cgraph_get_create_node(report_size_overflow_decl); @@ -157104,10 +164338,10 @@ index 0000000..c38a410 +} diff --git a/tools/gcc/stackleak_plugin.c b/tools/gcc/stackleak_plugin.c new file mode 100644 -index 0000000..1d296ce +index 0000000..155e2c5 --- /dev/null +++ b/tools/gcc/stackleak_plugin.c -@@ -0,0 +1,432 @@ +@@ -0,0 +1,436 @@ +/* + * Copyright 2011-2015 by the PaX Team + * Licensed under the GPL v2 @@ -157147,6 +164381,7 @@ index 0000000..1d296ce + +static void stackleak_check_alloca(gimple_stmt_iterator *gsi) +{ ++ gimple stmt; + gcall *check_alloca; + tree alloca_size; + cgraph_node_ptr node; @@ -157155,7 +164390,8 @@ index 0000000..1d296ce + + // insert call to void pax_check_alloca(unsigned long size) + alloca_size = gimple_call_arg(gsi_stmt(*gsi), 0); -+ check_alloca = gimple_build_call(check_function_decl, 1, alloca_size); ++ stmt = gimple_build_call(check_function_decl, 1, alloca_size); ++ check_alloca = as_a_gcall(stmt); + gsi_insert_before(gsi, check_alloca, GSI_SAME_STMT); + + // update the cgraph @@ -157168,13 +164404,15 @@ index 0000000..1d296ce + +static void stackleak_add_instrumentation(gimple_stmt_iterator *gsi) +{ ++ gimple stmt; + gcall *track_stack; + cgraph_node_ptr node; + int frequency; + basic_block bb; + + // insert call to void pax_track_stack(void) -+ track_stack = gimple_build_call(track_function_decl, 0); ++ stmt = gimple_build_call(track_function_decl, 0); ++ track_stack = as_a_gcall(stmt); + gsi_insert_after(gsi, track_stack, GSI_CONTINUE_LINKING); + + // update the cgraph @@ -157853,25 +165091,25 @@ index 88461f0..6fb70a0 100644 #endif /* _TOOLS_LINUX_COMPILER_H */ diff --git a/tools/lib/api/Makefile b/tools/lib/api/Makefile -index 36c08b1..87c72d1 100644 +index 8bd9606..abacd96 100644 --- a/tools/lib/api/Makefile +++ b/tools/lib/api/Makefile -@@ -21,7 +21,7 @@ LIB_OBJS += $(OUTPUT)fd/array.o +@@ -16,7 +16,7 @@ MAKEFLAGS += --no-print-directory + LIBFILE = $(OUTPUT)libapi.a - LIBFILE = libapikfs.a + CFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) +-CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC ++CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC + CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 --CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC -+CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC - EXTLIBS = -lelf -lpthread -lrt -lm - ALL_CFLAGS = $(CFLAGS) $(BASIC_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 - ALL_LDFLAGS = $(LDFLAGS) + RM = rm -f diff --git a/tools/perf/util/include/asm/alternative-asm.h b/tools/perf/util/include/asm/alternative-asm.h -index 6789d788..4afd019e 100644 +index 3a3a0f1..6cf679d 100644 --- a/tools/perf/util/include/asm/alternative-asm.h +++ b/tools/perf/util/include/asm/alternative-asm.h -@@ -5,4 +5,7 @@ - +@@ -6,4 +6,7 @@ #define altinstruction_entry # + #define ALTERNATIVE_2 # + .macro pax_force_retaddr rip=0, reload=0 + .endm @@ -157891,13 +165129,13 @@ index 0a578fe..b81f62d 100644 }) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c -index f8f3f5fe..9bc113f 100644 +index 9097741..2472109 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -81,12 +81,17 @@ LIST_HEAD(vm_list); static cpumask_var_t cpus_hardware_enabled; - static int kvm_usage_count = 0; + static int kvm_usage_count; -static atomic_t hardware_enable_failed; +static atomic_unchecked_t hardware_enable_failed; @@ -157913,8 +165151,8 @@ index f8f3f5fe..9bc113f 100644 +}; struct dentry *kvm_debugfs_dir; - -@@ -791,7 +796,7 @@ int __kvm_set_memory_region(struct kvm *kvm, + EXPORT_SYMBOL_GPL(kvm_debugfs_dir); +@@ -784,7 +789,7 @@ int __kvm_set_memory_region(struct kvm *kvm, /* We can read the guest memory with __xxx_user() later on. */ if ((mem->slot < KVM_USER_MEM_SLOTS) && ((mem->userspace_addr & (PAGE_SIZE - 1)) || @@ -157923,7 +165161,7 @@ index f8f3f5fe..9bc113f 100644 (void __user *)(unsigned long)mem->userspace_addr, mem->memory_size))) goto out; -@@ -1729,9 +1734,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached); +@@ -1714,9 +1719,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached); int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len) { @@ -157943,7 +165181,7 @@ index f8f3f5fe..9bc113f 100644 } EXPORT_SYMBOL_GPL(kvm_clear_guest_page); -@@ -2007,7 +2020,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp) +@@ -1993,7 +2006,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp) return 0; } @@ -157952,7 +165190,7 @@ index f8f3f5fe..9bc113f 100644 .release = kvm_vcpu_release, .unlocked_ioctl = kvm_vcpu_ioctl, #ifdef CONFIG_KVM_COMPAT -@@ -2724,7 +2737,7 @@ out: +@@ -2713,7 +2726,7 @@ out: } #endif @@ -157961,7 +165199,7 @@ index f8f3f5fe..9bc113f 100644 .release = kvm_vm_release, .unlocked_ioctl = kvm_vm_ioctl, #ifdef CONFIG_KVM_COMPAT -@@ -2795,7 +2808,7 @@ out: +@@ -2784,7 +2797,7 @@ out: return r; } @@ -157970,16 +165208,16 @@ index f8f3f5fe..9bc113f 100644 .unlocked_ioctl = kvm_dev_ioctl, .compat_ioctl = kvm_dev_ioctl, .llseek = noop_llseek, -@@ -2821,7 +2834,7 @@ static void hardware_enable_nolock(void *junk) +@@ -2810,7 +2823,7 @@ static void hardware_enable_nolock(void *junk) if (r) { cpumask_clear_cpu(cpu, cpus_hardware_enabled); - atomic_inc(&hardware_enable_failed); + atomic_inc_unchecked(&hardware_enable_failed); - printk(KERN_INFO "kvm: enabling virtualization on " - "CPU%d failed\n", cpu); + pr_info("kvm: enabling virtualization on CPU%d failed\n", cpu); } -@@ -2877,10 +2890,10 @@ static int hardware_enable_all(void) + } +@@ -2865,10 +2878,10 @@ static int hardware_enable_all(void) kvm_usage_count++; if (kvm_usage_count == 1) { @@ -157992,7 +165230,7 @@ index f8f3f5fe..9bc113f 100644 hardware_disable_all_nolock(); r = -EBUSY; } -@@ -3287,7 +3300,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, +@@ -3276,7 +3289,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, kvm_arch_vcpu_put(vcpu); } @@ -158001,7 +165239,7 @@ index f8f3f5fe..9bc113f 100644 struct module *module) { int r; -@@ -3334,7 +3347,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, +@@ -3323,7 +3336,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, @@ -158010,7 +165248,7 @@ index f8f3f5fe..9bc113f 100644 if (!kvm_vcpu_cache) { r = -ENOMEM; goto out_free_3; -@@ -3344,9 +3357,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, +@@ -3333,9 +3346,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, if (r) goto out_free; @@ -158022,7 +165260,7 @@ index f8f3f5fe..9bc113f 100644 r = misc_register(&kvm_dev); if (r) { -@@ -3356,9 +3371,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, +@@ -3345,9 +3360,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, register_syscore_ops(&kvm_syscore_ops); @@ -158031,4 +165269,4 @@ index f8f3f5fe..9bc113f 100644 - r = kvm_init_debug(); if (r) { - printk(KERN_ERR "kvm: create debugfs files failed\n"); + pr_err("kvm: create debugfs files failed\n"); diff --git a/kernel/patches/linux-4.0-arm-exynos-thumb2-fix-build.patch b/kernel/patches/linux-4.0-arm-exynos-thumb2-fix-build.patch deleted file mode 100644 index 2662909df..000000000 --- a/kernel/patches/linux-4.0-arm-exynos-thumb2-fix-build.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 12833bacf5d904c2dac0c3f52b2ebde5f2c5a2bc Mon Sep 17 00:00:00 2001 -From: Ard Biesheuvel -Date: Wed, 25 Mar 2015 07:41:43 +0100 -Subject: ARM: 8325/1: exynos: move resume code to .text section - -This code calls cpu_resume() using a straight branch (b), so -now that we have moved cpu_resume() back to .text, this should -be moved there as well. Any direct references to symbols that will -remain in the .data section are replaced with explicit PC-relative -references. - -Acked-by: Nicolas Pitre -Signed-off-by: Ard Biesheuvel -Signed-off-by: Russell King - -diff --git a/arch/arm/mach-exynos/sleep.S b/arch/arm/mach-exynos/sleep.S -index 31d2583..cf95079 100644 ---- a/arch/arm/mach-exynos/sleep.S -+++ b/arch/arm/mach-exynos/sleep.S -@@ -23,14 +23,7 @@ - #define CPU_MASK 0xff0ffff0 - #define CPU_CORTEX_A9 0x410fc090 - -- /* -- * The following code is located into the .data section. This is to -- * allow l2x0_regs_phys to be accessed with a relative load while we -- * can't rely on any MMU translation. We could have put l2x0_regs_phys -- * in the .text section as well, but some setups might insist on it to -- * be truly read-only. (Reference from: arch/arm/kernel/sleep.S) -- */ -- .data -+ .text - .align - - /* -@@ -69,10 +62,12 @@ ENTRY(exynos_cpu_resume_ns) - cmp r0, r1 - bne skip_cp15 - -- adr r0, cp15_save_power -+ adr r0, _cp15_save_power - ldr r1, [r0] -- adr r0, cp15_save_diag -+ ldr r1, [r0, r1] -+ adr r0, _cp15_save_diag - ldr r2, [r0] -+ ldr r2, [r0, r2] - mov r0, #SMC_CMD_C15RESUME - dsb - smc #0 -@@ -118,14 +113,20 @@ skip_l2x0: - skip_cp15: - b cpu_resume - ENDPROC(exynos_cpu_resume_ns) -+ -+ .align -+_cp15_save_power: -+ .long cp15_save_power - . -+_cp15_save_diag: -+ .long cp15_save_diag - . -+#ifdef CONFIG_CACHE_L2X0 -+1: .long l2x0_saved_regs - . -+#endif /* CONFIG_CACHE_L2X0 */ -+ -+ .data - .globl cp15_save_diag - cp15_save_diag: - .long 0 @ cp15 diagnostic - .globl cp15_save_power - cp15_save_power: - .long 0 @ cp15 power control -- --#ifdef CONFIG_CACHE_L2X0 -- .align --1: .long l2x0_saved_regs - . --#endif /* CONFIG_CACHE_L2X0 */ --- -cgit v0.10.2 - -- 2.39.2